$(document).ready(
	function() {
		
		//hover na przycisku "szukaj" 
		$("#lay-srch .image").hover(
			function(){
				$(this).attr("src", "/img/search_btn_h.png");
			},
			function(){
				$(this).attr("src", "/img/search_btn.png");
			}
		);
		//
		
		//wysuwanie i chowanie szuflady
		var oDrawerBtn = $("#lay-drawer .btn");
		
		if (oDrawerBtn.length){
			oDrawerBtn.click(function(){
				$("#lay-drawer").toggleClass("small");
				oDrawerBtn.find(".tooltip").hide();
			});
			
			//dymek
			oDrawerBtn.hover(
				function(){
					if ( ! ($("#lay-drawer").hasClass("small")) ){
						oDrawerBtn.find(".tooltip").show();
					}
				},
				function(){
					oDrawerBtn.find(".tooltip").hide();
				}
			);
			//
		}
		//
		
		
		//obsługa mapki i listy województw
		var sCntMapSel = "#pg-home-page .cnt-map",
			sProvincesASel = "#pg-home-page .cnt-provinces li a",
			sImgPrefix = "img/";
		
		$(sCntMapSel + " map area, " + sProvincesASel).hover(
			function(){
				var sClassName = $(this).attr("class");
				$(sCntMapSel + " img").attr( "src", sImgPrefix + sClassName + ".gif" );
				$(sProvincesASel + "." + sClassName ).addClass("hover");
			},
			function(){
				var oClassName = $(this).attr("class");
				$(sCntMapSel + " img").attr( "src", sImgPrefix + "map_0.gif" );
				$(sProvincesASel).removeClass("hover");
			}
		);
		//
		
		
		//obsługa input-a wyszukiwania
		var oInpSearch = $("#lay-srch input.text");
		
		if (oInpSearch.length){
		
			var sSearchInputValue = $("#lay-srch input.text").val();
			
			oInpSearch.focus(function(){
				var oTarget = $(this);
				if (oTarget.val() === sSearchInputValue){
					oTarget.addClass("user-text");
					oTarget.val('');
				}
			});
			
			oInpSearch.blur(function(){
				var oTarget = $(this);
				if (oTarget.val() === ''){
					oTarget.removeClass("user-text");
					oTarget.val(sSearchInputValue);
				}
			});
			
			
			
			//To jest tylko demo autocompletera - należy oprogramować
			oInpSearch.focus(function(){
				$("#lay-srch .cnt-autocomplete").show();
			});
			
			oInpSearch.blur(function(){
				$("#lay-srch .cnt-autocomplete").hide();
			});
			//
		
		}
		//
		
	}
);

function clientCoords() {
     var dimensions = {width: 0, height: 0};
     if (document.documentElement) {
         dimensions.width = document.documentElement.offsetWidth;
         dimensions.height = document.documentElement.offsetHeight;
     } else if (window.innerWidth && window.innerHeight) {
         dimensions.width = window.innerWidth;
         dimensions.height = window.innerHeight;
     }
     return dimensions;
}


function mailThisPageToFriend() {
	function bindMailThisPageForm() {
		jQuery('#iMailThisPageForm').ajaxForm({ 
	        target: '#iMailThisPage',
	        url: '/emailthispage',
	        success: function() {
				$('#iUrl').val(window.location);
	        	bindMailThisPageForm();
	        	// reload captcha 
	        	if (jQuery('#captchaMail').attr('src')) {
	        		$('#captchaMailTxt').val('');
	        		jQuery('#captchaMail').attr('src', jQuery('#captchaMail').attr('src').replace(/\?.*$/, '') + '?' + Math.random());
	    		}
		}  
    	});
	}

	coords = clientCoords();
	if(coords.width == 0 || coords.height == 0) {
	  var x = 0;
	  var y = 0;
	}
	else {
	  var y = coords.height/2-80;
	  var x = coords.width/2-344;
	}
	
	if(jQuery.support.style) { // IE-only
		var maskHeight = $(document).height();  
		var maskWidth = $(window).width(); 
		$('#mask').css({'width':maskWidth,'height':maskHeight});  
	
		$('#mask').fadeIn(1000);      
		$('#mask').fadeTo("slow",0.8);
	}
	
	jQuery.get('/emailthispage', {},
			function(data) {
			var obj = $(document.createElement('div'));
			obj.attr("id", 'iMailThisPage');
			obj.width(689);
			if(coords.width == 0 || coords.height == 0) {
			  obj.css({position: "absolute", marginLeft: 0, marginTop: 0, top: 0, left: 0});
			}
			else {
			  obj.css({position: "absolute", marginLeft: 0, marginTop: 0, top: y, left: x});
			}
			obj.html(data);
			$('#content').append(obj);
				
			$('#iUrl').val(window.location);
			bindMailThisPageForm();
			}
		);
	if (window.event) event.returnValue = false;
	return false;
}

