﻿//reference: jquery-1.3.2.min.js

// Hook up Application event handlers.
var app = Sys.Application;
//app.add_load(ApplicationLoad);
app.add_init(ApplicationInit);
//app.add_disposing(ApplicationDisposing);
//app.add_unload(ApplicationUnload);

//$(document).ready(function() {
    //setupCartType();
//});
var blockEvent = false;

// Application event handlers for component developers.
function ApplicationInit(sender) {
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (!prm.get_isInAsyncPostBack()) {
        prm.add_initializeRequest(InitializeRequest);
  //      prm.add_beginRequest(BeginRequest);
  //      prm.add_pageLoading(PageLoading);
  //      prm.add_pageLoaded(PageLoaded);
        prm.add_endRequest(EndRequest);
    }
}


//function ApplicationLoad(sender) {
//}

//function ApplicationUnload(sender) {
//    //alert('APP:: Application unload.');
//}

//function ApplicationDisposing(sender) {

//}

//// Application event handlers for page developers.
//function pageLoad() {
//    // get the control with the given ID
//    //$get('ClientEvents').?;
//}

//function pageUnload() {
//}

// PageRequestManager event handlers.
function InitializeRequest(sender, args) {

    $get('pageDiv').style.cursor = 'wait';
    //$get(args._postBackElement.id).disabled = true;
    
    enableCommands(false);
}

//function BeginRequest(sender, args) {
//}

//function PageLoading(sender, args) {
//}

//function PageLoaded(sender, args) {
    //setupCartType();
   // calcOrderTotals();
//}

function EndRequest(sender, args) {
    $get('pageDiv').style.cursor = 'auto';
    //if ($get(sender._postBackSettings.sourceElement.id) != null) {
    //    $get(sender._postBackSettings.sourceElement.id).disabled = false;
    //}
    enableCommands(true);
}

//_________________________________ business functions _________________________________

function enableCommands(enable) {
    var cmds = $(".ItemCommand", ItemCommandsRow);
    cmds.each(function(i, o) {
        o.disabled = !enable;
    });

    cmds = $(".OrderCommand", OrderCommandsRow);
    cmds.each(function(i, o) {
        if (o != null) {
            o.disabled = !enable;
        }
    });
}

function enableOrderButtons(enable) {
    var cmds = $(".OrderCommand", OrderCommandsRow);
    cmds.each(function(i, o) {
    if (o != null) {
        o.disabled = !enable;
    } 
});
}

var gTr;

function setDefaultDate(control) {
    var hf = $("[id$=DefaultDateSetting]")[0];


    var tr = $(control).closest("tr")[0];

    if (control.value.length > 0) {

        if (!checkdate(control)) {
            control.focus();
            control.value = "";
            return false;
        }
        else {
            if (hf != null)
                hf.value = control.value;
                
            updateCartItem(control);
        }
    }
    return true;
}

function FlagItemRegistrationToSendToManufacturing(control) {

    var sendToManufacturing = false;
    if (control.checked == true) {
        sendToManufacturing = true;
    }

    var tr = $(control).closest("tr")[0];

    var itemRegistrationId = getItemRegistrationIdValue(tr);

    var userId = getUserIdValue();

    var message = sendToManufacturing + '  ' + itemRegistrationId + ' ' + userId;
    //alert(message);

    var service = new SDCMGSite.CMGService();
    service.FlagItemRegistrationToSendToManufacturing(itemRegistrationId, sendToManufacturing, userId, "FlagItemRegistrationToSendToManufacturing", onFlagItemRegistrationToSendToManufacturingSuccess, OnError, null);
    service = null;
}




function onFlagItemRegistrationToSendToManufacturingSuccess(result) {

    //alert(result);
}


function FlagItemRegistrationToSampleProduct(control) {

    var saleType = 'RTL';
    if (control.checked == true) {
        saleType = 'SMPL';
    }

    var tr = $(control).closest("tr")[0];

    var itemRegistrationId = getItemRegistrationIdValue(tr);

    var userId = getUserIdValue();

    var message = itemRegistrationId + '  ' + saleType + ' ' + userId;
    //alert(message);

    var service = new SDCMGSite.CMGService();
    service.FlagItemRegistrationToSampleProduct(itemRegistrationId, saleType, userId, "FlagItemRegistrationToSampleProduct", onFlagItemRegistrationToSampleProductSuccess, OnError, null);
    service = null;
}

function onFlagItemRegistrationToSampleProductSuccess(result) {

    //alert(result);
}

function getNodeValue(doc, node) {

    var message = ""
    var strtpos = doc.indexOf("<" + node + ">", 0) + node.length + 2;

    if (strtpos > -1) {
        message = doc.substring(strtpos);
        var endpos = message.indexOf("</" + node + ">");
        message = message.substring(0, endpos);

    }
    //alert(message);
    return message;
}

function OnError(result) {
    alert(result.get_message());
    blockEvent = false;

}

