$j = jQuery.noConflict();

/* Polish initialisation for the jQuery UI date picker plugin. Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
$j(function($){
  $.datepicker.regional['pl'] = {
    clearText: 'Wyczyść', clearStatus: 'Wyczyść obecną datę',
    closeText: 'Zamknij', closeStatus: 'Zamknij bez zapisywania',
    prevText: '&#x3c;Poprzedni', prevStatus: 'Pokaż poprzedni miesiąc',
    nextText: 'Następny&#x3e;', nextStatus: 'Pokaż następny miesiąc',
    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','Poniedziałek','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};
  $.datepicker.setDefaults($.datepicker.regional['pl']);
});

$j(document).ready(function(){
	$j('.tableList tr:odd, .contList li:odd').addClass('odd');
	$j('a[rel*="external"]').attr({target: "_blank"});

	/* wyszukiwarka - daty */
	$j('#main_trip_data1, #main_trip_data2').datepicker({ beforeShow: rangeOffer, duration: 'fast' }).attr('autocomplete', 'off');
	$j("#main_trip_data1").datepicker().bind('change', setNext2Weeks);
	/* side-wyszukiwarka - daty */
	$j('#sidebar_trip_data1, #sidebar_trip_data2').datepicker({ beforeShow: rangeOffer2, duration: 'fast' }).attr('autocomplete', 'off');
	$j('#sidebar_trip_data1').datepicker().bind('change', setNext2Weeks);

	tooltip();
});

/* ustawia zakres dat: od dzis do roku */
function rangeOffer(input){
	return {
		minDate: (input.id == "main_trip_data2" ? ($j("#main_trip_data1").datepicker('getDate') > new Date() ? $j("#main_trip_data1").datepicker('getDate') : new Date()) : new Date()),
		maxDate: 365
	}
}
function rangeOffer2(input){
	return {
		minDate: (input.id == "sidebar_trip_data2" ? ($j("#sidebar_trip_data1").datepicker("getDate") > new Date() ? $j("#sidebar_trip_data1").datepicker("getDate") : new Date()) : new Date()),
		maxDate: 365
	}
}
/* ustawia date na nastepny dzien w polu powiazanym z polem z ktorego jest ona wywolywana */
function setNext2Weeks(){
	dateFromFieldName = this.getAttribute('id');
	stringLength = dateFromFieldName.length;
	stringLength--;
	dateToFieldName = this.getAttribute('id').substring(0,stringLength) + '2';
	dateFromFieldObj =  $j("#" + dateFromFieldName);
	dateToFieldObj =  $j("#" + dateToFieldName);          
	if (dateToFieldObj.parent().hasClass('inactive')){
		return;
	}
	dateFrom = dateFromFieldObj.val();
	dateTo = dateToFieldObj.val();
	if (((dateTo == '')||(dateFrom>=dateTo))&&(dateFrom!='')){
		/* get date from input dateFromField */
		try{
			day = dateFromFieldObj .datepicker('getDate').getDate();
			month = dateFromFieldObj .datepicker('getDate').getMonth();
			year = dateFromFieldObj .datepicker('getDate').getFullYear();
			var dateObj = new Date();
			dateObj.setFullYear(year, month, day);
		/* set date to next year from today */
			var nextYear = new Date()
			var day2 = ((nextYear.getDate()<10) ? '0' : '')+ nextYear.getDate();
			var month2 = ((nextYear.getMonth()<10) ? '0' : '')+ (nextYear.getMonth()+1);
			var year2 = (nextYear.getFullYear()+1);
		/* set date to next 14 days */
			day += 14; 
			dateObj.setDate(day);
			year = dateObj.getFullYear()
			month = dateObj.getMonth();
		/* months are numerated from 0 (zero) */
			month++;
			month = (month>9) ? month : '0' + month;
			day = (dateObj.getDate()>9) ? dateObj.getDate() : '0' + dateObj.getDate();
			if ( (year + '-' + month + '-' + day) < (year2 + '-' + month2 + '-' + day2) ){
				/* set new date in field "zameldowanie_data2" */
				dateToFieldObj.val(year + '-' + month + '-' + day);
			}else{
				/* set max date in field "zameldowanie_data2" */
				dateToFieldObj.val(year2 + '-' + month2 + '-' + day2);
			}
		}
		catch(e){}              
	}else{ /* do nothing */ }
}


