﻿//=============================================================================
// WoW Prizes Client Script
// By:      Andy KOnonenko (andy@irontraffic.com)
// Date:    04/07/09
//=============================================================================

//Set No-Conflict for jQuery
var $J = jQuery.noConflict();
//-----------------------------------------------------------------------------
var lPrizeID = 0;
var lPubID = 10001;
var sReff = "";
var ROOT = "";
var sLoadingContent = "<div class='loader'><img src='" + ROOT + "Images/loadingAnimation.gif' alt='Please Wait' /><div style='padding-top:5px;'>....please wait....</div></div>"
var isEML2 = false;
//-----------------------------------------------------------------------------
// Utils
function onFieldChange(field_id, ErrSpanID) 
{
    var field_val = $J("#" + field_id).val().replace(/[ ]/g, "");
    if (field_val.length > 0) { $J("span#" + ErrSpanID).text(""); }
}
function onSelectFieldChange(badval, field_id, ErrSpanID) {
    if ($J("#" + field_id).val() != badval) { $J("span#" + ErrSpanID).text(""); }
}
function AutoTab(_field, next_id) {
    if (_field.value.length == _field.maxLength && next_id != null)
        $J("#" + next_id).focus();
}
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
//-----------------------------------------------------------------------------
//--- Skip step
function doSkipStep(iStepNum) {
    //alert("skip for: " + iStepNum);
    //hide all design,
    $J("div#MainContnt").hide();
    doStep1Submit();    
}
//-----------------------------------------------------------------------------
function doStep1Submit() {
    //check ageements
    if (!$J("#argee_s1").attr("checked")) {
      $J("#argee_s1").css("border", "solid 2px red");
      alert("Please accept our Privacy rules.");
      return false;

    }
    
    //Is Use ZIP on First Step
    if ($J("#txtZIP1").length != 0) {
        //ZIP validation
        var zip1_val = $J("#txtZIP1").val().replace(/[ ]/g, "");
        if (!isInteger(zip1_val) || zip1_val.length != 5) {
            $J("#txtZIP1").focus();
            new Boxy("<div style='color:red;'><img src='" + ROOT + "images/error_icon.gif' style='vertical-align:middle;padding-right:10px;'/>Invalid ZIP.</div>", { afterShow: function() { var self = this; setTimeout(function() { self.hide(); }, 3000); }, modal: true, closeable: false });
            return false;
        }

        //--- Ok --- Go Step 2 with e-mail_2 field ----
        if ($J("div#MainContnt").css("display") == "none")
            $J("div#MainContnt").show();

        isEML2 = true;
        boundStep2();
        //prefill ZIP from first step
        $J("#txtZIP").val(zip1_val);
        doCheckZip($J("#txtZIP"));
        return;
        //=============================================        
    } 
    //=========================================================
    //Is use first name and last name on first step
    var fname_1 = $J("#Fname_step1");
    var lname_1 = $J("#Lname_step1");
    if (fname_1.length != 0)
    {
        if (fname_1.val().replace(/[ ]/g, "").length <= 1) {
            fname_1.focus();
            alert("Please enter your First Name.");
            return false;
        } else {
            $J("#txtFName").val(fname_1.val());
        }
    }
    if (lname_1.length != 0) {
        if (lname_1.val().replace(/[ ]/g, "").length <= 1) {
            lname_1.focus();
            alert("Please enter your Last Name.");
            return false;
        } else {
            $J("#txtLName").val(lname_1.val());
        }
    }
    //=========================================================
    //e-mail validatoin
    var eml_val = $J("#txtEmail").val().replace(/[ ]/g, ""); ;
    if (eml_val.length == 0) {
        $J("#txtEmail").focus();
        alert("Please enter your e-mial address");
        return false;
    }
    var emailReg = "^[\\w-_\.+]*[\\w-_\.]\@([\\w]+\\.)+[\\w]+[\\w]$";
    var regex = new RegExp(emailReg);
    if(!regex.test(eml_val))
    {        
        $J("#txtEmail").focus();
        new Boxy("<div style='color:red;'><img src='" + ROOT + "images/error_icon.gif' style='vertical-align:middle;padding-right:10px;'/>Invalid e-mail address.</div>", { afterShow: function() { var self = this; setTimeout(function() { self.hide(); }, 3000); }, modal: true, closeable: false });
        return false;
    }
    //----------------------------------

    var waiter = new Boxy(sLoadingContent, { modal: true });

    $J.ajax({
        type: "POST",
        url: ROOT + "WSS/WebService.asmx/SignUp",
        data: "{'sEML':'" + eml_val + "','sPrizeID':'" + lPrizeID + "','sReff':'" + sReff + "','sPubID':'" + lPubID + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        timeout: 200000,
        success: function(msg) {
            if (msg.d.Message == "ok") {
                //--- Check for compliting stage (HP) for the publisher
                if (msg.d.HPCode != "")
                    $J("div#CHPCode").html(msg.d.HPCode);
                //--- Ok --- Go Step 2 ----
                if ($J("div#MainContnt").css("display") == "none")
                    $J("div#MainContnt").show();
                waiter.hideAndUnload();
                boundStep2();
                return;
            } else if (msg.d.Message == "ok_1") {
                //--- Ok --- Go Step 2 with e-mail_2 field ----
                if ($J("div#MainContnt").css("display") == "none")
                    $J("div#MainContnt").show();
                waiter.hideAndUnload();
                isEML2 = true;
                boundStep2();
                return;
            } else if (msg.d.Message == "ok_2") {
                top.location.href = msg.d.HPCode;
                return;
            }
            if ($J("div#MainContnt").css("display") == "none")
                $J("div#MainContnt").show();
            waiter.hideAndUnload();
            new Boxy("<div style='color:red;'><img src='" + ROOT + "images/error_icon.gif' style='vertical-align:middle;padding-right:10px;'/>" + msg.d.Message + "</div>", { afterShow: function() { var self = this; setTimeout(function() { self.hide(); }, 3000); }, modal: true, closeable: false });
            return false;
        },
        error: function(msg) {
            waiter.hideAndUnload();
            if ($J("div#MainContnt").css("display") == "none")
                $J("div#MainContnt").show();
            alert("Error occured.");
            return false;
        }
    });
}

