/**
 * Sprawdzam wersje przegladarki
 */
if($.browser.msie && parseInt($.browser.version) < 8){
    location.href = 'http://'+location.host+'/update_browser';
}

$(document).ready(function(){
    var cssObj = {
        'opacity':'0.0',
        'position':'absolute',
        'top':  '0px',
        'right': '0px',
        'width': '135px',
        'height': '24px',
        'cursor': 'pointer'
    }
    $(":file", $('#dialog-edit-avatar')).css(cssObj);
});

//Polish initialization jQuery UI
jQuery(function($){
    $.datepicker.regional['pl'] = {
        closeText: 'Zamknij',
        prevText: '&#x3c;Poprzedni',
        nextText: 'Następny&#x3e;',
        currentText: 'Dziś',
        monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
        'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
        monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
        'Lip','Sie','Wrz','Pa','Lis','Gru'],
        dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
        dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
        dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
        weekHeader: 'Tydz',
        dateFormat: 'yy-mm-dd',
        firstDay: 1,
        isRTL: false,
        showMonthAfterYear: false,
        yearSuffix: ''
    };
    $.datepicker.setDefaults($.datepicker.regional['pl']);
});

$(function(){
    /**Do licznika znakow.
    *zaraz po zaladowaniu sprawdzam ilosc znakow
   * Kalkulator liczby znakow wprowadzonych do textarea, unimożliwo wprowadzenie wiekszej liczby znakow niz ta zdefiniowana ***/
    $('.nanny-basic-info-edit textarea, #parent-about textarea, .ad-basic_info textarea, #disability-desc textarea, #dialog-msg textarea, #dialog-application textarea, .nanny-experience textarea, .nanny-education textarea, #dialog-spam textarea').each(function(){
        var parent = $(this).parent();
        var maxLength = parseInt($('.maxLength', parent).val());
        var textLength = parseInt($(this).val().length);
        var isNewLine = $(this).val().match(/[\n|\r\n]/g);
        
        if(isNewLine){
            textLength += isNewLine.length;
        }
        
        if(textLength > maxLength){
            $('.charLeft', $(this).parent()).parent().css('color', 'red');
        }else{
            $('.charLeft', $(this).parent()).parent().css('color', '#666');
        }
        
        $('.charLeft', parent).text(maxLength - textLength);
    }).bind('keyup',function(){
       
        var parent = $(this).parent();
        var maxLength = parseInt($('.maxLength', parent).val());
        var textLength = parseInt($(this).val().length);
        var isNewLine = $(this).val().match(/[\n|\r\n]/g);
        
        if(isNewLine){
            textLength += isNewLine.length;
        }
        
        //Wpisuje informacje o ilosci znakow
        $('.charLeft', parent).text(maxLength - textLength);
        
        if(textLength > maxLength){
            $('.charLeft', $(this).parent()).parent().css('color', 'red');
        }else{
            $('.charLeft', $(this).parent()).parent().css('color', '#666');
        }
    });
   
   
    /**************Wyniki wyszukiwania ofert pracy **************/  
    if($('.results').length){
        $('.result-item').corner('5px');
        $('.header-parent').corner("tl 5px");
        $('.result-header2').corner("tl 10px");
        $('.result-header2').corner("tr 10px");
        $('#miasto').corner('15px');
        $('#ulica').corner('15px');
        $('.result-item').corner('5px');
        $('.header-nanny').corner("tl 5px");
        $('.result-header').corner("tl 10px");
        $('.result-header').corner("tr 10px");
    }
    
    /*************Mini wyszukiwarka - belka gorna***********************/
    var msgSlide = new msgSlider();
    //zaznaczenie opcji "Użyj mojej lokalizacji" powoduje zablokowanie pola "Miasto" oraz "Województwa"
    $('#localise input').click(function(){
        if(!$(this).is(':checked')){
            $('input#city, select#d_province_id').attr("disabled", true).css('color', '#CCC'); 
        }else{
            $('input#city, select#d_province_id').attr("disabled", false).css('color', '#000'); 
        }
    });
    
    //Dialog box informujacy o opcji dostepnej tylko dla zalogowanych
    $('#localise').click(function(){
        if($(this).find('input').attr('disabled')){
            msgSlide.slideNotice('Opcja dostępna tylko dla zalogowanych');
        }
    });
    
    //Auto uzupelnienie pola city w przypadku braku wartosci, zaraz po zzaladowaniu.
    checkFiledCompleted($('#city'), 'Miasto');
    //Autozupulenienie po klikniecu elementu
    
    /*
     *funkcja sprawdza czy przekazne pole( jQuery Object) jexst uzupelnione
     *obj - objeck jquery, zaznaczeongeo elementu
     *defaultName - string jak ma zostac ustawiony w przypadkubraku wartosci
     **/
    function checkFiledCompleted(obj, defaultName ){
        //Jesli mamy do czynieniaz pustym elemenetem uzupelniam
        if($.trim(obj.val()).length == 0){
            obj.val(defaultName);
        }
        
        //Podpinam zdarzenie facousout
        obj.focusout(function(){
            if($.trim($(this).val()).length == 0){
                $(this).val(defaultName);
            }
        });
        
        //Podpinam zdarzenie focusin
        obj.focusin(function(){
            if($.trim($(this).val()) == defaultName){
                $(this).val('');
            }
        });
        
        //Podpinam akcje sprawdzenia wartosci city podczas submitu
        $('form').submit(function(){
            if(obj.val() == defaultName){
                obj.val('');
            }
            return true;
        });
    }   
    
    //W czasie wysylki lekko modyfikuje kierunek wysylki zapytania
    //Aktualnie nie uzywane
    /*$('form').submit(function(){
        //Metoda zwraca string pozbawiony polskich znakow a nastepnie podany funkcji escape
        function changePolishChar(city){
            
            if(city.length == 0) return '';
            
            var polishChar = {
                'ó' : 'o', 
                'ł' : 'l', 
                'ż' : 'z',
                'ź' : 'z', 
                'ą' : 'a', 
                'ć' : 'c',
                'ę' : 'e', 
                'ń' : 'n',
                'ś' : 's'
            };
            
            var cityNew = [];
            for(i=0; i < city.length; ++i ){
                if(polishChar[city[i].toLowerCase()] !== undefined){
                    cityNew.push(polishChar[city[i].toLowerCase()]);
                    
                }else{
                    cityNew.push(city[i].toLowerCase());
                }
            }
            
            return cityNew.join('');
        }
        
        //Jesli dlugosc wieksza od 0, znaczy ze podano miasto i moge zmienic linka
        var city = $.trim($('#city').val());
        if(city.length){
            city = changePolishChar(city);
            
            //return false;
        }
        return true;
    });*/
    
    /************* END Oferty pracy/wyszukiwarka ****************/
   
    /*********Widok strony glownej**********************/
    if($('#main-results').length){
       
        $('.header-nanny').corner("tl 5px");
        $('.header-parent').corner("tl 5px");
        
        var nany_box = $('#nanny_results_box');
        var offer_box = $('#parent_results_box');
        var slideTime = 300;
       
        $('#label-menu-work-city').click(function(){

            //Jesli aktualnie jest animowany slider, nie pozwalam na klikniecie
            if($('#content_full').data('animation_slide')) return;
            //Sprawdzam czy aktualnie jest rozwinieta zakladka rodzicow jesli tak ponowne klikniecie przeniesie do wyszukiwarki
            if($('#parent_results_box .row:last').css('display') == 'block'){
                location.href = 'http://'+location.host+'/niania-praca';
            }
            //Podmieniam linki odnosnikow z advertisement na babysitters w stopce z nzawami miast
            changeCityFooterUrl('/niania', '/niania-praca');
            wrappIn(nany_box, offer_box);
        });
        
        $('#label-menu-nanny-city').click(function(){
            //Jesli aktualnie jest animowany slider, nie pozwalam na klikniecie
            if($('#content_full').data('animation_slide')) return;
            //Sprawdzam czy aktualnie jest rozwinieta zakladka rodzicow jesli tak ponowne klikniecie przeniesie do wyszukiwarki
            if($('#nanny_results_box .row:last').css('display') == 'block'){
                location.href = 'http://'+location.host+'/niania';
            }
            //Podmieniam linki odnosnikow z advertisement na babysitters w stopce z nzawami miast
            changeCityFooterUrl('/niania-praca', '/niania');
            wrappIn(offer_box, nany_box);
        });
        
        changeCityFooterUrl = function(strReplace, strUrl){
            $('#footer-top').find('a').each(function(){
                $(this).attr('href', $(this).attr('href').replace(strReplace, strUrl));
            });
        }
        
        wrappIn = function(scpOut, scpIn){
            
            scpOut.children().each(function(){
                $(this).removeClass('show_slider')
            });
            var last_child = scpOut.children().not('.hidden_slider').last();
            
            //Zapisuje informacje o tym, ze aktualnie jest wlaczony slider
            $('#content_full').data('animation_slide', true);
            
            last_child.addClass('hidden_slider').fadeOut(slideTime,function(){
                wrappIn(scpOut, scpIn);
            });
            //Po wywolaniu rekurencyjnym jesli brak elementow w scp czas na wyswietlenie drugiego bloku.
            if(last_child.length == 0){
                wrappOut(scpOut,scpIn);
            }
        };
        
        wrappOut = function(scpOut,scpIn){
            //Kasuje klasy sterujace z elementow usunietych
            //Tutaj idziemy od pierwszego dziecka
            scpOut.children().each(function(){
                $(this).removeClass('hidden_slider')
            });
            var first_child = scpIn.children().not('.show_slider').first();
            //Jesli nie ma wiecej elementow do animacji, ustawiam status na koniec animacji
            //i umozliwiam kolejne klikniecie;)
            if(!first_child.length){
                $('#content_full').data('animation_slide', false);
            }else{
                first_child.addClass('show_slider').fadeIn(slideTime, function(){
                    wrappOut(scpOut, scpIn); 
                });
            }
        } 
    }
    /***********END strona glowna****************************/
   
    //Odpalam jQuery Transform
    $('form').jqTransform();
   
    /************ Messages widok********************/
    if($('#container-messages').length){ 
        $('.message-content').corner('10px');
        
        //Zaznacz/odznacz wszystkie widoczne wiadomosci
        $('input[name=message_all]').click(function(){
            //Neguje wartosc checked by miec faktyczny stan checkboxa
            var checked = !$(this).attr('checked');
            
            $('form').find('div input[type="checkbox"]').each(function(){

                if(checked != $(this).attr('checked')){
                    $(this).click();
                    
                    if(checked){
                        $(this).siblings('a').addClass('jqTransformChecked');
                    }else{
                        $(this).siblings('a').removeClass('jqTransformChecked');
                    }
                }
            });
        });
        
    }
   
    /************ END messages ****************/
   
    /******* Dodawanie do ulubionych **********
    * Funkcja wlaczajaca obsluge - add_favorite
    */
    $('.add_favorite').click(function(){
        
        var slide = new msgSlider();
        
        var This = $(this);
        
        //Sprawdzam czy klikniety element jest obrazem jsli nie szukam wewnatrz kliknietego elementu

        
        var element_id = $('.favorite_el_id', $(this).closest('div')).val();
        
        //Jesli nie zdefiniowany element wyswietlam komunikat z informacja o braku dostepu
        if(!element_id){
            slide.slideNotice('Opcja dostępna tylko dla zalogowanych');
            return;
        }
        $.ajax({
            cache : false,
            type : 'GET',
            url : '/favorite/add/'+element_id,
            dataType : 'json',
            success : function (json){
                if(json.status == 1){
                    //Podmieniam zdjecie gwiazdki
                    if(json.display == 1 ){
                        if(typeof This.attr('src') == 'undefined'){
                            This.find('#ad-favorite-img, #nanny-favorite-img, .ad-favorite-img').addClass('fav-on').removeClass('fav-out').css('backgroundPosition' , '0px -22px');
                        }else{
                            This.attr('src', '/img/icons/fav_on.png');
                        }
                    }else{
                        if(typeof This.attr('src') == 'undefined'){
                            This.find('#ad-favorite-img, #nanny-favorite-img, .ad-favorite-img').addClass('fav-out').removeClass('fav-on').css('backgroundPosition' , '0px 0px');
                        }else{
                            This.attr('src', '/img/icons/fav_out.png');
                        }
                    }
                    
                    //Ustawiam tekst
                    This.find('span').text(json.msg.body_text);
                    
                    slide.slideSuccess(json.msg.slider);

                }else{
                    //TODO slider spuszcany
                    slide.slideError(json.msg);
                }
            },
            error : function(){
                slide.slideError('Houston, We have a Problem;)');
            }
        });
    });
    /*******************************************/   

    /************ Edit *****************/
    
    //Upload zdjecia
    $('#file_name').change(function(){
        var file = $(this).val();
        $('.file_path').text(file);
    });
    
    
    //Edycja avatara usera
    if($('#avatar-img').length){ //Jesli jest zdefiniowany element to odpalam
        
        
        function setCoordinate(img, selection) {
            $('input[name="x1"]').val(selection.x1);
            $('input[name="y1"]').val(selection.y1);
            $('input[name="x2"]').val(selection.x2);
            $('input[name="y2"]').val(selection.y2); 
            
            setSelectedWidthHeight(img, selection);
        }
    
        function setSelectedWidthHeight(img, selection){
            //Ustaiwam informacje o aktulanym zaznaczeniu wysokosci i szerokosci
            $('.select_width').text(selection.x2 - selection.x1);
            $('.select_height').text(selection.y2 - selection.y1);
        }
    
        function preview(img, selection) {
            var scaleX = 330 / (selection.width || 1);
            var scaleY = 330 / (selection.height || 1);
  
            $('#avatar-img-preview img').css({
                width: Math.round(scaleX * 640) + 'px',
                height: Math.round(scaleY * 480) + 'px',
                marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
                marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
            });
        }
        
        function setSelected(AreaSelectObj, imgObj){
            var height = imgObj.height();
            var width = imgObj.width();
            
            //Wartosci w polach zdefionowane
            var _x1 = $('input[name="x1"]').val() ? $('input[name="x1"]').val() : 0;
            var _y1 = $('input[name="y1"]').val() ? $('input[name="y1"]').val() : 0;
            var _x2 = 115; //Domyslna minimalna wartosc
            var _y2 = 113; //Domyslna minimalna wartosc
            //Sprawdzam ktory bok krotszy  - przypadek gdy nie zdefiniowano wartosci w polach
            if(height >= width){
                _x2 = $('input[name="x2"]').val() ? $('input[name="x2"]').val() : width;
                _y2 = $('input[name="y2"]').val() ? $('input[name="y2"]').val() : width;
            }else{
                _x2 = $('input[name="x2"]').val() ? $('input[name="x2"]').val() : height;
                _y2 = $('input[name="y2"]').val() ? $('input[name="y2"]').val() : height;
            }
            
            //Ustawiam select
            AreaSelectObj.setSelection(_x1,_y1,_x2,_y2, true);
            setCoordinate(imgObj, {
                x1 : _x1, 
                y1 : _y1, 
                x2 : _x2, 
                y2 : _y2
            }); //Przekazuje objekt 
            
            //Odpalam update
            AreaSelectObj.update();
        }
        
        function runAreaSelect(){
            ias = $('#avatar-img img').imgAreaSelect({
                parent : '#avatar-img',
                aspectRatio: '1:1',
                x1 : 0,
                y1 : 0,
                x2 : 330,
                y2 : 330,
                handles : true,
                show : true,
                minWidth    : 115,
                minHeight   : 115,
                onInit : setSelectedWidthHeight,
                onSelectEnd : setCoordinate,
                onSelectChange : setSelectedWidthHeight,
                instance: true,
                fadeSpeed : 300,
                persistent : true,
                enable : true
            });
        
            //Ustaiwam rozmiar kwadratu zaznaczonego
            setSelected(ias, $('#avatar-img img'));
        }
        
        
        //Zmienna wykorzystywana 
        var ias;
        if($.browser.msie ){
            runAreaSelect();
        }else{
            //Hak na chroma , safari ale nie dziala pod IE
            $("<img/>").attr('src', $('#avatar-img img').attr('src')).load(function(){
                runAreaSelect();
            });
        }
    }
/*************END edit *************/
});

