function showHelp(object, cname) {
    var help = $($(object).find(' + .' + cname)[0]);
    if (help.css('display') == 'none') {
        help.removeClass('noDisplay');
    } else {
        help.addClass('noDisplay');
    }
}

function typing(object, condition, text) {
    switch (condition) {
        case 'start':
            if ($(object).val() == text) {
                $(object).val('');
                $(object).removeClass('default');
            }
            break;
        case 'stop':
            if ($(object).val() == '') {
                $(object).val(text);
                $(object).addClass('default');
            }
            break;
    }
}

$(document).ready(function () {    
    if (document.location.hash == "#search-form") {
        $(document.location.hash).css('display', '');
    }
    
    $('#firm-name').keydown(function(event) {
        if (event.keyCode == '13') {
            enter = true;
            event.preventDefault();
            event.stopPropagation();
            searchCustomer();
        }
    });
    
    $('#region-name input').keydown(function(event) {
        if (event.keyCode == '13') {
            event.preventDefault();
            event.stopPropagation();
            searchIn($(this).val(), 'search-regions');
        }
    });
    
    $('#category-name input').keydown(function(event) {
        if (event.keyCode == '13') {
            event.preventDefault();
            event.stopPropagation();
            searchIn($(this).val(), 'search-categories');
        }
    });
    
    $('#region-name input[type=text]').bind('focus', function() { if ($(this).val() == $(this).attr('info')) { $(this).val(''); } $(this).css('color', 'black') });
    $('#region-name input[type=text]').bind('blur', function() { if ($(this).val() == '') { $(this).val($(this).attr('info')); $(this).css('color', '#A3A3A3'); } });
    
    $('#category-name input[type=text]').bind('focus', function() { if ($(this).val() == $(this).attr('info')) { $(this).val(''); } $(this).css('color', 'black') });
    $('#category-name input[type=text]').bind('blur', function() { if ($(this).val() == '') { $(this).val($(this).attr('info')); $(this).css('color', '#A3A3A3'); } });
    
    $('#firm-name input[type=text]').bind('focus', function() { if ($(this).val() == $(this).attr('info')) { $(this).val(''); } $(this).css('color', 'black') });
    $('#firm-name input[type=text]').bind('blur', function() { if ($(this).val() == '') { $(this).val($(this).attr('info')); $(this).css('color', '#A3A3A3'); } });

//    $.datepicker.setDefaults(
//        $.extend($.datepicker.regional["ru"])
//    );
//    $(".advert-date").datepicker({dateFormat: 'dd.mm.yy', showOn: 'both', buttonImage: '/img/calendar_button.png', buttonImageOnly: true, buttonText: 'Выбрать дату'});
//    $('.advert-date').datepicker('option', 'showWeeks', true);
//    $('.advert-date').datepicker('option', 'monthNamesShort', ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']);
//    $('.advert-date').datepicker('option', 'changeMonth', true);
//    $('.advert-date').datepicker('option', 'changeYear', true);
//    $('.advert-date').datepicker('option', 'dayNamesMin', ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']);
//    $('.advert-date').datepicker('option', {showAnim: ''});
	$('.advert-date').datePicker({clickInput:true, startDate:'01/01/2006'});

    /*$("body").ajaxStart(function(){
        $('body').append('<div id="loader" align="center" style="background: #EFEFEF;position: fixed;top: 50%;left: 50%;margin-top: -50px;margin-left: -100px;"><img src="/img/ajax-loader.gif" alt="Загрузка" /></div>');
    });
    
    $("body").ajaxStop(function(){
        $('#loader').remove();
    });*/
});

jQuery(function($){
	$.datepicker.regional['ru'] = {
		closeText: 'Закрыть',
		prevText: '&#x3c;Пред',
		nextText: 'След&#x3e;',
		currentText: 'Сегодня',
		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
		'Июл','Авг','Сен','Окт','Ноя','Дек'],
		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
		weekHeader: 'Не',
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['ru']);
});

