/* 
 * Author: Ionut
 */

var donatedFlag = false;//if this is true when the popup is closed page will refresh
var donateOp;

function isValidEmail(value) {
    if ( (value != null) && (value != "") && !value.match(new RegExp("^([a-zA-Z]+[a-zA-Z0-9_.]*)+$")) ) {
        return true;
    } else {
        return false;
    }
}

function sumTheAmounts(){
    
    value = $('#selectedAmount :selected').text();
    var sa = parseInt(value.substr(1, value.length));

    var sum = sa;


    var $tabs = $('#tabs').tabs(); 
    var selectedTab = 0;
    try{
        selectedTab = $tabs.tabs('option', 'selected');
    }catch(ex){
        
    };
    
    $("#totalDonation").html("$" + sum);
    var numOfVotes;

    if($('#tabForProfile').val()==1){
        selectedTab=1;
    }

    if(selectedTab==1){
        donateOp = "eBay";
        numOfVotes = parseInt(sa / 10) * 10 ;
    }
    else{
        donateOp = "habitat";
        numOfVotes = parseInt(sa / 10) * 5 ;
    }

    $(".totalDonationNote").html("(" + numOfVotes + " votes will be added<br> to your account)");
}

function validation_creditCardInfo(){
    var isOk = true;

    if ($('#monthExp').val() == '-1') {
        $("#monthExp").addClass("error");
        isOk = false;
    }

    if ($('#yearExp').val() == '-1') {
        $("#yearExp").addClass("error");
        isOk = false;
    }

    if (!$("#creditCard").attr("value")) {
        $("#creditCard").addClass("error");
        isOk = false;
    }
    
    if (!$("#CVV").attr("value")) {
        $("#CVV").addClass("error");
        isOk = false;
    }
    if (!$("#firstName").attr("value")) {
        $("#firstName").addClass("error");
        isOk = false;
    }
    if (!$("#lastName").attr("value")) {
        $("#lastName").addClass("error");
        isOk = false;
    }
    if (!$("#streetAddress").attr("value")) {
        $("#streetAddress").addClass("error");
        isOk = false;
    }
    if (!$("#city").attr("value")) {
        $("#city").addClass("error");
        isOk = false;
    }
    if (!$("#state").attr("value")) {
        $("#state").addClass("error");
        isOk = false;
    }
    if (!$("#zip").attr("value")) {
        $("#zip").addClass("error");
        isOk = false;
    }
    if (!isValidEmail($("#email").attr("value"))) {
        $("#email").addClass("error");
        isOk = false;
    }



    return isOk;
}

var alreadyDonateAction = false;
function donate_action(donateOp){    
    if (!validation_creditCardInfo()){
        return false;
    }    
    var data = {};    
    
    $("#creditCardInfo").find(":input").each(function() {
        data[$(this).attr("name")] = $(this).attr("value");
    });    

    data["donateOp"] = donateOp;

    if(document.getElementById('donateId').checked==true){
        data["donationType"] = "yes";
    }
    else{
        data["donationType"] = "no";
    }

    data["countryCode"] = $('#countryCode :selected').attr('value');
        
    data["cardType"] = $("input[name='cardType']:checked").val();

    value = $('#selectedAmount :selected').text();
    data["selectedAmount"] =  parseInt(value.substr(1, value.length));


    data['organizationId'] = $('#organizationIdSingle').attr("value");
    if(data['organizationId'].replace(/\s/g,"") == "") {
        data['organizationId'] = $('#organizationId :selected').attr('value');
    }
    
    $("#donateLoader").slideDown('fast');
    
    if(alreadyDonateAction == true)return false;
    alreadyDonateAction = true;
    
    jQuery.ajax({
        type: "POST",
        url: "./PayPalCall.action",
        dataType: "json",
        data: data,
        success: function(resp){
            alreadyDonateAction = false;
            showDonateResponse(resp);
        }
    });
    return false;
}

function showDonateResponse(resp){

    if (resp.opSuccessfully == "-1") {
        //show error div
        $("#donateLoader").hide();
        showErrors(true, resp.message);
        $("#donateLoader").slideUp();
    } else {
        showErrors(false);
        $("#donateLoader").slideUp();
        var sum = parseInt(resp.donationAmount);
        var numOfVotes;
        if(resp.tournament=="tournament"){
            numOfVotes = parseInt(parseInt(resp.donationAmount)  / 10) * 10 ;
            $("#extraDonateNonprofit").css("display", "");
            $("#extraDonateTournament").css("display", "none");
        }
        else{
            numOfVotes = parseInt(parseInt(resp.donationAmount)  / 10) * 5 ;
            $("#extraDonateNonprofit").css("display", "none");
            $("#extraDonateTournament").css("display", "");
        }

        $("#donationSuccessfull p.thankYou").html(
            'Thank you for your donation of<br><span class="amount">$' + sum + '</span><br>You have earned '+ numOfVotes +' votes<br>' +
            '<span class="receipt">(a receipt has been sent to: <span id="email_receipt">' + resp.email + '</span>)</span>');

        $("#donationSuccessfull p.thankYouNotLoggedIn").html(
            'Thank you for your donation of<br><span class="amount">$' + sum + '</span><br>You have earned '+ numOfVotes +' extra votes<br>' +
            '<span class="receipt">(a receipt has been sent to: <span id="email_receipt">' + resp.email + '</span>)</span>');

        $('.voteCount td.content').html(resp.votesReceived);

        $("div#donationData").css("display", "none");
        $("div#tab1").css("display", "none");
        $("div#tab2").css("display", "none");
        $("div.donationSuccessfull").css("display", "");
        donatedFlag = true;
    }
    
}

