﻿var _____waiterTimeoutId;
function __showWaiter() {
    var waiter = document.getElementById('waiter');
    var cb = document.getElementById('ContentBody');
    setPositionBy(waiter, cb);
    waiter.style.width = cb.offsetWidth + 'px';
    waiter.style.bottom = document.getElementById('footer').offsetTop + 'px';
    waiter.style.visibility = 'visible';
}

window.onload = function() {
    __getBasketBrief();
};

function __serializeChart()
{
    var msg='';
    var e=document.getElementsByTagName("input");
    for(var i=0;i<e.length;i++)
    {
        if(e[i].name.substring(0,5)=='count')
        {
            msg+=e[i].name.substring(5)+','+e[i].value+';';
        }
    }
    return msg;
}
function __deserializeChart(result)
{
    var spanBasketItogo = document.getElementById("basketItogo");
    //var spanBasketItogoDisc = document.getElementById("basketItogoDisc");
    var rows = result.split(';');
    spanBasketItogo.innerHTML = rows[rows.length-2];
    //spanBasketItogoDisc.innerHTML = rows[rows.length-2];
    document.getElementById("BasketBrief").innerHTML = "В корзине " + rows[rows.length-1];
    var prods = new Array();
    for(var i=0; i<rows.length-2; i++)
    {
        var pair = rows[i].split(',');
        prods[pair[0]] = parseInt(pair[1]);
    }
    var e=document.getElementsByTagName("input");
    var rowIndexTodel = new Array();
    for(var i=0;i<e.length;i++)
    {
        if(e[i].name.substring(0,5)=='count')
        {
            if(prods[e[i].name.substring(5)] == undefined)
            {
                var _row = e[i].parentNode.parentNode;
                rowIndexTodel.push(_row.rowIndex);
            }
            else
            {
                e[i].value = prods[e[i].name.substring(5)];
            }
        }
    }
    var _tbl = document.getElementById("tblBasket");
    while(rowIndexTodel.length>0)
    {
        _tbl.deleteRow(rowIndexTodel.pop());
    }
    return prods;
}

function _____count(count)
{
    if (count == 0) return "пусто";
    if (count % 10 == 1 && count % 100 != 11) return count+" товар";
    if (count % 10 > 1 && count % 10 < 5 && count % 100 != 12 && count % 100 != 13 && count % 100 != 14) return count+" товара";
    return count+" товаров";
}

function _____number_format (number, decimals, dec_point, thousands_sep) {
    // Formats a number with grouped thousands
    //
    // version: 906.1806
    // discuss at: http://phpjs.org/functions/number_format    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +     improved by: davook
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Jay Klehr
    // +     improved by: Brett Zamir (http://brett-zamir.me)    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'    // *     example 10: number_format('1.20', 2);
    // *     returns 10: '1.20'
    // *     example 11: number_format('1.20', 4);
    // *     returns 11: '1.2000'
    // *     example 12: number_format('1.2000', 3);    // *     returns 12: '1.200'
    var n = number, prec = decimals;
 
    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);        return (Math.round(n*k)/k).toString();
    };
 
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
 
    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
     var abs = toFixedFix(Math.abs(n), prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);    } else {
        s = s.replace('.', dec);
    }
 
    var decPos = s.indexOf(dec);    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';    }
    return s;
}

function _____formatMoney(val)
{
    var kop = _____number_format(val,2,'.',' ');
    var ar = kop.split(".");
    var rub= ar[0];
    kop = " " + ar[1]+" коп.";
    if(kop.substring(1, 3) == "00" ) kop="";
    return rub+" руб."+kop;
}

function __chartRecalc()
{
    PageMethods.chartRecalc(__serializeChart(), __chartRecalc_OnSucceeded, OnFailed);
    return false;
}