function checkdate(input) {
    if (input.value.length == 0) {
        return true;
    }
    
    var validformat = /^\d{2}\/\d{2}\/\d{4}$/;  //Basic check for format validity
    var validformat2 = /^\d{1}\/\d{1}\/\d{4}$/;  //Basic check for format validity
    var validformat3 = /^\d{2}\/\d{1}\/\d{4}$/;  //Basic check for format validity
    var validformat4 = /^\d{1}\/\d{2}\/\d{4}$/;  //Basic check for format validity
    
    var returnval = false;
    var isValidformat = false;
    
    if (validformat.test(input.value))
        isValidformat = true;

    if (validformat2.test(input.value))
        isValidformat = true;

    if (validformat3.test(input.value))
        isValidformat = true;

    if (validformat4.test(input.value))
        isValidformat = true;

    if (isValidformat == false) {
        input.focus();
        input.value = "";

        alert("Invalid Date Format.")
    }
    else { //Detailed check for valid date ranges
        var monthfield = input.value.split("/")[0]
        var dayfield = input.value.split("/")[1]
        var yearfield = input.value.split("/")[2]
        var dayobj = new Date(yearfield, monthfield - 1, dayfield)
        if ((dayobj.getMonth() + 1 != monthfield) || (dayobj.getDate() != dayfield) || (dayobj.getFullYear() != yearfield))
            alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
        //alert("Invalid Date Format.")
        else
            returnval = true
    }
    return returnval
}

function setDefaultAddress(control) {
    //var address = $("[id$=DefaultAddressSetting]")[0];
    var addressId = $("[id$=DefaultAddressIdSetting]")[0];
    //alert('Default Address ' + addressId.value);

    if (control.selectedIndex > -1) {
        //address.value = control.options[control.selectedIndex].text;
        addressId.value = control.options[control.selectedIndex].value;
        updateCartItem(control);

    }
    //alert('Default Address ' + addressId.value);
}

function getItemRegistrationIdValue(tr) {
    return getControlNumberValue("ItemRegistrationIdHDF", tr);
}

function setPricingMessageValue(tr, controlValue) {
    return setControlValue("PricingMessage", tr, controlValue);
}

function getCartItemIdValue(tr) {
    return getControlNumberValue("txtCartItemId", tr);
}

function setCartItemIdValue(tr, controlValue) {
    return setControlValue("txtCartItemId", tr, controlValue);
}



function setCartIdValue(controlValue) {
    return setControlValue("CartIdHDF", null, controlValue);
}

function getCartTypeIdValue() {
    return getControlNumberValue("CartTypeIdHDF", null);
}

function getAccountIdValue() {
    return getControlNumberValue("AccountIdHDF", null);
}

function getSeasonIdValue() {
    return getControlNumberValue("SeasonIdHDF", null);
}

function getBookingPgmLevelIdValue() {
    return getControlNumberValue("ddlOverrideBookingPgmLvl", null);
}

function getPaymentTermIdValue() {
    return getControlNumberValue("dlOverridePymtTerm", null);
}

function getCartPaymentIdValue() {
    return getControlNumberValue("CartPaymentIdHDF", null);
}

function setCartPaymentIdValue(controlValue) {
    return setControlValue("CartPaymentIdHDF", null, controlValue);
}

function getItemNoValue(tr) {
    var itemNo = getControlStringValue("txtItemNo",tr);
    if (itemNo.length == 0) {
        itemNo = getControlStringValue("txtItemNoHDF", tr);
        //alert(itemNo);
    }
    
    return itemNo;
}

function setItemNoValue(tr, controlValue) {
    setControlValue("txtItemNo", tr, controlValue);
    setControlValue("txtItemNoHDF", tr, controlValue);
}

function getUserIdValue() {
    return getControlStringValue("UserIdHDF", null);
}

function getPONoValue() {
    return getControlStringValue("txtPONo", null);
}

function getShipToAddressIdValue() {
    return getControlNumberValue("ddlShipAddress", null);
}
function getCCardIdValue() {
    return getControlNumberValue("ddlCCard", null);
}

function getShipMethodIdValue() {
    return getControlNumberValue("ddlShipMthd", null);
}

function getQtyValue(tr) {
    return getControlNumberValue("txtQty", tr);
}

function setQtyValue(tr, controlValue) {
    setControlValue("txtQty", tr, controlValue);
}

function getPriceValue(tr) {
    var price = getControlNumberValue("txtPrice", tr);
    if (price == 0) {
        price = getControlNumberValue("txtPriceHDF", tr);
    }
    return price
}
function setPriceValue(tr, controlValue) {
    setControlValue("txtPrice", tr, controlValue);
    setControlValue("txtPriceHDF", tr, controlValue);
}

function getShipDateValue() {
    return getControlDateValue("txtShipDate", null);
}

