var postBackElement;
var destinations = new Array();
var placeIDs = new Array();
var placeNames = new Array();

function iFrameBust() {
	// The holy grail of anti-anti-frame-busting
	// Should be used with conjuction with
	// <iframe onload="iFrameBust()" src="http://www.travelplanet.pl/RedirectToIndex.htm"></iframe>
	// in page body
	if (top != self) 
		if (jQuery.browser.opera == true) {
			setTimeout("window.open('http://www.travelplanet.pl/RedirectToIndex.htm','')",1000);
		}
		else {
			setInterval("top.location.replace('http://www.travelplanet.pl/RedirectToIndex.htm')", 1);	
		}
		setTimeout("self.location.href = 'blank.htm'", 5000);
	}

function TPInitB(){
	TPInit();
}

function TPInit() {		
	if (typeof(bIEda6Fixes) != 'undefined') {
		bIEda6Fixes();
	}

	jQuery('a.clickable').clickableButton();
	jQuery('a#backTop').scrollButton('body');
	jQuery('u#nextSteps').scrollButton('h2.nextSteps');
	setUpAjaxMessagePopup();
	RestoreCurrentScrollPosition();
	
	if (jQuery().superfish && jQuery().bgIframe) {
		jQuery("ul.sf-menu").superfish().find('ul').bgIframe({
			opacity: true
		});
	}
	
	jQuery('div.touropDoc').tourOpDocs('div#footer a.regulamin');
	
	setUpCallbackForm();
	setUpFeedBackBox();
	setUpSifr();
	
	// setup caching iframe for frame busting
	//if (top != self) {
	//	jQuery('body').append('<iframe onload="iFrameBust()" src="http://www.travelplanet.pl/RedirectToIndex.htm"></iframe>');
	//}
}

function MainPageInit() {
	jQuery('input, select, textarea').changeableInput('changed');
	jQuery('div#newsletter input.textbox').clearInputOnClick();
	jQuery('select#' + PokSelectID).pokSelectNewPage();
	jQuery('div#newsletter').newsletterBox();

	// nowa strona główna
	
	SetUpSearcher();

	jQuery('promo').promo({
		linkClass : 'promo',
		containerClass : 'promo-content',
		linkSelectedClass : 'selected',
		containerSelectedClass : 'selected',
		onComplete : function(){}
	});

	//if (jQuery().tableHover) {
	//	jQuery('.linkTable').tableHover();
	//}
}

function NewsletterInit() {
    jQuery('div#NewsLetter').newsletterBox();
	jQuery('div.inputbox').inputBox();
	jQuery('input, select, textarea').changeableInput('changed');
	jQuery('div.inputbox input.textbox').clearInputOnClick();
}

jQuery(function()
	{
		if (typeof(Sys) != 'undefined') {
			Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(function(sender, args){
				if (args.get_cancel() == false) {
					postBackElement = args.get_postBackElement().id;
					jQuery().data('postBackInProgress', true);
				}
			});
			
			Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(
		        function (sender, args) {
					if (typeof(postBackElement) != 'undefined') {
						if (jQuery('#' + postBackElement).length == 0 || postBackElement.indexOf('Button') != -1) {
							var selector = '#' + postBackElement.replace(/Button/, "Panel");
							jQuery(selector).trigger('switchPanels');
						}
					}
		   	});
			
			Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
	        function (sender, args) {
				jQuery().data('postBackInProgress', false);
			});
		}
	});

jQuery.fn.newsletterBox = function() {
	jQuery('body').data('newsletter', this);
	Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args){
		if (postBackElement == SigninID) {
			jQuery('body').data('newsletter').find('div.AjaxMsg').show();
		}
	});
	
	Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args){
		if (postBackElement == SigninID) {
			var newsletter = jQuery('body').data('newsletter');
			newsletter.find('input.textbox').changeableInput('changed');
			newsletter.find('div.button').removeClass('clicked');
			newsletter.find('div.inputbox').inputBox();
			newsletter.find('div.newsletterErrorPopup').show('normal', function(){
				jQuery(this).removeClass('animated').css("filter", "none").css("display", "block")
			}).find('a').click(function(e){
				jQuery('body').data('newsletter').find('div.newsletterErrorPopup').addClass('animated').hide('normal')
			});
			newsletter.find('div.AjaxMsg').hide();
		}
	});
	
	jQuery('div#newsletter input.textbox').live('keypress', function(e) {
		return jQuery(this).siblings('input.btnSubscribe').enter2ButtonClick(e);
	});
}

/* Scroll to */
jQuery.fn.scrollTo = function(selector) {
	var targetOffset = jQuery(selector).offset().top;
	var time = Math.floor(Math.abs(targetOffset - f_scrollTop())/2);
    jQuery('html,body').animate({scrollTop: targetOffset}, time);
};

/* Scroll on click */
jQuery.fn.scrollButton = function(scrollTo) {
	this.data('scrollTo', scrollTo);
	this.click(function(){
		var scrollTo = jQuery(this).data('scrollTo');
		jQuery.fn.scrollTo(scrollTo);
	});
};

/* jQuery button click extension */
jQuery.fn.elementClick = function() {
	var bt = this[0];
	if(typeof(bt) == 'undefined')
	{
		return;
	}
	if (jQuery.browser.mozilla == true)
	{             
	    // FireFox
		if (bt.tagName == 'a' || bt.tagName == 'A') {
			//var e = bt.ownerDocument.createEvent('MouseEvents');
			//e.initMouseEvent('click', true, true, bt.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
			//var e = document.createEvent("HTMLEvents");
            //e.initEvent("click", true, true);
			if (typeof(bt.href) != 'undefined' && bt.href != '')
			{
				var url = bt.href;
				window.location = url;
				return;
			}
		}
		var e = document.createEvent("MouseEvents");
		e.initEvent("click", true, true);	
		bt.dispatchEvent(e);
	}
	else
	{
	    //generic method for IE, Opera and Chrome
	    bt.click();
	}
}

jQuery.fn.enter2ButtonClick = function(e){   
     var event = e ? e : window.event;
     if (event.keyCode == 13){
	 	this.elementClick();
        return false;
     }
	 return true;
}

jQuery.fn.promotionsBox = function(){
    var buttons = jQuery('div.menuPanel a', this);
    
    buttons.bind('click', function(e){
		if (jQuery(this).hasClass('selected')){
			return false;
		}
		var CssClass = jQuery(this).attr('class');
		var buttonName = CssClass.substring(0, CssClass.indexOf('Button'));
		var container = jQuery(this).parents('div:eq(0)').parents('div:eq(0)');
		
		jQuery('div.menuPanel a.selected', container).removeClass('selected');
		jQuery(this).addClass('selected');
		
		var panelSelectString = 'div[id$=\'' + buttonName + 'Panel\']';
        var panelContainer = jQuery(panelSelectString);
		
		jQuery('div.content', container).addClass('hidden');
		panelContainer.removeClass('hidden');
		
		var hiddenImages = panelContainer.find("input[type='hidden']");
		hiddenImages.each(function(){
			var imageInput = jQuery(this);
			var img = jQuery("<img>").attr('src', imageInput.val());
			imageInput.after(img);
		});
		hiddenImages.remove();
		
		if (jQuery('a', panelContainer).length == 0) {
			jQuery("input[type='submit']", panelContainer).elementClick();
		}	
        return true;
    });
	
	if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 7) {
        buttons.hover(function(){
			var button = jQuery(this);
			if (button.hasClass('selected') == false) {
				button.addClass('hover');
			}
        }, function(){
            jQuery(this).removeClass('hover');
        });
    }
	
    return true;
};