function doCheckZip(_obj) {
    var zip_val = $J("#txtZIP").val().replace(/[ ]/g, "");
    if (zip_val.length == 0) { $J("span#err_zip").text("* Required"); return false; } else { $J("span#err_zip").text(""); }
    if (!isInteger(zip_val)) { $J("span#err_zip").text("* Invalid"); return false; } else { $J("span#err_zip").text(""); }
    $J.ajax({
        type: "POST",
        url: ROOT + "WSS/WebService.asmx/getGeo",
        data: "{'sZIP':'" + zip_val + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        timeout: 20000,
        success: function(msg) {
            if (msg.d != null) {
                $J("#txtCity").val(msg.d.City);
                if (msg.d.City != "") { $J("span#err_city").text(""); }
                $J("#ddState").val(msg.d.State);
                if (msg.d.State != "") { $J("span#err_state").text(""); }
            }
        },
        error: function(msg) {
            alert("Error occured.");
            return false;
        }
    });
}

function IsCapcha() {
    var capcha_val = $J("#txtCapcha").val().replace(/[ ]/g, "");
    if (capcha_val.length == 0) { $J("span#err_capcha").text("* Required"); return false; }
    var waiter = new Boxy(sLoadingContent, { modal: true });
    $J.ajax({
        type: "POST",
        url: "main.aspx/IsCapcha",
        data: "{'sCapcha':'" + capcha_val + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        timeout: 20000,
        success: function(msg) {
            if (msg.d) {
                //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                //waiter.hideAndUnload();
                $J("#aspnetForm").submit();                
                //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            } else {
                waiter.hideAndUnload();
                $J("span#err_capcha").text("* Entered number not match");
                //reload capcha
                //$J("span#capcha").html("<img src='" + ROOT + "cimage.aspx?is=" + Math.floor(Math.random() * 99) + "' alt='' align='absmiddle' style='border: 1px solid #7F9DB9;' />");
                return false;
            }
        },
        error: function(msg) {
            waiter.hideAndUnload();
            alert("Error occured.");
            return false;
        }
    });
}

