var oWizard_id = {
    'wizard_sections_from'    : '',
    'wizard_sections_to'      : '',
    'wizard_price_from'  : '',
    'wizard_price_to'    : '',
    'wizard_height_from' : '',
    'wizard_height_to'   : '',
    'wizard_width_from'  : '',
    'wizard_width_to'    : '',
    'wizard_depth_from'  : '',
    'wizard_depth_to'    : '',
    'wizard_weight_from' : '',
    'wizard_weight_to'   : ''
};
var aWizard_id = new Array('wizard_sections_from',
                           'wizard_sections_to',
                           'wizard_price_from',
                           'wizard_price_to',
                           'wizard_type',
                           'wizard_height_from',
                           'wizard_height_to',
                           'wizard_width_from',
                           'wizard_width_to',
                           'wizard_depth_from',
                           'wizard_depth_to',
                           'wizard_weight_from',
                           'wizard_weight_to',
                           'wizard_producer');

function AjaxRequest(request, funcName) {
    var http_request = false;
    if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            http_request = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (e) {
            try {
                http_request = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (e) {}
        }
    }

    if (!http_request) {
        return false;
    }

    http_request.onreadystatechange = function() { OnReadyState(http_request, funcName); };
    http_request.open('POST', '/catalog/xml.php', true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http_request.send(request);
}

function OnReadyState(http_request, funcName) {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            eval(funcName + '(http_request.responseXML);');
        }
    }
}

function WizardRequest() {
    var sPost = 'page=wizard&wizard_rubric=' + document.getElementById('wizard_rubric_hidden').value;
    for (var i = 0; i < aWizard_id.length; i++) {
        sPost += '&' + aWizard_id[i] + '=' + document.getElementById(aWizard_id[i] + '_hidden').value;
    }
    AjaxRequest(sPost, 'Wizard_InsertRequest');
}

function Wizard_InsertRequest(oXMLDoc) {
    var aPairs = new Array('sections',
                           'price',
                           'height',
                           'width',
                           'depth',
                           'weight');
    var oCount = document.getElementById('wizard_count');
    var oRootNode = oXMLDoc.getElementsByTagName('root').item(0);

    for (var i = 0; i < aPairs.length; i++) {
        document.getElementById('wizard_' + aPairs[i] + '_from_td').innerHTML = '';
        document.getElementById('wizard_' + aPairs[i] + '_to_td').innerHTML = '';
    }

    if (oRootNode.hasChildNodes()) {
        var oXML_count = oRootNode.getElementsByTagName('count').item(0);
        var oXML_type = oRootNode.getElementsByTagName('type').item(0);
        var oXML_producer = oRootNode.getElementsByTagName('producer').item(0);
        if (oXML_count) oCount.innerHTML = 'Найдено: ' + oXML_count.firstChild.data;
        if (oXML_type) Wizard_select(oXML_type, 'wizard_type');
        if (oXML_producer) Wizard_select(oXML_producer, 'wizard_producer');
        for (var i = 0; i < aPairs.length; i++) {
            var oXML_from = oRootNode.getElementsByTagName(aPairs[i] + '_from').item(0);
            var oXML_to   = oRootNode.getElementsByTagName(aPairs[i] + '_to').item(0);
            if (oXML_from && oXML_to) {
                oWizard_id['wizard_' + aPairs[i] + '_from'] = oXML_from.firstChild.data;
                oWizard_id['wizard_' + aPairs[i] + '_to']   = oXML_to.firstChild.data;

                var oA = document.createElement('a');
                document.getElementById('wizard_' + aPairs[i] + '_from_td').appendChild(oA);
                oA.innerHTML = oXML_from.firstChild.data;
                oA.href = 'javascript:Wizard_value(\'' + aPairs[i] + '_from\', ' + oXML_from.firstChild.data + ');';
                oA.title = 'Вставить минимальное значение';

                var oSpan = document.createElement('span');
                document.getElementById('wizard_' + aPairs[i] + '_from_td').appendChild(oSpan);
                oSpan.innerHTML = ' &mdash; ';

                var oA = document.createElement('a');
                document.getElementById('wizard_' + aPairs[i] + '_to_td').appendChild(oA);
                oA.innerHTML = oXML_to.firstChild.data;
                oA.href = 'javascript:Wizard_value(\'' + aPairs[i] + '_to\', ' + oXML_to.firstChild.data + ');';
                oA.title = 'Вставить максимальное значение';
            }
        }
    }
    document.getElementById('wizard_fieldset').style.display = 'block';
}

function Wizard_value(sStr, sValue) {
    document.getElementById('wizard_' + sStr).value = sValue;
}