function __chartLocalRecalc()
{
    var prodCount=0;
    var total=0;
    var e=document.getElementsByTagName("input");
    for(var i=0;i<e.length;i++)
    {
        if(e[i].name.substring(0,5)=='count')
        {
            var id=e[i].name.substring(5);
            var count=parseInt(e[i].value);
            var price=parseInt(document.getElementById("price"+id).value);
            prodCount+=count;
            total+=count*price;
        }
    }
    //var withDiscaunt=total*(1-parseFloat(document.getElementById("discaunt18e36986").value)/100);
    document.getElementById("BasketBrief").innerHTML = "В корзине " + _____count(prodCount);
    document.getElementById("basketItogo").innerHTML = _____formatMoney(total);
    //document.getElementById("basketItogoDisc").innerHTML = _____formatMoney(withDiscaunt);
    if(prodCount>0)
    {
        document.getElementById('orderContent_goOrder').style.visibility = 'visible';
    }
    else
    {
        document.getElementById('orderContent_goOrder').style.visibility = 'hidden';
    }

    return false;
}
function __goOrder()
{
    PageMethods.chartRecalc(__serializeChart(), __goOrder_OnSucceeded, OnFailed);
    return false;
}
function __doOrder()
{
    var _pdName = document.getElementById("orderContent_pdName");
    var _pdPhone = document.getElementById("orderContent_pdPhone");
    var _pdAltPhone = document.getElementById("orderContent_pdAltPhone");
    var _pdEmail = document.getElementById("orderContent_pdEmail");
    var _pdPostIndex = document.getElementById("orderContent_pdPostIndex");
    var _pdCity = document.getElementById("orderContent_pdCity");
    var _pdState = document.getElementById("orderContent_pdState");
    var _pdRegion = document.getElementById("orderContent_pdRegion");
    var _pdStreet = document.getElementById("orderContent_pdStreet");
    var _pdHouse = document.getElementById("orderContent_pdHouse");
    var _pdBuilding = document.getElementById("orderContent_pdBuilding");
    var _pdEntry = document.getElementById("orderContent_pdEntry");
    var _pdCode = document.getElementById("orderContent_pdCode");
    var _pdFloor = document.getElementById("orderContent_pdFloor");
    var _pdApartment = document.getElementById("orderContent_pdApartment");
    var _pdMetro = document.getElementById("orderContent_pdMetro");
    var _pdInfo = document.getElementById("orderContent_pdInfo");
    var _preferRecognition = document.getElementById("preferRecognition");
    
    PageMethods.doOrder(
        _pdName.value,
        _pdPhone.value,
        _pdAltPhone.value,
        _pdEmail.value,
        _pdPostIndex.value,
        _pdCity.value,
        _pdState.value,
        _pdRegion.value,
        _pdStreet.value,
        _pdHouse.value,
        _pdBuilding.value,
        _pdEntry.value,
        _pdCode.value,
        _pdFloor.value,
        _pdApartment.value,
        _pdMetro.value,
        _pdInfo.value,
        _preferRecognition.checked,
        __doOrder_OnSucceeded, OnFailed);
    return false;
}
function __getBasketBrief()
{
    PageMethods.getBasketBrief(__getBasketBrief_OnSucceeded, OnFailed);
    return false;
}
function __getBasketBrief_OnSucceeded(result, userContext, methodName) 
{
    var divBasketBrief = document.getElementById("BasketBrief");
    divBasketBrief.innerHTML = "В корзине " + result;
}
function __addToChart(id)
{
    PageMethods.addToChart(id, __addToChart_OnSucceeded, OnFailed);
    return false;
}
function __chartFlashOff(buttonObject)
{
    document.getElementById(buttonObject).style.backgroundColor="";
}
function __chartFlash(buttonObject)
{
    document.getElementById(buttonObject).style.backgroundColor="yellow";
    window.setTimeout("__chartFlashOff('"+buttonObject+"');", 200);
}
var flashes=0;
// Callback function invoked on successful 
// completion of the page method.
function __addToChart_OnSucceeded(result, userContext, methodName) 
{
    var divBasketBrief = document.getElementById("BasketBrief");
    divBasketBrief.innerHTML = "В корзине " + result;
    flashes=2;
    doFlashes();
}
function __chartRecalc_OnSucceeded(result, userContext, methodName) 
{
    __deserializeChart(result);
}
function __goOrder_OnSucceeded(result, userContext, methodName) 
{
    if(__deserializeChart(result).length>0)
    {
        window.location = '?order=personalData';
    }
}
function __doOrder_OnSucceeded(result, userContext, methodName) 
{
    var divBasketBrief = document.getElementById("BasketBrief");
    var pOrderError = document.getElementById("orderError");
    if(result.length==0)
    {//ok
        divBasketBrief.innerHTML = "В корзине пусто";
        pOrderError.innerHTML = '';
        window.location = '?order=message';
    }
    else
    {
        pOrderError.innerHTML = result;
    }
}

// Callback function invoked on failure 
// of the page method.
function OnFailed(error, userContext, methodName) 
{
    if(error !== null) 
    {
        alert("An error occurred: " + error.get_message());
    }
}

function doFlashes()
{
    var divBasket = document.getElementById("basket");
    if(divBasket.style.backgroundColor!="yellow")
    {
        divBasket.style.backgroundColor="yellow";
    }
    else
    {
        divBasket.style.backgroundColor="";
        flashes--;
        if(flashes<=0) return;
    }
    setTimeout('doFlashes()', 300);
}

function crement(textboxName, delta)
{
    PageMethods.crement(textboxName.substring(5)+';'+delta.toString(), _crement_OnSucceeded, OnFailed);
}

function _crement_OnSucceeded(result, userContext, methodName) 
{
    var res = result.split(';');
    var tb = document.getElementsByName("count"+res[0])[0];
    if(res[1]=='x')
    {
        _remov_OnSucceeded(res[0]);
    }
    else
    {
        if(res.length<3)
        {
            tb.value = parseInt(tb.value) + parseInt(res[1]);
            __chartLocalRecalc();
        }
        else
        {
            tb.value = parseInt(res[2]);
            __chartLocalRecalc();
        }
    }
}

function remov(textboxName)
{
    var tb = document.getElementsByName(textboxName)[0];
    tb.parentNode.parentNode.style.display="none";
    PageMethods.remov(textboxName.substring(5), _remov_OnSucceeded, OnFailed);
}

function _remov_OnSucceeded(result, userContext, methodName) 
{
    var tb = document.getElementsByName("count"+result)[0];
    if(typeof(tb) !== 'undefined')
    {
        var _tbl = document.getElementById("tblBasket");
        _tbl.deleteRow(tb.parentNode.parentNode.rowIndex);
        __chartLocalRecalc();
    }
}

function __goSearch()
{
    var searchString = document.getElementById("searchProducts_txtSearchString").value;
    _____waiterTimeoutId = setTimeout('__showWaiter()', 300);
    window.location = '?search='+encodeURIComponent(searchString)+'&pn=1';
}

function disableEnterKey__goSearch(e)
{
     var key;     
     if(window.event)
          key = window.event.keyCode; //IE
     else
          key = e.which; //firefox     

    if(key == 13)
    {
        __goSearch();
        return false;
    }
    return true;
}

function ChangeImg() {
    if(document.images) {
        eval("document."+ChangeImg.arguments[0]+
             ".src=('"+ChangeImg.arguments[1]+"')");
    }
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