function boundStep2() 
{
    $J("div#Step_1").hide();
    $J("span#capcha").html("<img src='" + ROOT + "cimage.aspx?is=" + Math.floor(Math.random() * 99) + "' alt='' align='absmiddle' style='border: 1px solid #7F9DB9;' />");
    //if need e-mail2 - show it
    if (isEML2)
        $J("tr#eml2row").show();
        
    $J("div#Step_2").show();
}

function doStep2Submit() {
    if (!IsStep2Ok()) { return false; }
    if (!isOffersok()) { return false; }
    if (isEML2) {
        isEML2OK();
    } else {
        IsCapcha();
    }
}

///for isEML2==true ONLY !!!!!!!!!!!!
function isEML2OK() 
{
    var eml2_val = $J("#txtEmail2").val().replace(/[ ]/g, "");
    $J("span#err_eml2").text("");
    var waiter = new Boxy(sLoadingContent, { modal: true });
    $J.ajax({
        type: "POST",
        url: ROOT + "WSS/WebService.asmx/IsEmailOk",
        data: "{'sEML':'" + eml2_val + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        timeout: 200000,
        success: function(msg) {
            waiter.hideAndUnload();
            if (!msg.d) {                
                new Boxy("<div style='color:red;'><img src='" + ROOT + "images/error_icon.gif' style='vertical-align:middle;padding-right:10px;'/>Invalid E-Mail</div>", { afterShow: function() { var self = this; setTimeout(function() { self.hide(); }, 3000); }, modal: true, closeable: false });
                $J("span#err_eml2").text("* Invalid E-Mail");
                $J("#txtEmail2").focus();
                return false;
            }
            IsCapcha(); //for isEML2==true ONLY !!!!!!!!!!!!
        },
        error: function(msg) {
            waiter.hideAndUnload();
            alert("Error occured.");
            return false;
        }
    });
}