jQuery.fn.updatePanelsSwitchBox = function(triggerSelector) {
	 var trigger = jQuery(this).find(triggerSelector);
	 var progressPopup = jQuery(this).find('div.hiderWrapper');
	 
	 trigger.data('containerSelector', jQuery(this).selector);
	 trigger.data('progressPopup', progressPopup);
	 trigger.click(function(){
	 	if (jQuery(this).parent().hasClass('selected') || jQuery().data('postBackInProgress') == true)
		{
			return false;
		}
		
		var menuContainer = jQuery(this).parents('div.menuPanel');
		var boxContainer = menuContainer.parents('div:eq(0)');
		var CssClass = jQuery(this).attr('class');
		var buttonName = CssClass.substring(0, CssClass.indexOf('Button'));
		var progressPopup = jQuery(this).data('progressPopup');	
		var panelSelectString = 'div[id$=\'' + buttonName + 'Panel\']';
        var panelContainer = jQuery(panelSelectString);
		var panelButton = panelContainer.find('input[id$=\'Button\']');
		var gemiusID = jQuery().data(buttonName + 'Gemius');
		
		menuContainer.find('.selected').removeClass('selected');
		jQuery(this).parent().addClass('selected');	
		
		if (panelButton.length == 0) {
			gemius_send(gemiusID);
			panelContainer.siblings('div[id$=\'Panel\']').addClass('hidden');
			panelContainer.removeClass('hidden');
		}
		else {
			panelContainer.data('GemiusID', gemiusID);
			var height = panelContainer.parent().height() - 28;
			progressPopup.progressWindowShow(height);
			
			panelContainer.data('progressPopup', progressPopup);
			panelContainer.bind('switchPanels', function(){
				var gemiusID = jQuery(this).data('GemiusID');
				gemius_send(gemiusID);	
				jQuery(this).siblings('div[id$=\'Panel\']').addClass('hidden');
				jQuery(this).removeClass('hidden');
				var progressPopup = jQuery(this).data('progressPopup');
				progressPopup.progressWindowHide();
			});
			
			panelButton.elementClick();
		}
		
		if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 8) {
			var corners = panelContainer.find('div.corners div[class*=bottom]:visible');
			corners.css('display', 'none');	
			corners.css('display', 'block');		
		}	
	 });
};

jQuery.fn.progressWindowShow = function(height) {
    jQuery(this).find('div.hiderBody').css('height', (height));
	jQuery(this).find('div.spinner').css('top' ,(height/2 - 50));
	jQuery(this).find('div.message').css('top' ,(height/2));
	jQuery(this).css( 'display', 'block');
};

jQuery.fn.progressWindowHide = function() {
	jQuery(this).css( 'display', 'none');
};

jQuery.fn.clickableButton = function(){
    this.bind('mousedown', function(e){
        jQuery(this).addClass('clicked');
    });
    this.bind('mouseleave', function(e){
        jQuery(this).removeClass('clicked');
    });
	this.bind('click' , function(e){
		jQuery(this).unbind('mouseleave');
	});
    if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 7) {
        jQuery(this).hover(function(){
            jQuery(this).addClass('hover');
        }, function(){
            jQuery(this).removeClass('hover');
        });
    }
	return true;
};

jQuery.fn.inputBox = function(){
	var button = jQuery('div.button a', this);
	var input = jQuery('input.textbox', this);
    button.bind('mousedown', function(e){
        jQuery(this).parents('div:eq(0)').addClass('clicked');
    });
	button.click(function() {
		var input = jQuery( "input[type='text']", jQuery(this).parents('div:eq(0)').parents('div:eq(0)'));
		if (input.val().length > 0)
		{
			var value = input.val(value);
			input.val(encodeURIComponent(value));
			jQuery('input.hidden', jQuery(this).parents('div:eq(0)').parents('div:eq(0)')).elementClick();
			jQuery(this).trigger('mousedown').unbind();
			jQuery(this).parents('div:eq(0)').removeClass('hover');
		}
		else
		{
			jQuery(this).parents('div:eq(0)').removeClass('clicked');
		}
		});
    button.hover(function(){
        jQuery(this).parents('div:eq(0)').addClass('hover');
    }, function(){
        jQuery(this).parents('div:eq(0)').removeClass('hover');
    });
	input.bind('keypress', function(e) {
		return jQuery( 'div.button a', jQuery(this).parents('div:eq(0)').parents('div:eq(0)')).enter2ButtonClick(e);
	});
};

jQuery.fn.inputBoxNewsletter = function(){
    
	var button = jQuery('div.button a', this);
	var input = jQuery('input.textbox', this);
    button.bind('mousedown', function(e){
        jQuery(this).parents('div:eq(0)').addClass('clicked');
    });
	button.click(function() {
	
		var input = jQuery( "input[type='text']", jQuery(this).parents('div:eq(0)').parents('div:eq(0)'));
		if (input.val().length > 0)
		{
			var form = jQuery(this).parents('form:eq(0)');
			
			jQuery(this).trigger('mousedown').unbind();
			jQuery(this).parents('div:eq(0)').removeClass('hover');
			
			form[0].submit();
		}
		else
		{
			jQuery(this).parents('div:eq(0)').removeClass('clicked');
		}
	
		
		});
    button.hover(function(){
        jQuery(this).parents('div:eq(0)').addClass('hover');
    }, function(){
        jQuery(this).parents('div:eq(0)').removeClass('hover');
    });
	input.bind('keypress', function(e) {
		return jQuery( 'div.button a', jQuery(this).parents('div:eq(0)').parents('div:eq(0)')).enter2ButtonClick(e);
	});

};

jQuery.fn.popUpPanel = function(popupPanelSelector, triggerSelector, autoHiderSelector){
	var isPanelsEngineAlreadySetUp = !(jQuery().data('popUpPanels') == undefined);
	
	var popupPanel = jQuery(this).find(popupPanelSelector);
	var trigger = jQuery(triggerSelector);
	var autoHider = jQuery(autoHiderSelector);
	
	if (popupPanel.length == 0 || trigger.length == 0 || autoHider.length == 0) {
		return false;
	}
	
	popupPanel.data('hider', autoHider);
	popupPanel.data('trigger', trigger);
	popupPanel.data('state', 'hidden');
	popupPanel.data('container', this);
	
    var panelHeight = popupPanel.height();
	
	// IE6 hacks
	if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 7) {
		var cover = jQuery('<iframe>');
		cover.attr('src', 'javascript:false;')
		cover.addClass('formCover');
		cover.css('display', 'none');
		cover.height(panelHeight);
		this.append(cover);
	}
	
    popupPanel.css({
        "height": "0px",
        "opacity": "0"
    });

	this.data('popupPanel', popupPanel);
	// Handles triggering of panel showing up
    this.bind('mouseenter', function(e){
		var popupPanel = jQuery(this).data('popupPanel');
		var trigger = popupPanel.data('trigger');
        trigger.addClass('hover');
		//jQuery(this).addClass('sfHover');
		jQuery('iframe', this).css('display', 'block');
		if (popupPanel.data('state') == 'preparingToSlideUp') {
			popupPanel.stop().stop();
			popupPanel.data('state', 'visible');
		}
		else {
			popupPanel.data('state', 'slidingDown');
			popupPanel.stop().stop().css("display", "block").animate({
				opacity: '1.0',
				height: panelHeight + 'px'
			}, 'fast', function(){
				jQuery(this).css("filter", "");
				jQuery(this).data('state', 'visible');
			});
		}
    });
	// Handles panel hiding after mouse leaving
    this.bind('mouseleave', function(e){
		var popupPanel = jQuery(this).data('popupPanel');
		if (popupPanel.data('state') == 'slidingDown')
		{	
			popupPanel.data('trigger').removeClass('hover');
			popupPanel.data('container').removeClass('sfHover');
			popupPanel.stop().stop()
					  .css({"height": "0px", "opacity": "0"})
					  .trigger('panelHide');
		}
		else if (popupPanel.data('state') != 'slidingUp')
		{
			popupPanel.data('state', 'preparingToSlideUp');
			popupPanel.stop().stop().animate({
				height: panelHeight + 'px'
			}, 1000, function(){jQuery(this).data('state', 'slidingUp');}).animate({
				opacity: '0',
				height: '0px'
			}, 'fast', function(){
				jQuery(this).data('trigger').removeClass('hover');
				jQuery(this).data('container').removeClass('sfHover');
				jQuery(this).trigger('panelHide');
			});
		}
    });
	
	// Adds popup panel reference to hiding triggering elements
	var temp;
	for( i=0; i<autoHider.length; i++ )
	{
		var singleAutoHider = jQuery(autoHider[i]);
		if (singleAutoHider.data('popupPanel') == undefined) {
			temp = new Array();
		}
		else {
			temp = singleAutoHider.data('popupPanel');
		}
		temp.push(popupPanel);
		singleAutoHider.data('popupPanel', temp);
	}
	
	// Handles panel hiding when mouse enters hider elements
    autoHider.bind('mouseenter', function(e){
		var popupPanel = jQuery(this).data('popupPanel');
		for(i=0; i<popupPanel.length; i++)
		{
			popupPanel[i].trigger('panelSlideUpNoDelay');
		}
    });
	// Slide up animation with no delay
	popupPanel.bind('panelSlideUpNoDelay', function(e) {
		var panel = jQuery(this);
		var state = panel.data('state');
		var container = panel.data('container');
	    if (state != 'hidden')
	    {
		    var trigger = panel.data('trigger');
		    if (trigger.attr('id') != jQuery(this).attr('id')) {
			    trigger.removeClass('hover');
				container.removeClass('sfHover');
				panel.data('state', 'slidingUp');
			    panel.stop().stop().animate({
				    opacity: '0',
				    height: '0px'
			    }, 'fast', function(){
				    jQuery(this).trigger('panelHide');
			    });
		    }
		}
	});
	// Hide the panel
	popupPanel.bind('panelHide', function(e) {
		var popupPanel = jQuery(this);
		popupPanel.css("display", "none");
		jQuery('iframe', popupPanel.parent()).css('display', 'none');
		popupPanel.data('state', 'hidden');
	});
	
	// Adds popup panel references to DOM root data
	if(jQuery().data('popUpPanels') == undefined) {
		temp = new Array();
	}
	else
	{
		temp = jQuery().data('popUpPanels');	
	}
	temp.push(popupPanel);
	jQuery().data('popUpPanels', temp);
	
	// Handles clicks outside of popup panel, should be binded only once!
	if (isPanelsEngineAlreadySetUp == false) {
		jQuery('html').bind('click', function(e){
			var panels = jQuery().data('popUpPanels');
			for (i = 0; i < panels.length; i++) {
				if (panels[i].data('state') == 'hidden') {
					continue;
				}
				var isTrigger = false;
				var triggers = panels[i].data('trigger');
				for (j = 0; j < triggers.length; j++) {
					if (triggers[j] == e.target) {
						isTrigger = true;
					}
				}
				var isChild = containsDOM(panels[i][0], e.target);
				if (isTrigger == false && isChild == false) {
					panels[i].trigger('panelSlideUpNoDelay');
				}
			}
		});
	}
};