$(function(){
    
    /** Profile **/
     
    //zaokrąglanie rogów avatarów
    $('.nanny-image img').corner("12px");
    $('.ad-image img').corner("12px");
    /******************** Wyszukiwarka zaawansowana ********************/
    
    
    //wybór wieku opiekunki z zakresu 16-65 lat
    $("#slider-nanny-age").slider({
        range: true,
        min: 16,
        max: 65,
        values: [ $('#nanny-age-from').val(), $("#nanny-age-to").val() ],          
            
        slide: function( event, ui ) {
            $("#nanny-age-amount").val(ui.values[ 0 ] + " - " + ui.values[ 1 ] );     
            $("#nanny-age-from").val(ui.values[ 0 ]);
            $("#nanny-age-to").val(ui.values[ 1 ]);
        }
    });
       
    $("#nanny-age-amount").val( $("#slider-nanny-age").slider("values", 0) + " - " + $("#slider-nanny-age").slider("values", 1) );
    
    //wybór wynagrodzenia opiekunki za 1 godzinę
    $("#slider-nanny-salary").slider({
        range: true,
        min: 1,
        max: 100,
        values: [ $('#nanny-salary-from').val(), $("#nanny-salary-to").val() ],          
            
        slide: function( event, ui ) {
            $("#nanny-salary-amount").val(ui.values[ 0 ] + " - " + ui.values[ 1 ] );     
            $("#nanny-salary-from").val(ui.values[ 0 ]);
            $("#nanny-salary-to").val(ui.values[ 1 ]);
        }
    });
       
    $("#nanny-salary-amount").val( $("#slider-nanny-salary").slider("values", 0) + " - " + $("#slider-nanny-salary").slider("values", 1) );
    
    //wybór wieku podopiecznego z zakresu 1-100 lat
    function ward(age_min, age_max, age_step){
        $("#slider-ward-age").slider({
            range: true,
            min: age_min,
            max: age_max,
            step: age_step,
            values: [ $('#ward-age-from').val(), $("#ward-age-to").val() ],          

            slide: function( event, ui ) {
                $("#ward-age-amount").val(ui.values[ 0 ] + " - " + ui.values[ 1 ] );     
                $("#ward-age-from").val(ui.values[ 0 ]);
                $("#ward-age-to").val(ui.values[ 1 ]);
            }
        });    
        $("#ward-age-amount").val( $("#slider-ward-age").slider("values", 0) + " - " + $("#slider-ward-age").slider("values", 1) );
    }
    
    ward(1, 100, 10);
    var flag = 1;
    
    $('span#change-age').click(
        function(){
            if (flag){
                ward(1, 18, 1);
                flag = 0;
            } else {
                ward(1, 100, 10);
                flag = 1;
            }
        }
        );
    
    //maksymalna ilość podopiecznych 
    $( "#slider-ward-amount" ).slider({
        range: false,
        min: 1,
        max: 6,
        value: $('input#ward-amount-h').val(),           
            
        slide: function( event, ui ) {
            $("#ward-amount" ).val(ui.value);     
            $("#ward-amount-h").val(ui.value);
        }
    });
       
    $("#ward-amount" ).val( $("#slider-ward-amount").slider("value"));
    
    
    //podmiana tła box-u na hoverze
    $('.result-item').hover(
        function(){
            css = "url('/img/search_result_bg_hover.png')";
            $(this).css("background",  css);
        }, 
        function(){
            css = "url('/img/search_result_bg.png')";
            $(this).css("background",  css);
        });
   
    //Hak na IE8
    $('.ui-slider').each(function(){
        var handle = $('.ui-slider-handle',$(this));
       
        if(handle.length > 1){
           
            $('.ui-slider-handle:last-child',$(this)).css({
                'background-position' : '0 -40'
            });
        //var bgPositonY = $(handle).css('backgroundPosition', '+=20');
           
        //newBgPositonY = (parseInt(bgPositonY)-20)+'px';
        //alert(newBgPositonY);
        //$(handle[1]).css('backgroundPositionY',(parseInt(bgPositonY)-20)+'px');
        }
    });
});


