
//obiekt wykorzystywany do usprawnienia dzialan wyszukiwarki.
var searchHelpers = function(){
    
    this.startNamesTab =  [
        //wojewodzctwa
        "dolnoslaskie","kujawsko-pomorskie","lubelskie","lubuskie","lodzkie","malopolskie",
        "mazowieckie","opolskie","podkarpackie","podlaskie","pomorskie","slaskie","swietokrzyskie",
        "warminsko-mazurskie","wielkopolskie","zachodniopomorskie",
        //dzielnice warszawy
        "bemowo","bialoleka","bielany","mokotow","ochota","praga-poludnie","praga-polnoc",
        "rembertow","srodmiescie",
        "targowek","ursus","ursynow","wawer","wesola","wilanow","wlochy","wola","zoliborz"
    ];
    
    this.endNamesTab = 
        [
        //wojewodzctwa
        "Dolnośląskie","Kujawsko-Pomorskie","Lubelskie","Lubuskie","Łódzkie","Małopolskie",
        "Mazowieckie","Opolskie","Podkarpackie","Podlaskie","Pomorskie","Śląskie","Świętokrzyskie",
        "Warmińsko-Mazurskie","Wielkopolskie","Zachodniopomorskie",
        //dzielnice warszawy
        "Bemowo","Białołęka","Bielany","Mokotów","Ochota","Praga-Południe","Praga-Północ",
        "Rembertów","Śródmieście",
        "Targówek","Ursus","Ursynów","Wawer","Wesoła","Wilanów","Włochy","Wola","Żoliborz"
    ];
    
    //poprawia wartości pol range od-do,
    this.checkRangeValue = function(inputRangeOD, inputRangeDO){
            
        $.each([inputRangeOD,inputRangeDO], function(i,e){

            var ev = $(e).attr('value');
            var a = (isNaN(ev.split('-')[0]) || parseInt(ev.split('-')[0]) < 0)?0:parseInt(ev.split('-')[0]);
            var b = (isNaN(ev.split('-')[1]) || parseInt(ev.split('-')[1]) < 0)?0:parseInt(ev.split('-')[1]);

            if(ev == "" || a == 0 || b == 0){
                if(a == 0){
                    $(e).attr('value', '0-'+b);
                }
                if(b == 0){
                    $(e).attr('value', a+'-0');
                }
                if(a>b){
                    $(e).attr('value', b+'-'+a);
                }
            }

        });
    };
    
    
    //odczytuje wartości inputów, dodaje wartośći do pol range i poprawia wartości pol range.
    this.checkInputValue = function(inputOD,inputDO,inputRangeOD,inputRangeDO){
        
        var inputToValue = inputDO.attr('value');
        var from = (isNaN(inputOD.attr('value')) || parseInt(inputOD.attr('value')) < 0)?0:parseInt(inputOD.attr('value'));
        var to = null;
        
        if(isNaN(inputToValue) || parseInt(inputToValue) < 0 || inputToValue == ""){
            if(from > 0){
                to = from;    
            }else{
                to = 100000000000000000000;
            }            
        }else{
            to = parseInt(inputDO.attr('value'));
        }
        
        var string = from+'-'+to;

        if(from>to){
            string = to+'-'+from;
        }

        inputRangeOD.attr('value', string);
        inputRangeDO.attr('value', string);

        this.checkRangeValue(inputRangeOD, inputRangeDO);
    };
    
    
    //zabiera prefix z kazdej opcji selecta
    this.removeCategoryPrefix = function(select, prefix){
        
        $.each(select.find('option'), function(i, e){
            var val = $(e).text().replace(prefix+'-','');
            $(e).text(val);
        });
        
    };
    
    //poprawia nazwy wojewodzct oraz dzielnic warszawy w kazdej opcji selecta
    this.refeshCategoryNames = function(select){
        var instance = this;
        
        $.each(select.find('option'), function(i, e){
            
            var tabStart = instance.startNamesTab
            var tabEnd = instance.endNamesTab;
            
            var startText = $(e).text();
            var startTabIndex = $.inArray(startText, tabStart);
            if(startTabIndex != -1){
                $(e).text(tabEnd[startTabIndex]); 
            }
            
        });
    };
    
    //dodaje nowe inputy do formularza, dodaje do nich zdarzenia wczytywania tresci(pobieram wartosc od oraz do
    //po czym lacze w przedzialy liczbowe w polach range), dodaje zdarzenia podczas wysylania formularza 
    this.refreshSearchMechanizm = function(inputTable){
        
        //wrapper in data.
        var formName            =  inputTable[0];   
        var inputRangeOdName    =  inputTable[1];   
        var inputRangeDoName    =  inputTable[2];   
        var selectCategoryName  =  inputTable[3];   
        var categoryPrefix      =  inputTable[4];   
        
        //podstawowe wartości.
        var instance = this;
        
        var form  = $(formName);
        var inputRangeOd = form.find(inputRangeOdName);
        var inputRangeDo = form.find(inputRangeDoName);
        var select = form.find(selectCategoryName);
        
        var templateOd = '<div class="TextField"><div class="searchform-param"><label class="searchform-label">Od</label><span class="searchform-input-wrapper"><input value="" name="powierzchnia-od"></span></div></div>';
        var templateDo = '<div class="TextField"><div class="searchform-param"><label class="searchform-label">Do</label><span class="searchform-input-wrapper"><input value="" name="powierzchnia-do"></span></div></div>';
        
        //zmieniam nazwy w selektach.
        instance.removeCategoryPrefix(select, categoryPrefix);
        instance.refeshCategoryNames(select);
        
        //bind action to form
	select.unbind('change').change(function() {
		var url = $('.page-form-list .form-block:not(.hidden) select option:selected').text();
		$('[href="#' + url + '"]').trigger('click');
		$('[href="#' + url + '"]').trigger('mouseout');
	});
        
        //chowam pola range
        inputRangeOd.parents('.TextField').hide(); 
        inputRangeDo.parents('.TextField').hide(); 
        
        //dodaje inputy do formularza
        //form.find('.searchform-params').append(templateOd).append(templateDo);
        
        if(form.find('.searchform-params input[name="powierzchnia-od"]').size() < 1){
            form.find('.searchform-params').append(templateOd);
        }
        
        if(form.find('.searchform-params input[name="powierzchnia-do"]').size() < 1){
            form.find('.searchform-params').append(templateDo);
        }
        
        var inputOd = form.find('.searchform-params input[name="powierzchnia-od"]');
        var inputDo = form.find('.searchform-params input[name="powierzchnia-do"]');
        
        inputDo.removeAttr('disabled');
        inputOd.removeAttr('disabled');
        
        inputOd.unbind('keyup').bind('keyup', function(){ instance.checkInputValue(inputOd, inputDo, inputRangeOd, inputRangeDo); });
        inputDo.unbind('keyup').bind('keyup', function(){ instance.checkInputValue(inputOd, inputDo, inputRangeOd, inputRangeDo); });
        
        //poprawiam podczas wyslania jeszcze raz pola range
        form.unbind('submit').bind('submit', function(evt){

            instance.checkInputValue(inputOd, inputDo, inputRangeOd, inputRangeDo);

            form.find('.searchform-params input[name="powierzchnia-od"]').attr('disabled','disabled');
            form.find('.searchform-params input[name="powierzchnia-do"]').attr('disabled','disabled');
            
            //stop submit
            //evt.preventDefault(); 
        });   
        
    };
    
    //inicjalizuje zdarzenia w formluarzach oraz mapie
    this.initSearchForms = function(formsList, defaultTypeId){
        
        var instance = this;
        if(!defaultTypeId)defaultTypeId=2;
        
	//bind action to type of search.
	$('.page-form-list .typeform-param').change(function() {
            
                //get basic values
                var formNumber = $(this).find('option:selected').index();
		var formTypeNumber = $(this).find('option:selected').attr('newtype').split('-')[1];
                
                //hide all form
		$('.page-form-list .form-block').each(function() {
			if (!$(this).hasClass('hidden')) {
				$(this).addClass('hidden');
			}
		});
                
                //show current form
		$('.page-form-list').find('.form-' + formTypeNumber).removeClass('hidden');
                
                //refresh form block
                instance.refreshSearchMechanizm(formsList[formNumber]);
	});

        //set default visible form as present-2
	$('.page-form-list .typeform-param option[newtype="present-'+defaultTypeId+'"]').attr('selected', 'selected');
	$('.page-form-list .typeform-param').trigger('change');
        
        //zdarzenia mapy.
        var agentsListId = '#adresy';
        
        $.defaultClickAction = function(e) {

            var liUrl = $(e).text();
            var openForm = $('.page-form-list .form-block:not(.hidden) form select');
            if ($(agentsListId).length > 0) {} else {
                openForm.find('option:selected').removeAttr('selected');
                $.each(openForm.find('option'), function(i,ev){
                    if($(ev).text() == liUrl){
                        $(ev).attr('selected', 'selected');
                    }
                });
            }

            liUrl = $(e).children('a').attr('href');
            $(e).addClass('active-region');
            
            $(agentsListId).find('li').hide();
            $(liUrl + ',' + liUrl + ' li').show();
	}
        
    }
    
    
};