function validateError(f, errorInfo){
  var titles = [];
  for (var i=0; i<ticketRules.length; i++){
    var parts = ticketRules[i].split(",");
    var fieldName = parts[1];
    titles[fieldName] = parts[2];
    for (var j=0; j<f.elements.length; j++){
      if (fieldName == f.elements[j].name){
        $j("#" + f.elements[j].id).parent("p").removeClass('error');
      }
    }
  }
  if (errorInfo.length){
    var result = true;
    for (var i=0; i<errorInfo.length; i++){
      var fieldId;
      var fieldName;
      // radio button
      if (errorInfo[i][0].type == undefined){
        fieldId = errorInfo[i][0][0].id;
        fieldName = errorInfo[i][0][0].name;
      }
      else{
        fieldId = errorInfo[i][0].id;
        fieldName = errorInfo[i][0].name;
      }
      // display the error
      var p = $j("#" + fieldId).parent("p");
      if (!p.hasClass('inactive')){
        p.addClass('error');
        result = false;       
      }
      p.attr('title', titles[fieldName]);
    }
    return result;
  }  
  return true;
}

function onComplete(){
	return true;
}


/* wyszukiwarka ogloszen turystycznych */
function switchAdSearchForm(param){
	$j('.adSearchSpecial').filter('.'+param+'_blok').hide();
	actual = $j('#'+param+'_category').val() * 1;
	actual = getMainCategory(actual);
	switch (actual) {
		case 1:
			$j('.ad_blok_noclegi').filter('.'+param+'_blok').show();
			break;
		case 2:
		case 3:
			$j('.ad_blok_obozy').filter('.'+param+'_blok').show();
			break;
		case 4:
			$j('.ad_blok_zdrowie').filter('.'+param+'_blok').show();
			break;
		case 6:
			$j('.ad_blok_gastronomia').filter('.'+param+'_blok').show();
			break;
	}
}


/* zwraca kategorie glowna dla danej podkategorii */
function getMainCategory(category){
	var categoryArr = new Array();
	categoryArr[0] = 0;
categoryArr[1] = 1;categoryArr[11] = 1;categoryArr[12] = 1;categoryArr[13] = 1;categoryArr[14] = 1;categoryArr[15] = 1;categoryArr[17] = 1;categoryArr[18] = 1;categoryArr[16] = 1;categoryArr[2] = 2;categoryArr[21] = 2;categoryArr[22] = 2;categoryArr[23] = 2;categoryArr[24] = 2;categoryArr[3] = 3;categoryArr[32] = 3;categoryArr[37] = 3;categoryArr[35] = 3;categoryArr[38] = 3;categoryArr[36] = 3;categoryArr[4] = 4;categoryArr[41] = 4;categoryArr[42] = 4;categoryArr[43] = 4;categoryArr[5] = 5;categoryArr[52] = 5;categoryArr[51] = 5;categoryArr[57] = 5;categoryArr[56] = 5;categoryArr[6] = 6;categoryArr[61] = 6;categoryArr[62] = 6;categoryArr[63] = 6;categoryArr[64] = 6;
	return categoryArr[category];
}

/* sprawdz czy dana strona jest w hhtps */
function isHttps(){
	if(window.location.protocol == 'https:'){return true;}
  else{return false;}
}

/* podmien protokol jesli w https */
function replaceProtocols(address) {
	if(window.location.protocol == 'https:'){
		return address.replace (/http/, "https");
	}else{
		return address;
	}
}

