//Funkcje stanowiącę BIBLIOTEKĘ FUNKCJI
//Mogą być doczytywane na szarym końcu w footer.tpl


//general
function printPage(hrefThis) 
{
	if (!hrefThis) {
		url = window.location.href;    
	}else{
		url = hrefThis;
	}
	
	hashPos = url.indexOf("\#");
	if (hashPos != -1) url = url.substring(0, hashPos);
	if (url.indexOf("\?") == -1) var sign = '?';
	else var sign = '&';
	url = url + sign + 'tpl=print';
	if (hashPos != -1) url += window.location.hash;

	window.open(url,'printPage','width=700,height=530,toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=1,resizable=no,left=100,top=100');
}

function showPopUpWindow(url, width, height) {
	var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=0,resizable=no,left=100,top=100');
	Win.focus();
}

function showPopUpWindowWithScrollbars(url, width, height) {
	var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=1,resizable=no,left=100,top=100');
	Win.focus();
}


var hrefClicked = new Array;
function showDMPW(pageId) {
	//Oby nie powtarzac kliku i na href i na onClick (w komorce tablei)
	//Zmienia flage - co drugi raz nie działa onClick - ale to i tak lepiej, niz dwa popupy...
	if (hrefClicked[pageId]) {hrefClicked[pageId] = false;return;}

	//Przykładowa tablica DMPWUrls
	//DMPWUrls[8] = ['http://acn.kolo2.dynamap.pl/index.php?pageid=7&lang=pl', '300,300,100,100,1,,,,1,'];
	//DMPWUrls[4] = ['http://www.onet.pl', '300,300,100,100,1,,,,1,'];

	PWFs = DMPWUrls[pageId][1].split(',');
	PWFStr	= getPWFStr(PWFs);

	hrefClicked[pageId] = true;
	
	url = DMPWUrls[pageId][0];
	if (url.indexOf("\?") == -1) var sign = '?';
	else var sign = '&';

	if (!(lang = getValueOfAttrInURL(0, 'lang'))) var lang = 'pl';
	url += sign + 'lang=' + lang;
	//var Win = window.open(url,"_" + pageId,PWFStr);
	//zmiana ze wzgledu na otwieranie popup-ow z Tigra Menu
	//nadal zle dziala w FireFoksie, Mozilli
	var Win = window.open(url,'_blank',PWFStr);
	Win.focus();
}
function getPWFStr(PWFs) {
	return	'width='		+PWFs[0]+
			',height='		+PWFs[1]+
			',left='		+PWFs[2]+
			',top='			+PWFs[3]+
			',scrollbars='	+PWFs[4]+
			',status='		+PWFs[5]+
			',location='	+PWFs[6]+
			',toolbar='		+PWFs[7]+
			',menubar='		+PWFs[8]+
			',resizable='	+PWFs[9];
}



//url 
//trans = new Array(varName, newValue);
function url_insert (trans, url) {
	if (!url) url = window.location.href;
	
	for (i=0;i<trans.length;i++) {
		var re = new RegExp("([?&])" + trans[i] + "=[^&]*(&|$)");
		var nVP = trans[i] + "=" + trans[i + 1];
		if (!re.test(url)) url += ((url.indexOf("\?") == -1)?'?':'&') + nVP;
		else url = url.replace(re, "$1" + nVP + "$2");
		
		i++;
	}

	return url;
}

function getSubmit(formObj, url) {
	subLoc = getSubmitLocation(formObj, url);
	window.location.href = subLoc;
}

function getSubmitLocation(formObj, url) {
	if (!url) url = window.location.href;
	
	var trans = new Array();
	for (i=0;i<formObj.length;i++) {
		trans[trans.length] = formObj[i].name;
		if ('checkbox' == formObj[i].type || 'radio' == formObj[i].type) {
			trans[trans.length] = formObj[i].checked;		    
		}else{
			trans[trans.length] = formObj[i].value;		    
		}
	}

	return url_insert(trans, url);
}