var enter = false;
function changeBg(object, color) {
    $(object).css('background-color', color);
}

function clearBg(object) {
    if ($(object).find('input[type=checkbox][checked=true]').length == 0) {
        $(object).css('background-color', '');
    } else {
        if ($(object).css('background-color') != 'rgb(255, 246, 202)') {
            $(object).css('background-color', '#fff6ca');
        } else {
            $(object).css('background-color', '#e1f498');
        }
    }
}

function details(object, class_name) {
    var element = $($(object).parent().find('.' + class_name)[0]);
    if (element.hasClass('noDisplay')) {
        $('.details').addClass('noDisplay');
        element.removeClass('noDisplay');
        //$(object).next().removeClass('noDisplay');
    } else {
        element.addClass('noDisplay');
        //$(object).next().addClass('noDisplay');
    }
}

function addSelected(obj, class_out, name) {
    var obj1 = $('#' + $(obj).attr('info'));
    var obj2 = $('.' + class_out +' tbody');
    var obj3 = $('#' + class_out + '-name');
    var select_input = obj1.find('input[type=checkbox][checked=true]');
    var data = (obj2.attr('info') == undefined) ? '' : obj2.attr('info');
    var added = data.split(',');
    if (select_input.length == 0) {
        alert('Ничего не выбрано.');
        return;
    }
    var text = obj3.text();
    text = text.replace(/(\t|\n)+/g, '');
    text = text.replace(/(\s)+/g, ' ');
    if (text == 'Все') {
        text = '';
    }
    for (i=0; i<select_input.length; i++) {
        if (!added.in_array(select_input[i].value)) {
            obj2.append('<tr onclick="" onmouseout="clearBg(this)" onmouseover="changeBg(this, \'#fff6ca\')"><td><input type="checkbox" value="' + $(select_input[i]).val() +'" /></td>'+
                        '<td onclick="trOnclick(this);">'+ $(select_input[i]).parent().text() + $(select_input[i]).parent().next().text() +'<input type="hidden" name="'+ name +'[]" value="'+ $(select_input[i]).val() +'" /></td></tr>');
            if (text != '') {
                text += ', ';
            }
            text += $(select_input[i]).parent().next().text() + $(select_input[i]).parent().text();
        }
        if (i == 0 && data != '') {
            data += ',';
        }
        data += select_input[i].value;
        data += (i != select_input.length - 1) ? ',' : '';
    }
    $('#'+ class_out +'-count span').text(obj2.find('input[type=checkbox]').length);
    $('#'+ class_out +'-count font').css('display', '');
    obj2.attr('info', data);
    obj3.text(text);
}

function delSelected(class_name) {
    var select_input = $('.' + class_name).find('input[type=checkbox][checked=true]');
    var obj = $('#'+ class_name + '-name');
    var text = obj.text();
    var tmp = '';
    text = text.replace(/(\t|\n)+/g, '');
    text = text.replace(/(\s)+/g, ' ');
    data = $('.' + class_name +' tbody').attr('info') ? $('.' + class_name + ' tbody').attr('info') : '';
    var mask = /[^,]+,?/g; //регулярка по которой будем искать словосочетания, ищет между запятыми - это и есть найденные словосочетания
    for (i=0; i<select_input.length; i++) {
        tmp = $(select_input[i]).parent().next().text().toLowerCase();
        tmp += ',';
        $(select_input[i]).parent().parent().remove();
        var re = new RegExp('(^'+ select_input[i].value +',)|(,'+ select_input[i].value + '$)|(^'+ select_input[i].value + '$)', 'g');
        data = data.replace(re, '');
        re = new RegExp('(,' + select_input[i].value + ',)|(^'  + select_input[i].value + '$)', 'g');
        data = data.replace(re, ',');
        text = text.replace(mask, function (words, position) { 
            var trimwords = words.replace(/^\s/, "").replace(/\s$/, "").toLowerCase(); // убираем пробелы с конца и начала
            if(tmp.indexOf(trimwords) != -1) { //стандартный поиск по строке, возвращает -1 если ничего не нашёл
                return ""; // так как наше словосочетание есть в списке wordslist, удаляем из str, то есть заменяем на пустоту
            } else {
                return words; // иначе не трогаем
            }
        });
    }
    $('.' + class_name +' tbody').attr('info', data);
    if (text == '' || text == ' ') {
        text = 'Все';
    }
    if (text.substr(text.length - 1) == ',') {
        text = text.substr(0, text.length - 1);
    }
    obj.text(text);
    if ($('.' + class_name +' tbody').find('input[type=checkbox]').length > 0) {
        $('#'+ class_name +'-count span').text($('.' + class_name +' tbody').find('input[type=checkbox]').length);
        $('#'+ class_name +'-count font').css('display', '');
    } else {
        $('#'+ class_name +'-count span').text('Все');
        $('#'+ class_name +'-count font').css('display', 'none');
    }
}