jQuery.fn.changeableInput = function(onchangeClass) {
	this.one('change keypress', function(e) {
			jQuery(this).addClass(onchangeClass);
		}
	);
};

jQuery.fn.clearInputOnClick = function() {
	this.one('click keypress',  function(e) {
			jQuery(this).val('').trigger('change');
		}
	);
};

jQuery(function(){
    if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 7) {
        jQuery("table.linkTable tbody tr").hover(function(){
            jQuery(this).addClass('hover');
        }, function(){
            jQuery(this).removeClass('hover');
        });
    }
});

function reload_places(searcherType, season_id, placeSelectID, destID, selectedPlace) {
	var key = searcherType + season_id;
	for(i = 0; destinations[key].length > i; i++)
		if(destinations[key][i] == destID)
			break;
    var placeSelect = document.getElementById(placeSelectID);
	placeSelect.options.length = 1;
	if(placeNames[key][i] != null)
		for(n = 0; n < placeNames[key][i].length; n++)
		{
			placeSelect.options.add(new Option(placeNames[key][i][n], placeIDs[key][i][n]));
			if (placeIDs[key][i][n] == selectedPlace)
			{
				placeSelect.options[n + 1].selected = true;
			}
		}
}

function tryToSubmitParam(addon, frmSelector, tripCategory,searcherType) {
    var href='';
    var frm = jQuery(frmSelector);
    var transportType = GetTransportType();
    
	if (frm.hasClass('Winter') == true || frm.parent().hasClass('Winter') == true) {
		tripCategory = 'narty';
	}
	
	switch(transportType) {
		case 'own':
			href += '/wczasy-samochodem/';
			break;
		case 'bus':
			href += '/wczasy-autokarem/';
			break;
		default:
			href += '/wczasy/';
			break;
	}

    var path = GetDestinationString(frm);
	var rawPath = GetDestinationRawString(path);
		
	var categorySelected = frm.find('span.categoryField input:checked').length > 0;
	if (tripCategory == 'super-last-minute' || tripCategory == 'narty') {
		categorySelected = true;
	}
	if (tripCategory == 'single')
	{
		var room = Set2DefaultIfNull(frm.find("[id$='" + AccomodationClientID + "']").val(), '');
		if (room == 'P1') {
			categorySelected = true;
		}
		else
		{
			frm.find("[id$='" + AccomodationClientID + "']").removeClass('categoryField');
		}
	}
    if (tripCategory != undefined && tripCategory != '' && categorySelected)
    {
        href += tripCategory + '/';
    }
	else
	{
		href += 'oferty/';		
	}
	
	if (path != '') {
		href += path + "/";
	}
	
	var params = GetParamsString(frm);
	
	if (params != '') {
		href += '?' + params + '&searcherType='+searcherType;
	}
	
	if (frm.find('fieldset.additional').length > 0) {
		SaveAdditionalFieldSetVisibility(frm, href);
	}
	
	SaveFormSelectionCookie(transportType, rawPath, params);
	SaveCategoryBoxesVisibility(href, false);
	
	var link = addon + href;
	window.location = link;              
    return false;
}

function GetParamsString(frm)
{
	var paramsString = '';
	
	var lmChkbox;
	if(typeof(LastMinuteClientID) != 'undefined')
	{
    	lmChkbox =  frm.find("[id$='" + LastMinuteClientID + "']:not(span.categoryField input)")[0];
	}
	var fmChkbox;
	if (typeof(FirstMinuteClientID) != 'undefined') {
		fmChkbox = frm.find("[id$='" + FirstMinuteClientID + "']:not(span.categoryField input)")[0];
	}

    var depday = Set2DefaultIfNull( frm.find("[id$='" + DepartureDayClientID + "']").val(), '');
    var depmonth = Set2DefaultIfNull( frm.find("[id$='" + DepartureMonthClientID + "']").val(), '');
    if (typeof(defaultDate) != 'undefined') {
        if (parseInt(depday) == defaultDate.getDate() && parseInt(depmonth) == (defaultDate.getMonth() + 1)) {
            depday = '';
            depmonth = ''; 
        }
    }
    var category = Set2DefaultIfNull( frm.find("[id$='" + CategoryClientID + "']").val(), '');
    var price = Set2DefaultIfNull( frm.find("[id$='" + PriceClientID + "']").val(), '');
	var keyword = '';
	if (typeof(KeywordClientID) != 'undefined') {
		keyword = Set2DefaultIfNull(frm.find("[id$='" + KeywordClientID + "']").val(), '');
	}

	var meal = '';
	if (typeof(MealsClientID) != 'undefined') {
		meal = Set2DefaultIfNull(frm.find("[id$='" + MealsClientID + "']").val(), '');
	}
	var room = '';
	if (typeof(AccomodationClientID) != 'undefined') {
		room = Set2DefaultIfNull(frm.find("[id$='" + AccomodationClientID + "']:enabled:not(select.categoryField)").val(), '');
	}
    var depairport = Set2DefaultIfNull( frm.find("[id$='" + AirportClientID + "']").val(), '');

    var lm = '0';
    if (lmChkbox && lmChkbox.checked)
        lm = '1';
    if (fmChkbox && fmChkbox.checked)
        lm = '2';
	
	var indexes = frm.find("input[name*='index']:enabled:not(span.categoryField input)");
	var attributes = new Array();
    for(i=0; i < indexes.length; i++)
        {
            if(indexes[i].checked == true)
                {
                var temp = new Array();
                temp = indexes[i].name.split('$');
				attributes.push(temp[temp.length - 1].substring(5));
                }
        };
    if(typeof(TourOperatorID) != 'undefined')
    {
        var tourop = frm.find("[id$='" + TourOperatorID + "']").val();
        if(tourop != '')
            attributes.push('t' + Set2DefaultIfNull(tourop, ''));
    }   
	var attribute = attributes.join(',');
	
	var params = new Array();
	if (depday != '') {
		params.push('depday=' + depday);
	}
	if (depmonth != '') {
		params.push('depmonth=' + depmonth);
	}
	if (category != '') {
		params.push('category=' + category);
	}
	if (depairport != '') {
		params.push('depairport=' + depairport);
	}
	if (price != '') {
		params.push('price=' + price);
	}
	if (meal != '') {
		params.push('meal=' + meal);
	}
	if (room != '') {
		params.push('room=' + room);
	}
	if (lm != '' && lm != '0') {
		params.push('last-minute=' + lm);
	}
	if (attribute != '') {
		params.push('attribute=' + attribute);
	}
	if (keyword != '') {
		params.push('keyword=' + keyword);
	}
	if (window.sortBy) {
		params.push('sort=' + window.sortBy);
	}
	if (window.sortOrder) {
		params.push('order=' + window.sortOrder);
	}
	if (window.offerCount) {
		params.push('offers=' + window.offerCount);
	}
	
	if (params.length > 0) {
		paramsString = params.join('&')
	}
	
	return paramsString;
}

