function sack(file) {
    this.xmlhttp = null;

    this.resetData = function() {
        this.method = "POST";
          this.queryStringSeparator = "?";
        this.argumentSeparator = "&";
        this.URLString = "";
        this.encodeURIString = true;
          this.execute = false;
          this.element = null;
        this.elementObj = null;
        this.requestFile = file;
        this.vars = new Object();
        this.responseStatus = new Array(2);
      };

    this.resetFunctions = function() {
          this.onLoading = function() { };
          this.onLoaded = function() { };
          this.onInteractive = function() { };
          this.onCompletion = function() { };
          this.onError = function() { };
        this.onFail = function() { };
    };

    this.reset = function() {
        this.resetFunctions();
        this.resetData();
    };

    this.createAJAX = function() {
        try {
            this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e1) {
            try {
                this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {
                this.xmlhttp = null;
            }
        }

        if (! this.xmlhttp) {
            if (typeof XMLHttpRequest != "undefined") {
                this.xmlhttp = new XMLHttpRequest();
            } else {
                this.failed = true;
            }
        }
    };

    this.setVar = function(name, value){
        this.vars[name] = Array(value, false);
    };

    this.encVar = function(name, value, returnvars) {
        if (true == returnvars) {
            return Array(encodeURIComponent(name), encodeURIComponent(value));
        } else {
            this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
        }
    }

    this.processURLString = function(string, encode) {
        encoded = encodeURIComponent(this.argumentSeparator);
        regexp = new RegExp(this.argumentSeparator + "|" + encoded);
        varArray = string.split(regexp);
        for (i = 0; i < varArray.length; i++){
            urlVars = varArray[i].split("=");
            if (true == encode){
                this.encVar(urlVars[0], urlVars[1]);
            } else {
                this.setVar(urlVars[0], urlVars[1]);
            }
        }
    }

    this.createURLString = function(urlstring) {
        if (this.encodeURIString && this.URLString.length) {
            this.processURLString(this.URLString, true);
        }

        if (urlstring) {
            if (this.URLString.length) {
                this.URLString += this.argumentSeparator + urlstring;
            } else {
                this.URLString = urlstring;
            }
        }

        // prevents caching of URLString
        this.setVar("rndval", new Date().getTime());

        urlstringtemp = new Array();
        for (key in this.vars) {
            if (false == this.vars[key][1] && true == this.encodeURIString) {
                encoded = this.encVar(key, this.vars[key][0], true);
                delete this.vars[key];
                this.vars[encoded[0]] = Array(encoded[1], true);
                key = encoded[0];
            }

            urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
        }
        if (urlstring){
            this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
        } else {
            this.URLString += urlstringtemp.join(this.argumentSeparator);
        }
    }

    this.runResponse = function() {
        eval(this.response);
    }

    this.runAJAX = function(urlstring) {
        if (this.failed) {
            this.onFail();
        } else {
            this.createURLString(urlstring);
            if (this.element) {
                this.elementObj = document.getElementById(this.element);
            }
            if (this.xmlhttp) {
                var self = this;
                if (this.method == "GET") {
                    totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
                    this.xmlhttp.open(this.method, totalurlstring, true);
                } else {
                    this.xmlhttp.open(this.method, this.requestFile, true);
                    try {
                        this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    } catch (e) { }
                }

                this.xmlhttp.onreadystatechange = function() {
                    switch (self.xmlhttp.readyState) {
                        case 1:
                            self.onLoading();
                            break;
                        case 2:
                            self.onLoaded();
                            break;
                        case 3:
                            self.onInteractive();
                            break;
                        case 4:
                            self.response = self.xmlhttp.responseText;
                            self.responseXML = self.xmlhttp.responseXML;
                            self.responseStatus[0] = self.xmlhttp.status;
                            self.responseStatus[1] = self.xmlhttp.statusText;

                            if (self.execute) {
                                self.runResponse();
                            }

                            if (self.elementObj) {
                                elemNodeName = self.elementObj.nodeName;
                                elemNodeName.toLowerCase();
                                if (elemNodeName == "input"
                                || elemNodeName == "select"
                                || elemNodeName == "option"
                                || elemNodeName == "textarea") {
                                    self.elementObj.value = self.response;
                                } else {
                                    self.elementObj.innerHTML = self.response;
                                }
                                // вот тут проверка элементана видимость и если он ен видим то отображаем его 
                                Displ = self.elementObj.style.display;
                                if (Displ == "none") {
                                        self.elementObj.style.display = "block"; 
                                }
                            }
                            
                            if (self.responseStatus[0] == "200") {
                                self.onCompletion();
                            } else {
                                self.onError();
                            }

                            self.URLString = "";
                            break;
                    }
                };

                this.xmlhttp.send(this.URLString);
            }
        }
    };

    this.reset();
    this.createAJAX();
}




function ShowHideElement(elem)
{
    if(elem.style.display=='none')
    {
        elem.style.display='';
    } else {
        elem.style.display='none';
    }
    
    return false;
}

function ShowHideElement2(elem,elem2)
{
    if(elem.style.display=='none')
    {
        elem.style.display='';
        elem2.style.display='none';
    } else {
        elem2.style.display='';
        elem.style.display='none';
    }
    
    return false;
}
function ShowHideElement3(elem)
{
    var el= new Array();
    el[1]='moscow';
    el[2]='russian';
    el[3]='peter';
    for(i=1;i<4;i++){
    	if(el[i]==elem){
    		getId(el[i]).style.display='';
    	}else{
    		getId(el[i]).style.display='none';
    	}
    }
        
    return false;
}
function disselect(elem)
{
    if(elem.value=='5') {
    		getId('pay3').options[0].disabled=true;
    		getId('pay3').options[2].selected=true;
    }else {
    	getId('pay3').options[0].disabled=false;
    	getId('pay3').options[0].selected=true;
    }
        
    return false;
}
function getId(id) {
    return document.getElementById(id);
}   

function styleId(id) {
    if (el = document.getElementById(id)) {
        return el.style;
    } else return false;
}

var ss_product = new Array();
var ss_time= new Array();

function buyCube(elemid, num, size, color)
{
    hiddeBasket = 0;
    
    ss_product[elemid] = new sack();

    var elem="img"+elemid;
    var elem2="loading"+elemid;
        
    styleId(elem).display="none";
    styleId(elem2).display="";

    ss_product[elemid].setVar("act", "add");
    ss_product[elemid].setVar("num", num);
    ss_product[elemid].setVar("size", size);
    ss_product[elemid].setVar("color", color);
    ss_product[elemid].setVar("elem", elemid);
    
    ss_product[elemid].requestFile = "/order.html";
    ss_product[elemid].method = 'POST';
    ss_product[elemid].onCompletion = LoadBasket;
    
    ss_product[elemid].runAJAX();
    
    ss_time[elemid] = setInterval('referProduct('+elemid+')',100);
        
    return true;
}
function buyCubeindex(elemid, num, size, color)
{
    hiddeBasket = 0;
    
    ss_product[elemid] = new sack();

    var elem="img1";
    var elem2="loading1";
        
    styleId(elem).display="none";
    styleId(elem2).display="";

    ss_product[elemid].setVar("act", "add");
    ss_product[elemid].setVar("num", num);
    ss_product[elemid].setVar("size", size);
    ss_product[elemid].setVar("color", color);
    ss_product[elemid].setVar("elem", elemid);
    
    ss_product[elemid].requestFile = "/order.html";
    ss_product[elemid].method = 'POST';
    ss_product[elemid].onCompletion = LoadBasketIndex;
    
    ss_product[elemid].runAJAX();
    
    
        
    return true;
}
function referProduct(elemid)
{
    if(ss_product[elemid].response)
    {             
    
        var elem = 'img'+elemid;
        var elem2 = 'loading'+elemid;

        styleId(elem).display="";
        styleId(elem2).display='none';
        
        clearInterval(ss_time[elemid]);
        
        getBasket();
        
    }
}

var ss_getbasket = new sack();

function getBasket()
{
        ss_getbasket.setVar("act", 'get');

        ss_getbasket.requestFile = "/order.html";
        ss_getbasket.method = 'POST';
        ss_getbasket.onCompletion = setBasket;

        ss_getbasket.runAJAX();
        
        styleId('basket').display='';
		
        return true;
}

function setBasket()
{
    getId('orderproduct').innerHTML = ss_getbasket.response;
var c=0;
						var s=0;
    					$$('.ccc').each(function(item, index){
     						c=c+Number(item.value);
						});
						$$('.pprice').each(function(item, index){
     						s=s+Number(item.value);
						});
						$('pcount').innerHTML=c;
						$('pprice').innerHTML=s; 
    return '';
}


function LoadBasketIndex()
{
    	var elem = 'img1';
        var elem2 = 'loading1';
        $('pcount').innerHTML=Number($('pcount').innerHTML)+1;
		$('pprice').innerHTML=Number(this.response)+Number($('pprice').innerHTML);
        styleId(elem).display="";
        styleId(elem2).display='none';
}
function LoadBasket()
{
    styleId('basket').display='';
    $('pcount').innerHTML=Number($('pcount').innerHTML)+1;
		$('pprice').innerHTML=Number(this.response)+Number($('pprice').innerHTML);
}


var hiddeBasket = 1;

var ss_basket = new sack();

function CleareBasket()
{

    ss_basket.setVar("act", 'cleare');
    
    ss_basket.requestFile = "/order.html";
    ss_basket.method = 'POST';
    ss_basket.onCompletion = CleareDiv;
    
    ss_basket.runAJAX();
        
    return true;
}
function CleareBasketReg()
{

    ss_basket.setVar("act", 'cleare');
    
    ss_basket.requestFile = "/order.html";
    ss_basket.method = 'POST';
    ss_basket.onCompletion = CleareDiv;
    
    ss_basket.runAJAX();
    $('weight').value=0.1;    
    return true;
}
function CleareDiv()
{
    hiddeBasket=1;

     
    getId('orderproduct').innerHTML = "";
     
}

var ss_delprod =  new sack();

function delProd(elem,id)
{
    ss_delprod.setVar("act", "del");
    ss_delprod.setVar("elem", elem);
    
    ss_delprod.requestFile = "/order.html";
    ss_delprod.method = 'POST';
    ss_delprod.onCompletion = getBasket;
    
    ss_delprod.runAJAX();
    
   	//styleId(id).display = 'none';
        
    return true;
}
function delProdreg(elem,id)
{
    ss_delprod.setVar("act", "del");
    ss_delprod.setVar("elem", elem);
    
    ss_delprod.requestFile = "/order.html";
    ss_delprod.method = 'POST';
    
    
    ss_delprod.runAJAX();
    
    $(id).destroy();
    var price=0;
    var weight=0;
    $$('.pprice').each(function(item, index){
    	price=price+Number(item.value); 	
    });
    $$('.pweight').each(function(item, index){
    	weight=weight+Number(item.value); 	
    });
    $('allsp').value=price;
    if(weight) $('weight').value=weight;
    else $('weight').value=0.1;
    $('allsumpr').set('html',price+'р');
    $('alls').value=price+Number($('allsd').value);
    $('allsum').set('html',$('alls').value+'р');
    var c=0;
	$$('.ccc').each(function(item, index){
     c=c+Number(item.value);
	});
	$('pcount').innerHTML=c;
	$('pprice').innerHTML=price;
    //styleId(id).display = 'none';
        
    return true;
}
var ss_moscow =  new sack();
function moscowSend()
{
    if(trim(getId("orderproduct").innerHTML)=="")
    {
        alert("Ваша корзина пуста, вернитесь к разделу продукция");
        
        return false;
        
    } else if(getId('famil').value.length<2)
    {
        getId('famil').focus();
        alert('Введите Фамилию');
        
        return false;
    } else if (getId('name').value.length<2) {
        alert('Введите Имя');
        getId('name').focus();
        return false;
    } else if ( getId('lname').value.length<2) {
        alert('Введите Отчество');
        getId('lname').focus();
        return false;
    } else if ( getId('phone').value.length<7 ) {
        alert('Телефон должен быть больше 7 цифр');
        getId('phone').focus();
        return false;
    } else if ( !checkmail(getId('email').value) ) {
        alert('Не корректный емаил');
        getId('email').focus();
        return false;
    } else if ( getId('dostav').options[getId('dostav').selectedIndex].value==2 && getId('adress').value.length<2) {
        alert('Введите адрес доставки');
        getId('adress').focus();
        return false;
    }

    return true;
}

function checkmail(str)
{
    //Собственно регулярное вывражение для проверки правильности ввода e-mail
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    //Выполняем проверку(сопоставляем наше рег.выражение со строкой из поля)
    
    if (filter.test(str))
        return true; // сопоставление с образцом прошло успешно
    else
        return false; //пользователь ошибся при вводе
}

function regProd(orderid)
{
    if(trim(orderid.innerHTML)=="")
    {
        alert("Ваша корзина пуста, выберите интересующий вас продукт");
        return false;
    } else
        return true;
}

function trim (str) {
    var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
    for (var i = 0; i < str.length; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    for (i = str.length - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

var ss_region =  new sack();
function peterSend()
{
    if(trim(getId("orderproduct").innerHTML)=="")
    {
        alert("Ваша корзина пуста, вернитесь к разделу продукция");
        
        return false;
        
    } else if(getId('pfamil').value.length<2)
    {
        getId('pfamil').focus();
        alert('Введите Фамилию');
        
        return false;
    } else if (getId('pname').value.length<2) {
        alert('Введите Имя');
        getId('pname').focus();
        return false;
    } else if ( getId('plname').value.length<2) {
        alert('Введите Отчество');
        getId('plname').focus();
        return false;
    } else if ( getId('pphone').value.length<7 ) {
        alert('Телефон должен быть больше 7 цифр');
        getId('pphone').focus();
        return false;
    } else if ( !checkmail(getId('pemail').value) ) {
        alert('Не корректный емаил');
        getId('pemail').focus();
        return false;
    } else if (getId('pcity').value.length<1) {
        alert('Введите Город');
        getId('pcity').focus();
        return false;
    } else if (trim(getId('ppost').value).length!=6) {
        alert('Российский индекс состоит из 6 цифр');
        getId('ppost').focus();
        return false;
    } else if ( getId('padress').value.length<2) {
        alert('Введите адрес доставки');
        getId('padress').focus();
        return false;
    }

    return true;
}

function regionSend()
{
    if(trim(getId("orderproduct").innerHTML)=="")
    {
        alert("Ваша корзина пуста, вернитесь к разделу продукция");
        
        return false;
        
    } else if(getId('rfamil').value.length<2)
    {
        getId('rfamil').focus();
        alert('Введите Фамилию');
        
        return false;
    } else if (getId('rname').value.length<2) {
        alert('Введите Имя');
        getId('rname').focus();
        return false;
    } else if ( getId('rlname').value.length<2) {
        alert('Введите Отчество');
        getId('rlname').focus();
        return false;
    } else if ( getId('rphone').value.length<7 ) {
        alert('Телефон должен быть больше 7 цифр');
        getId('rphone').focus();
        return false;
    } else if ( !checkmail(getId('remail').value) ) {
        alert('Не корректный емаил');
        getId('remail').focus();
        return false;
    } else if (getId('rcity').value.length<1) {
        alert('Введите Город');
        getId('rcity').focus();
        return false;
    } else if (trim(getId('rpost').value).length!=6) {
        alert('Российский индекс состоит из 6 цифр');
        getId('rpost').focus();
        return false;
    } else if ( getId('radress').value.length<2) {
        alert('Введите адрес доставки');
        getId('radress').focus();
        return false;
    }

    return true;
}

var timeStr, dateStr, ostStr, x; 

function clock() { 
        now= new Date(); 
        ex = new Date(2009,0,1,0,0,0); 

        // врем\я  
        hours= now.getHours(); 
        minutes= now.getMinutes(); 
        seconds= now.getSeconds(); 
        timeStr= "" + hours; 
        timeStr+= ((minutes < 10) ? ":0" : ":") + minutes; 
        timeStr+= ((seconds < 10) ? ":0" : ":") + seconds; 
         
        // дата  
        date= now.getDate(); 
        month= now.getMonth()+1; 
        year= now.getYear(); 
        dateStr= "" + date; 
        dateStr+= ((month < 10) ? "/0" : "/") + month; 
        dateStr+= "/" + year; 
         
        ostStr= ""; 
        x = (ex.getTime() - now.getTime())/1000;   
        ostStr = Math.floor(x/60/60) + ' ч. '; 
        ostStr = ostStr + Math.floor((x/60/60 - Math.floor(x/60/60))*60) + ' мин. '; 
        x = (((x/60/60 - Math.floor(x/60/60))*60) - Math.floor((x/60/60 - Math.floor(x/60/60))*60))*60; 
        ostStr = ostStr + Math.floor(x) + ' сек. '; 
        x = (x - Math.floor(x))*10; 
        ostStr = ostStr + Math.floor(x) + ' гц. '; 
         
         
      document.getElementById('x1').innerHTML ='<FONT class="titleclock">До нового года <img src="/images/derevo.gif"> осталось:&nbsp;&nbsp;<FONT class="clock">' + ostStr;

        Timer= setTimeout("clock()",10); 
}     

//clock(); 