function showErrors(b, message){
    if (b) {
        $("#donateErrorMessage").addClass("error");
        $("#donateErrorMessage").html("<b style='color:#000000'>PayPal response:</b><br>" + message);
        $("th.singleHeader").css("display", "none");
        $("th.attention").css("display", "");
    } else {
        $("th.singleHeader").css("display", "");
        $("th.attention").css("display", "none");
        $("#donateErrorMessage").removeClass("error");
    }
}

function cleanData(){
    $("input.inputClean").each(function() {
        $(this).attr("value", "");
    });
}

$(document).ready(function() {    
    $('#tabs').tabs({        
        show: function() {
            showErrors(false);

            var $tabs = $('#tabs').tabs();
            var selected = $tabs.tabs('option', 'selected');

            if($('#tabForProfile').val()==1){
                selected=1;       
            }

            $("div#donationData").css("display", "");
            $("div#tab1").css("display", "");
            $("div#tab2").css("display", "");

            $("div.donationSuccessfull").css("display", "none");
            cleanData();
            
            if (selected == 1) {
                $('#donateToHabitat').css("display", "none");
                $('#donateToEbay').css("display", "block");

                $('tr.organizationList').css("display", "none");

            } else {
                $('#donateToHabitat').css("display", "block");
                $('#donateToEbay').css("display", "none");

                $('tr.organizationList').css("display", "");
            }
            sumTheAmounts();
        }
    });
    sumTheAmounts();

    $("#selectedAmount").change( function() {
        sumTheAmounts();
    });

    $("#countryCode").change( function() {
        updateStateList($('#countryCode :selected').attr('value'), 'state','donateLoader');
    });

    $("input").change(function() {
        if ($(this).attr('value')){
            $(this).removeClass('error');
        }
    });

    $("#paypalDiv a").click(function() {
        var ck_name =  $(this).attr("name") + "_ck";
        $('#' + ck_name).attr("checked", "yes");
    });

    $("select").change(function() {
        if ($(this).attr('value')){
            $(this).removeClass('error');
        }
    });

    $("#donateToHabitat").click( function(){
        donate_action("habitat");
    });

    $("#donateToEbay").click( function(){
        donate_action("ebay");
    });
    
    $("#expressCheckout").click( function(){
        payviapaypal_action();
    });

    $("#closeDonatePopup").click( function(){
        if(donatedFlag){
            //refresh page
            var l_location = new String(window.location.href);
            l_location = l_location.replace('#','');
            l_location = l_location.replace('&payPalresponse=yes','');
            l_location = l_location.replace('&showDonation=true','');
            window.location = l_location;
        }else{
            $('#donate_Popup').dialog('close');
            return false;
        }
    })

    $("#thkDonateToOrganization").click(function(){
        var $tabs = $('#tabs').tabs();
        $tabs.tabs('select', 0);
    });
    $("#thkDonateToTournament").click(function(){
        var $tabs = $('#tabs').tabs();
        $tabs.tabs('select', 1);
    });
});




function payviapaypal_action(){
    
    var data = {};  
    value = $('#selectedAmount :selected').text();
    data["selectedAmount"] =  parseInt(value.substr(1, value.length));

    data["donateOp"] = donateOp;

    if(document.getElementById('donateId').checked==true){
        data["donationType"] = "yes";
    }
    else{
        data["donationType"] = "no";
    }

    data['organizationId'] = $('#organizationIdSingle').attr("value");
    if(data['organizationId'].replace(/\s/g,"") == "") {
        data['organizationId'] = $('#organizationId :selected').attr('value');
    }
    $("#donateLoader").slideDown('fast');
    data['paypalRedirectUrl'] = window.location.href;

    if(alreadyDonateAction == true)return false;
    alreadyDonateAction = true;
    jQuery.ajax({
        type: "POST",
        url: "./PayPalCallexpressCheckout.action",
        dataType: "json",
        data: data,
        success: function(resp){
            alreadyDonateAction = false;
            if (resp.opSuccessfully == "-1") {
                //show error div
                $("#donateLoader").hide();
                showErrors(true, resp.ErrorLongMsg);
                $("#donateLoader").slideUp();
            } else {
                showErrors(false);                
                window.location = resp.redirect_url;
            }
        }
    });
    return false;
}