function GetDestinationString(frm) {
	var destination = frm.find("[id$='" + DestinationClientID + "']")[0];
	var place = '';
	if (typeof(PlaceClientID) != 'undefined') {
		place = Set2DefaultIfNull(frm.find("[id$='" + PlaceClientID + "']").val(), '');
	}
	var path = '';
    if (destination.selectedIndex != 0 && place == '') {
		path = destination.value.substring(destination.value.indexOf('.') + 1);
	}
	else if (place != '') {
		path = place;
	}
	
	return path;
}

function GetDestinationRawString(path) {
	var separator = 'destination=';
	var pathArray = path.split("/");
	var rawPath = separator + pathArray.join('&' + separator);
	return rawPath;
}

function GetTransportType()
{
	var transportType = Set2DefaultIfNull( jQuery("[id$='" + TourTypeClientID + "']").val(), 'p');
	
	switch(transportType) {
		case 's':
		case 'own':
			transportType = 'own';
			break;
		case 'b':
		case 'bus':
			transportType = 'bus';
			break;
		default:
			transportType = 'plane';
			break;
	}
			
	return transportType;
}

function SaveFormSelectionCookie(transportType, destPart, paramsPart) {
	var cookieParams = destPart + '&' + paramsPart;
	jQuery.cookie('Travelplanet.Cookies.SearcherParams.' + transportType, cookieParams, {path: '/'});
}

function SaveAdditionalFieldSetVisibility(frm, href) {
	var state = 'hidden';
	if (frm.find('fieldset.additional:not(:hidden)').length > 0)
	{
		state = 'visible';
	}
	var expirationDate = new Date();
    expirationDate.setTime(expirationDate.getTime() + (5 * 60 * 1000));
	
	jQuery.cookie('Travelplanet.Cookies.AdditionalFieldsetVisibility', state, { path : href, expires: expirationDate });
}

function SaveCurrentScrollPosition(frm, link) {
	var expirationDate = new Date();
    expirationDate.setTime(expirationDate.getTime() + (60 * 1000));
	var position = f_scrollTop();
	jQuery.cookie('Travelplanet.Cookies.ScrollPosition', position, { path : link, expires: expirationDate });
	//var cameFromSideBar = ($.cookie('Travelplanet.Cookies.AdditionalFieldsetVisibility') != null);
	if (typeof(cameFromSideBar) != 'undefined') {
		if (cameFromSideBar == true) {
			SaveAdditionalFieldSetVisibility(frm, link);
		}
	}
}

function RestoreCurrentScrollPosition() {
	//var cookie = jQuery.cookie('Travelplanet.Cookies.ScrollPosition');
	if (typeof(scrollToPosition) != 'undefined')
	{
		window.scrollTo(0, scrollToPosition);
		var link = window.location.pathname + window.location.search;
		jQuery.cookie('Travelplanet.Cookies.ScrollPosition', null, { path : link });
	}
}

function SaveCategoryBoxesVisibility(link, visibility) {
	var expirationDate = new Date();
	expirationDate.setTime(expirationDate.getTime() + (15 * 1000));	
	var CategoryBoxesVisible;
	if (visibility == null || visibility == undefined) {
		CategoryBoxesVisible = jQuery('div#Main > div.selected > img').length > 0;
	} else {
		CategoryBoxesVisible = visibility;
	}
	jQuery.cookie('Travelplanet.Cookies.CategoryBoxesVisible', CategoryBoxesVisible, { path : link, expires: expirationDate });
}

function Set2DefaultIfNull(value, def)
{
	if (value == null || value == undefined)
	{
		value = def;
	}
	return value;
}

/* change days of departure due to selected month */
function fill_date(sel, month, yyyy, object)
{
	var frm;
	if (object == undefined)
	{
		var frmSelector = 'div#searchContainer div.form:not(div.hidden)';
		frm = jQuery(frmSelector);
	}
	else
	{
		frm = jQuery(object).parents(':eq(0)');
	}

	var dayMonth = frm.find('select.Month')[0];
	var daySelect = frm.find('select.Day')[0];
	var day = daySelect.value;
	var month = dayMonth.value;
	var monthJSValue = month - 1;
	var sel2 = 0;
	
	daySelect.options.length = 0;

	if (monthJSValue < dateToday.getMonth()) {
		yyyy = yyyy + 1;
	}
	
	var dateToShow = new Date(yyyy, monthJSValue, day);
	if (dateToShow.getMonth() != monthJSValue) {
		dateToShow = new Date(yyyy, monthJSValue + 1, 0);
	}
	if (dateToShow > dateLimit)
	{
		dateToShow = dateLimit;
	}/* else if (dateToShow < dateToday) {
		dateToShow = dateToday;
	}*/
	
	//var startDay = (dateToShow.getMonth() == dateToday.getMonth()) ? dateToday.getDate() : 1;
	var startDay = 1;
	var currentDay = new Date(dateToShow.getFullYear(), dateToShow.getMonth(), startDay);
	var lastMonthDay = new Date(dateToShow.getFullYear(), dateToShow.getMonth() + 1, 0);
	var loopLimit = (lastMonthDay > dateLimit) ? dateLimit : lastMonthDay;
	while(currentDay <= loopLimit) {
		daySelect.options.add(new Option(currentDay.getDate(), currentDay.getDate()));
		currentDay.setDate(currentDay.getDate() + 1);
		if (currentDay.getDate() == dateToShow.getDate()) {
			sel2 = dateToShow.getDate() - startDay;
		}
	}

	if(sel2 > daySelect.options.length - 1)
		sel2 = daySelect.options.length - 1;
	daySelect[sel2].selected = true;
}

/* Send request for pok info */
jQuery.fn.pokSelect = function() {
	this.bind('change keypress', function(e) {
		var pokNumber = this.value;
		if (pokNumber == 0) {
			jQuery('div.pokPopup:not(:hidden)').find('div.label a').click();
			return;
		}
		document.getElementById(PokSelectedIndexID).value = pokNumber;
		var pokCacheIDString = 'div#pokCache' + pokNumber;
		/* wyslanie kodu gemiusa dla poku*/
	    var gemiusID = jQuery().data('PokGemiusID');
	    gemius_send(gemiusID);	        
		if (jQuery(pokCacheIDString).length == 0) {
			__doPostBack(PokUpdateTriggerID.replace(/_/g, '$'), '');
		}
		else
		{
			jQuery('div.pokPopup div.container > div > div').replaceWith(jQuery(pokCacheIDString)
										 .clone().removeAttr('id')
										 .removeClass('hidden'));
			PokInfoShow();
		}
	});
};

/* pok info in new page */
jQuery.fn.pokSelectNewPage = function() {
	this.bind('change', function(e) {
		var pokNumber = this.value;
		if (pokNumber == 0) {
			return;
		}
		var selector = 'a:eq(' + (pokNumber - 1) + ')';
		var link = jQuery(this).siblings('div').find(selector);
		window.location = link.attr('href');
		//open(link.attr('href'), link.attr('target'));
		//link.elementClick();
	});
};

/* Show pokinfo popup */
function PokInfoShow()
{	
	var pokNumber = jQuery('#' + PokSelectedIndexID).val();
	var pokCacheID = 'pokCache' + pokNumber;
    	
	if (jQuery('div#' + pokCacheID).length == 0) {
		jQuery('div.pokPopup').append(jQuery('div.pokPopup div.container > div > div')
						 .clone()
						 .attr('id', pokCacheID)
						 .addClass('hidden'));
	}
	
	var pokPopUp = jQuery('div.pokPopup:hidden');
	if (pokPopUp.length > 0) {
		var current = pokPopUp;		
		var windows = jQuery().data('popUpWindows');
		for (i = 0; i < windows.length; i++) {
			var window = windows[i].filter(':visible');
			if (window.length != 0 && window[0] != current[0]) {
				window.find('div.label a').click();
			}
		}
		
		var width = pokPopUp.width();
		pokPopUp.addClass('animated')
			    .animate({ width: 'show', opacity: 'show' }, 'normal', function(){ jQuery(this).removeClass('animated');	});
	}
	
}

/* Hide pokinfo popup */
function PokInfoHide()
{
	//jQuery('div.pokPopup:not(:hidden)').find('div.label a').click();
	document.getElementById(PokSelectID).value = 0;
}

/* pok popup */
jQuery.fn.pokPopUp = function() {
	var popUp = jQuery(this);
	this.popUpWindow('');
	
	this.find('div.label a').click(function(){
		document.getElementById(PokSelectID).value = 0;
	});
	
	Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
        function (sender, args) {
			if (postBackElement == PokUpdateTriggerID) {
					PokInfoShow();
			}
        }
    );
}

