/*global window, document, location, screen, Option, alert, getBodyScrollTop, GetXmlHttpObject, XMLHttpRequest, ActiveXObject, combolist, getOptions, GetGoodPrice, GetTypes, GetFills, GetGood, GetGoodDepend, all, GetCart, fillSelect, comboList, initCombo, toogleInput*/
var id_cat = 0, 
	id_fill = 0, 
	id_type = 0, 
	id_good = null, 
	copyOrder = false, 
	newCat = true, 
	divTypes, divFills,
	colors = ["#fff", "#eee"],
	bgcolor = colors[1],
	loader = null,
	ajaxer = null,
	is_discount_window = false;
	
/*****************************************************/
function log(data){
    var logs = document.getElementById("logs"), div = document.createElement("div");
	if(!logs || !div)
		return;
    div.style.borderBottom = "1px solid #666";
    div.style.padding = "4px";
    div.style.backgroundColor = bgcolor;
    div.innerHTML = data;
    logs.appendChild(div);
    logs.scrollTop += 200;
}

function initLoader(){
    loader = document.getElementById("loader");
}

function toogLoader(l){
    if (loader === null) {
		return;
	}
	loader.style.display = (l) ? "block" : "none";
}

/***********************************************************************************/

/**
 * Формирование ячейки таблицы с параметрами товара
 * @param {Object} data			Дата
 * @param {Object} fieldName	Название поля формы
 * @param {Object} type			Тип поля
 */
function td(data, fieldName, type, action){
    var td_1 = document.createElement("td");
    
    switch (type) {
        case "combo":
            td_1 = comboList(data, fieldName, td_1);
            break;
        case "emptySel":
            td_1.innerHTML = "<select id='" + fieldName + "'><option value='0' selected='true'/></select>";
            break;
        case "label":
            td_1.innerHTML = "<label id='" + fieldName + "'>" + data + "</label>";
            break;
        case "input":
            td_1.innerHTML = "<input onkeyup='inputUpdate()' id='" + fieldName + "' maxlength='4' size='4' type='text' value='" + data + "'/>";
            break;
        case "button":
            //        td_1.innerHTML = "<input onclick='" + action + "' id='" + fieldName + "' src='/images/bsk.gif' type='image' title='" + data + "'/>";
            td_1.innerHTML = "<a href='/order/cart/' onclick='" + action + "' id='" + fieldName + "' title='" + data + "'><img src='/images/bsk.gif'/></a>";
            break;
        default:
            td_1 = getOptions(data, fieldName, td_1);
    }
    return td_1;
}

function div(data, fieldName, type, action){
    var td_1 = document.createElement("span");
    
    switch (type) {
        case "combo":
            td_1 = comboList(data, fieldName, td_1);
            break;
        case "emptySel":
            td_1.innerHTML = "<select id='" + fieldName + "'><option value='0' selected='true'/></select>";
            break;
        case "label":
            td_1.innerHTML = "<label id='" + fieldName + "'>" + data + "</label>";
            break;
        case "input":
            td_1.innerHTML = "<input onkeyup='inputUpdate()' id='" + fieldName + "' maxlength='4' size='4' type='text' value='" + data + "'/>";
            break;
        case "button":
            td_1.innerHTML = "<input onclick='" + action + "' id='" + fieldName + "' type='button' value='" + data + "'/>";
            break;
            
            
        case "t_price":
            td_1.innerHTML = "<p align='center'><label id='" + fieldName + "'>" + data + "</label></p>";
            break;
        case "price":
            td_1.innerHTML = "<p align='center'>(за шт. <label id='" + fieldName + "'>" + data + "</label>)</p>";
            break;
        case "height":
            td_1.innerHTML = "<table class='in'><tr><td width='48'>Высота: </td><td><select name='height' id='" + fieldName + "'><option value='0' selected='true'/></select></td></tr></table>";
            break;
        case "width":
            td_1.innerHTML = "<table class='in'><tr><td width='48'>Ширина: </td><td><select name='width' id='" + fieldName + "'><option value='0' selected='true'/></select></td></tr></table>";
            break;
        case "options":
            td_1.style.paddingTop = "6px";
            //td_1.innerHTML = "<p style='float:left;padding-top:5px'>Опции:&nbsp;</p>";
            td_1.appendChild(comboList(data, fieldName));
            break;
            
        default:
            td_1 = getOptions(data, fieldName, td_1);
    }
	
    return td_1;
}

function newTD(div, nowrap){
    var td_1 = document.createElement("td");
	if(nowrap==1)
		td_1.className = "nowr"
    td_1.appendChild(div);
    return td_1;
}

/**
 * Получение доп параметров
 * @param {Object} data			Дата из ответа
 * @param {String} fieldName	Название поля формы
 * @param {Object} td			Ячейка в таблице(return), если нет, то return select
 * @param {Object} options		Если тру, return options[]
 */
function getOptions(data, fieldName, td, options){
    var opts = [],
		sel = document.createElement("select"),
		i = null,
		ind = null,
		opt = null,
		inp = null;
    
    sel.id = fieldName;
    
    sel.onkeyup = function(){
        new GetGoodPrice();
    };
    sel.onchange = function(){
        new GetGoodPrice();
    };
    
    //создание опций
    for (i = 0; i < data.elements.length; i++) {
        opt = new Option(data.elements[i].value, data.elements[i].id);
        if (data.id_value == data.elements[i].id) {
			opt.selected = true;
		}
        opts.push(opt);
        if (data.elements[i].individual == 1) {
			inputColors["val"] = data.elements[i].id;
			inputColors["text"] = data.color;
		}
    }
    
    if (options) {
        return opts;
    }
    //заправка опций в селект	
    sel = fillSelect(sel, opts);    

    if (td) {
        td.appendChild(sel);
        return td;
    }
    else {
        return sel;
    }
}