function closeMailThisPageToFriend() {
	$('#mask').hide();  
	$('#iMailThisPage').remove();
	
	if (window.event) event.returnValue = false;
	return false;
}

function registerChangesCallbacks() {
	$("#showChanges").click(function() {
		$(".rCurrentHidden").hide();
		
		$(".rOld").each(function(i, item) {
			$(item).removeClass('rOldHidden');
		});
		
		$("#showChanges").hide();
		$("#hideChanges").show();			
	});	
	
	$("#hideChanges").click(function() {		
		$(".rCurrentHidden").show();
		
		$(".rOld").each(function(i, item) {
			$(item).addClass('rOldHidden');
		});
		
		$("#showChanges").show();
		$("#hideChanges").hide();
	});
}

function highlightSearchQuery(tokens) {
	hash = window.location.toString().split("#")
	
	if(hash.length > 1) {
		tokens = decodeURIComponent(hash[1]).replace(/\+/g, " ");
	}
	
	$.each($.trim(tokens).split(' '), function(i, token) {
		if(token != '') {
			$('.highlightable').highlight(token);
		}
	});
}

$(document).ready(
	function() {		
		$("#lay-srch form").submit(function() {
			if($("form#simpleSearch input[name='text']").val()) {
				document.location = formAction.replace(/%s/, encodeURIComponent($("form#simpleSearch input[name='text']").val().replace(/\s+/g, '+')).replace(/%2B/g, '+').replace(/^\+|\+$/g, ''));			
			}
			
			return false;
		});

		registerChangesCallbacks();

		function findValueCallback(event, data, formatted) {
			//$("<li>").html( !data ? "No match!" : "Selected: " + formatted).appendTo("#result");
			alert(formatted);
		}
		
		$("#lay-srch input.text").autocomplete("/podpowiedzi", {
			autoFill: false,
			highlight: false,
			minChars: 2,
			scroll: false,
			cacheLength: 1,
			selectFirst: false,
			matchSubset: false,
			resultsClass: "cnt-autocomplete",
			extraParams: {f: "name", t: 1}
		});
		
		$("#lay-srch input.text").result(function(event, data, formatted) {
			$("#simpleSearch").submit();
		});
		
		
		/*$("#advancedSearch #lineOfBusiness").autocomplete("/podpowiedzi", {
			autoFill: false,
			highlight: false,
			minChars: 2,
			scroll: false,
			width: "344px",
			cacheLength: 1,
			matchSubset: false,
			resultsClass: "cnt-autocomplete",
			extraParams: { f: "line_of_business", t: 0 }
		});*/
		
		$("#advancedSearch #city").autocomplete("/podpowiedzi", {
			autoFill: false,
			highlight: false,
			minChars: 2,
			scroll: false,
			cacheLength: 1,
			matchSubset: false,
			resultsClass: "cnt-autocomplete",
			extraParams: {f: "city", t: 0}
		});

		$('a[rel="sendToFriend"]').each(function() {
		    $($(this)).attr('href', '');
		    $($(this)).attr('onclick', '').click(mailThisPageToFriend);
		});

		$.extend(DateInput.DEFAULT_OPTS, {
		  month_names: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
		  short_month_names: ["Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru"],
		  short_day_names: ["Nie", "Pon", "Wto", "Śro", "Czw", "Pią", "Sob"]
		});
	
		$.extend(DateInput.DEFAULT_OPTS, {
		  stringToDate: function(string) {
		    var matches;
		    if (matches = string.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/)) {
		      return new Date(matches[1], matches[2] - 1, matches[3]);
		    } else {
		      return null;
		    };
		  },
		
		  dateToString: function(date) {
		    var month = (date.getMonth() + 1).toString();
		    var dom = date.getDate().toString();
		    if (month.length == 1) month = "0" + month;
		    if (dom.length == 1) dom = "0" + dom;
		    return date.getFullYear() + "-" + month + "-" + dom;
		  }
		});
	
		$($.date_input.initialize);
	
		change_npk = function() {
			$('input[rel="change_npk"]').each(function(id, value) {
				if ($(value).attr('checked')) {
					$("#krs, #pesel, #nip, #age").each(function(id, value) {
						$(value).val("");
						$(value).hide();
					});
					$("#" + $(value).val()).toggle();
					return false; // break
				}
			});
		}

		change_npk();
		
		$('input[rel="change_npk"]').click(change_npk);
		
		var sSearchInputValue = "RRRR-MM-DD";
		$("input.date_input").each(function() {
			if ($(this).val() == '') { 
				$(this).addClass("user-text");		
				$(this).val(sSearchInputValue);
			}
		});
		$("input.date_input").focus(function() {
			//nie ma obiektu console w IE i wywala blad
			//console.debug('$(this).val(): ' + $(this).val());
			if ($(this).val() === sSearchInputValue){
				$(this).removeClass("user-text");
				$(this).val('');
			}
		});
		$("input.date_input").blur(function(){
			if ($(this).val() === ''){
				$(this).addClass("user-text");		
				$(this).val(sSearchInputValue);
			}
		});
	
		$('a[rel="advanced_search"]').click(function() { 
	    	url = $('a[rel="advanced_search"]').attr('href');
		
	    	if ($('input#advanced_search_input').val() != "Wpisz nazwę firmy lub nazwisko szukanej osoby ...") {
	        	url = url + '?name=' + $('input#advanced_search_input').val();
	    	} 
	    	document.location=url;
	    	return false;
		});  
		
		$('#advancedSearch').submit(function() {
		    if($('#startDateFrom').val() == 'RRRR-MM-DD') {
		        $('#startDateFrom').val('');
		    }
		    if($('#startDateTo').val() == 'RRRR-MM-DD') {
		        $('#startDateTo').val('');
		    }
		    if($('#updateDateFrom').val() == 'RRRR-MM-DD') {
		        $('#updateDateFrom').val('');
		    }
		    if($('#updateDateTo').val() == 'RRRR-MM-DD') {
		        $('#updateDateTo').val('');
		    }
		    if($('#endDateFrom').val() == 'RRRR-MM-DD') {
		        $('#endDateFrom').val('');
		    }
		    if($('#endDateTo').val() == 'RRRR-MM-DD') {
		        $('#endDateTo').val('');
		    }   
		    return true;
		});
		
		if($("#buy-load").length>0){ 
			function bindForm() {
				jQuery('#buy_form').ajaxForm({ 
			        target: '#buy-load',
			        url: reportUrl,
			        success: function() {
			        	bindForm();
			        	registerChangesCallbacks();
			        	// reload captcha 
			        	if (jQuery('#captcha').attr('src')) {
			        		jQuery('#captcha').attr('src', jQuery('#captcha').attr('src').replace(/\?.*$/, '') + '?' + Math.random());
			    		}
					}  
				});
			}
			jQuery.get(reportUrl, {},
				function(data) {
					jQuery("#buy-load").html(data);	   								
					bindForm();
					registerChangesCallbacks();	    						
				}
			);
		}
		
		
	}
);

String.prototype.endsWith = function(str)
{return (this.match(str+"$")==str)}

var GoToMergedURL = function(/*String*/url, /*String*/sortBy) {
    if(url.indexOf('?') <= -1) {
       url = url + '?';
    } else {
       url = url + '&';
    }
    var browserName=navigator.appName;

    if(browserName == "Microsoft Internet Explorer") {
        document.location.href = Url.decode(url)+Url.decode(sortBy);
    } else {
        document.location.href = url+sortBy;
    }
}

var Url = {

	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},

	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}
