//inicjowanie akcji na polach formularza
$( function(){

  $('.tabtop').keyup(function(event){
                        if (event.keyCode == '13') SubmitForm('SearchForm');     
                      });

  if ($.browser.msie) {
    $(".FormSelect option.depth_1").each( function(i,obj){ obj.innerHTML = '&nbsp;&nbsp;' + obj.innerHTML   });
    $(".FormSelect option.depth_2").each( function(i,obj){ obj.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;' + obj.innerHTML   });
    $(".FormSelect option.depth_3").each( function(i,obj){ obj.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + obj.innerHTML   });
    $(".FormSelect option.depth_4").each( function(i,obj){ obj.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + obj.innerHTML   });
    $(".FormSelect option.depth_5").each( function(i,obj){ obj.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + obj.innerHTML   });
  }

});//end init



// SPRAWDZANIE POLA FORMULARZA
function FormCheck( str, valitdtype, min, max ){
var error = false; 
switch( valitdtype )
{
  case 2: //V_ALPHANUMER
      if (! str.match(/^[a-zA-Z0-9 _\.]+$/)) error = true;
  break; //---------------------    
  
  case 3: //V_ALPHANUMERPL
      if (! str.match(/^[a-zA-Z0-9ąĄĆćĘęŁłŃńÓóŚśŹźŻż,\- _\.]+$/)) error = true;
  break; //---------------------

  case 4: //V_NUMBER
      if (! str.match(/^[0-9]+$/)) error = true;
  break; //---------------------
  
  case 5: //V_ALPHA
      if (! str.match(/^[a-zA-Z]+$/)) error = true;  
  break; //---------------------

  case 6: //V_ALPHAPL
      if (! str.match(/^[a-zA-ZąĄĆćĘęŁłŃńÓóŚśŹźŻż]+$/)) error = true;  
  break; //---------------------
  
  case 10: //V_MAIL
      if (! str.match(/^[a-zA-Z0-9\-@_\.]+$/)) error = true;  
  break; //---------------------
  
  case 11: //V_PHONE
      if (! str.match(/^[0-9 -]+$/)) error = true;  
  break; //---------------------
  
  case 12: //V_HOUSE
      if (! str.match(/^[0-9]+[a-zA-Z]?$/)) error = true;  
  break; //---------------------
  
  case 13: //V_NICK
      if (! str.match(/^[a-zA-Z0-9 _\.]+$/)) error = true;  
  break; //---------------------

  case 14: //V_NAME
      if (! str.match(/^[a-zA-ZąĄĆćĘęŁłŃńÓóŚśŹźŻż\-]+$/)) error = true;  
  break; //---------------------

  case 15: //V_HOUR_MIN
      if (! str.match(/(1[024]|[0-9]):[0-5][0-9]/)) error = true;  
  break; //---------------------  
  
  case 20: //V_PESEL
      if (! str.match(/^[0-9]+$/)) error = true;  
  break; //---------------------
 
   case 21: //V_CITY
      if (! str.match(/^[a-zA-Z0-9ąĄĆćĘęŁłŃńÓóŚśŹźŻż\- _\.]+$/)) error = true;
  break; //---------------------

   case 30: //V_LINK
      if (! str.match(/^[a-zA-Z0-9\-@\:%\/_\.]+$/)) error = true;
  break; //---------------------
  
  case 31: //V_PASS
      if (! str.match(/^[\Wa-zA-Z0-9\-@\:%\/_\.]+$/)) error = true;
  break; //---------------------
  
  case 52: //V_DATE
      if ( 1==1 )
      {  
          if (isDate(str) == false )
            error = true;
          /*
          MyDate =  str+ ' 00:00:00';
          
          for (var i = 0; i <= MyDate.length; i++)
          {
            MyDate = MyDate.replace('-',' ');
          }
          MyDateObj = new Date(MyDate);
          alert(MyDateObj);
          alert(MyDateObj.getDay());
          if (MyDateObj == "Invalid Date")
            error = true;
          */
      }
  break; //---------------------
  
  
  case 100: //SELECTY I CHECKBOXY
  case 101: //SELECTY I CHECKBOXY
  case 105: //BSELECT
  break; //---------------------
}

return error;

}//-----------------------------------------------------------------------------

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

// SPRAWDZANIE POLA FORMULARZA
function FormValidInput( sender, valitdtype, min, max ){

var str = trim( sender.value);
sender.value = str;

var error = false;
var str_len = str.length; 
if ( str_len < min || str_len > max ) error = true;  

if (str_len == 0 ){
  //sprawdzanie czy to jest opcjonalne pole
  var params =sender.lang.split('^'); //typ, flagi, min, max, desc
  if ( !(params[1] & 1) ) error = true;
}
else{
  error = FormCheck( str, valitdtype, min, max );
}

if ( error ) sender.style.background = '#ffBBBB';
else {
  sender.style.background = '';
  $(sender).removeClass('sendError');
  }

}//-----------------------------------------------------------------------------

function SubmitForm(id){
  var strona = document.getElementById('pg');
  if ( strona ) strona.value=1; //poprawka na paginacje w momencie gdy zmienia sie warunki wyszukiwania

  var form = document.getElementById(id);
  if (FormValidateSend( form, 1 ) ) form.submit();
  return false;
} //----------------------------------------------------------------------------


// SPRAWDZANIE FORMULARZA
function FormValidateSend( sender, disable_empty ){

  
  if (disable_empty == undefined) disable_empty = 1; //defaultowa
  var errors = '';

  $('select.selectall option' ).attr("selected","selected");//zaznaczenie wszystkich pol multiselect     
  
  var sprawdzic = $(sender).find('.cform');
  
  sprawdzic.each( function(i, obj ){
    var lang = obj.lang;
    if (lang == '') return true;
    var params = lang.split('^'); //typ, flagi, min, max, desc     
    
    var nazwapola = params[4]; 
    if( nazwapola == undefined ) nazwapola = obj.id;
    
    //odsianie selektow i checkboxow
    if ( params[0] == 100 ){
      if ( ( obj.value == 0 || obj.value == '' || obj.value == undefined ) && !( params[1] & 1 ) ) errors = errors + 'Musisz wybrać ' + nazwapola + " \n" ;
      return true;
    }

    //odsianie selektow i checkboxow
    if ( params[0] == 101 ){
      if ( !(params[1] & 1) &&  $(obj).attr('checked') == false ) errors = errors + 'Musisz zaznaczyć ' + nazwapola + " \n" ;
      return true;
    }


    //odsianie bselektow
    if ( params[0] == 105 ){
      if ( !(params[1] & 1) &&  $(obj).attr('checked') == false ) errors = errors + 'Musisz zaznaczyć co najmniej jeden ' + nazwapola + " \n" ;
      return true;
    }

    
    var str = $(obj).val();
    var str_len = str.length;
    if ( str_len == 0) {
          if( $(obj).hasClass('required') ){
            errors = errors + 'Pole ' + nazwapola + " jest wymagane \n" ;
            $(obj).addClass('sendErrorReq');
            //if( $(obj).is(':hidden') ) errors = errors + 'UWAGA! Pole ' + nazwapola + " jest UKRYTE \n" ; 
          }  
          return true;
    } 
    
    if ( str_len < params[2] ){
                               errors = errors + 'Pole ' + nazwapola + " musi mieć co najmniej " + params[2] + " znaków \n" ;
                               $(obj).addClass('sendErrorBad');
                               return true;  
    } 
    if ( str_len > params[3] ) {
                                errors = errors + 'Pole ' + nazwapola + " może mieć maksymalnie " + params[3] + " znaków \n" ;
                                $(obj).addClass('sendErrorBad');
                                return true;
    } 
    if ( FormCheck( str , parseInt(params[0]), parseInt(params[2]), parseInt(params[3]) ) ){
      errors = errors + 'Nieprawidłowe znaki w polu ' + nazwapola + "\n";
      $(obj).addClass('sendErrorBad');
    }
    
	});

	if ( errors == '' ) {
                        if ( sender.tag == '7' ) return false; //zabezpieczenie przes multikliknieciem
                        sender.tag = '7';
                        
                        if ( disable_empty == 1){
                        sprawdzic.each( function(i, obj ){
                              obj = $(obj);
                              if (obj.val() == '') obj.attr('disabled', true);
                            });
                        }
                        return true;
  }  
	else {
        alert (errors);
        return false;
       } 
       

  
  return false;

}//-----------------------------------------------------------------------------





  function datetime_showmask(sender){
    var myDate=new Date();
    alert(formatDate( myDate, "yyyy-mm-dd HH-MM" ));
    if (sender.value == '') {
      
      }
    //else datetime_validate(sender); 
  }//---------------------------------------------------
  
  function datetime_mask(sender,evt){
    
    if(window.event) // IE
      {
      keynum = evt.keyCode;
      }
    else if(evt.which) // Netscape/Firefox/Opera
      {
      keynum = evt.which;
      }
    keychar = String.fromCharCode(keynum);
    
  }


  function hour_check( sender ){
   sender.style.background = '#FFFFFF'
   var value = sender.value;
   if ( value.length > 2 ){
    var dwukr = value.substr(2,1);
    if (dwukr != ':'){
      var str1 = value.substr(0,2);
      var str2 = value.substr(2);
      sender.value = str1 + ':' + str2;
    }  
   }
   if ( sender.value.length > 5 ) sender.value=sender.value.substr(0,5);
  }//---------------------------------------------------------------------------
  
  function hour_fix(sender){
    if ( sender.value.length < 3 ){
      var godz = parseInt(sender.value);
      if ( isNaN(godz)) godz = 0;
      if ( godz < 10 ) godz = '0' + godz; 
      sender.value = godz + ':00';
    }
    else {
      var aGodz = sender.value.split(':')
      var godz = parseInt('1'+ aGodz[0]); 
      if ( isNaN(godz)) godz = 0;
      else godz = godz -100; //ten numer z setka po to, by nie parsowalo jako liczby osemkowej
      var min = parseInt('1'+ aGodz[1]);
      if ( isNaN(min)) min = 0;
      else min = min - 100;
      if (godz > 23) godz = 23;
      if (min > 60) min = 59;
      if ( godz < 10 ) godz = '0' + godz;
      if ( min < 10 ) min = '0' + min; 
      sender.value = godz + ':' + min;
    }
    
  
  }  


/* ################# JQUERY COMBO BOX #############*/

  function ShowSmartSelect(sender_js, name){
    var box = $('#sselect_box_' + name); //znalezienie go przez jquery
    var sender = $(sender_js); //konwersja przeslanego sendera na obiekt jquery
    
    
    //POZYCJONOWANIE OKIENKA
    var pos =  sender.position(); //pobranie pozycji (obiekt)
    var boxw = 120;
    var boxh = 200;
    if (pos.left + boxw < $(document).width() ){
      box.css('top',pos.top);  //ustawienie pozycji
      box.css('left',pos.left);
    }
    else{
      //obsługa wychodzenia elementu poza stronę
      box.css('top',pos.top + sender.height());  //ustawienie pozycji
      box.css('left',pos.left - boxw);
    }

    //przetrawienie listy glownej i wyswietlenie jej
    var mainlist = $('#sselect_mainlist_' + name) 
    mailist.hide(); // ta lista jest naszym magazynkiem, nie powinna byc widoczna
    
    //iteracja po elementach listy    
    
    
    
    box.show(300);
  }








/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr)
{
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	
//	var strMonth=dtStr.substring(0,pos1)
//	var strDay=dtStr.substring(pos1+1,pos2)
//	var strYear=dtStr.substring(pos2+1)

	var strYear=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=dtStr.substring(pos2+1)
  	
  strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) 
  {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("Poprawny format :  rrrr-mm-dd")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Wpisz poprawny miesiąc")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Wpisz poprawny dzien")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Wpisz cztery liczby w pole: rok ")
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Wpisz poprwaną date w formacie rrrr-mm-dd")
		return false
	}
  return true
}