function newInput(fieldName){
        inp = document.createElement("input");
        inp.type = "text";
        inp.id = "h_" + fieldName;
        inp.value = "";
        inp.maxLength = 4;
        inp.size = 4;
		inp.style.display = "none";
		return inp;
}

/**
 * Заполнение селекта опциями
 * @param {Object} sel		селект
 * @param {Object} opts		массив опций
 */
function fillSelect(sel, opts){
    sel.options.length = 0;
    for (var j = 0; j < opts.length; j++) {
        sel.options[j] = opts[j];
    }
    return sel;
}

function inputUpdate(){
    if (this.value != '') {
		new GetGoodPrice();
	}
}

/**
 * Вкл/выкл тектового инпута
 * @param {Object} sel		селект
 * @param {Object} ind		значение селекта при котором всплывает инпут
 * @param {Object} name		имя инпута в форме
 */
function toogleInput(sel, ind, name){
	if(!sel.form || !sel.form[name])
		return;
    if (sel.value == ind) {
        sel.form[name].style.display = "inline";
		sel.form[name].value = inputColors["text"];
        sel.form[name].setAttribute("onchange", "inputUpdate()");
    }
    else {
        sel.form[name].style.display = "none";
        sel.form[name].value = "";
    }
}

/**
 * Сделать комболист (с chekbox)
 * @param {Object} data			Дата из ответа
 * @param {Object} fieldName	Название поля формы
 * @param {Object} td			Ячейка в таблице(return), если нет, то return combolist
 */
function comboList(data, fieldName, td){
    var div = document.createElement("div");
    div.className = "out";
    div.innerHTML = '<img class="trigger" src="/images/ajax/blank.gif" onload=""><input name="" type="text"/><input id="' + fieldName + '" type="hidden" value="">';
    /*  var ul = document.createElement("ul");
     var li = document.createElement("li");
     for (var i = 0; i < data.elements.length; i++) {
     var element = li.cloneNode(false);
     if(data.elements[i].checked==1)
     element.innerHTML = '<input type="checkbox" value="' + data.elements[i].id + '" checked="true">' + data.elements[i].value;
     else
     element.innerHTML = '<input type="checkbox" value="' + data.elements[i].id + '">' + data.elements[i].value;
     ul.appendChild(element);
     }
     div.appendChild(ul);*/
    if (td) {
        td.appendChild(div);
        return td;
    }
    return div;
}

function fillCombo(id, data){
    var inp = document.getElementById(id),
		div = null,
		ul = null,
		li = null,
		i,
		element;
    if (!inp || inp === null) {
		return;
	}		
    div = inp.parentNode;
    if (div.getElementsByTagName("ul")[0]) {
		div.removeChild(div.getElementsByTagName("ul")[0]);
	}
    ul = document.createElement("ul");
    li = document.createElement("li");
    for (i = 0; i < data.elements.length; i++) {
        element = li.cloneNode(false);
        if (data.elements[i].checked == 1){ 
            element.innerHTML = '<input type="checkbox" value="' + data.elements[i].id + '" checked="true">' + data.elements[i].value;
		}
        else{ 
            element.innerHTML = '<input type="checkbox" value="' + data.elements[i].id + '">' + data.elements[i].value;
		}
        ul.appendChild(element);
    }
    div.appendChild(ul);
    
    initCombo(div.getElementsByTagName("img")[0], 1);
}


/******************************************************************************/

function startAjax(obj){			

    bgcolor = (bgcolor == colors[2]) ? colors[1] : colors[2];
    toogLoader(1);
    var xmlHttp = GetXmlHttpObject(),
		xmlDoc = null,
		data = null,
		url = "engine.php";
		
    if (xmlHttp === null) {
        return;
    }	
    log("request: " + obj.send);

    xmlHttp.onreadystatechange = function(){
        if (xmlHttp.readyState == 4) {
            xmlDoc = xmlHttp.responseText;
			
            data = JSON.parse(xmlDoc);
            log("response: " + xmlDoc);
            
            ajaxer.response(data);
            
            toogLoader();
        }
        return false;
    };
    
    url = "?" + obj.send;
    xmlHttp.open("GET", url, true);
    xmlHttp.setRequestHeader("Content-Type", "application/json");
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251'");
    xmlHttp.setRequestHeader("Cache-Control", " no-cache");
    xmlHttp.send(null);
    return false;
}