function trim(str) {
    return str.replace(/(^\s+)|(\s+$)/g, "");
}

function selAll(obj, color) {
    $('#' + $(obj).attr('info') + ' input').attr('checked', true);
    $('#' + $(obj).attr('info') + ' tr').css('background', color);
}

function unselAll(obj) {
    $('#' + $(obj).attr('info') + ' input').attr('checked', '');
    $('#' + $(obj).attr('info') + ' tr').css('background', '');
}

function openSub(object, val, type) {
    object = $(object);
    var id = object.attr('alt');
    if ($('.' + val + '_' + type +'_'+ id).length == 0) {
        $.get('/index.php',
              {'do': 'ajax_req', 'act': 'sub-' + type, 'id': id, 'val': val},
              function (data) {
                var element = $($('.load-' + type).find('img[alt=' + id + ']')[0]).parent().parent();
                if (val == 'okrug') {
                    for (i = 0; i < data.length; i++) {
                        $('<tr class="'+ val + '_' + type +'_'+ id +'" onmouseout="clearBg(this)" onmouseover="changeBg(this, \'#e1f498\')"><td></td><td><img title="Развернуть список" alt="' + data[i].id + '" onclick="openSub(this, \'normal\', \'' + type + '\')" style="margin: 3px 1px 0px 3px;" src="/img/bullet_toggle_plus.png" /></td><td><input type="checkbox" value="' + data[i].id + '" onclick="checkParent(this); checkChild(this, \'normal\', \'' + type + '\')" /></td><td onclick="trOnclick(this); checkParent($(this).parent().find(\'input\')[0]); checkChild($(this).parent().find(\'input\')[0], \'normal\', \'' + type + '\')">'+ data[i].title +'</td></tr>').insertAfter(element);
                    }
                } else {
                    for (i = 0; i < data.length; i++) {
                        $('<tr class="'+ val + '_' + type +'_'+ id +' '+ element.attr('class') +'" onmouseout="clearBg(this)" onmouseover="changeBg(this, \'#e1f498\')"><td></td><td></td><td></td><td><input type="checkbox" value="' + data[i].id + '" onclick="checkParent(this);" style="vertical-align: top;" /> <font onclick="trOnclick(this); checkParent($(this).parent().find(\'input\')[0]);">'+ data[i].title +'</font></td></tr>').insertAfter(element);
                    }
                }
                if ($(object.parent().next().find('input')[0]).attr('checked')) {
                    $('.' + val + '_' + type +'_'+ id).find('input').attr('checked', true);
                    $('.' + val + '_' + type +'_'+ id).css('background', '#fff6ca');
                }
                $(object).attr('src', '/img/bullet_toggle_minus.png');
              },
              'json');
    } else {
        if ($('.' + val + '_' + type +'_'+ id).css('display') == 'none') {
            $('.' + val + '_' + type +'_'+ id).css('display', '');
            $(object).attr('src', '/img/bullet_toggle_minus.png');
        } else {
            $('.' + val + '_' + type +'_'+ id).css('display', 'none');
            $(object).attr('src', '/img/bullet_toggle_plus.png');
        }
    }
}

