// Определение сервера
var SERVER_NAME = (window.location.href.indexOf('vz.') != -1) ? 
    'http://vz.sotaland.ru' : 'http://www.sotaland.ru';

/*
 * Производительность Behaviour'а при большом (~50 - 100) количестве элемнтов, на которые 
 * нужно подвесить события, оставляет желать лучшего. Особенно отличился IE.
 * По этой причине портируем код на обычные onclick, onсhange и т.д.
 * Все портированные функции представляют собой генераторы, т.е. функции, которые возвращают
 * функции-обработчики. Это сделано для того, чтобы можно было не только прописать их в HTML,
 * но и навешивать их JavaScript-ом. Кроме того, это упростит обратную миграцию на Behaviour или 
 * аналогичные библиотеки, если вдруг их производительность окажется подходящей.
 */
 
/**
 * Пустой обработчик
 */
function emptyHandler() {}

/**
 * Отправка запроса на добавление товара к сравнению
 * @param object elem объект, для обработки событий которого будет использован созданный обработчик
 */
function buildCompareHandler(elem) {
    if (!/^(\w+)\[(\d+)\]$/.test(elem.name)) {
        return emptyHandler;
    }
    
    var isInput = ('INPUT' == elem.tagName);
    var go = RegExp.$1;
    var id = RegExp.$2;
    return function () {
        var act = 'add';
        if (isInput && !elem.checked) {
            act = 'remove';
        }
        var url = SERVER_NAME + '/compare.php?go=' + go + '&act=' + act + 
            '&id=' + id + "&rnd=" + Math.round(100000 * Math.random());
        var script = document.createElement('SCRIPT');
        script.src = url;
        document.body.appendChild(script);
        
        // Для checkbox'а подтвердить событие, для формы "откатить"
        return isInput ? true : false;
    }
}

/**
 * Отправка запроса на добавление товара в корзину
 * @param object elem объект, для обработки событий которого будет использован созданный обработчик
 */
function buildBasketHandler(elem) {
    return function () {
        var url = '/basket.php?target=' + elem.id + '&';
        for (var k = 0; k < elem.elements.length; ++k) {
            var input = elem.elements[ k ];
            url += input.name + '=' + escape(input.value) + '&';
        }
        
        var script = document.createElement('SCRIPT');
        script.src = SERVER_NAME + url + 'rnd=' + Math.round(100000 * Math.random());
        document.body.appendChild(script);

        return false;
    }
}


/**
 * Быстрый переход по моделям: поле Тип
 * STATUS: портировано
 */
function buildSelectorFirst(elem) {
        return function () {
        var id = parseInt(elem.value);     
        if (!isNaN(id) && (id > 0)) {
            var targetId = elem.id.replace('type', 'vendor');
            var target = document.getElementById(targetId);
          
            if (target) {
                target.disabled = true;
            }
            var script = document.createElement('SCRIPT');

                   script.src = SERVER_NAME + '/inner/types/' + elem.value + '.js?vendor=1&target=' + 
                targetId + "&rnd=" + Math.round(100000 * Math.random());                                 
            // C помощью rnd избавляемся от кеша
            document.body.appendChild(script);
 
        }
        else {
            var modelsEl = document.getElementById('model');
            while (modelsEl.options.length > 1) {
                modelsEl.remove(1);
            }
        }                
    }
   
}

/**
 * Быстрый переход по телефонам: поле производитель
 * STATUS: портировано
 */
function buildSelectorVendorHandler(elem) {
    return function () {
        var id = parseInt(elem.value);     
        if (!isNaN(id) && (id > 0)) {
            var targetId = elem.id.replace('vendor', 'model');
            var target = document.getElementById(targetId);
          
            if (target) {
                target.disabled = true;
            }
            var script = document.createElement('SCRIPT');
         
        
                   script.src = SERVER_NAME + '/inner/vendors/' + elem.value + '.js?target=' + 
                targetId + "&rnd=" + Math.round(100000 * Math.random());
                
                 
            // C помощью rnd избавляемся от кеша
            document.body.appendChild(script);
      
        }
        else {
            var modelsEl = document.getElementById('model');
            while (modelsEl.options.length > 1) {
                modelsEl.remove(1);
            }
        }                
    }
   
}

/**
 * Быстрый переход по телефонам: поле модель
 * Status: портирован
 */
function buildChooserModelHandler(elem) {
    //return function () {		
		//alert(elem);
        //var id = parseInt(elem.value);
        //if (!isNaN(id) && (id > 0)) {
			document.location.href = (SERVER_NAME + '/mobile/' + elem + '/');
        //}
    //}
}

/**
 * Меню
 * Status: портирован
 */
function buildMenuHandler(elem) {
    return function () {
        var target = document.getElementById(elem.id + "Sub"); 
        if (target) {
            target.style.display = ('none' == target.style.display) ? '' : 'none';
        }
        
        return false;
    }
}

/**
 * Всплывающее окно со спец ценой
 * Status: портирован
 */
function buildSpecPriceHandler(elem) {
    return function () {
        window.open(elem.href, 'specPriceAbout', 
            'width=300, height=300, toolbar=no, location=no');
        return false;
    }
}

/**
 * Проверка подтверждения действия. В силу тривиальности идет быз генератора
 * @return boolean true, если пользователь подтвердил выполнение действия, false иначе
 */
function confirmHandler() {
    return window.confirm('Вы уверены?');
}