/* SecurePayments popup */
jQuery.fn.securePaymentsPopUp = function(triggerSelector, adjustX, adjustY){
	var popUp = jQuery(this);
	var triggers = jQuery(triggerSelector);
	this.popUpWindow(triggerSelector);
	
	triggers.click(function(e){
		var popUp = jQuery(this).data('popUpWindow');	
		
		var arrowOnLeft = true;
		var arrowOnBottom = true;
		
		var offsetPosition = popUp.offsetParent().offset();
		var position = jQuery(this).offset();
		var triggerPositionHorizontal = position.left - offsetPosition.left;
		var triggerPositionTop = position.top - offsetPosition.top;	
		var triggerWidth = jQuery(this).width();
		var wrapperWidth = jQuery('div#Wrapper').width();
			
		if (triggerPositionTop < 300) {
			popUp.css({
				'top': (triggerPositionTop + adjustY) + 'px'
			});
		} else {
			popUp.css({
				'top': (triggerPositionTop + 2*adjustY) + 'px'
			});
		}
		
		if (triggerPositionHorizontal > (wrapperWidth/2)) {
			popUp.css({
				'right' : (wrapperWidth - triggerPositionHorizontal + adjustX) + 'px'
			});
			arrowOnLeft = false;
		}
		else
		{
			popUp.css({
				'left' : (triggerPositionHorizontal + adjustX + 122) + 'px'
			});	
		}
		
		// if pointer is below trigger, set it to point upwards
		var pointerPositionTop = popUp.find('div.pointer').offset().top;
		if (triggerPositionTop < pointerPositionTop) {
			arrowOnBottom = false;
		}
		
		popUp.trigger('resetPointer');
		popUp.trigger('setPointerClass', [arrowOnLeft, arrowOnBottom]);
	});
}

/* Attributes popup */
jQuery.fn.attributesPopUp = function(triggerSelector, adjustX, adjustY) {
	var popUp = jQuery(this);
	var internalTriggers = jQuery('img, span', this);
	var externalTriggers = jQuery(triggerSelector);
	
	this.popUpWindow(triggerSelector);
	
	internalTriggers.click( function(e) {			
		var buttonParent = jQuery(this).parent();
		if (buttonParent.hasClass('active') == false) {
			buttonParent.siblings().show();
			buttonParent.parents('div.content').find('div.active').empty().append(buttonParent.children().clone());
			buttonParent.parents('div.content').find('div.list').addClass('hidden');
			buttonParent.parents('div.hidden').removeClass('hidden');
			buttonParent.hide();
			
			if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 8) {
				var corners = jQuery(this).parents('div.PopUpWindow').find('div[class*=bottom]');
				corners.attr('style', '');
				corners.css('display', 'block');			
			}
		}	
	});
	
	externalTriggers.click(function(e){
		var popUp = jQuery(this).data('popUpWindow');	
		
		var offsetPosition = popUp.offsetParent().offset();
		var triggerPosition = jQuery(this).offset();
		var triggerPositionHorizontal = triggerPosition.left - offsetPosition.left;
		var triggerPositionTop = triggerPosition.top - offsetPosition.top;
		
		var wrapperWidth = jQuery('div#Wrapper').width();
		var positionChangePoint = wrapperWidth - 355;
		var arrowOnLeft = true;
		if (triggerPositionHorizontal > positionChangePoint)
		{
			triggerPositionHorizontal = wrapperWidth + 32 - triggerPositionHorizontal;
			arrowOnLeft = false;
			popUp.css({
				'right' : (triggerPositionHorizontal + adjustX) + 'px',
				'left' : 'auto'
			});
		}
		else
		{
			popUp.css({
				'left' : (triggerPositionHorizontal + 45 + adjustX) + 'px',
				'right' : 'auto'
			});
		}
		
		// if popup is too far to high, offset its position to bottom
		var arrowOnBottom = true;
		var popupTop = triggerPositionTop - 223 + adjustY;
		if (popupTop < 125) {
			popupTop = triggerPositionTop - 130;
			arrowOnBottom = false;
		}	
		
		popUp.css({
			'top' : (popupTop) + 'px'
		});
		
		popUp.trigger('resetPointer');
		
		// if pointer is below trigger, set it to point upwards
		var pointerPositionTop = popUp.find('div.pointer').offset().top;
		if (triggerPositionTop < pointerPositionTop) {
			arrowOnBottom = false;
		}
		
		popUp.trigger('setPointerClass', [arrowOnLeft, arrowOnBottom]);
		
		// find content to show in popup
		var clickOn;
		if (this.tagName.toLowerCase() == 'img')
		{
		    var src = jQuery(this).attr('src').replace(/:[\d]{1,5}?\//, '/');
		    clickOn = popUp.find("img[src*='" + src + "']");
		}
		else 
		{
		    clickOn = popUp.find('.' + this.className.split(" ")[0] + ':hidden');
		}
		clickOn.click();		
	});
};

/* Generic popup box */
jQuery.fn.popUpWindow = function(triggerSelector) {
	var popUpWindow = jQuery(this);
	var hideTrigger = popUpWindow.find('div.label a');
	var trigger = jQuery(triggerSelector);
	
	popUpWindow.bgIframe();
	
	hideTrigger.data('popUpWindow', popUpWindow);
	hideTrigger.click(function(e) {
		jQuery(this).data('popUpWindow').addClass('animated')
								   .animate({width: 'hide', opacity: 'hide'}, 'normal', function(){
										jQuery(this).removeClass('animated');
									});
	});
	
	if (triggerSelector.length > 0) {
		trigger.data('popUpWindow', popUpWindow);
		trigger.click(function(e){
			var current = jQuery(this).data('popUpWindow');		
			var windows = jQuery().data('popUpWindows');
			for (i = 0; i < windows.length; i++) {
				var window = windows[i].filter(':visible');
				if (window.length != 0 && window[0] != current[0]) {
					window.find('div.label a').click();
				}
			}
			current.addClass('animated').animate({
				width: 'show',
				opacity: 'show'
			}, 'normal', function(){
				jQuery(this).removeClass('animated');
			});
		});
	}
	
	popUpWindow.bind('resetPointer', function(e){
		// reset arrow position
		jQuery(this).find('div.pointer').removeClass('arrowRightBottom').removeClass('arrowRightTop').removeClass('arrowLeftTop');
	});
	
	popUpWindow.bind('setPointerClass', function(e, arrowOnLeft, arrowOnBottom ){
		// set pointer class
		var popUp = jQuery(this);
		if (arrowOnLeft == false && arrowOnBottom == false) {
			popUp.find('div.pointer').addClass('arrowRightTop');
		} else if (arrowOnLeft == true && arrowOnBottom == false) {
			popUp.find('div.pointer').addClass('arrowLeftTop');
		} else if (arrowOnLeft == false && arrowOnBottom == true) {
			popUp.find('div.pointer').addClass('arrowRightBottom');
		}
	});
	
	// Adds popup references to DOM root data
	if(jQuery().data('popUpWindows') == undefined) {
		temp = new Array();
	}
	else
	{
		temp = jQuery().data('popUpWindows');	
	}
	temp.push(popUpWindow);
	jQuery().data('popUpWindows', temp);
};