var block = {'load-regions': 0, 'load-categories': 0, 'search-regions': 0, 'search-categories': 0, 'load-firms': 0};
var search = {'load-regions': '', 'load-categories': '', 'search-regions': '', 'search-categories': '', 'load-firms': '', 'region-firms' : ''};
function searchIn(text, class_name) {
    if (search[class_name] != text && block[class_name] == 0) {
        var name = ((class_name == 'search-regions') ? 'regions' : 'categories');
        $.get('/index.php',
              {'do': 'ajax_req', 'act': 'search', 'text': rawurlencode(text), 'field': class_name},
              function (data) {
                    var obj = $('#' + class_name +' tbody');
                    obj.html('');
                    if (data.length < 1) {
                        alert("По данному запросу ничего не найдено.\nПопробуйте расширить область поиска.");
                    } else {
                        for(var key in data) {
                            if (data[key].title != undefined) {
                                if (data[key].parent_id == 0) {
                                    obj.append('<tr onmouseover="changeBg(this, \'#e1f498\')" onmouseout="clearBg(this)"><td><input type="checkbox" value="'+ data[key].id +'" /></td><td onclick="trOnclick(this);"><b>'+ data[key].title +'</b></td></tr>');
                                } else {
                                    obj.append('<tr onmouseover="changeBg(this, \'#e1f498\')" onmouseout="clearBg(this)"><td><input type="checkbox" value="'+ data[key].id +'" /></td><td onclick="trOnclick(this);">'+ data[key].title +'</td></tr>');
                                }
                            }
                        }
                    }
                    block[class_name] = 0;
              },
              'json');
        search[class_name] = text;
        block[class_name] = 1;
    } else {
        $('#' + class_name +' input').attr('checked', '');
        $('#' + class_name +' tr').css('background', '');
    }
}

/* массивы сдвига */
var trans = [];
var snart = [];
for(var i=0x410;i<=0x44F;i++)
{
	trans[i]=i-0x350;
	snart[i-0x350] = i;
}
trans[0x401]= 0xA8;
trans[0x451]= 0xB8;
snart[0xA8]	= 0x401;
snart[0xB8]	= 0x451;
/* при желании эти массивы можно заранее подготовить */
 
function rawurlencode(str)
{
	if(!trans.length)
		return str;
	var ret=[];
	for(var i=0;i<str.length;i++)
	{
		var n=str.charCodeAt(i);
		if(typeof trans[n]!='undefined')
			n = trans[n];
		if (n <= 0xFF)
			ret.push(n);
	}
 
	var strb = window.escape(String.fromCharCode.apply(null,ret));
	return strb.replace(/\+/g, '%2B');
}


function searchCustomer() {
    value = $('#firm-name').val();
    region = $('#firm-region').val();
    if (search['load-firms'] != value || search['region-firms'] != region || enter) {
        if (value == '' || value == 'введите первые буквы или цифры...') {
            alert('Введите первые буквы или цифры из названия или ИНН заказчика.');
            return;
        }
        $('#attention').remove();
        $.get('/index.php',
              {'do': 'ajax_req', 'act': 'custsearch', 'name': value, 'region': region},
              function (data) {
                $('.load-firms tbody').html('');
                if (data.length < 1) {
                    alert("По данному запросу ничего не найдено.\nПопробуйте расширить область поиска.");
                } else {
                    for (key = 0; key < data.length; key++) {
                        $('.load-firms tbody').append('<tr onmouseover="changeBg(this, \'#e1f498\')" onmouseout="clearBg(this)"><td><input type="checkbox" value="'+ data[key].id +'" /></td><td onclick="trOnclick(this);">'+ (data[key].name ? data[key].name : 'Без названия') +(data[key].title ? ' <i>(' + data[key].title +')</i>' : '')+'</td></tr>');
                    }
                    if (data.length == 20) {
                        $('body').append('<div id="attention">В базе содержиться более 20 заказчиков с указанными параметрами, для нахождения их всех уточните параметры поиска.</div>');
                        $('#attention').dialog({
                            buttons: {
                                "Закрыть": function() { $(this).dialog("close"); }				
                            },
                            close: function() { $('#attention').remove(); },
                            resizable: false,
                            width: 300,
                            title: 'Уведомление'
                        });
                    } else {
                        $('body').append('<div id="attention">Найдено менее 20 заказчиков. Попробуйте расширить параметры поиска.</div>');
                        $('#attention').dialog({
                            buttons: {
                                "Закрыть": function() { $(this).dialog("close"); }				
                            },
                            close: function() { $('#attention').remove(); },
                            resizable: false,
                            width: 300,
                            title: 'Уведомление'
                        });
                    }
                }
              },
              'json');
        search['load-firms'] = value;
        search['region-firms'] = region;
        enter = false;
    } else {
        $('.load-firms input').attr('checked', '');
        $('.load-firms tr').css('background', '');
        if ($('.load-firms tr').length == 20) {
            $('body').append('<div id="attention">В базе содержиться более 20 заказчиков с указанными параметрами, для нахождения их всех уточните параметры поиска.</div>');
            $('#attention').dialog({
                buttons: {
                    "Закрыть": function() { $(this).dialog("close"); }				
                },
                close: function() { $('#attention').remove(); },
                resizable: false,
                width: 300,
                title: 'Уведомление'
            });
        }
    }
}