$(function() {
		$(".FormJqDateInput").dblclick( function(){
    
     $(this).datepicker( { 
                                        clearText: 'Wyczyść', clearStatus: 'Wyczyść obecną datę',
                      	                closeText: 'Zamknij', closeStatus: 'Zamknij bez zapisywania',
                      	                prevText: '&#x3c;Poprzedni', prevStatus: 'Pokaż poprzedni miesiąc',
                      	                prevBigText: '&#x3c;&#x3c;', prevBigStatus: '',
                      	                nextText: 'Następny&#x3e;', nextStatus: 'Pokaż następny miesiąc',
                      	                nextBigText: '&#x3e;&#x3e;', nextBigStatus: '',
                      	                currentText: 'Dziś', currentStatus: 'Pokaż aktualny miesiąc',
                      	                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'],
                      	                monthStatus: 'Pokaż inny miesiąc', yearStatus: 'Pokaż inny rok',
                      	                weekHeader: 'Tydz', weekStatus: 'Tydzień roku',
                      	                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'],
                      	                dayStatus: 'Ustaw DD jako pierwszy dzień tygodnia', dateStatus: '\'Wybierz\' D, M d',
                      	                dateFormat: 'yy-mm-dd', firstDay: 1,
                      	                initStatus: 'Wybierz datę', isRTL: false,
                      	                changeYear: true,
                      	                yearRange: '1920:2020'
                                        } ).datepicker('show'); 
    
    }); 
    
        	$(".FormJqDateTimeInput").dblclick( function(){
    
     $(this).datepicker( { 
                                        clearText: 'Wyczyść', clearStatus: 'Wyczyść obecną datę',
                      	                closeText: 'Zamknij', closeStatus: 'Zamknij bez zapisywania',
                      	                prevText: '&#x3c;Poprzedni', prevStatus: 'Pokaż poprzedni miesiąc',
                      	                prevBigText: '&#x3c;&#x3c;', prevBigStatus: '',
                      	                nextText: 'Następny&#x3e;', nextStatus: 'Pokaż następny miesiąc',
                      	                nextBigText: '&#x3e;&#x3e;', nextBigStatus: '',
                      	                currentText: 'Dziś', currentStatus: 'Pokaż aktualny miesiąc',
                      	                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'],
                      	                monthStatus: 'Pokaż inny miesiąc', yearStatus: 'Pokaż inny rok',
                      	                weekHeader: 'Tydz', weekStatus: 'Tydzień roku',
                      	                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'],
                      	                dayStatus: 'Ustaw DD jako pierwszy dzień tygodnia', dateStatus: '\'Wybierz\' D, M d',
                      	                dateFormat: 'yy-mm-dd', firstDay: 1,
                      	                initStatus: 'Wybierz datę', isRTL: false,
                      	                changeYear: true,
                      	                showTime: true,
                      	                showAnim: 'fold',
                      	                duration: 1,
                      	                yearRange: '1920:2020'
                                        } ).datepicker('show'); 
    
    }); 

  });