/* wyczysc url z niepotrzebnych znakow */
function urlEncode(url) {
	/* semicolon replace */
	url  = url.replace(/#/g, '_hash_');
	return url.replace(/;/g, '_semicolon_');
}

$j(document).ready(function() {
	$j('.ad_blok_noclegi,.ad_blok_obozy,.ad_blok_zdrowie,.ad_blok_gastronomia').hide();
	$j('#main_category').change( function() { switchAdSearchForm('main'); });
	$j('#sidebar_category').change( function() { switchAdSearchForm('sidebar'); });
	$j('#sidebar_region,#main_region').change( function() { 
		if ($j(this).val() == '--') { 
			$j(this).val('');
		}
	});
	switchAdSearchForm('main');
	switchAdSearchForm('sidebar');
}); 
 
$j.fn.getNumberFromId = function () {
	return new String(this.attr('id')).replace(/[^0-9]/g, '');
}

/* $.context */
jQuery.extend(
{
  context: function (context)
  {
    var co = 
    {
      callback: function (method)
      {
        if (typeof method == 'string') method = context[method];
        var cb = function () { method.apply(context, arguments); }
        return cb;
      }
    };
    return co;
  }
}); 

$j.bind = function() {
	var _func = arguments[0] || null;
	var _obj = arguments[1] || this;
	var _args = $j.grep(arguments, function(v, i) {
	        return i > 1;
	});
		
	return function() {
	        return _func.apply(_obj, _args);
	};
};

/* liczy pozostaly znaki i wstawia text w poprzedzajacy label | wywolywanie: countChars("#adTitle", 50); */
function countChars(el, limit){
	var lblPrev = $j(el).prev("label").text();
	var charNum = $j(el).val().replace(/\n/g,'\n\r').length;
	$j(el).prev("label").html(lblPrev+" (pozostała liczba znaków: <strong>"+(limit - charNum)+"</strong>)");
	$j(el).keyup(function(){
		var countChar = $j(this).val().replace(/\n/g,'\n\r').length;
		var enter = ($j(this).val().replace(/\n/g,'\n\r').length - $j(this).val().length);
		if (countChar > limit){
			var newVal = $j(this).val().substring(0, limit - enter);
			$j(this).val(newVal);
			alert("Przekroczono dopuszczalną długość tekstu.\nMaksymalna ilość znaków to "+ limit +". Zmień opis.");
		}
		$j(el).prev("label").html(lblPrev+" (pozostała liczba znaków: <strong>"+(limit - $j(this).val().replace(/\n/g,'\n\r').length)+"</strong>)");
	});
}

/* funkcja dla rozwijania pomocy, w planach: dodac wyszukiwanie ajaxowe */
var helpRoll = {
	init: function(){
		$j("#helpList dd").hide();
		$j('h1.help').prepend('<a class="linkMinus" href="#" onclick="helpRoll.rollIn(); return false;"><span>zwiń wszystkie</span></a><a class="linkPlus" href="#" onclick="helpRoll.rollOut(); return false;"><span>rozwiń wszystkie</span></a>');
		$j("#helpList dt").click(function(){
			$j(this).toggleClass('active').next().toggle();
		});
	},
	rollOut: function(){
		$j("#helpList dd").show();
		$j("#helpList dt").addClass("active");
	},
	rollIn: function(){
		$j("#helpList dd").hide();
		$j("#helpList dt").removeClass("active");
	}
};

/* focus w wyszukiwarce | wywolywanie: toggleFocus("#query"); */
function toggleFocus(el){
	$j(el).val()=='' ? $j(el).addClass('focus') : $j(el).removeClass('focus');
	$j(el).focus(function(){
		$j(this).removeClass('focus');
	}).blur(function(){
		if (this.value == ''){$j(this).addClass('focus');}
	});
}

/* Tooltip script written by Alen Grakalic (http://cssglobe.com) */
function tooltip(){
	xOffset = 0;
	yOffset = 15;
	$j('.tip').hover(function(e){
		this.t = this.title;
		this.title = "";
		$j('body').append('<p id="tipOW">'+ this.t +'</p>');
		$j('#tipOW').css('top',(e.pageY - xOffset) +'px').css('left',(e.pageX + yOffset) +'px').fadeIn('fast');
		},
		function(){
			this.title = this.t;
			$j('#tipOW').remove();
	});
	$j('a').mousemove(function(e){
		$j('#tipOW').css('top',(e.pageY - xOffset) +'px').css('left',(e.pageX + yOffset) +'px');
	});
}