function changeSearch(object, name, id1, id2, id3) {
    obj1 = $('#' + id1);
    obj2 = $('#' + id2);
    var img = $(object).parent().find('a');
    if (name == 'regions') {
        obj3 = $('#' + id3);
        for (i=0; i<img.length; i++) {
            $(img[i]).attr('info', id1);
        }
        obj1.css('display', '');
        obj2.css('display', 'none');
        obj3.css('display', 'none');
    } else {
        if (obj1.css('display') == 'none') {
            $(object).text('Поиск по названию');
            for (i=0; i<img.length; i++) {
                $(img[i]).attr('info', 'load-categories');
            }
            obj1.css('display', '');
            obj2.css('display', 'none');
        } else {
            $(object).text('Выбор из списка');
            for (i=0; i<img.length; i++) {
                $(img[i]).attr('info', 'search-categories');
            }
            obj2.css('display', '');
            obj1.css('display', 'none');
        }
    }
}

function checkChild(obj, type, class_name) {
    var attr = '.'+ type + '_' + class_name +'_'+ $($(obj).parent().prev().find('img')[0]).attr('alt');
    $(attr).find('input[type=checkbox][type=checkbox]').attr('checked', $(obj).attr('checked'));
    var color = $(obj).attr('checked') ? '#fff6ca' : '';
    $(attr).css('background', color);
}

function checkParent(obj) {
    obj = $(obj);
    if (!obj.attr('checked')) {
        var attr = obj.parent().parent().attr('class').split(' ');
        attrs = attr[0].split('_');
        if (attrs.length > 2) {
            $('input[value='+ attrs[2] +']').attr('checked', '');
            $('input[value='+ attrs[2] +']').parent().parent().css('background', '');
        }
        if (attr.length > 1) {
            attr = attr[1].split('_');
            if (attr.length > 2) {
                $('input[value='+ attr[2] +']').attr('checked', '');
                $('input[value='+ attr[2] +']').parent().parent().css('background', '');
            }
        }
    }
}

function trOnclick(object) {
    if ($(object).parent().find('input').attr('checked')) {
        $(object).parent().find('input').attr('checked', '');
    } else {
        $(object).parent().find('input').attr('checked', true);
    }
}