/* MAGICZNE WYSZUKIWANIE - nowa wersja */

function cform_search(event, sender, formkey, retval, val1){

  if ($.browser.msie) var klawisz =  window.event.keyCode; 
  else{
    var klawisz =  event.which;
  } 
  if( klawisz == 40 ) return false; //prymitywna blokada
  if( klawisz == 38 ) return false; //prymitywna blokada
  if( klawisz == 27 ) return false; //prymitywna blokada
  if( klawisz == 13 ) return false; //prymitywna blokada

  //pole input potrzebuje swojego boksu pomocniczego ktorym owrapie magicinput
  var jsender = $(sender);
  var cos = jsender.next();
  if( cos.hasClass('MagicInputHint') ) var HintBox = cos ; //input ma juz swojego hintboxa
  else{
    var HintBox = $('<div class="MagicInputHint" id="'+sender.id+'_hint" ></div>')
    HintBox.css('width', jsender.width()  ); //szerokosc podpowiedzi taka jak inputu
    var pos = jsender.offset(); //zwraca obiekt pozycji inputu;
    HintBox.css( 'top', pos.top + jsender.height() ); //pozycja absolutna od góry taka jak inputu + jego wysokosc
    HintBox.css( 'left', pos.left ); //pozycja absolutna od góry taka jak inputu
    jsender.after( HintBox );
    jsender.keydown(MoveInMagicInput); //uzbrojenie kontroli klawiatury w boksie
  }
  
  var like = jsender.val();
  if ( like.length < 3 ){
    HintBox.hide();
    jsender.attr( 'autocomplete', 'on' );
    return false;
  }
  
  HintBox.load( 'ajax_magic.php', { like: like ,formkey:formkey, retval:retval, val1:val1 }, function(){
    jsender.attr( 'autocomplete', 'off' );
    HintBox.find('tr').click( cformClicked ); //trzeba uzbroić wyniki w kliknięcie
    HintBox.fadeIn('200'); //pojawienie się
  });

}//-----------------------------------------------------------------------------