function Wizard_select(oParent, sID) {
    document.getElementById(sID).innerHTML = '';
    var oXMLOptions = oParent.getElementsByTagName('option');
    for (var i = 0; i < oXMLOptions.length; i++) {
        var oOption = document.createElement('option');
        document.getElementById(sID).appendChild(oOption);
        oOption.text = oXMLOptions.item(i).firstChild.data;
        oOption.value = oXMLOptions.item(i).getAttribute('value');
    }
}

function WizardForm_onreset() {
    document.getElementById('wizard_rubric_any').disabled = false;
    document.getElementById('wizard_rubric_bags').disabled = false;
    document.getElementById('wizard_rubric_docs').disabled = false;
    document.getElementById('wizard_rubric_keys').disabled = false;
    document.getElementById('wizard_rubric_money').disabled = false;
    document.getElementById('wizard_rubric_hidden').value = 'any';
    for (var i = 0; i < aWizard_id.length; i++) {
        switch (aWizard_id[i]) {
            case 'wizard_type':
                document.getElementById(aWizard_id[i]).disabled = false;
                document.getElementById('wizard_type_hidden').value = 'wizard_type_any';
                break;
            case 'wizard_producer':
                document.getElementById(aWizard_id[i]).disabled = false;
                document.getElementById('wizard_producer_hidden').value = 0;
                break;
            default :
                document.getElementById(aWizard_id[i]).disabled = false;
                document.getElementById(aWizard_id[i] + '_hidden').value = '';
        }
    }
    WizardInsert();
}

function Wizard_sort(sSort) {
    document.getElementById('wizard_sort_hidden').value = (sSort == 'ASC') ? 'DESC' : 'ASC';
    Wizard_event('submit');
}

function Wizard_event(sSubmit) {
    var rxInt = /[^\d]+/g;
    var rxID  = /^wizard_(sections|price|height|width|depth|weight)_(from|to)$/i;
    if (document.getElementById('wizard_rubric_bags').checked) {
        document.getElementById('wizard_rubric_hidden').value = 'bags';
    } else if (document.getElementById('wizard_rubric_docs').checked) {
        document.getElementById('wizard_rubric_hidden').value = 'docs';
    } else if (document.getElementById('wizard_rubric_keys').checked) {
        document.getElementById('wizard_rubric_hidden').value = 'keys';
    } else if (document.getElementById('wizard_rubric_money').checked) {
        document.getElementById('wizard_rubric_hidden').value = 'money';
    } else {
        document.getElementById('wizard_rubric_hidden').value = 'any';
    }

    for (var i = 0; i < aWizard_id.length; i++) {
        var oID = document.getElementById(aWizard_id[i]);
        switch (aWizard_id[i]) {
            case 'wizard_type':
                document.getElementById('wizard_type_hidden').value = oID.value;
                break;
            case 'wizard_producer':
                document.getElementById('wizard_producer_hidden').value = oID.value;
                break;
            default :
                var aID = rxID.exec(aWizard_id[i]);
                var oFrom = document.getElementById('wizard_' + aID[1] + '_from');
                var oTo   = document.getElementById('wizard_' + aID[1] + '_to');
                if (oFrom.value.length > 0 && oTo.value.length > 0 && parseInt(oFrom.value) > parseInt(oTo.value)) {
                    var from_tmp = oFrom.value;
                    oFrom.value = oTo.value;
                    oTo.value = from_tmp;
                }
                var sValue = oID.value.replace(rxInt, '');
                if (oWizard_id[aWizard_id[i]] != '' && sValue != '') {
                    if (aID[2] == 'from' && parseInt(sValue) > oWizard_id['wizard_' + aID[1] + '_to']) sValue = oWizard_id['wizard_' + aID[1] + '_from'];
                    if (aID[2] == 'to' && parseInt(sValue) < oWizard_id['wizard_' + aID[1] + '_from']) sValue = oWizard_id['wizard_' + aID[1] + '_to'];
                }
                document.getElementById(aWizard_id[i] + '_hidden').value = sValue;
        }
    }

    if (sSubmit == 'submit') {
        document.getElementById('wizard_from').value = GetCookie('order_from');
        document.getElementById('wizard_form_hidden').submit();
    } else {
        WizardInsert();
    }
}