function getNotShippedByDateValue() {
    return getControlDateValue("txtNotShippedByDate", null);
}

function getPaymentMethodValue() {

    var cCard = getControlCheckBoxValue("rdbCCard", null);

    var paymentMethods = "INVOICE";
    if (cCard == true) {
        paymentMethods = "CCARD";
    }
    return paymentMethods;
}

function getControlCheckBoxValue(controlName, tr) {

    var _controlValue = false;
    var _control = getControl(controlName, tr);
    if (_control != null) {
        _controlValue = Boolean(_control.checked)
    }
    return _controlValue;
}

function setControlCheckBoxValue(controlName, tr, controlValue) {

    var _control = getControl(controlName, tr);
    if (_control != null) {
        _control.checked = Boolean(controlValue)
    }
    return true;
}

function getControlDateValue(controlName, tr) {

    var _controlValue = null;
    var _control = getControl(controlName, tr);

    var _control_value = null;
    if (_control != null)
        _control_value = _control.value;

    var validformat = /^\d{2}\/\d{2}\/\d{4}$/;  //Basic check for format validity
    var validformat2 = /^\d{1}\/\d{1}\/\d{4}$/;  //Basic check for format validity
    var validformat3 = /^\d{2}\/\d{1}\/\d{4}$/;  //Basic check for format validity
    var validformat4 = /^\d{1}\/\d{2}\/\d{4}$/;  //Basic check for format validity
    var validformat5 = /^\d{8}$/;  //Basic check for format validity
    
    var returnval = false;
    var isValidformat = false;

    if (validformat5.test(_control_value)) {
      //  alert(_control_value);
        if (_control_value.length == 8) {
            var x = Number(_control_value.substring(0, 2));
            var y = Number(_control_value.substring(2, 4));
            var z = Number(_control_value.substring(4, 8));
            _control_value = x + "/" + y + "/" + z;
           
        }
    }
    //alert(_control_value);
    if (validformat.test(_control_value))
        isValidformat = true;

    else if (validformat2.test(_control_value))
        isValidformat = true;

    else if (validformat3.test(_control_value))
        isValidformat = true;

    else if (validformat4.test(_control_value))
        isValidformat = true;


    if (isValidformat == false) {
        _controlValue = "1/1/1900";
        _control.value = "";
    }
    else {
        _controlValue = _control_value;
        _control.value = _controlValue;
    }
    //alert(_controlValue);
    return new Date(_controlValue);
}

function setControlDateValue(controlName, tr, controlValue) {
    return setControlValue(controlName, tr, controlValue);
}

function getControlStringValue(controlName, tr) {

    var _controlValue = "";
    var _control = getControl(controlName, tr);
    if (_control != null) {
        _controlValue = _control.value;
    }
    return _controlValue;
}

function setControlStringValue(controlName, tr, controlValue) {
    return setControlValue(controlName, tr, controlValue);
}

function getControlNumberValue(controlName, tr) {
    var _controlValue = 0;
    var _control = getControl(controlName, tr);
    if (_control != null) {
        _controlValue = Number(_control.value);
        if (_controlValue == null) {
            _controlValue = 0;
        }
    }
    return _controlValue;
}

function setControlNumberValue(controlName, tr, controlValue) {
    return setControlValue(controlName, tr, controlValue);
}

function getControl(controlName, tr) {
    var _control = null;
    if (tr == null)
        _control = $("[id$=" + controlName + "]")[0];
    else
        _control = $("[id$=" + controlName + "]", tr)[0];

    return _control
}

function setControlValue(controlName, tr, controlValue) {

    var _control = getControl(controlName, tr);
    if (_control != null) {
        _control.value = controlValue;
    }
    return true;
}

function SortCartItem(control)
{

    $("[id$=SortOptionHDF]")[0].value = control;
    if ($("[id$=SortDirectionHDF]")[0].value = "1")
        $("[id$=SortDirectionHDF]")[0].value = "2"
    else
        $("[id$=SortDirectionHDF]")[0].value = "1"

    document.btnPriceCart.submit();
    
    return true;

}

function setDefaultNumbers(control) {
    //debugger;
    if (control.value.length < 1) return;
    if (Number(control.value) == 0) return;
    
    updateCartItem(control);

}


function getDouble(val) {
    val = val.replace(/\$/, "");
    val = val.replace(/\,/, "");
    //debugger;
    return val;
}

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function isNumeric(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

function isDecimal(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
   
    if (charCode == 46) {
        return true;
    }
    else if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

function isDate(evt) {

    var charCode = (evt.which) ? evt.which : event.keyCode
   
    if (charCode == 47) {
        return true;
    }
    else if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

function isReadOnly(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    alert(charCode);
    return false;
}

function onKeyDown() {
    if ((event.altKey) || ((event.keyCode == 8) && (event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password")) || ((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82))) || (event.keyCode == 116)) {
        event.keyCode = 0;
        event.returnValue = false;
    }
   }