//klikniecie w magiczny hint
function cformClicked(){
  var HintBox = $(this).parents('.MagicInputHint:first') 
  HintBox.prev().val( $(this).text() ); //wpisujemy inputowi wartość klikniętego
  HintBox.hide();
  
} //----------------------------------------------------------------------------

//poruszanie sie klawiszami w magicznym impucie
function MoveInMagicInput(e){
  
  //alert( e.which );

  var kod = e.which; //kod klawiatury
  var box = $(this).next('.MagicInputHint');
  
  if ( kod  == 40 || kod == 38 ) {  //dol i gora
    //sprawdzic czy jakas z opcji jest zapalona, jak nie, wybrac i zaznaczyc pierwsza WIDOCZNA
    var Wybrana = box.find('.wybrana:first');
    if ( Wybrana.length > 0 ){
      if( kod == 40 ) wybrana_nowa = $(Wybrana).next('tr'); //DOL nastepny rzad w kolejnosci
      if( kod == 38 ) wybrana_nowa = $(Wybrana).prev('tr'); //GORA poprzedni rzad w kolejnosci
      if ( wybrana_nowa.length ){  //jesli to nie jest ostatnia
        Wybrana.removeClass('wybrana');
        wybrana_nowa.addClass('wybrana');
      }
    }
    else {
      var opcja = box.find('tr:first'); //wybierz pierwsza widoczna
      opcja.addClass('wybrana');
    }
  //e.preventDefault(); e.stopPropagation(); return false; //blokowanie defaultowej operacji przegl
  }//end40
  
  // ESC zamyka
  else if ( kod == 27 ) box.fadeOut(300); //znajdujemy włączoną podopcję
  
  
  else if ( kod == 13 ){ //enter
    //jesli jakas opcja jest zapalona, to uzyc jej jak przy kliknieciu
    var Wybrana = box.find('.wybrana:first .usethis');
    if ( Wybrana.length > 0 ){
      box.prev().val( Wybrana.text() ); //wpisujemy inputowi wartość klikniętego
      box.hide();
    }
  }//end 13
  
  
}//-----------------------------------------------------------------------------