/* Hidden button click */
jQuery.fn.associatedFormButton = function() {
	this.bind('click', function(e) {
		var buttonIDString = 'input#' + jQuery(this).attr('id').replace(/Button/, "");
		jQuery(buttonIDString).elementClick();
	});
};
/* Simulate radiobuttons on checkboxes */
jQuery.fn.RadioCheckboxes = function(checkBoxesSelector) {
	var checkBoxes = jQuery(checkBoxesSelector);
	
	checkBoxes.data('others', checkBoxesSelector);
	checkBoxes.click(function(e){
		if (this.checked == true)
		{
			jQuery(jQuery(this).data('others')).not(this)
									 .each( function() {
									 	this.checked = false;
				}
			);
		}
	});
};
/* Tourop docs popup */
jQuery.fn.tourOpDocs = function(trigger) {
	jQuery(trigger).data('tourOpDocsUpdatePanel', this);
	jQuery(trigger).click(function(){
		if (jQuery().data('postBackInProgress') == true)
		{
			return false;	
		}
		var docType = jQuery(this).attr('class');
		var tourOpDocsPopup = jQuery(this).data('tourOpDocsUpdatePanel');
		var pageHeight = jQuery().height() + 'px';
		var container = jQuery('<div>').addClass('tourOpDocsPopUpContainer')
								  .css('height', pageHeight)
								  .appendTo('body');
		var hider = jQuery('<div>').addClass('tourOpDocsPopUpHider')
						  	  .css('height', pageHeight)
							  .appendTo(container);
		var message = jQuery('<div>').addClass('tourOpDocsPopUpMessage')
							  .appendTo(container);
		jQuery('<div>').addClass('spinner')
				  .appendTo(message);
		jQuery('<div>').addClass('message')
				  .appendTo(message);
		tourOpDocsPopup.find("input[id$='DocType']").val(docType);
		tourOpDocsPopup.find("input[id$='Trigger']").elementClick();
		
		if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 7) {
			jQuery('select').hide();
		}
		
		return false;
	});
	
	// Triggers can be setup many times, so make sure that popup events are set only once
	if (this.data('events') === undefined || this.data('events')['showPopup'] === undefined)
	{
		this.bind('showPopup', function(){
			var popUp = jQuery(this).clone();
			var name = popUp.find("input[id$='DocName']").val();
			popUp.find('input').remove();
			popUp.find('div.content').removeAttr('id');
			popUp.find('div.label > div').prepend(name);
			popUp.appendTo('body > div.tourOpDocsPopUpContainer');
			popUp.fadeIn('slow', function(){
				jQuery('body > div.tourOpDocsPopUpContainer > div.tourOpDocsPopUpHider').css('height', jQuery().height() + 'px');
			});
			jQuery.fn.scrollTo('body');
			jQuery('body > div.tourOpDocsPopUpContainer > div.tourOpDocsPopUpMessage').remove();
			popUp.find('div.label a').click(function(){
				if (jQuery.browser.msie == true && parseFloat(jQuery.browser.version) < 7) {
					jQuery('body > div.tourOpDocsPopUpContainer').css('display', 'none').remove();
					jQuery('select').show();
				}
				else {
					jQuery('body > div.tourOpDocsPopUpContainer').fadeOut('slow', function(){
						jQuery(this).css('display', 'none').remove();
					});
				}
			});
			
			popUp.find("a[href^='#']").click(function(){
				var id = jQuery(this).attr('href');
				id = id.replace("#", "");
				jQuery.fn.scrollTo("[id='" + id + "']:visible");
				return false;
			});
		});
		if (typeof(Sys) != 'undefined') {
			Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args){
				if (postBackElement == TourOpDocTriggerId) {
					jQuery('div.touropDoc').trigger('showPopup');
				}
			});
		}
	}
};
/* Generic fading state machine */

jQuery.fn.fadeInState = function() {
	var object = jQuery(this);
	object.stop().stop();
	if (object.data('state') == 'hidden') {
		object.data('state', 'fadingIn');
		object.css({
					'display': 'block',
					'opacity': '0'
					});
		object.trigger('fadeIn');
	} else if (object.data('state') == 'preparingToFadeOut') {
		object.data('state', 'visible')
			  .css('filter', '')
			  .removeClass('animated');
	} else if (object.data('state') != 'visible'){
		object.data('state', 'fadingIn');
		object.trigger('fadeIn');
	}
};

jQuery.fn.fadeOutState = function() {
	var object = jQuery(this);
	if (object.data('state') == 'hidden') {
			return;
		} 
	object.stop().stop().stop();
	if (object.data('state') == 'visible') {
		object.data('state', 'preparingToFadeOut')
			  .addClass('animated')
			  .animate({
			opacity: '1.0'
		}, 1000, function(){
				jQuery(this).trigger('fadeOut')}
			);
	}
	else if(object.data('state') == 'fadingIn')
	{
		object.trigger('fadeOut');
	}
};

/* Help popup */
jQuery.fn.helpPopUp = function(triggerSelector) {	
	jQuery(triggerSelector).one('click' ,function(){
		if(jQuery('div.PopUpWindow.help').length == 0) {
			jQuery("input#" + HelpPopupTriggerID).elementClick();
		}	
	});
	
	Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args){
		if (postBackElement == HelpPopupTriggerID) {
			jQuery('div.PopUpWindow.help').popUpWindow(triggerSelector);
			jQuery(triggerSelector).click();
		}
	});
	
	var topics = jQuery('div.PopUpWindow.help div.section-list div.items ul li ul li');
	topics.live('click', function(){
		var obj = jQuery(this);
		var topicNumber = obj.attr('class').match(/topic[\d]{1,2}/g)[0].replace('topic', '');
		var sectionNumber = obj.parents('li:eq(0)').attr('class').match(/section[\d]{1,2}/g)[0].replace('section', '');
		
		var container = jQuery('div.PopUpWindow.help');
		
		var topicNumberField = container.find("input[id$='topicNumberField']");
		var sectionNumberField = container.find("input[id$='sectionNumberField']");
		if (topicNumberField.val() != topicNumber || sectionNumberField.val() != sectionNumber) {
			obj.siblings().removeClass('selected');
			obj.addClass('selected');
			
			var topicsCount = obj.siblings().length + 1;
			if (parseInt(topicNumber) == 0) {
				container.find('div.links a.orangeLeft').hide();
			}
			else {
				container.find('div.links a.orangeLeft').show();
			}	
			if (parseInt(topicNumber) == (topicsCount - 1)) {
				container.find('div.links a.orangeRight').hide();
			}
			else {
				container.find('div.links a.orangeRight').show();
			}
			
			topicNumberField.val(topicNumber);
			sectionNumberField.val(sectionNumber)
			container.find("input[id$='refreshButton']").elementClick();
		}
	});
	
	var backButton = jQuery('div.PopUpWindow.help div.links a.orangeLeft');
	backButton.live('click', function() {
		var container = jQuery('div.PopUpWindow.help');
		var sectionNumberField = container.find("input[id$='sectionNumberField']");
		var topicNumberField = container.find("input[id$='topicNumberField']");
		
		var sectionNumber = parseInt(sectionNumberField.val());
		var topicNumber = parseInt(topicNumberField.val());
		
		if (topicNumber > 0)
		{
			topicNumberField.val(--topicNumber);
		}
		if (topicNumber == 0) {
			jQuery(this).hide();
		}
		jQuery(this).siblings().show();
		
		container.find('div.section-list div.items > ul > li:eq(' + sectionNumber + ') > ul > li').removeClass('selected');
		container.find('div.section-list div.items > ul > li:eq(' + sectionNumber + ') > ul > li:eq(' + topicNumber + ')').addClass('selected');
		
		container.find("input[id$='refreshButton']").elementClick();
	});
	
	var nextButton = jQuery('div.PopUpWindow.help div.links a.orangeRight');
	nextButton.live('click', function() {
		var container = jQuery('div.PopUpWindow.help');
		var sectionNumberField = container.find("input[id$='sectionNumberField']");
		var topicNumberField = container.find("input[id$='topicNumberField']");
		
		var sectionNumber = parseInt(sectionNumberField.val());
		var topicNumber = parseInt(topicNumberField.val());
		
		var topicsCount = container.find('div.section-list div.items > ul > li:eq(' + sectionNumber + ') > ul > li').length;
		var maxTopicNumber = topicsCount - 1;
		
		if (topicNumber < maxTopicNumber)
		{
			topicNumberField.val(++topicNumber);
		}
		if (topicNumber  == maxTopicNumber) {
			jQuery(this).hide();
		}
		jQuery(this).siblings().show();
		
		container.find('div.section-list div.items > ul > li:eq(' + sectionNumber + ') > ul > li').removeClass('selected');
		container.find('div.section-list div.items > ul > li:eq(' + sectionNumber + ') > ul > li:eq(' + topicNumber + ')').addClass('selected');
		
		container.find("input[id$='refreshButton']").elementClick();
	});
	
};

jQuery.fn.CategoryBoxesVisibilityCookie = function() {
	jQuery(this).click(function(){
		var link = jQuery(this).attr('href');
		SaveCategoryBoxesVisibility(link);
	});
}

jQuery.fn.PathButton = function(linkToClick) {
	var button = jQuery(this);
	button.data('linkToClick', linkToClick);
	button.click(function(){
		var linkToClickSelector = jQuery(this).data('linkToClick');
		var linkToClick = jQuery(linkToClickSelector);
		linkToClick.elementClick();
		//var url = linkToClick.attr('href');
		//window.location = url;
	});
};

/* Generic popup window opener */
function openPopupOnCenter(url, title, width, height) {
	xpos=(screen.width - width)/2;
	ypos=(screen.height - height)/2;
	window.open(url,'','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,fullscreen=no,channelmode=no,width=' + width + ',height=' + height + ',top=' + ypos + ',left=' + xpos)
}