function WizardFilled(sID_part) {
    var sStr, sStr_post;
    var sReturn = '';
    var sFrom = document.getElementById('wizard_' + sID_part + '_from').value;
    var sTo   = document.getElementById('wizard_' + sID_part + '_to').value;
    switch (sID_part) {
        case 'sections': sStr = 'Кол-во секций: '; sStr_post = '';      break;
        case 'price'   : sStr = 'Цена: ';          sStr_post = ' руб.'; break;
        case 'height'  : sStr = 'Высота: ';        sStr_post = ' мм.';  break;
        case 'width'   : sStr = 'Ширина: ';        sStr_post = ' мм.';  break;
        case 'depth'   : sStr = 'Глубина: ';       sStr_post = ' мм.';  break;
        case 'weight'  : sStr = 'Вес: ';           sStr_post = ' кг.';  break;
    }
    if (sFrom.length > 0 && sTo.length > 0) {
        sReturn = '<div>' + sStr + 'от ' + sFrom + ' до ' + sTo + sStr_post + '</div>';
    } else if (sFrom.length > 0) {
        sReturn = '<div>' + sStr + 'от ' + sFrom + sStr_post + '</div>';
    } else if (sTo.length > 0) {
        sReturn = '<div>' + sStr + 'до ' + sTo + sStr_post + '</div>';
    }
    return sReturn;
}

function WizardInsert() {
    var sWizardFilled = '';
    var rxWizard = /^wizard_(sections|price|height|width|depth|weight)_(to)$/;
    document.getElementById('wizard_fieldset').style.display = 'none';
    WizardRequest();

    for (var i = 0; i < aWizard_id.length; i++) {
        switch (aWizard_id[i]) {
            case 'wizard_producer':
                var oProducer = document.getElementById('wizard_producer');
                Global_SelectOption(document.getElementById(aWizard_id[i] + '_hidden').value, aWizard_id[i]);
                if (oProducer.value != 0) {
                    oProducer.disabled = true;
                    sWizardFilled += '<div>Торговая марка: '
                        + oProducer.options[oProducer.selectedIndex].text + '</div>';
                }
                break;
            case 'wizard_type':
                var oType = document.getElementById('wizard_type');
                Global_SelectOption(document.getElementById(aWizard_id[i] + '_hidden').value, aWizard_id[i]);
                if (oType.value != 'wizard_type_any') {
                    oType.disabled = true;
                    sWizardFilled += '<div>Тип шкафа: '
                        + oType.options[oType.selectedIndex].text + '</div>';
                }
                break;
            default :
                var aWizard_exec = rxWizard.exec(aWizard_id[i]);
                document.getElementById(aWizard_id[i]).value
                    = document.getElementById(aWizard_id[i] + '_hidden').value;
                if (aWizard_exec) sWizardFilled += WizardFilled(aWizard_exec[1]);
        }
    }

    if (sWizardFilled != '') {
        document.getElementById('wizard_rubric_any').disabled = true;
        document.getElementById('wizard_rubric_bags').disabled = true;
        document.getElementById('wizard_rubric_docs').disabled = true;
        document.getElementById('wizard_rubric_keys').disabled = true;
        document.getElementById('wizard_rubric_money').disabled = true;
    }

    if (document.getElementById('wizard_rubric_hidden').value == 'bags') {
        document.getElementById('wizard_rubric_bags').checked = true;
        sWizardFilled = '<div>Хранить вещи и одежду</div>' + sWizardFilled;
    } else if (document.getElementById('wizard_rubric_hidden').value == 'docs') {
        document.getElementById('wizard_rubric_docs').checked = true;
        sWizardFilled = '<div>Хранить документы</div>' + sWizardFilled;
    } else if (document.getElementById('wizard_rubric_hidden').value == 'keys') {
        document.getElementById('wizard_rubric_keys').checked = true;
        sWizardFilled = '<div>Хранить ключи</div>' + sWizardFilled;
    } else if (document.getElementById('wizard_rubric_hidden').value == 'money') {
        document.getElementById('wizard_rubric_money').checked = true;
        sWizardFilled = '<div>Хранить деньги</div>' + sWizardFilled;
    } else {
        document.getElementById('wizard_rubric_any').checked = true;
        sWizardFilled = '<div>Любые предметы хранения</div>' + sWizardFilled;
    }
    document.getElementById('wizard_filled').innerHTML = sWizardFilled;
}

function WizardAdvChars_onclick() {
    if (document.getElementById('wizard_form1').style.display == 'none') {
        WizardPart('part_1');
    } else {
        WizardPart('part_2');
    }
}

function WizardPart(part) {
    if (part == 'part_1') {
        document.getElementById('wizard_tab1').className = 'current';
        document.getElementById('wizard_tab2').className = 'next';
        document.getElementById('wizard_form2').style.display = 'none';
        document.getElementById('wizard_form1').style.display = 'block';
        document.getElementById('wizard_button').value = 'Дополнительные параметры »';
    } else {
        document.getElementById('wizard_tab1').className = 'next';
        document.getElementById('wizard_tab2').className = 'current';
        document.getElementById('wizard_form1').style.display = 'none';
        document.getElementById('wizard_form2').style.display = 'block';
        document.getElementById('wizard_button').value = '« Основные параметры';
    }
}