function IsStep2Ok() {
    var isOk = true;
    //get form fields
    var fname_val = $J("#txtFName").val().replace(/[ ]/g, "");
    var lname_val = $J("#txtLName").val().replace(/[ ]/g, "");
    //gender
    var gender_val = -1; //default, not selected
    if ($J("#rbl_gender_0").attr("checked"))
        gender_val = 1;
    if ($J("#rbl_gender_1").attr("checked"))
        gender_val = 0;
    //-------------------------------------------------------------------------    
    var mob_val = $J("#dd_mob").val().replace(/[ ]/g, "");
    var dob_val = $J("#dd_dob").val().replace(/[ ]/g, "");
    var yob_val = $J("#dd_yob").val().replace(/[ ]/g, "");
    //-------------------------------------------------------------------------
    var zip_val = $J("#txtZIP").val().replace(/[ ]/g, "");
    var adress_val = $J("#txtAddress").val().replace(/[ ]/g, "");
    var city_val = $J("#txtCity").val().replace(/[ ]/g, "");
    var state_val = $J("#ddState").val().replace(/[ ]/g, "");
    //-------------------------------------------------------------------------        
    var phone1_val = $J("#txtPhone1_1").val().replace(/[ ]/g, "");
    var phone2_val = $J("#txtPhone1_2").val().replace(/[ ]/g, "");
    var phone3_val = $J("#txtPhone1_3").val().replace(/[ ]/g, "");
    //-------------------------------------------------------------------------        
    var mobile1_val = $J("#txtMob1_1").val().replace(/[ ]/g, "");
    var mobile2_val = $J("#txtMob1_2").val().replace(/[ ]/g, "");
    var mobile3_val = $J("#txtMob1_3").val().replace(/[ ]/g, "");
    //-------------------------------------------------------------------------
    var constobe_val = $J("#ddConsToBe").val().replace(/[ ]/g, "");
    //-------------------------------------------------------------------------
    var capcha_val = $J("#txtCapcha").val().replace(/[ ]/g, "");
    //-------------------------------------------------------------------------
    var eml2_val = $J("#txtEmail2").val().replace(/[ ]/g, "");


    //check form fields
    if (isEML2)
        if (eml2_val.length == 0) { isOk = false; $J("span#err_eml2").text("* Required"); $J("#txtEmail2").focus(); }
    
    if (fname_val.length == 0) { isOk = false; $J("span#err_fname").text("* Required"); }
    if (lname_val.length == 0) { isOk = false; $J("span#err_lname").text("* Required"); }
    if (zip_val.length == 0) { isOk = false; $J("span#err_zip").text("* Required"); }
    if (!isInteger(zip_val)) { isOk = false; $J("span#err_zip").text("* Invalid"); $J("#txtZIP").focus(); }
    if (gender_val == -1) { isOk = false; $J("span#err_gender").text("* Please Select"); }
    if (mob_val == "00" || dob_val == "00" || yob_val == "0000") { isOk = false; $J("span#err_DOB").text("* Please Select"); }
    if (!isDate(mob_val + "/" + dob_val + "/" + yob_val)) { isOk = false; $J("span#err_DOB").text("* Please select valid date."); }   
    if (adress_val.length == 0) { isOk = false; $J("span#err_address").text("* Required"); }
    if (city_val.length == 0) { isOk = false; $J("span#err_city").text("* Required"); }
    if (state_val.length == 0) { isOk = false; $J("span#err_state").text("* Please Select"); }
    if (phone1_val.length != 3 || phone2_val.length != 3 || phone3_val.length != 4) { isOk = false; $J("span#err_phone").text("* Required 10 digits"); $J("#txtPhone1_1").focus(); }
    
    //if (mobile1_val.length == 0 || mobile2_val.length == 0 || mobile3_val.length == 0) { isOk = false; $J("span#err_mobile").text("* Required"); }
    if (constobe_val.length == 0) { isOk = false; $J("span#err_constobe").text("* Please Select"); }
    if (capcha_val.length == 0) { isOk = false; $J("span#err_capcha").text("* Required"); $J("#txtCapcha").focus(); }
    
    return isOk;
}

function isOffersok() {
    var isOk = true;
    var aOffers = $J("#ctlOfferList_hidOffers").val().split("|");
    for (i = 0; i < aOffers.length; i++) {
        if (aOffers[i].length > 0) {
            if($J("div#Offer_"+aOffers[i]).css("display")=="block" /*offer visible*/ ){
                if (!isOk) { isOfferClicked(aOffers[i]); } else { isOk = isOfferClicked(aOffers[i]); }
            }
        }
    }
    return isOk;
}

function isOfferClicked(offer_id) {
    if ($J("#yoffer_" + offer_id).attr("checked") || $J("#noffer_" + offer_id).attr("checked"))
        return true;
    else
        $J("span#err_offer_" + offer_id).html("Please answer <b>YES</b> or <b>NO</b>");

    return false;
}

function onOfferClick(offer_id) {
    $J("span#err_offer_" + offer_id).html("");
}

function doReloadC() {
    $J("span#capcha").html("<img src='" + ROOT + "cimage.aspx?is=" + Math.floor(Math.random() * 99) + "&nv=1' alt='' align='absmiddle' style='border: 1px solid #7F9DB9;' />");
}

//--- Date Validation ---------------------------------------------------------
// Declaring valid date character, minimum year and maximum year
var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;

function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
        if (i == 2) { this[i] = 29 }
    }
    return this
}

function isDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strMonth = dtStr.substring(0, pos1)
    var strDay = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear
    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
    }
    month = parseInt(strMonth)
    day = parseInt(strDay)
    year = parseInt(strYr)
    if (pos1 == -1 || pos2 == -1) {
        //alert("The date format should be : mm/dd/yyyy")
        return false
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        alert("Please select a valid month")
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        alert("Please select a valid day")
        return false
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        alert("Please select a valid 4 digit year between " + minYear + " and " + maxYear)
        return false
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        alert("Please select a valid date")
        return false
    }
    return true
}
//-----------------------------------------------------------------------------