/* Contact form hack */

function contactFormSubmit() {
	var form = jQuery('#formContainer');
	
	var submitForm = document.createElement("FORM");
 	document.body.appendChild(submitForm);
 	submitForm.method = "POST";
	submitForm.action = "/ptpfoot.aspx";
	
	var clonedForm = jQuery(submitForm);
	clonedForm.attr('name', 'contact');
	clonedForm.addClass('hidden');
	
	var clonedFormElementsSelector = "input[type='text'],textarea,select";
	var clonedElements = form.find(clonedFormElementsSelector).clone();
	
	clonedForm.append(clonedElements);
	
	clonedForm.find("input[name='imie']").val(form.find("input[name='imie']").val());
	clonedForm.find("input[name='email']").val(form.find("input[name='email']").val());
	clonedForm.find("input[name='temat']").val(form.find("input[name='temat']").val());
	clonedForm.find("textarea").val(form.find("textarea").val());
	clonedForm.find("select").val(form.find("select").val());
	
	clonedForm.trigger('submit');
}

/* Feedback form */
function FeedbackFormWindow()
{
	openPopupOnCenter("/FeedbackForm.aspx", "Feedback", 600, 450);
}

/* Get scroll position */
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

/* Checks if container is parent of containee */
function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

jQuery.fn.tabs = function (options){
	var settings = {
		linkClass : 'tabs',
		containerClass : 'tab-content',
		linkSelectedClass : 'selected',
		containerSelectedClass : 'selected',
		onComplete : false
	}
	
	jQuery.extend(settings,options);
	
	jQuery('.'+settings.linkClass).each(function(i){
		jQuery(this).attr('rel',settings.containerClass+i);
	});
	jQuery('.'+settings.containerClass).each(function(i){
		jQuery(this).attr('id',settings.containerClass+i);
	});
	
	jQuery('.'+settings.linkClass).bind('click',function(){
		jQuery('.'+settings.linkClass+'.'+settings.linkSelectedClass).removeClass(settings.linkSelectedClass);
		jQuery(this).addClass(settings.linkSelectedClass);
		jQuery('.'+settings.containerClass+'.'+settings.containerSelectedClass).removeClass(settings.containerSelectedClass);
		jQuery('#'+jQuery(this).attr('rel')).addClass(settings.containerSelectedClass);
		if(settings.onComplete){
			settings.onComplete(this);
		}
		return false;
	});
}

//do promocji
jQuery.fn.promo = function (options){
	var settings = {
		linkClass : 'promo',
		containerClass : 'promo-content',
		linkSelectedClass : 'selected',
		containerSelectedClass : 'selected',
		onComplete : false
	}
	
	jQuery.extend(settings,options);
	
	jQuery('.'+settings.linkClass).each(function(i){
		jQuery(this).attr('rel',settings.containerClass+i);
	});
	jQuery('.'+settings.containerClass).each(function(i){
		jQuery(this).attr('id',settings.containerClass+i);
	});
	
	jQuery('.'+settings.linkClass).bind('click',function(){
		jQuery('.'+settings.linkClass+'.'+settings.linkSelectedClass).removeClass(settings.linkSelectedClass);
		jQuery(this).addClass(settings.linkSelectedClass);
		jQuery('.'+settings.containerClass+'.'+settings.containerSelectedClass).removeClass(settings.containerSelectedClass);
		var panelContainer = jQuery('#'+jQuery(this).attr('rel'));
		panelContainer.addClass(settings.containerSelectedClass);
		if(settings.onComplete){
			settings.onComplete();
		}
		
		var hiddenImages = panelContainer.find("input[type='hidden']");
		hiddenImages.each(function(){
			var imageInput = jQuery(this);
			var img = jQuery("<img>").attr('src', imageInput.val());
			imageInput.after(img);
		});
		hiddenImages.remove();
		
		return false;
	});
}

function setUpCallbackForm(){
	/* set global variable for boxy window */
	var contactBoxy = null;
	/* what to do when click on callback link */
	jQuery('div.callBack a.contact').click(function(){
		var boxy_content = '<div class="callback"><div class="bubble"><div class="content"><strong>Zostaw kontakt do Siebie.</strong>Opisz jaki wypoczynek preferujesz. Ułatwi to nam przygotowanie najbardziej odpowiedniej oferty. Konsultant Travelplanet.pl oddzwoni do Ciebie, aby zaproponować wycieczki dostosowane do Twoich potrzeb.</div><div class="bottom"></div><div class="pointer"></div></div><form id="callback"><label for="firstName">Imię</label><label for="lastName">Nazwisko</label><input type="text" name="firstName" id="firstName" size="50"/><input type="text" name="lastName" id="lastName" size="50"/><label for="phone">Telefon</label><label for="email">E-mail</label><input type="text" name="phone" id="phone" size="50"/><input type="text" name="email" id="email" size="50"/><label for="question">Podaj swoje preferencje</label><textarea name="comment" id="question" cols="30" rows="6">Zachęcamy Cię do dokładnego opisania Twoich planów urlopowych, takich jak: miejsce urlopu, czas wyjazdu, długość pobytu.</textarea></form><a class="clickable send">Wyślij</a></div>';
		contactBoxy = new Boxy(boxy_content, {
			title: '<p class="callBackTitle">Formularz kontaktowy</p>',
			draggable: false,
			modal: true,
			unloadOnHide: true,
			afterShow: function(c){
				jQuery('div.boxy-modal-blackout').hide().fadeIn();
				jQuery('table.boxy-wrapper').hide().fadeIn();
				jQuery('div.boxy-modal-blackout').bgIframe({
					opacity: true
				});
				jQuery('div.callback textarea').changeableInput('changed');
				jQuery('div.callback textarea').clearInputOnClick();
				jQuery('div.callback label[for*=question]').css('width', 'auto');
				gemius_send(jQuery().data('GemiusCallBackShow'));
			},
			behaviours: function(c){
				c.find('a.send').click(function(){
					$(this).siblings('form').submit();
					$(this).siblings('form').hide();
					$(this).hide();
				});
				c.find('#callback').submit(function(){
					var boxy = Boxy.get(this).boxy;
					var messageContainer = boxy.find('div.bubble div.content');
					messageContainer.data('oldMessage', messageContainer.html());
					messageContainer.html('Trwa wysyłanie formularza, proszę czekać.');
					var firstName = c.find("input[name='firstName']").val();
					var lastName = c.find("input[name='lastName']").val();
					var phone = c.find("input[name='phone']").val();
					var email = c.find("input[name='email']").val();
					c.find("#question:not(.changed)").click();
					var question = c.find("#question").val();
					PageMethods.SendCallbackContact(firstName, lastName, phone, email, question, function(){
						contactBoxy.boxy.find('div.bubble div.content').html('<strong>Dziękujemy za wysłanie formularza.</strong>Twoje zgłoszenie zostało zarejestrowane. Nasi pracownicy skontaktują się z Tobą i udzielą odpowiedzi wysyłając e-mail pod wskazany w formularzu adres.');
						contactBoxy.boxy.find('.callback').append('<a class="clickable end">Zakończ</a>');
						contactBoxy.boxy.find('a.end').click(function(){
							contactBoxy.boxy.find('a.close').click();
						});
						gemius_send(jQuery().data('GemiusCallBackSend'));   
						pageTrack('/callback/wyslane.html');                
					}, function(error){
						alert(error.get_message());
						contactBoxy.boxy.find('form').show();
						contactBoxy.boxy.find('a.send').show();
						var messageContainer = contactBoxy.boxy.find('div.bubble div.content');
						messageContainer.html(messageContainer.data('oldMessage'));
					});
					return false;
				});
			}
		});
		$(this).removeClass('clicked');
		return false;
	});
	jQuery('div.callBack div.cBox div.simplePopup').bgIframe({opacity: true});
	jQuery('div.callBack div.cBox a').hover(
		function () {
			$(this).siblings('div.simplePopup').show();
		},
		function () {
			$(this).siblings('div.simplePopup').hide();
		}
	);
}