//Funkcja pobiera adres url i sprawdza
//czy istnieje w tym adresie atrybut attr.
//Jesli tak, to zwraca wartosc tego atrybutu,
//w przeciwnym przypadku zwraca false.
function getValueOfAttrInURL(url,attr)
{
	if (!url) url = window.location.href;

	if(url.indexOf("?")<0) //jesli w adresie nie ma argumentow
		return false;
	url=url.substring(url.indexOf("?")+1,url.length); //zostaw same argumenty oddzielone &
	urltab=url.split("&"); //rozdziel argumenty
	for(i=0;i<urltab.length;i++)
	{
		urltmp=urltab[i].split("="); //rozdziel atrybut od wartosci
		if(urltmp[0]==attr) //jesli jest atrybut attr
			return urltmp[1]; //zwroc jego wartosc
	}
	return false;
}




function d2h(d) {return d.toString(16);}
function h2d(h) {return parseInt(h,16);} 

//Jeśli zastosujemy funkcję encodeURIComponent, rzeczywiście bardzo ładnie zamieni np. / na %2F, problem w tym, że przeglądarka/serwer zinterpretują ten zapis jako REALNY / i będą myślały, że to jest rzeczywisty podział katalogu
//http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent

//Tak więc funkcja zamienia specjalne znaki typu & na 'własny' kod w postaci __26, gdzie cyfry to zapis szesnastkowy
//Następnie php dekoduje ten zapis i w polu tekstowym możemy wyświetlić dokładnie to, co user wpisał
function encodeURISpecialChars (str) {
	//http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
	//Reserved characters
	//URLs use some characters for special use in defining their syntax. When these characters are not used in their special role inside a URL, they need to be encoded.

	signs = new Array('$', '&', '+', ',', '/', ':', ';', '=', '?', '@', '%', '#', '.');
	for (var i=0; i<signs.length; i++) {
		str = str_replace(signs[i], '__' + d2h(signs[i].charCodeAt(0)), str);
	}

	str = str_replace(' ', '+', str);
	
	return str;
}


function str_replace_reg(s, r, str) {
    var re = new RegExp(s, 'g');
    return str.replace(re, r);
}

function str_replace (s, r, str) {
    var temp = str.split(s);
    return temp.join(r);
}


//CIEKAWE
/*
function surl_insert2 (trans, url) { 
	var re = {
		strict: /\/(piony\+kawiarnia)(\/|$)/
	};
	var m = re['strict'].exec( url );
}
*/



//Uwaga! Funkcja nie enkoduje wartości przekazywanych w trans
//jest to zadanie do zrealizowania wcześniej, w innych miejscach!
function surl_insert (trans, url) { //surl = slash_url
	if (url) jQuery.url.setUrl(url);

	var n_url = '';

	//nazwa pliku jest też brana pod uwagę - jako ostatnia część segments
	//parametr -1 jest naszym własnym rozszerzeniem do jQuery.url
	if (jQuery.url.segment()>0) {
		var segments = jQuery.url.segment(-1); 
	} else {
		var segments = new Array(); 
	}
	
	
	maxSegmentCount = Math.max(segments.length, trans.length); //wybierz "najdalszy" segment - albo z już istniejących segmentów, albo z trans
	//alert(jQuery.url.segment());
	//alert(segments.length);
	for (var i=0; i<maxSegmentCount; i++) {
		if (trans[i]) {
			//alert('trans '+trans[i]);
			n_url += '/' + trans[i];
		} else {
			//alert('trans '+segments[i]);
			if (segments[i] == undefined) segments[i] = '';
			n_url += '/' + segments[i];	
		}
	}

	if ((query = jQuery.url.attr("query")) !== null) {
		n_url += '?' + query;
	}

	if ((anchor = jQuery.url.attr("anchor")) !== null) {
		n_url += '#' + anchor;
	}

	return n_url;
	

}



/*
//in seconds
function sleeep(naptime){ 
  naptime = naptime * 1000;
  var sleeping = true;
  var now = new Date();
  var alarm;
  var startingMSeconds = now.getTime();
  //alert("starting nap at timestamp: " + startingMSeconds + "\nWill sleep for: " + naptime + " ms");
  while(sleeping){
	 alarm = new Date();
	 alarmMSeconds = alarm.getTime();
	 if(alarmMSeconds - startingMSeconds > naptime){ sleeping = false; }
  }      
  //alert("Wakeup!");
}
*/