function GetXmlHttpObject(){
    var objXMLHttp = null;
    if (window.XMLHttpRequest) {
        objXMLHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
            objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return objXMLHttp;
}

function getlnsideWindowWidth(){
    if (window.innerWidth) {
        return window.innerWidth;
    }
    else {
        return document.body.parentElement.clientWidth;
    }
    return 0;
}

function resizeWin(){
    if (divTypes && divTypes) {
        var w = getlnsideWindowWidth();
        /*divTypes.style.width = w / 2 - 20 + "px";
         divFills.style.width = w / 2 - 20 + "px";*/
        divTypes.style.width = w - 30 + "px";
        divFills.style.width = w/2 - 30 + "px";
		document.getElementById("message").style.width = w/2 - 30 + "px";
    }
}


/*****************************************************************************************/


function getVal(id){
    try {
        if (document.getElementById(id).value) {
            return document.getElementById(id).value;
        }
        else {
            return document.getElementById(id).innerHTML;
        }
    } 
    catch (e) {
		return 0;
    }
}

function setVal(id, val){
    document.getElementById(id).innerHTML = val;
}

function GetInfo(){
    this.send = "method=GetInfo";
    
    this.getResponse = function(data){
        setVal("dealerid", data.dealerid);
        setVal("number", data.number);
        setVal("version", data.version);
        is_discount_window = data.is_discount_window;
    };
    ajaxer.put(this);
}

function getClassName(obj) {
// get classname abstracted from
// constructor property
if(!obj.constructor)
	return;
var c = obj.constructor.toString();
var start = c.indexOf('function ') + 9;
var stop = c.indexOf('(');
c = c.substring(start, stop);
return c;
}

function Ajaxer(){

    var instance = this;
    
    this.objects = [];
    this.curObject = null;
	    
    
    this.put = function(obj, clear_message){	
		if(clear_message == null && document.getElementById("message")){
			document.getElementById("message1").innerHTML = '';
			document.getElementById("message2").innerHTML = '';
		}
        this.objects.push(obj);
        if (this.curObject === null) {
            instance.next();
        }
    };
    
    this.next = function(){
        if (this.objects.length > 0) {
            this.curObject = this.objects.shift();
            startAjax(this.curObject);
        }
        else {
            this.curObject = null;
        }
    };
    this.response = function(data){        
		var ss = getClassName(this.curObject)
		//alert(ss)
		this.curObject.getResponse(data);
		if(ss!="GetGood" && ss!="GetGoodDepend" && ss!="GetGoodPrice")			
			this.next();
    };
}

ajaxer = new Ajaxer();


function Darkness(type, id, edit, callbackFunc){
	if(type == 1 && callbackFunc && is_discount_window == 0){
		return callbackFunc();
	}
    if (type == 2 || type == 3 || type == 1) {
        var height = 70, width = 270, body = document.getElementsByTagName("body")[0], scrolling = getBodyScrollTop(body), over = document.createElement('div'), h, conteiner, inside, action;
        
        over.id = "over";
        
        if (body.offsetHeight > screen.availHeight) {
            h = body.offsetHeight;
            body.style.overflow = "auto";
        }
        else {
            h = screen.availHeight;
            body.style.overflow = "hidden";
        }
        
        if (h > (scrolling + height + 40)) {
            over.style.height = h + "px";
        }
        else {
            over.style.height = scrolling + height + 40 + "px";
        }
        
        body.appendChild(over);
        
        conteiner = body.appendChild(document.createElement('div'));
        conteiner.id = "conteinerimg";
        inside = conteiner.appendChild(document.createElement('div'));
        inside.id = "inside";
        inside.style.width = width + "px";
        inside.style.height = height + "px";
        inside.style.marginLeft = "auto";
        inside.style.marginRight = "auto";
        inside.style.marginTop = scrolling + 150 + "px";
        
        if (type == 1) {
			inside.innerHTML = "<h4 align='center'>Введите значение скидки</h4><p><input id='Dval' type='text' value='0'/></p><table style='margin:8px auto 0; display: table;' class='but'><tr><td width='6'><img src='/images/lround.gif' width='6' height='17' alt='' /></td><td class='red'><input id='Dbut' class='but' type='button' value='Продолжить' /></td><td width='6'><img src='/images/rround.gif' width='6' height='17' alt='' /></td></tr></table>";
			
			document.getElementById("Dbut").onclick = function(){
				SetDiscount(document.getElementById("Dval").value, callbackFunc);
			}
			return; 
        }
        /*	 else {*/
        action = ((id === null) ? location : ("/order/id/" + id)) + '/print\' target=\'_blank';
        if (type == 3) {
            action = '/order/resaling/' + id + '/';
        }
        inside.innerHTML = "<h4 align='center'>Уровень наценки для перепродажи</h4><form name='darkForm' action='" + action + "' method='POST'><p><input name='charge' id='Dval' type='text'/></p><table style='margin:8px auto 0'><tr><td><table cellpadding='0' cellspacing='0' align='center' class='but'><tr><td width='6'><img src='/images/lround.gif' width='6' height='17' alt='' /></td><td class='red'><input id='Dbut' class='but' type='button' value='Продолжить' /></td><td width='6'><img src='/images/rround.gif' width='6' height='17' alt='' /></td></tr></table></td><td><table cellpadding='0' cellspacing='0' align='center' class='but'><tr><td width='6'><img src='/images/lround.gif' width='6' height='17' alt='' /></td><td class='red'><input id='Dcancel' class='but' type='button' value='Отмена' /></td><td width='6'><img src='/images/rround.gif' width='6' height='17' alt='' /></td></tr></table></td></tr></table></form>";
        
        document.getElementById("Dbut").onclick = function(){
            //PrintCart(document.getElementById("Dval").value)
            document.darkForm.submit();
            if (edit) {
                location.href = "/order/edit/" + id + "/";
            }
            document.getElementById("over").parentNode.removeChild(document.getElementById("over"));
            document.getElementById("conteinerimg").parentNode.removeChild(document.getElementById("conteinerimg"));
            body.style.overflow = "auto";
            new GetInfo();
            return;
            //PrintOrder(document.getElementById("Dval").value);
        };
        document.getElementById("Dcancel").onclick = function(){
            location.href = location;
            document.getElementById("over").parentNode.removeChild(document.getElementById("over"));
            document.getElementById("conteinerimg").parentNode.removeChild(document.getElementById("conteinerimg"));
            body.style.overflow = "auto";
        };
        //}
    }
    
    else 
        if (type == 1) {
        //SetDiscount(0);
        }
        else {
            PrintCart(0);
        }
    
}


function init(){
    divTypes = document.getElementById("Types");
    divFills = document.getElementById("allFills");
	
	if(divTypes==null)
		return; 
		
    resizeWin();
    /*new GetInfo();
     //Darkness(1);
     //new GetCats();
     
     //new GetCats();
     new GetCart(true);*/
    new GetInfo();
    new GetCart(true);
}

function updateVal(id, val){
    //document.getElementById(id).innerHTML = val;
}

function GetCats(){

    this.send = "method=GetCats";
    
    ajaxer.put(this);
    
    this.div = document.getElementById("Cats");
    
    this.getResponse = function(data){
        while (this.div.firstChild) {
            this.div.removeChild(this.div.firstChild);
        }
        var str = '', i;
        
        for (i = 0; i < data.length; i++) {
            str += "<a href='#' value='" + data[i].id + "'>" + data[i].name + "</a>&nbsp;&nbsp;";
        }
        this.div.innerHTML = str;
        initCat();
        
        if (id_cat === 0) { //если кат не выбрана грузим первую
            id_cat = data[0].id;
            updateVal("catLog", id_cat);
        }
        new GetTypes();
    };
    var cats = document.getElementById("Cats").getElementsByTagName("a");
    
    function initCat(){
        for (var i = 0; i < cats.length; i++) {
            cats[i].onclick = function(){
                id_fill = 0;
                id_type = 0;
                id_cat = this.getAttribute("value");
                updateVal("catLog", id_cat);
                new GetTypes();
                return false;
            };
        }
    }
}

function toogle(col, val, parent){
    for (var i = 0; i < col.length; i++) {
        if (col[i].getAttribute("value") == val) {
            if (parent) {
				col[i].parentNode.className = "active";
			}
			else {
				col[i].className = "active";
			}
        }
        else {
            if (parent) {
				col[i].parentNode.className = "";
			}
			else {
				col[i].className = "";
			}
        }
    }
}

function getName(val, id){
    var name = "",
		t = document.getElementById(id).getElementsByTagName("table"),
		i;
    for (i = 0; i < t.length; i++) {
        if (t[i].getAttribute("value") == val) {
            name = t[i].getElementsByTagName("td")[1].innerHTML;
        }
    }
    return name;
}

function GetTypes(fillsObj){

    var instance = this;
    this.send = "";
    
    this.init = function(){
        this.send = "method=GetTypes&id_cat=" + id_cat + "&id_fill=" + id_fill;
        ajaxer.put(instance);
    };
    
    instance.init();
    
    
    this.gettypes = function(obj){
        if (obj) {
			id_type = obj.getAttribute("value");
		}
        updateVal("typeLog", id_type);
        new GetFills(instance);
    };
    
    this.div = document.getElementById("Types");
    
    this.getResponse = function(data){
    
        if (data == "") {
            return;
        }
        if(id_type==0)
        while (this.div.firstChild) {
            this.div.removeChild(this.div.firstChild);
        }
        var str = '<table><tr>',
			i,
			k,
			objs;
        
        for (i = 0; i < data.length; i++) {
            str += "<td><table value=" + data[i].id + "><tr><td>";
            if (data[i].url != '') {
                str += "<img src=" + data[i].url + " value=" + data[i].id + " title=" + data[i].name + "/>";
            }
            else {
                str += "<img src='/images/0.gif' width='93' height='110'/>";
            }
            str += "</td></tr><tr><td>" + data[i].name + "</td></tr></table></td>";
        }
		if(id_type==0)
        this.div.innerHTML = str + "</tr></table>";
        
        
        if ((id_type == 0 && id_fill == 0)) { //если тип не выбран или тип 1 грузим первую
            id_type = data[0].id;
            updateVal("typeLog", id_type);
        }
        
        toogle(document.getElementById("Cats").getElementsByTagName("a"), id_cat);
        toogle(document.getElementById("Types").getElementsByTagName("tr")[0].getElementsByTagName("table"), id_type);
        try {
            toogle(document.getElementById("allFills").getElementsByTagName("tr")[0].getElementsByTagName("table"), id_fill);
        } 
        catch (e) {
        }
        
        
        objs = document.getElementById("Types").getElementsByTagName("tr")[0].getElementsByTagName("table");
        
        for (k = 0; k < objs.length; k++) {
            objs[k].onclick = function(){
                //goods = true;
                instance.gettypes(this);
            };
        }
        
        if (fillsObj) {
			new GetGoods();
		}
		else {
			new GetFills();
		}
    };
}

function GetFills(typesObj){

    var instance = this;
    
    this.send = "";
    
    this.init = function(){
        this.send = "method=GetFills&id_cat=" + id_cat + "&id_type=" + id_type;
        ajaxer.put(instance);
    };
    
    instance.init();
    
    
    this.getfills = function(obj){
        if (obj) {
            id_fill = obj.getAttribute("value");
        }
        updateVal("fillLog", id_fill);
        new GetTypes(instance);
    };
    
    
    this.div = document.getElementById("allFills");
    
    
    this.getResponse = function(data){
    
        while (this.div.firstChild) {
			this.div.removeChild(this.div.firstChild);
		}
        var str = '<table><tr>',
			i,
			k,
			objs;
        
        for (i = 0; i < data.length; i++) {
            str += '<td><table value="' + data[i].id + '" width="1" border="0" align="left"><tr><td>';
            if (data[i].url != '') {
				str += '<img src="' + data[i].url + '" value="' + data[i].id + '"/>';
			}
			else {
				str += "<img src='/images/0.gif' width='100' height='100'/>";
			}
            str += '</td></tr><tr><td>' + data[i].name + '</td></tr></table></td>';
        }
        
        this.div.innerHTML = str + "</tr></table>";
        
        toogle(document.getElementById("Types").getElementsByTagName("tr")[0].getElementsByTagName("table"), id_type);
        toogle(document.getElementById("allFills").getElementsByTagName("tr")[0].getElementsByTagName("table"), id_fill);
        
        if (id_fill == 0) { //если тип не выбран грузим первую
			if (data != '') {
				id_fill = data[0].id;
			}
			else {
				id_fill = 0;
			}
            updateVal("fillLog", id_fill);
            
            new GetGoods();
        }
        
        objs = this.div.getElementsByTagName("tr")[0].getElementsByTagName("table");
        
        for (k = 0; k < objs.length; k++) {
            objs[k].onclick = function(){
                //goods = true;
                instance.getfills(this);
            };
        }
        
        if (typesObj) {
            new GetGoods();
        }
    };
}

function GetGoods(){

    var instance = this;
    
    if (id_type === 0 || id_fill === 0) {
		return;
	}
    
    this.send = "method=GetGoods&id_cat=" + id_cat + "&id_type=" + id_type + "&id_fill=" + id_fill;
    ajaxer.put(instance);
    
    
    this.div = document.getElementById("Goods");
    
    this.getResponse = function(data){
		
		toogle(document.getElementById("Types").getElementsByTagName("table"), id_type);
		toogle(document.getElementById("allFills").getElementsByTagName("table"), id_fill);
		
		while (this.div.firstChild) {
			this.div.removeChild(this.div.firstChild);
		}
		var str = '',
			tr,
			i,
			k,
			objs;
		
		if (data.length === 0 || data.message!=null) {
			this.div.style.height = "auto";
			str = "<h1>Вариант: '" + getName(id_type, "Types") + "' + '" + getName(id_fill, "allFills") + "' не существует!!!</h1>";
			str = (data.length==0) ? str : "<h1>"+data.message+"</h1>";
			tr = document.getElementById("trGood");
			while (tr.cells.length > 0) {
				tr.removeChild(tr.cells[0]);
			}
		}
		else{ 
			if (data.length == 1) {
				this.div.style.height = "auto";
				str += "<p value=" + data[0].id + ">" + data[0].name + "</p>";
				id_good = data[0].id;
				updateVal("goodLog", id_good);
				new GetGood();
			}
			else {
				this.div.style.height = "90px";
				for (i = 0; i < data.length; i++) {
					str += "<p value=" + data[i].id + ">" + data[i].name + "</p>";
				}
			}
		}
        this.div.innerHTML = str;
        
        
        objs = document.getElementById("Goods").getElementsByTagName("p");
        for (k = 0; k < objs.length; k++) {
            objs[k].onclick = function(){
                instance.getgood(this);
            };
        }
        
        this.getgood = function(obj){
            id_good = obj.getAttribute("value");
            updateVal("goodLog", id_good);
            new GetGood();
        };
        
        if (copyOrder) {
            new GetCart();
        }
    };
}

var inputColors = [];

function GetGood(id_goodCart, id_cart, copy){	
	
    var instance = this;
    
    /*   var objs = document.getElementById("Goods").getElementsByTagName("p");
     
     for (var i = 0; i < objs.length; i++) {
     objs[i].onclick = function(){
     instance.init(this)
     };
     }*/
    //не копирование
    this.send = "method=GetGood&id_good=" + ((id_goodCart) ? id_goodCart : id_good) + ((id_cart) ? ("&id_cart=" + id_cart) : '');
    
    ajaxer.put(instance);
    
    /*   this.init = function(obj){
     id_good = obj.getAttribute("value");
     updateVal("goodLog", id_good);
     var send = "method=GetGood&id_good=" + id_good;
     
     startAjax(instance, send)
     }*/
    this.div = document.getElementById("Good").getElementsByTagName("tbody")[0];
    
    
    this.getResponse = function(data){
    
        toogle(document.getElementById("Goods").getElementsByTagName("p"), id_good);
        
        /*if(this.div && this.div.rows.length > 1 && this.div.rows[1].id=="trGoog")
         this.div.removeChild(this.div.rows[1])*/
        var tr = document.getElementById("trGood"),
			multyTD, ///ячейка для многих свойств
			multyDiv,
			tBut;
        
        while (tr.cells.length > 0) {
			tr.removeChild(tr.cells[0]);
		}
        
        tr.appendChild(td(data.name, "name", "label"));
        
        multyTD = newTD(div("", "fills", "emptySel"));
        multyTD.innerHTML += "<br/><p style='float:left'>Опции:&nbsp;</p>";
        multyTD.appendChild(div(data.options, "options", "options")); // 
        tr.appendChild(multyTD);
        
        //			fillCombo("options", data.options);
      
      //  tr.appendChild(td(data.colors, "colors"));  
	  	multyTD = td("", "colors", "emptySel");
		multyTD.appendChild(newInput("colors"));
		tr.appendChild(multyTD); 
	//   tr.appendChild(td("", "colors", "emptySel")); 
		
	/*	document.getElementById("colors").onchange = function(){
            toogleInput(this, inputColors["val"], "h_colors");
        };
		if (document.getElementById("h_colors")) {
			document.getElementById("h_colors").onchange = function(){
				new GetGoodPrice(id_cart);
			};
		}*/
		if (!window.XMLHttpRequest && !(/msie|MSIE 6/.test(navigator.userAgent))) {
			var ss = tr.getElementsByTagName("option");
			for (var i = 0; i < ss.length; i++) {
				ss[i].selected = false;
				if (ss[i].value == data.colors.id_value) 
					ss[i].selected = true;
			}
		}	
        
        tr.appendChild(td("", "sides", "emptySel")); ///Сторонность
        //		tr.appendChild(td(data.windows, "windows")); ///Стекло					//	
        tr.appendChild(td("", "windows", "emptySel"));
        
        multyTD = newTD(div("", "width", "width"));
        multyTD.appendChild(div("", "height", "height"));
        tr.appendChild(multyTD);
        
        //		tr.appendChild(td(data.boxes, "boxes"));									//	
        tr.appendChild(td("", "boxes", "emptySel"));
        
        tr.appendChild(td(data.quantity, "quantity", "input"));
        
        multyTD = newTD(div("", "price_total", "t_price"),1);
        multyTD.appendChild(div("", "price", "price"));
        tr.appendChild(multyTD);
        
        //		tr.appendChild(td("В корзину", "cart_but", "button", "new AddCart("+ ((id_goodCart) ? id_goodCart : id_good)+ ((id_cart) ? (","+id_cart) : "") + ");return false"));
        
        //не копирование
        tBut = td("В корзину", "cart_but", "button", "new AddCart(" + ((id_goodCart) ? id_goodCart : id_good) + ((id_cart) ? ("," + id_cart) : "") + ");return false");
        
		if(copy){//копирование
			tBut = td("В корзину", "cart_but", "button", "new AddCart(" + id_goodCart + ");return false");
		}
        
        tr.appendChild(tBut);
        //	this.div.appendChild(tr);        

        document.getElementById("quantity").onkeyup = function(){
            new GetGoodPrice(id_cart);
        };
        new GetGoodDepend(id_goodCart, id_cart); ///доп параметры

        ajaxer.next();
        
    };
}

function replace(par, el, id){
    var img = document.getElementById(id);
    par.replaceChild(el, img);
}


function GetGoodDepend(id_goodCart, id_cart, ex){	
    //  var good = document.allInputs; ///форма
		var sides = document.getElementById("sides"), //поля формы с параметрами
				fills = document.getElementById("fills"), //поля формы с параметрами
				width = document.getElementById("width"),
				height = document.getElementById("height"),
				boxes = document.getElementById("boxes"),
				windows = document.getElementById("windows"),
				options = document.getElementById("options"),		
				colors = document.getElementById("colors"),		
				id_side = getVal("sides"),
				id_width = getVal("width"),
				id_height = getVal("height"),    
				id_box = getVal("boxes"),
				id_window = getVal("windows"),
				id_options = getVal("options"),
				id_colors = getVal("colors"),
				h_colors = getVal("h_colors");	


	if(id_cart==null || typeof(id_cart)=='undefined')
		id_fill = (getVal("fills") == 0) ? id_fill : getVal("fills");
	else
		id_fill = 0;
		
 
    fills.onchange = function(){
        new GetGoodDepend(null, id_cart, "fills");
    };
    sides.onchange = function(){
        new GetGoodDepend(null, id_cart, "sides");
    };
    width.onchange = function(){
        new GetGoodDepend(null, id_cart, "width");
    };
    height.onchange = function(){
        new GetGoodDepend(null, id_cart, "height");
    };
    boxes.onchange = function(){
        new GetGoodDepend(null, id_cart, "boxes");
    };
    windows.onchange = function(){
        new GetGoodDepend(null, id_cart, "windows");
    };  
	 colors.onchange = function(){
	 	 toogleInput(this, inputColors["val"], "h_colors");
        new GetGoodDepend(null, id_cart, "colors");
    };

    //  var send = "method=GetGoodDepend&id_good=" + id_good + "&id_fill=" + id_fill + "&id_side=" + id_side + "&id_width=" + id_width + "&id_height=" + id_height;
    
    this.send = "method=GetGoodDepend&id_good=" + ((id_goodCart) ? id_goodCart : id_good) + ((id_cart) ? ("&id_cart=" + id_cart) : "") + "&id_fill=" + id_fill + "&id_side=" + id_side + "&id_width=" + id_width + "&id_height=" + id_height + "&id_box=" + id_box + "&id_window=" + id_window + "&id_options=" + id_options + "&id_color=" + id_colors+"&color=" + ((h_colors)?h_colors:0);    
    
    ajaxer.put(this);
    
    this.getResponse = function(data){
        if (ex != "fills") {
			fillSelect(fills, getOptions(data.fills, "fills", null, true));
		}
        if (ex != "sides") {
			fillSelect(sides, getOptions(data.sides, "sides", null, true));
		}
        if (ex != "width") {
			fillSelect(width, getOptions(data.width, "width", null, true));
		}
        if (ex != "height") {
			fillSelect(height, getOptions(data.height, "height", null, true));
		}
        if (ex != "boxes") {
			fillSelect(boxes, getOptions(data.boxes, "boxes", null, true));
		}
        if (ex != "windows") {
			fillSelect(windows, getOptions(data.windows, "windows", null, true));
		}
        if (ex != "options") {
			fillCombo("options", data.options);
		}
		if (ex != "colors") {
			fillSelect(colors, getOptions(data.color, "colors", null, true));
			 toogleInput(colors,  inputColors["val"], "h_colors");
		}
		var message = '';
		for(var i=0; i<data.messages.length; i++){
			message += "<p>"+data.messages[i].name+"</p>"
		}
		document.getElementById("message1").innerHTML = message;

        
        new GetGoodPrice(id_cart,((id_goodCart) ? id_goodCart : id_good)); ///запрос цены
        
		ajaxer.next();
    };
}


function GetGoodPrice(id_cart, id_goodEdit){
    var id_side = getVal("sides"),
		id_width = getVal("width"),
		id_height = getVal("height"),
		id_fill = getVal("fills"),
		quantity = getVal("quantity"),
		id_color = getVal("colors"),
		id_window = getVal("windows"),
		id_box = getVal("boxes"),
		id_options,
		color = null;
		
		try{
			id_options = getVal("options").split(",")
		}catch(e){
			id_options = 0;
		}
	
	if (getVal("h_colors") != "") {
		color = getVal("h_colors");
	}    
    
    this.send = "method=GetGoodPrice&id_good=" + ((id_goodEdit) ? id_goodEdit : id_good) + "&id_fill=" + id_fill + "&id_side=" + id_side + "&id_width=" + id_width + "&id_height=" + id_height + "&quantity=" + quantity + "&id_color=" + id_color + ((color) ? ("&color=" + color) : '') + "&id_window=" + id_window + "&id_box=" + id_box + "&id_options=" + id_options + ((id_cart) ? ("&id_cart=" + id_cart) : '');
    
    ajaxer.put(this,1);
    
    this.getResponse = function(data){
		if (document.getElementById("price")) {
			document.getElementById("price").innerHTML = data.price;
			document.getElementById("price_total").innerHTML = data.price_total;
		}
		try {
			document.getElementById("message2").innerHTML = "<p>" + data.message + "</p>";
		}catch(e){}
        
        if (copyOrder) {
            new GetCart();
        }
        
        for (var k = 0; k < all.length; k++) {
            all[k].init();
        }
		
		ajaxer.next();
    };
}


function AddCart(id_goodCart, id_cart){
    var good = document.allInputs, ///форма
	name = document.getElementById("name").innerHTML,
	price = document.getElementById("price").innerHTML,
	price_total = document.getElementById("price_total").innerHTML,
	id_fill = getVal("fills"),
	id_side = getVal("sides"),
	id_width = getVal("width"),
	id_height = getVal("height"),
	quantity = getVal("quantity"),
    //  var id_color = (getVal("h_colors") == "") ? getVal("colors") : getVal("h_colors");
	id_color = getVal("colors"),
	color = null,
	id_window = getVal("windows"),
	id_box = getVal("boxes"),
	id_options = getVal("options").split(","),
	tr = null,
	td = null;
    
	if (getVal("h_colors") != "") {
		color = getVal("h_colors");
	}
    
    /*var gdiv = document.getElementById("Good").getElementsByTagName("tbody")[0];
     if(gdiv && gdiv.rows.length > 1)
     gdiv.removeChild(gdiv.rows[1])*/
    tr = document.getElementById("trGood");
    while (tr.cells.length > 0) {
		tr.removeChild(tr.cells[0]);
	}
    td = document.createElement("td");
    td.setAttribute("colspan", 10);
    tr.appendChild(td);
    
    this.send = "method=AddCart&id_good=" + ((id_goodCart) ? id_goodCart : id_good) + ((id_cart) ? ("&id_cart=" + id_cart) : "") + "&id_fill=" + id_fill + "&id_side=" + id_side + "&id_width=" + id_width + "&id_height=" + id_height + "&quantity=" + quantity + "&id_color=" + id_color + ((color) ? ("&color=" + color) : '') + "&id_window=" + id_window + "&id_box=" + id_box + "&id_options=" + id_options;
    
    ajaxer.put(this);
    
    this.getResponse = function(data){
        if (data.status != 1) {
            alert("облом");
            return;
        }
        new GetCart();
    };    
}


function GetCart(begin){

    this.send = "method=GetCart";
    
    ajaxer.put(this, false);
    
    this.div = document.getElementById("Good").getElementsByTagName("tbody")[0];
    
    this.getResponse = function(data){
		
		var i,
			tr = null,            
			multyTD = null, ///ячейка для многих свойств
			multyDiv = null,
			buttons = null,
			btd = null;
    
        while (this.div.rows.length > 3) {
			this.div.removeChild(this.div.lastChild);
		}
        
        if (data.length > 0) {
			document.printForm.style.display = "block";
		}
		else {
			document.printForm.style.display = "none";
		}
     
        for (i = 0; i < data.length; i++) {
        
            tr = document.createElement("tr");  
			tr.className = "cart";         
            
            tr.appendChild(td(data[i].name, "", "label"));
            
            multyTD = newTD(div(data[i].fill, "", "label"));
            if (data[i].option != '') {
                multyTD.innerHTML += "<br/><b>Опции: </b>";
                multyTD.appendChild(div(data[i].option, "", "label"));
            }
            tr.appendChild(multyTD);
            
            tr.appendChild(td(data[i].color, "", "label"));
            tr.appendChild(td(data[i].side, "", "label")); ///Сторонность
            tr.appendChild(td(data[i].window, "", "label")); ///Стекло
            multyTD = newTD(div(data[i].width, "", "label"));
            multyTD.innerHTML = multyTD.innerHTML + "<b> x </b>";
            multyTD.appendChild(div(data[i].height, "", "label"));
            tr.appendChild(multyTD);
            
            tr.appendChild(td(data[i].box, "", "label"));
            
            tr.appendChild(td(data[i].quantity, "", "label"));
            
            multyTD = newTD(div(data[i].price_total, "", "label"),1);
            multyTD.innerHTML += "<br/>";
            multyTD.appendChild(div(data[i].price, "", "label"));
            multyTD.innerHTML += "<b> за шт.</b>";
            tr.appendChild(multyTD);
            
            buttons = "<a href='/order/edit/' onclick='new GetGood(" + data[i].id_good + "," + data[i].id_cart + "); return false;' title='Редактировать'><img src='/images/change.gif'/></a>&nbsp;";
            buttons += "<a href='/order/copy/' onclick='new GetGood(" + data[i].id_good + "," + data[i].id_cart + ", true); return false;' title='Копировать'><img src='/images/copy.gif' /></a>&nbsp;";
            buttons += "<a href='/order/delete/' onclick='new DeleteCart(" + data[i].id_cart + "); return false;' title='Удалить'><img src='/images/exit.gif' /></a>";
            
            btd = document.createElement("td");
            
            btd.innerHTML = buttons;
            tr.appendChild(btd);
            
            this.div.appendChild(tr);
        }	 
	    
 /*       for (i = 0; i < data.length; i++) {
        
            tr = document.createElement("tr");  
			tr.className = "cart";         
            
            tr.appendChild(td(data[i].name, "name", "label"));
            
            multyTD = newTD(div(data[i].fill, "fills", "label"));
            if (data[i].option != '') {
                multyTD.innerHTML += "<br/><b>Опции: </b>";
                multyTD.appendChild(div(data[i].option, "options", "label"));
            }
            tr.appendChild(multyTD);
            
            tr.appendChild(td(data[i].color, "colors", "label"));
            tr.appendChild(td(data[i].side, "sides", "label")); ///Сторонность
            tr.appendChild(td(data[i].window, "windows", "label")); ///Стекло
            multyTD = newTD(div(data[i].width, "width", "label"));
            multyTD.innerHTML = multyTD.innerHTML + "<b> x </b>";
            multyTD.appendChild(div(data[i].height, "height", "label"));
            tr.appendChild(multyTD);
            
            tr.appendChild(td(data[i].box, "boxes", "label"));
            
            tr.appendChild(td(data[i].quantity, "quantity", "label"));
            
            multyTD = newTD(div(data[i].price_total, "price_total", "label"),1);
            multyTD.innerHTML += "<br/>";
            multyTD.appendChild(div(data[i].price, "price", "label"));
            multyTD.innerHTML += "<b> за шт.</b>";
            tr.appendChild(multyTD);
            
            buttons = "<a href='/order/edit/' onclick='new GetGood(" + data[i].id_good + "," + data[i].id_cart + "); return false;' title='Редактировать'><img src='/images/change.gif'/></a>&nbsp;";
            buttons += "<a href='/order/copy/' onclick='new GetGood(" + data[i].id_good + "," + data[i].id_cart + ", true); return false;' title='Копировать'><img src='/images/copy.gif' /></a>&nbsp;";
            buttons += "<a href='/order/delete/' onclick='new DeleteCart(" + data[i].id_cart + "); return false;' title='Удалить'><img src='/images/exit.gif' /></a>";
            
            btd = document.createElement("td");
            
            btd.innerHTML = buttons;
            tr.appendChild(btd);
            
            this.div.appendChild(tr);
        }*/
        
        if (begin) {
            new GetCats();
        }
    };
}

function DeleteCart(id_cart){


    var goo = document.getElementById("Good").getElementsByTagName("tbody")[0];
    
    /*	if(goo && goo.rows.length > 4)
     goo.removeChild(goo.rows[1])	*/
    this.send = "method=DeleteCart&id_cart=" + id_cart;
    
    ajaxer.put(this);
    
    this.getResponse = function(data){
    
        if (data.status != 1) {
            alert("облом");
            return;
        }
        new GetCart();
    };
}

function EmptyCart(){
    this.send = "method=EmptyCart";
    
    ajaxer.put(this);    
    
    this.getResponse = function(data){
        document.printForm.style.display = "none";
        var div = document.getElementById("Good").getElementsByTagName("tbody")[0];
        while (div.rows.length > 3) {
			div.removeChild(div.lastChild);
		}        
        new GetInfo();
    };
}

function AddOrderToDB(act, ext){
    this.send = "method=AddOrderToDB&book=" + act;
    
    ajaxer.put(this);
    
    this.getResponse = function(data){
        if (data.status == 1) {
            switch (ext) {
                case "print":
                    //location = '/order/id/'+data['id']+'/print/';
                    window.open('/order/id/' + data.id + '/print/', '_blank');
                    location.href = "/order/edit/" + data.id + "/";
                    new GetInfo();
                    break;
                case "sell":
                    Darkness(2, data.id, true);
                    break;
                default:
                    location.href = '/order/id/' + data.id + '/';
            }
            
        }
        //PrintCart(0);
    };
}

function SetDiscount(val, callbackFunc){

    this.send = "method=SetDiscount&discount=" + val;

    ajaxer.put(this);
    
    this.getResponse = function(data){
        //document.getElementById("over").parentNode.removeChild(document.getElementById("over"));
        //document.getElementById("conteinerimg").parentNode.removeChild(document.getElementById("conteinerimg"));
        //document.getElementsByTagName("body")[0].style.overflow = "auto";
        
        if (data.status != 1) {
            alert("облом");
            return false;
        }
        new GetCats();
		
		document.getElementById("over").parentNode.removeChild(document.getElementById("over"));
		document.getElementById("conteinerimg").parentNode.removeChild(document.getElementById("conteinerimg"));
		//body.style.overflow = "auto";
		if(callbackFunc) callbackFunc();
		
		
    };
}

function PrintCart(val){
    document.printForm.plus.value = val;
    document.printForm.submit();
}

function PrintOrder(val){
    alert("Здесь будет PrintOrder(" + val + ")");
}