function setUpFeedBackBox() {
	/* set global variable for boxy window */
    var contactBoxy = null;
    /* what to do when click on contact us link */
    jQuery('li#uwagi a').click(function(){
        var boxy_content;
        boxy_content += '<div style="width:300px; height:250px; position: relative;"><form id="feedback">';
        boxy_content += '<p>Temat<br /><input type="text" name="subject" id="subject" size="41" class="inp" /></p><p>Twój e-mail:<br /><input type="text" name="your_email" size="41" class="inp"  /></p><p>Treść:<br /><textarea name="comment" class="inp"  id="comment" cols="30" rows="5"></textarea></p><br /><input class="button" type="submit" name="submit" value="Wyślij" />';
        boxy_content += '</form></div>';
        contactBoxy = new Boxy(boxy_content, {
            title: '<p class="uwaga">Zgłoś uwagi</p>',
            draggable: false,
            modal: true,
			unloadOnHide: true,
			afterShow: function(c) {
				jQuery('div.boxy-modal-blackout').hide().fadeIn();
				jQuery('table.boxy-wrapper').hide().fadeIn();
				jQuery('div.boxy-modal-blackout').bgIframe({opacity: true});
			},
            behaviours: function(c) {
                c.find('#feedback').submit(function() {
                    Boxy.get(this).boxy.find('div.boxy-content').append('<div class="sending" style="width: 300px; height: 250px; top: 0px; position: absolute; background-color: white;">Wysyłanie...</div>');
                    var subject = c.find("input[name='subject']").val();
					var email = c.find("input[name='your_email']").val();
					var comment = c.find("#comment").val();
					PageMethods.SendFeedback(subject, email, comment,
											function(returnValue) {
												contactBoxy.setContent('<div style="width: 300px; height: 250px">' + returnValue + '</div>');
											}, 
											function(error) {
												contactBoxy.boxy.find('div.sending').remove();
												alert(error.get_message());
												}
											);				
                    return false;
                });
            } 
        });
        return false;
    });
	
	jQuery(window).resize(function(){
  		var windowWidth = jQuery(window).width();
		if (windowWidth < 1070)
		{
			var reportInHeaderContainer = jQuery('li#uwagi');
			if (reportInHeaderContainer.children('a').length == 0)
			{
				var reportLink = jQuery('a.zglos');
				reportLink.removeClass('zglos');
				reportInHeaderContainer.append(reportLink);
				reportInHeaderContainer.show();
			}	
		}
		else
		{
			var reportInHeaderContainer = jQuery('li#uwagi');
			if (reportInHeaderContainer.children('a').length != 0)
			{
				var reportLink = reportInHeaderContainer.find('a');
				jQuery('body').append(reportLink);
				reportLink.addClass('zglos');
				reportInHeaderContainer.hide();
			}		
		}
	});
	
	jQuery(function(){jQuery(window).resize();});
}

function setUpSifr() {
	if(typeof sIFR == "function" && FlashDetect.installed == true) {
		// Main page search box label
		sIFR.replaceElement(named({sSelector:"#searchContainer h2 span", sFlashSrc:"/img/sifr/font.swf", sColor:"#585858", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));
		// Main page promotions label
		sIFR.replaceElement(named({sSelector:"#promoContainer h2 span", sFlashSrc:"/img/sifr/font.swf", sColor:"#585858", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));
		// Main page callcenter box label
		sIFR.replaceElement(named({sSelector:"#callCenter h2 span", sFlashSrc:"/img/sifr/font.swf", sColor:"#ffffff", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));
		// Main page callcenter box stationary phone number
		sIFR.replaceElement(named({sSelector:"#callCenter .telefony > h3 span", sFlashSrc:"/img/sifr/font.swf", sColor:"#f05222", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));
		// Main page callcenter box mobile phone number
		sIFR.replaceElement(named({sSelector:".komorka p", sFlashSrc:"/img/sifr/font.swf", sColor:"#f05222", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));
		// Main page category box label
		sIFR.replaceElement(named({sSelector:"#CategoryAndOpinion h2 span", sFlashSrc:"/img/sifr/font.swf", sColor:"#ffffff", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0})); 
		// Main page category box opinions count
		sIFR.replaceElement(named({sSelector:"div#opinieBox .imageLabel div.count", sFlashSrc:"/img/sifr/font.swf", sColor:"#f05222", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));
		// Group trips contact info
		sIFR.replaceElement(named({sSelector:"div.groupTrips div.contact div.contactData div", sFlashSrc:"/img/sifr/font.swf", sColor:"#585858", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", sWmode:"transparent", nPaddingTop:0, nPaddingBottom:0}));	
	};
}

function SetUpSearcher() {
	jQuery().tabs({
		linkClass : 'tabs',
		containerClass : 'tab-content',
		linkSelectedClass : 'selected',
		containerSelectedClass : 'selected',
		onComplete : function(element){
			var transportType = jQuery(element).attr('id').replace('Tab', '');
			var season = jQuery('div#searchContainer div.tab-content.selected div.seasonField input:checked').val();
			jQuery('input#' + TourTypeClientID ).val(transportType);
			SaveSearcherCookie(transportType, season)
		}
	});
	
	jQuery('div.seasonField input').click(function(){
		// Use click event instead of change event because IE Suxx
		var season = jQuery(this).val();
		// Exit if clicked checkbox was already selected
		if (jQuery('div#searchContainer div.tab-content.selected div.seasonPanel.selected.' + season).length > 0) {
			return;
		}
		var transportType = jQuery('input#' + TourTypeClientID ).val();;
		jQuery('div#searchContainer div.tab-content div.seasonPanel.selected').removeClass('selected');
		jQuery('div#searchContainer div.tab-content div.seasonField input[value=' + season + ']:enabled').attr('checked', 'checked');	
		jQuery('div#searchContainer div.tab-content').each(function(){
			var season = jQuery(this).find('div.seasonField input:checked').val();
			jQuery(this).find('div.seasonPanel.' + season).addClass('selected');
		});
		
		SaveSearcherCookie(transportType, season);
	});
	
	jQuery('div#searchContainer').find('a.btnSearch').bind('click', function(e){
		tryToSubmitParam('', 'div#searchContainer div.tab-content.selected div.seasonPanel.selected', '','main');
	});
	
	jQuery('div#searchContainer').find('a.more').bind('click', function(e){
		var frm = jQuery('div#searchContainer div.tab-content.selected div.seasonPanel.selected');
		
		var transportType = GetTransportType();
		var path = GetDestinationString(frm);
		var rawPath = GetDestinationRawString(path);
		var hiddenPlace = Set2DefaultIfNull(frm.find("input[id$='hiddenPlace']").val(), '');
		if (hiddenPlace != '') {
			if (rawPath != '') {
				rawPath += '&';
			}
			rawPath += 'destination=' + hiddenPlace;
		}
		var params = GetParamsString(frm);
		
		SaveFormSelectionCookie(transportType, rawPath, params);
	});
}

function SaveSearcherCookie(transportType, season) {
	jQuery.cookie('Travelplanet.Cookies.MainPageSearcher', transportType + '.' + season, { path: '/', expires: 30 });
}

function setUpAjaxMessagePopup() {
	jQuery().bind('ajaxMessagePopup', function(e, id, message, position, showPointer, effectType){
		// Popup with message after clipboard add/remove, need to be updated if Travelplanet.Web.UI.WebControls.AjaxMessagePopup control layout changes
		var popup = jQuery('<div>');
		popup.attr('id', id);
		popup.attr('class', 'ajaxMessagePopup');
		popup.append('<div class="container"><div class="pointer"></div><img src="/img/std/calculator/close.png" title="Zamknij" class="close"/><div class="message"></div></div><div class="corners"><div class="top-left"></div><div class="top-right"></div><div class="bottom-left"></div><div class="bottom-right"></div></div>');
		popup.find('div.message').html(message);
		if (showPointer == false) {
			popup.find('div.pointer').remove();
		}
		popup.css(position);
		jQuery(e.target).append(popup);
		popup.data('effectType', effectType);
		if (effectType == 'fade') {
			popup.fadeIn('normal');
		}
		else {
			popup.show('normal');
		}
		popup.bind('afterHide', function(){
			jQuery(this).remove();
		});
	});
	
	jQuery('div.ajaxMessagePopup img').live('click', function(){
		popup = jQuery(this).parents('div.ajaxMessagePopup');
		var effectType = popup.data('effectType');
		if (effectType == 'fade') {
			popup.fadeOut('normal', function(){
				jQuery(this).trigger('afterHide');
			});
		}
		else {
			popup.hide('normal', function(){
				jQuery(this).trigger('afterHide');
			});
		}
	});
}


function pageTrack(page) {
	 if (typeof(_gat) == 'object') {
        var pageTracker = _gat._getTracker("UA-1696568-9");
        pageTracker._setDomainName(".travelplanet.pl");
        pageTracker._setSessionTimeout("3600");
        pageTracker._initData();
        pageTracker._trackPageview(page);
		pageTracker._trackTrans();
    }
}
