$(document).ready(function() {
    
    /*
    
        Home
        
    */

    // Preload large images
    
    var cache = [];

    $.preLoadImages = function() {
        var args_len = arguments.length;
        for (var i = args_len; i--;) {
            var cacheImage = document.createElement('img');
            cacheImage.src = arguments[i];
            cache.push(cacheImage);
        }
     }
    
    jQuery.preLoadImages(
        "/css/i/slide-forbusiness.jpg",
        "/css/i/slide-foryou.jpg",
        "/css/i/slide-welcome.jpg"
    );
    
    // Home service tab feature
    
    $("#p-home #header .logo img").attr("src","/css/i/amivox_freeyourphone_white.png");
    
    $("#p-home .slidenav li a").click(function(event){
        var slideid = $(this).attr("href");
        var slideimage = cache[slideid.split("-")[1]].src;
        var slidecss = "url(/css" + slideimage.split("/css")[1] + ") top center no-repeat";
        $("#p-home .slidenav li").removeClass("active");
        $(this).parent().addClass("active");
        $("#p-home #content .slide").hide();
        $(".slidenav").hide().fadeIn();
        $(slideid).fadeIn();
        $("#p-home #page").css("background", slidecss);
        event.preventDefault();
        if (slideid == "#slideforyou-1")
            $("#header .logo img").attr("src","/css/i/amivox_freeyourphone.png");
        else
            $("#header .logo img").attr("src","/css/i/amivox_freeyourphone_white.png");
    });
    
    $("#p-home .slidenav li.welcome a").click();
    /*var now = +new Date;
    if( (now % 3) == 0){
        
    }else if ((now%3) == 1){
        $("#p-home .slidenav li.foryou a").click();
    }else if ((now%3) == 2){
        $("#p-home .slidenav li.forbusiness a").click();
    }else{
        $("#p-home .slidenav li.welcome a").click();
    }*/
    // Video tabs
    
    $(".videos .video").hide();
    $(".videos #video-androidcalls").show();
    $("#p-home .videos .list li:first").addClass("active");
    
    $("#p-home .videos .list li a").click(function(event){
        var videoid = $(this).attr("href");
        $(".videos .video").hide();
        $(videoid).show();
        $("#p-home .videos .list li").removeClass("active");
        $(this).parent().addClass("active");
        event.preventDefault();
    });
    
    /*
    
        Sign In 
        
    */
  
    
    // Bind events for code lookup
    
    $("#p-signin #content #id-username").keyup(function(event){
        countryCode(this, event);
    });
    
    $("#p-contact #content #id-username").keyup(function(event){
        countryCode(this, event);
    });
    
    $("#p-lostpassword #content #id-username").keyup(function(event){
        countryCode(this, event);
    });
    
    $("#p-signup #content #id-username").keyup(function(event){
        countryCode(this, event);
    });
    
    // Lookup country code function
    
    function countryCode(input, event) {

        var input = $(input);
        var countrycode = $(input).val().replace("+","");
        var wrap = $(input).parent();
        var cclen = countrycode.length;

        if (event.keyCode != 38 && event.keyCode != 40 && event.keyCode != 27 && cclen < 4) {
            
            $("#codelist").remove();
            $("<ul />").attr("id","codelist").appendTo(wrap).hide();
        
            if (countrycode != "") {
                $.getJSON('/proxy-countries.php?country=' + countrycode, function(data) {
                    var codehtml = "";
                    var c = 0;
                    $("#codelist").empty();
                    $.each(data, function(i, item) {
                        codehtml = '<li><a href="#">' + item.name + ' <span mobilecc="' + item.mobilecc + '">' + item.mobilecc + '</span></a></li>';
                        $("#codelist").append(codehtml);
                        c++;
                        if (c>10) return false;
                    });
                    $("#codelist li:first").addClass("active");
                    $("#codelist").show();
                    // Bind click events for code list
                    $("#codelist a").mousedown(function(event){
                        var code = $(this).find("span").attr("mobilecc");
                        $("#codelist").hide();
                        $(input).val("+" + code + " ");
                        event.preventDefault();
                        event.stopPropagation();
                    });
                });
                
            }
        
            // Keyboad navigation
        
            $(input).unbind("keydown").bind("keydown", function(event) {
                var iscodelist = $("#codelist:visible").length;
                if (iscodelist) {
                    if (event.keyCode == 40) {
                        var next = $("#codelist li.active").next();
                        if (next.length) {
                            $("#codelist li.active").removeClass("active");
                            $(next).addClass("active");
                        }    
                    }
                    if (event.keyCode == 38) {
                        var prev = $("#codelist li.active").prev();
                        if (prev.length) {
                            $("#codelist li.active").removeClass("active");
                            $(prev).addClass("active");
                        }

                    }
                    if (event.keyCode == 27) {
                        $("#codelist").empty().hide();
                    }
                    if (event.keyCode == 13) {
                        var code = $("#codelist li.active span").attr("mobilecc");
                        $(this).val("+" + code + " ");
                        $("#codelist").hide();
                    }
                }
            });
        
            // Hide list on blur
        
            $(input).unbind("blur").bind("blur", function(event) {
               $("#codelist").hide(); 
            });
            
        } else {
            
            if (cclen > 3) {
                $("#codelist").remove(); 
            }
        
        }
        
    }
    
    if ($("#p-signin").length) {
        
        var issubmitok = false;
        var doneSubmitting = false;
        
        $("#content form .controls input").mouseup(function(event){
            var countrycode = $("#content #id-countrycode").val();
            var username = $("#content #id-username").val();
            var password = $("#content #id-pass").val();
            var reme = $("#content #id-reme").is(':checked');

            
            $.post("/proxy-login.php", { username: username, pass: password, countrycode: countrycode, reme: reme},
                function(data){
                     pdata = jQuery.parseJSON(data);

                    if (pdata.status == "Success") {
                        issubmitok = true;
                        $("#content form").submit();
                    } else {
                        $("#content .error").text(data.message).fadeOut().fadeIn();
                    }
                }
            );
            event.preventDefault();
            
        });
        
        $("#content form").submit(function(event){
             var username = $("#content #id-username").val();
             var password = $("#content #id-pass").val();
             if( username.length > 0  && password.length > 0){
                issubmitok=true;
             }
             if (issubmitok && !doneSubmitting) {
                var countrycode = $("#content #id-countrycode").val();
                var reme = $("#content #id-reme").is(':checked');
                $.post("/proxy-login.php", { username: username, pass: password, countrycode: countrycode, reme: reme},
                function(sdata){
                    
                    ssdata = jQuery.parseJSON(sdata);
                    if (ssdata.status == "Success") {
                        doneSubmitting = true;
                        $("#content form").submit();
                    } else {
                        $("#content .error").text(ssdata.message).fadeOut().fadeIn();
                    }
                }
                );
            
             }
             
             if(!doneSubmitting){
                 event.preventDefault();
             }
         });
        
    }
    
 
    
    /*
    
        Help topics
        
    */
    
    var location = document.location.toString();
    
    if (location.match('#')) {
        var urlid = '#' + location.split('#')[1];
        $("#p-help " + urlid).show();
    }
    
    $("#p-help #content ul li a").click(function(event){
        var helpid = $(this).attr("href");
        $("#sidebar .item").hide();
        $(helpid).show();
        event.preventDefault();
    });
    
    /*
    
        Expand sections with expand div
    
    */
    
    $(".expand").each(function(){
        $(this).after("<p class=\"more\"><a href=\"#\">Read more</a></p>");
        $(this).parent().find(".more").toggle(
            function(event) {
                $(this).find("a").text("Close");
                $(this).parent().find(".expand").show();
                event.preventDefault();
            },
            function(event) {
                $(this).find("a").text("Read more");
                $(this).parent().find(".expand").hide();
                event.preventDefault();
            }
        );
    });
    
    /*
    
        Rates
        
    */
    
    // Get data for form controls
    
    if ($("#p-rates").length) {
        
        if ($("#p-rates #form-overview").length) {
        
            $.getJSON('/proxy-countries.php', function(data) {
                var countryhtml = "";
                $.each(data, function(i,item){
                    var def = (item.name == "Netherlands") ? " selected=\"selected\"" : "";
                    countryhtml = countryhtml + '<option' + def  + ' value="' + item.name + '">' + item.name + '</option>';
                });
                $("#id-from").html(countryhtml);
            });
            $.getJSON('/proxy-countries.php', function(data) {
                var countryhtml = "";
                $.each(data, function(i,item){
                    var def = (item.name == "Singapore") ? " selected=\"selected\"" : "";
                    countryhtml = countryhtml + '<option' + def  + ' value="' + item.name + '">' + item.name + '</option>';
                });
                $("#id-to").html(countryhtml);
            });
            
        }
            
        $.getJSON('/proxy-currency.php', function(data) {
            var cchtml = "";
            var muhtml = "";
            var cc = "";
            $.each(data, function(i,item){
                cc = item.currencycode;
                var def = (cc == "EUR") ? " selected=\"selected\"" : "";
                if (cc == "EUR" || cc == "ISK") {
                    muhtml = muhtml + '<option' + def + ' value="' + cc + '">' + item.name + ' (' + cc + ')</option>';
                } else {
                    cchtml = cchtml + '<option' + def + ' value="' + cc + '">' + item.name + ' (' + cc + ')</option>';    
                }
            });
            $("#id-currency").html(muhtml + '<option>-</option>' + cchtml);
            $("#p-rates #content .col1").fadeIn().slideDown();
            window.setTimeout('$("#p-rates form").submit();', 500);
        });
        
    }
    
    // Get rates and populate table

    $("#p-rates #content form").submit(function(event){
        if ($("#p-rates #form-overview").length) {
            currencylookup();
        }
        if ($("#p-rates #form-exact").length) {
            currencylookupexact();
        }
        event.preventDefault();
    });
    
    function currencylookupexact() {
        var bnumber = $("#id-to").val();
        var anumber = $("#id-from").val();
        var ratescurrency = $("#id-currency option:selected").val();
        $("#p-rates #content .col2").slideUp().fadeOut();
        $.getJSON('/proxy-ratesexact.php?anumber=' + escape(anumber) + '&bnumber=' + escape(bnumber) + '&currency=' + ratescurrency, function(data) {
            $("#p-rates .countryfrom").html(data.anumber);
            $("#p-rates .countryto").html(data.bnumber);
            $("#p-rates table .sip").html(data.sip + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .call").html(data.call + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .sms").html(data.sms + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .shout").html(data.shout + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates #content .col2").fadeIn().slideDown();
        });
    }
    
    function currencylookup() {
        var countryto = $("#id-to option:selected").val();
        var countryfrom = $("#id-from option:selected").val();
        var ratescurrency = $("#id-currency option:selected").val();
        $("#p-rates #content .col2").slideUp().fadeOut();
        $.getJSON('/proxy-rates.php?tocountry=' + escape(countryto) + '&fromcountry=' + escape(countryfrom) + '&currency=' + ratescurrency, function(data) {
            var prices = data.ucp;
            $("#p-rates .countryfrom").html(data.fromCountry);
            $("#p-rates .countryto").html(data.toCountry);
            $("#p-rates table .sip2fix").html(prices.sip2fix + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .sip2mob").html(prices.sip2mob + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .fix2fix").html(prices.fix2fix + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .fix2mob").html(prices.fix2mob + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .mob2fix").html(prices.mob2fix + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .mob2mob").html(prices.mob2mob + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .shout2mob").html(prices.shout2mob + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .shout2fix").html(prices.shout2fix + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates table .sms").html(prices.sms + ' <span class="curr">' + data.currency + '</span>');
            $("#p-rates #content .col2").fadeIn().slideDown();
        });
    }

    /*
    
        Lost Password
        
    */
    
    if ($("#p-lostpassword").length) {
        
        $("#content #id-countrycode").focus();
        
        $("#p-lostpassword #content form .controls input").mouseup(function(event){
            $("#content .error").fadeOut();
            var number = $("#content #id-username").val();
            /*var countrycode = $("#content #id-countrycode").val();*/
            var transport = $("#id-transport option:selected").val();
            number = number.replace("+","");
            $.getJSON('/proxy-lostpass.php?username=' + number + '&transport=' + transport, function(data) {
                var status = data.status;
                if (status == "Sending failed" || status == undefined || status == "") {
                    if (status == "Sending failed") {
                        $("#content .error").text(data.reason).fadeIn();
                    } else {
                        $("#content .error").text("Something went wrong, please check your input and try again").fadeIn();
                    }
                } else {
                    $("#content").hide();
                    $("#sidebar").show();
                    if( transport == "email"){
                        $("#smstext").hide();
                        $("#shouttext").hide();
                        $("#emailtext").show();
                    }else if( transport == "sms"){
                        $("#shouttext").hide();
                        $("#emailtext").hide();
                        $("#smstext").show();
                    }else if( transport == "shout"){
                        $("#smstext").hide();
                        $("#emailtext").hide();
                        $("#shouttext").show();
                    }
                    $("#page").css("background","none");
                }
             });
        });
        
        $("#p-lostpassword #content form").submit(function(event){
            event.preventDefault();
        });
       
    }
    
    /*
    
        Contact
    
    */
    if ($("#p-contact").length) {
        
        $("#content #id-countrycode").focus();
        
        $("#p-contact #content form .controls input").mouseup(function(event){
            $("#content .error").fadeOut();
            var number = $("#content #id-username").val();
            var countrycode = $("#content #id-countrycode").val();
            var name = $("#content #id-name").val();
            var email = $("#id-email").val();
            var phonetype = $("#id-phonetype").val();
            var issue = $("#id-issue option:selected").val();
            var comment = $("#id-message").val();
            //number = countrycode.replace("+","") + "" + number;
            if (number != "" && countrycode != "" && name != "" && email != "" && comment != "") {
                $.getJSON('/proxy-contact.php?mobile=' + number + '&name=' + escape(name) + '&email=' + escape(email) + '&phonetype=' + escape(phonetype) + '&issue=' + escape(issue) + '&comment=' + escape(comment) , function(data) {
                    var status = data.status;
                    if (status == "Failed to send message" || status == undefined || status == "") {
                        $("#content p.error").text(status).fadeIn();
                    } else {
                        $("#content").hide();
                        $("#contact").hide();
                        $("#sidebar").show();
                        $("#page").css("background","none");
                    }
                 });
             } else {
                 $("#content p.error").text("Please fill in the form before sending").fadeIn();
             }
        });
        
        $("#p-contact #content form").submit(function(event){
            event.preventDefault();
        });
    }
    
    /*
    
        Sign Up
    
    */
    
    var issignup = false;
    
    $("#p-signup #content form").submit(function(event){
        if (issignup == false) {
            event.preventDefault();
        }
    });
    
    $("#p-signup #content form .controls input").mouseup(function(event){
    
        $("p.error").remove();
        
        // Phone number
        
        if ($("#id-username").val() == "" || $("#id-username").val() == "+" || $("#id-username").val().length < 7 ) {
            $("<p />").addClass("error").text("A valid phone number is required").hide().insertBefore("#form-signup").fadeIn();
            return false;
        }

        if( $("#pverify").val() == ""){
        // Name
        
        if ($("#id-name").val() == "") {
            $("<p />").addClass("error").text("A name is required").hide().insertBefore("#form-signup").fadeIn();
            return false;
        }
        
        // Email
        
        if ($("#id-email").val() == "" || $("#id-emailverify").val() == "") {
            $("<p />").addClass("error").text("An email address is required").hide().insertBefore("#form-signup").fadeIn();
            return false;
        }
        
        if (!$("#id-email").val().match("@") || !$("#id-emailverify").val().match("@")) {
            $("<p />").addClass("error").text("A valid email address is required").hide().insertBefore("#form-signup").fadeIn();
            return false;
        }
        
        // Terms
        
        if (!$("#id-terms::checked").length) {
            $("<p />").addClass("error").text("You need to accept the terms and conditions").hide().insertBefore("#form-signup").fadeIn();
            return false;
        }
        }
        issignup = true;
        $("#content form").submit();
    });
    
    $("#p-signup .openid #id-countrycode").focus();
    
    /*
    
        Fix countrycode pos
        
    */
    
    if ($("#id-countrycode").length) {
        var code = $("#id-countrycode").val();
        $("#id-countrycode").val(code);
    }

});