/************** Strona główna, rejestracja ****************/

$(function(){
        
    $('.nanny').hover(function(){
        $('#main-info-general').css('display', 'none');
        $('#label-help-main').css("display", "block");
        $('#main-info-parent').css("display", "none");
        $('#main-info-nanny:hidden').stop(true, true).fadeIn('slow');

    });

    $('.parent').hover(function(){        
        $('#main-info-general').css('display', 'none');
        $('#label-help-main').css("display", "block");
        $('#main-info-nanny').css("display", "none");
        $('#main-info-parent:hidden').stop(true, true).fadeIn('slow');
    });
    
    $('.parent, .nanny').mouseout(function(){
        $('#main-info-nanny, #main-info-parent').css('display', 'none');
        $('#main-info-general').stop(true, true).fadeIn('slow');
    });
    
    /*** Rejestracja ***/
    $('li#nanny-reg').click(function(){
        $('#register-parent-notice').fadeOut('normal', function(){
            $('#register-nanny-notice:hidden').fadeIn("normal");
        });//css("display", "none");
    });
    
    $('li#parent-reg').click(function(){
        $('#register-nanny-notice').fadeOut('normal', function(){
            $('#register-parent-notice:hidden').fadeIn("normal");
        });//.css("display", "none");
    });
    
    //zaraz po zaladowaniu strony ukrywam info niani
    if($('#register-as-radios').find('input:checked').attr('id') == 'pro-2'){
        $('#register-nanny-notice').css("display", "none");
        $('#register-parent-notice:hidden').css('display', 'block');
    }

});