function saveParams() {
    $('body').append('<div id="attention">Название записи:<br/><input style="width:100%" type="text" id="line-name" /></div>');
    $('#attention').dialog({
        buttons: {
            "Сохранить": function() {
                /*$.post('/index.php?do=saveSearch', {'name': rawurlencode($($(this).find('#line-name')[0]).val()), 'id': data},
                       function (d) {}, 'json');*/
                var name = $($(this).find('#line-name')[0]).val();
                $(this).dialog("close");
                $.post('/index.php?do=saveSearch',
                       {'name': rawurlencode(name)},
                       function(data) {
                        if (data) {
                            $('body').append('<div id="attention">Параментры поиска были сохранены и добавлены на страницу с <a title="Тендеры моих предпочтений" href="/index.php?do=favourite">тендерами Ваших предпочтений</a>.</div>');
                            $('#attention').dialog({
                                buttons: {
                                    "Закрыть": function() { $(this).dialog("close"); }
                                    },
                                close: function() { $('#attention').remove(); },
                                resizable: false,
                                width: 300,
                                title: 'Уведомление'
                            });
                        } else {
                            $('body').append('<div id="attention">Эти параментры поиска уже сохранены.<br/>Вы можете просмотреть все сохраненные параметры на странице с тендерами Ваших <a title="Тендеры моих предпочтений" href="/index.php?do=favourite">предпочтений</a>.</div>');
                            $('#attention').dialog({
                                buttons: {
                                    "Закрыть": function() { $(this).dialog("close"); }
                                },
                                close: function() { $('#attention').remove(); },
                                resizable: false,
                                width: 300,
                                title: 'Уведомление'
                            });
                        }
                       },
                       'json'
                );
            },
            "Закрыть": function() {
                $(this).dialog("close");
            }
        },
        close: function() { $('#attention').remove(); },
        resizable: false,
        width: 300,
        title: 'Сохранение параметров поиска'
    });
    /*$.post('/index.php?do=saveSearch',
           {},
           function(data) {
            if (data) {
                $(this).dialog("close");
                    $('body').append('<div id="attention">Параментры поиска были сохранены и добавлены на страницу с тендерами Ваших <a title="Тендеры моих предпочтений" href="/index.php?do=favourite">предпочтений</a>.</div>');
                    $('#attention').dialog({
                        buttons: {
                            "Закрыть": function() { $(this).dialog("close"); }				
                        },
                        close: function() { $('#attention').remove(); },
                        resizable: false,
                        width: 300,
                        title: 'Уведомление'
                    });
            } else {
                $('body').append('<div id="attention">Эти параментры поиска уже сохранены.<br/>Вы можете просмотреть все сохраненные параметры на странице с тендерами Ваших <a title="Тендеры моих предпочтений" href="/index.php?do=favourite">предпочтений</a>.</div>');
                $('#attention').dialog({
                    buttons: {
                        "Закрыть": function() { $(this).dialog("close"); }				
                    },
                    close: function() { $('#attention').remove(); },
                    resizable: false,
                    width: 300,
                    title: 'Уведомление'
                });
            }
           },
           'json');*/
}

function clearAll() {
    $('#select-regions tbody').attr('info', '');
    $('#select-regions tbody').html('');
    $('#select-regions-name').text('Все');
    $('#select-categories tbody').attr('info', '');
    $('#select-categories tbody').html('');
    $('#select-categories-name').text('Все');
    $('#select-firms tbody').attr('info', '');
    $('#select-firms tbody').html('');
    $('#select-firms-count span').text('Все');
    $('#select-firms-count font').css('display', 'none');
    $('[name=pdatemin]').val('');
    $('[name=pdatemax]').val('');
    $('[name=sdatemin]').val('');
    $('[name=sdatemax]').val('');
    $('[name=fdatemin]').val('');
    $('[name=fdatemax]').val('');
    $('[name=pricemin]').val('');
    $('[name=pricemax]').val('');
    $('[name=keywords]').val('');
    $('[name="ttype[]"]').attr('checked', '');
    $('[name="type[]"]').attr('checked', '');
}

function disableInput(object) {
    if ($(object).attr('checked')) {
        $('[name="'+ $(object).attr('name') +'"]').attr('checked', true);
    }
}

function unselectInput(object) {
    if (!$(object).attr('checked')) {
        $('[name="'+ $(object).attr('name') +'"][value=6]').attr('checked', '');
    }
}

Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++)	{
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}