// ####################################
// ###  Xroot.pl v.3.0.1 (03/2011)  ###
// ####################################

var siteURL = 'http://jacekjedrzejczak.pl/';

function getElement(id)
{
	with (document) var element = getElementById ? getElementById(id) : all ? all[id] : layer[id];
	if(element == null) donothing(); else if(!element.style) element.style = element;
	return element;
}
function donothing(){}
function elementExists(element)
{
	if(document.getElementById(element) == null)
	{
		return false;
	}
	else
	{
		return true;
	}
}
function hideElement(name) { getElement(name).style.display = 'none'; }
function viewElement(name) { getElement(name).style.display = ''; }
function checkUncheck(name) { 	if(getElement(name).checked == true) getElement(name).checked = false; else getElement(name).checked = true; }

function checkAll()
{
	if (getElement('idcheckall').checked == true) setValue = true; else setValue = false;
	for(var i = 0; i < getElement('webtonXformId').elements.length; i++)
	{
		if (getElement('webtonXformId').elements[i].type == 'checkbox')
		{
			if(getElement('webtonXformId').elements[i].name != 'checkall')
			{
				getElement('webtonXformId').elements[i].checked = setValue;
			}
		}
	}
}

function checkFocus(element)
{
	var nowFocusElement = document.activeElement.id;
	return ((nowFocusElement == element) ? true : false);
}


function elementOnOff(name)
{
	if (getElement(name).style.display == 'block') getElement(name).style.display = 'none'; else getElement(name).style.display = 'block';
	createCookie(name, getElement(name).style.display);
}

function menuOff(name) { getElement(name).style.visibility = 'hidden'; }
function menuOn(name) { getElement(name).style.visibility = 'visible'; }

function getSelectedValue(selectObject)
{
	var listValue = '';

	for(i = 0; i < selectObject.options.length; i++)
	{
		if(selectObject.options[i].selected == true)
		{
			if(listValue.length > 0) separator = '|'; else separator = '';
			listValue = listValue + separator + selectObject.options[i].value;
		}
	}

	return listValue;
}

function getAsArraySelectedValue(selectObject)
{
	var listValue = new Array();
	var j = 0;

	for(var i = 0; i < selectObject.options.length; i++)
	{
		if(selectObject.options[i].selected == true)
		{
			listValue[j++] = selectObject.options[i].value;
		}
	}

	return listValue;
}

function ereg(pattern, text) { var pattern = new RegExp(pattern, 'i'); return pattern.test(text); }
function formatPrice(price, currency) { return '<span style="white-space: nowrap;">' + numberFormat(price, 2, ',', ' ') + currency + '</span>'; }

function numberFormat(number, decimals, dec_point, thousands_sep)
{
	var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
	var d = dec_point == undefined ? "." : dec_point;
	var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
	var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

var ajaxInProgress = false;
function exeAjax(module, params)
{
	if (ajaxInProgress == false)
	{
		ajaxInProgress = true;
		params = 'xrootAjax=' + parseInt(Math.random()*99999999) + '&' + params;
		url = siteURL + module;
		myRequest.open('POST', url, true);
		myRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		myRequest.setRequestHeader("Content-length", params.length);
		myRequest.setRequestHeader("Connection", "close");
		myRequest.onreadystatechange = responseAjax;
		myRequest.send(params);
		return true;
	}
	else
	{
		return false;
	}
}

function exeModule(module, params, target)
{
	if(!arguments[2]) target = 'xModule';
	$('#'+target).css('min-height', '');
	var targetHeight = $('#'+target).height();
	getElement(target).innerHTML = '<div class="ajaxInProgress">pobieranie danych...</div>';
	if(targetHeight > 0) $('#'+target).css('min-height', targetHeight);
	if(ajaxInProgress == true) setTimeout('exeModule(\''+module+'\', \''+params+'\', \''+target+'\');', 500);
	else exeAjax(module, 'ajax=' + target + '&' + params);
}

function exeModuleInFancy(module, params, width, height)
{
	if(!arguments[2]) width = 500;
	if(!arguments[3]) height = 60;
	$.fancybox({'width':width,'height':height,'href':'XROOT','type':'ajax'});
	exeModule(module, params, 'fancybox-content');
}

function getCategory(idElemenet, id, option)
{
	exeAjax('Ajax/Form/GetCategory', 'id=' + id + '&id_element=' + idElemenet + '&option=' + option);
}

function sendFormValues(module, formObject, target)
{
	var params = '';
	for(var i = 0; i < getElement(formObject).elements.length; i++)
	{
		switch(getElement(formObject).elements[i].type)
		{
			case "text": params += getElement(formObject).elements[i].name + "=" + encodePARAM(getElement(formObject).elements[i].value) + "&"; break;
			case "password": params += getElement(formObject).elements[i].name + "=" + encodePARAM(getElement(formObject).elements[i].value) + "&"; break;
			case "textarea": params += getElement(formObject).elements[i].name + "=" + encodePARAM(getElement(formObject).elements[i].value) + "&"; break;
			case "hidden": params += getElement(formObject).elements[i].name + "=" + encodePARAM(getElement(formObject).elements[i].value) + "&"; break;
			case "select-one": params += getElement(formObject).elements[i].name + "=" + encodePARAM(getElement(formObject).elements[i].options[getElement(formObject).elements[i].selectedIndex].value) + "&"; break;
			case "checkbox": params += getElement(formObject).elements[i].name + "=" + ((getElement(formObject).elements[i].checked == true) ? encodePARAM(getElement(formObject).elements[i].value) : '') + "&"; break;
			case "radio": if(getElement(formObject).elements[i].checked == true) params += getElement(formObject).elements[i].name + "=" + encodePARAM(getElement(formObject).elements[i].value) + "&"; break;
			case "select-multiple": params += getElement(formObject).elements[i].name + "=" + getAsArraySelectedValue(getElement(formObject).elements[i]) + "&"; break;
		}
		//alert(getElement(formObject).elements[i].type);
	}
	params = params.substr(0,(params.length - 1));
	exeModule(module, params, target);
}

function setPanelHeight()
{
	var windowHeight = document.body.offsetHeight;
	getElement('mainbox').style.height = (windowHeight - 256 - 20) + 'px';
	if(elementExists('xFoto') == true)
	{
		getElement('xFoto').style.height = (windowHeight - 360) + 'px';
	}
}

function getRequest()
{
	var ajaxRequest = false;
	try { ajaxRequest = new XMLHttpRequest(); }
	catch(err1)
	{
		try { ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(err2)
		{
			try { ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(err3) { ajaxRequest = false; }
		}
	}
	return ajaxRequest;
}


function responseAjax()
{
	if (myRequest.readyState == 4)
	{
		ajaxInProgress = false;
		if (myRequest.status == 200)
		{
			var xml = myRequest.responseXML;
			var result = xml.getElementsByTagName('result')[0].childNodes[0].nodeValue;
			switch(result)
			{
				case 'CheckForm':
				{

					var element = xml.getElementsByTagName('element')[0].childNodes[0].nodeValue;
					var errorIcon = xml.getElementsByTagName('errorIcon')[0].childNodes[0].nodeValue;
					var errorInfo = xml.getElementsByTagName('errorInfo')[0].childNodes[0].nodeValue;
					formElementValid(element, errorInfo, errorIcon);
					break;
				}
				case 'CheckFormInfo':
				{
					var comment = xml.getElementsByTagName('comment')[0].childNodes[0].nodeValue;
					alert(comment);
					break;
				}
				case 'Module':
				{
					var javascript = xml.getElementsByTagName('javascript')[0].childNodes[0].nodeValue;
					var html = xml.getElementsByTagName('html')[0];
					var FancyBoxContent = '';
					for(var i = 0; i < html.childNodes.length; i++)
					{
						var nodeType = html.childNodes[i].nodeType;
						var nodeName = html.childNodes[i].nodeName;
						if(nodeType == 1 && html.childNodes[i].childNodes[0].nodeValue != 'none')
						{
							var nodeValue = html.childNodes[i].childNodes[0].nodeValue;
							if (nodeName == 'fancybox-content') FancyBoxContent = nodeValue; else getElement(nodeName).innerHTML = nodeValue;
						}
					}
					if(javascript != 'none') eval(javascript);
					if(FancyBoxContent != '') getElement('fancybox-content').innerHTML = FancyBoxContent;
					break;
				}
				case 'Category':
				{
					var categoryPath = xml.getElementsByTagName('path')[0].childNodes[0].nodeValue;
					var categoryLinks = xml.getElementsByTagName('links')[0].childNodes[0].nodeValue;
					var categorySelect = xml.getElementsByTagName('select')[0].childNodes[0].nodeValue;
					var categoryId = xml.getElementsByTagName('id')[0].childNodes[0].nodeValue;
					var idElement = xml.getElementsByTagName('idElement')[0].childNodes[0].nodeValue;

					getElement('categoryPath').innerHTML = ((categoryPath != 'none') ? categoryPath : '');
					getElement('categoryLinks').innerHTML = ((categoryLinks != 'none') ? categoryLinks : '');
					getElement('categorySelect').innerHTML = ((categorySelect != 'none') ? categorySelect : '');
					if(categorySelect != 'none') getElement('categoryVar').value = 0;

					if (categoryId != 'none' && categoryId > 0)
					{
						getElement('categoryVar').value = categoryId;
						formElementValid(idElement, '', 'ok');
					}

					break;
				}
				case 'CategoryComplete':
				{
					var categoryPath = xml.getElementsByTagName('path')[0].childNodes[0].nodeValue;
					var categoryLinks = xml.getElementsByTagName('links')[0].childNodes[0].nodeValue;
					var categoryId = xml.getElementsByTagName('id')[0].childNodes[0].nodeValue;
					var idElement = xml.getElementsByTagName('idElement')[0].childNodes[0].nodeValue;

					getElement('categoryPath').innerHTML = categoryPath;
					getElement('categoryLinks').innerHTML = '';
					getElement('categorySelect').innerHTML = categoryLinks;
					getElement('categoryVar').value = categoryId;

					formElementValid(idElement, '', 'ok');

					break;
				}
				case 'Param':
				{
					Module = xml.getElementsByTagName('module')[0].childNodes[0].nodeValue;
					idElement = xml.getElementsByTagName('id')[0].childNodes[0].nodeValue;
					idFocusElement = xml.getElementsByTagName('focus')[0].childNodes[0].nodeValue;
					getElement('idElement' + idElement).innerHTML = Module;
					if(idFocusElement != 'none') getElement(idFocusElement).focus();
					formElementValid(idElement, '', 'ok');
					break;
				}
				case 'AutoComplete':
				{
					AutoCompleteList = xml.getElementsByTagName('keys')[0].childNodes[0].nodeValue;
					AutoCompleteTime = xml.getElementsByTagName('time')[0].childNodes[0].nodeValue;
					if(AutoCompleteList == 'none') AutoCompleteList = '';
					if (AutoCompleteWrittenString != getElement('toComplete').value) AutoCompleteInit(); else AutoCompleteDraw();
					break;
				}
				case 'Error':
				{
					var error = xml.getElementsByTagName('error')[0].childNodes[0].nodeValue;
					alert(error);
					break
				}
				default:
				{
					alert("DEFAULT:\n\n" + myRequest.responseText);
				}
			}
		}
		else
		{
			//alert('AjaxError: ' + myRequest.status);
		}
	}
}
var myRequest = getRequest();

function formElementValid(element, errorInfo, errorIcon)
{
	if (errorIcon == 'ok')
	{
		getElement('xFormErrorInfo' + element).innerHTML = '';
		getElement('xFormErrorInfo' + element).className = 'errorInfoOff';
		getElement('xFormErrorIcon' + element).innerHTML = '<img src="' + siteURL + 'images/xform/ok.png" style="width: 14px; height: 14px;" alt="poprawnie wypełnione pole">';
	}
	else if (errorIcon == 'error')
	{
		getElement('xFormErrorInfo' + element).innerHTML = errorInfo;
		getElement('xFormErrorInfo' + element).className = 'errorInfoOn';
		getElement('xFormErrorIcon' + element).innerHTML = '<img src="' + siteURL + 'images/xform/error.png" style="width: 14px; height: 14px;" alt="błędnie wypełnione pole">';
	}
	else
	{
		getElement('xFormErrorInfo' + element).innerHTML = '';
		getElement('xFormErrorInfo' + element).className = 'errorInfoOff';
		getElement('xFormErrorIcon' + element).innerHTML = '';
	}
}

function checkFormAjax(form, element, idelement, value, confirmvalue)
{
	if(confirmvalue != 0) confirmvalue = getElement('id' + confirmvalue).value; else confirmvalue = '0';
	exeAjax('Ajax/Form/Check', 'form=' + form + '&element=' + element + '&idelement=' + idelement + '&value=' + encodePARAM(value) + '&confirmvalue=' + encodePARAM(confirmvalue));
}

function checkFormEreg(element, textToCheck, pattern, errorInfo)
{
	if (ereg(pattern, textToCheck) == true)
	{
		formElementValid(element, '', 'ok');
		return true;
	}
	else
	{
		formElementValid(element, errorInfo, 'error');
		return false;
	}
}

function uploadFileReady(fileName, fileSize, element, id, index)
{
	getElement('xFormUploadInfoId' + element).innerHTML = '-> ZAŁADOWANO: <b>' + fileName + '</b> (' + fileSize / 1000 + 'kB) <a href="javascript:uploadFileDelete(\''+element+'\', '+index+')" style="text-decoration: none;" title="kasuj plik">[X]</a>';
	getElement('iduploadid' + element).value = id;
	formElementValid(index, '', '');
}


function uploadFile(formname, iframename, idgap)
{
	// wyswietlenie info o ladowaniu
	getElement('xFormUploadInfoId' + idgap.replace('id','')).innerHTML = '<img src="'+siteURL+'images/xform/loader.gif">';

	// przeslanie danych
	getElement(formname).target = iframename;
	getElement('idxupload').value = 'uploadfile';
	getElement(formname).submit();

	// po przeslaniu
	getElement(formname).target = '_self';
	getElement('idxupload').value = '';
	uploadFileClear(idgap);
}


function uploadFileClear(id)
{
	fileField = getElement(id);
	parentNod = fileField.parentNode;
	tmpForm	= document.createElement("form");
	parentNod.replaceChild(tmpForm,fileField);
	tmpForm.appendChild(fileField);
	tmpForm.reset();
	parentNod.replaceChild(fileField,tmpForm);
}

function uploadFileDelete(element, index)
{
	getElement('iduploadid' + element).value = '';
	getElement('xFormErrorInfo' + index).innerHTML = '';
	getElement('xFormErrorInfo' + index).className = 'errorInfoOff';
	getElement('xFormErrorIcon' + index).innerHTML = '';
	getElement('xFormUploadInfoId' + element).innerHTML = '';
}

function getScrollY()
{
	var scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) { scrOfY = window.pageYOffset; }
	else if( document.body && document.body.scrollTop) { scrOfY = document.body.scrollTop; }
	else if( document.documentElement && document.documentElement.scrollTop) { scrOfY = document.documentElement.scrollTop; }
	return scrOfY;
}

function setCsvPanelHeight()
{
	var windowHeight = document.body.offsetHeight;
	getElement('xModule').style.height = (windowHeight - 100) + 'px';
}

/*** AUTOCOMPLETE ***/

var AutoCompleteIndex = -1;
var AutoCompleteWrittenString = '';
var AutoCompleteList = '';
var AutoCompleteArray = new Array();
var AutoCompleteTime = 0;

function AutoCompleteInit()
{
	if (getElement('toComplete').value.length > 0)
	{
		if (AutoCompleteWrittenString != getElement('toComplete').value)
		{
			AutoCompleteList = '';
			AutoCompleteIndex = -1;
			if(exeAjax('Ajax/AutoComplete/GetKeys', 'key=' + getElement('toComplete').value)) AutoCompleteWrittenString = getElement('toComplete').value;
		}

		AutoCompleteDraw();
	}
	else
	{
		AutoCompleteClose();
	}
}

function AutoCompleteClose()
{
	getElement('AutoComplete').style.visibility = 'hidden';
}

function AutoCompleteShow()
{
	if(getElement('AutoCompleteList').innerHTML.length > 0) getElement('AutoComplete').style.visibility = 'visible';
}

function AutoCompleteDraw()
{
	AutoCompleteArray = AutoCompleteList.split(',');
	getElement('AutoCompleteList').innerHTML = '';
	for(i = 0; i < AutoCompleteArray.length; i++)
	{
		if(AutoCompleteArray[i].length > 0) getElement('AutoCompleteList').innerHTML += '<li onClick="AutoCompleteText('+i+', true);" class="' + ((i == AutoCompleteIndex) ? 'on' : '') + '">' + AutoCompleteArray[i] + '</li>';
	}
	if(getElement('AutoCompleteList').innerHTML == '')
	{
		AutoCompleteClose();
	}
	else
	{
		getElement('AutoCompleteList').innerHTML += '...xrootSearchEngine...';
		AutoCompleteShow();
	}

}

function AutoCompleteMove(direction)
{
	if (direction == 'up')
	{
		AutoCompleteIndex--;
	}
	else
	{
		AutoCompleteIndex++;
	}

	if (AutoCompleteIndex > AutoCompleteArray.length - 1)
	{
		AutoCompleteIndex = -1;
	}
	else if(AutoCompleteIndex < -1)
	{
		AutoCompleteIndex = AutoCompleteArray.length - 1;
	}

	if (AutoCompleteIndex != -1)
	{
		AutoCompleteText(AutoCompleteIndex, false);
	}
	else
	{
		getElement('toComplete').value = AutoCompleteWrittenString;
	}

	AutoCompleteDraw();
}

function AutoCompleteText(id, submitForm)
{
	var AutoText = AutoCompleteArray[id].replace('<b>', '').replace('</b>', '');
	getElement('toComplete').value = AutoText;
	if(submitForm == true)getElement('xFormAutoComplete').submit();
}

function AutoCompleteKey(key)
{
	// UP
	if (key == 38)
	{
		AutoCompleteMove('up');
	}

	// DOWN
	else if(key == 40)
	{
		AutoCompleteMove('down');
	}

	// ESC
	else if(key == 27)
	{
		AutoCompleteClose();
	}

	// INNY
	else
	{
		setTimeout('AutoCompleteInit();', 100);
	}
}


/*** COOKIE ***/
function createCookie(name, value, days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return '';
}

function deleteCookie(name) { createCookie(name,"",-1); }


/*** STATYSTYKI ***/
function getStat() { document.write('<img src="'+ siteURL + 'stat/?temp=' + parseInt(Math.random()*99999999) + '&referer='+ encodePARAM(document.referrer) + '">'); }

function encodePARAM(param)
{
	param = encodeURI(param);
	param = param.replace(/&/gi, '%26');
	param = param.replace(/=/gi, '%3D');
	param = param.replace(/\?/gi, '%3F');
	param = param.replace('/', '%2F');
	return param;
}

/*** HOMEPAGE ***/
function setPage(page)
{
	nowPage = page;

	getElement('homepage').style.backgroundImage = 'url(' + pageData[nowBookmark + '_' + page + '_pic'].src + ')';
	getElement('homepage').style.backgroundPosition = 'center center';
	getElement('homepage').style.backgroundRepeat = 'no-repeat';
	getElement('homepageLink').href = pageData[nowBookmark + '_' + page + '_link'];
	getElement('homepageLink').title = pageData[nowBookmark + '_' + page + '_title'];

	for (i = 1; i <= pageCount[nowBookmark]; i++)
	{
		if (i == page)
		{
			getElement('page' + i).className = 'active';
		}
		else
		{
			getElement('page' + i).className = '';
		}
	}

	nextPageIndex = 0;
}

function setBookmark(bookmark)
{
	nowBookmark = bookmark;

	for (i = 1; i <= bookmarkCount; i++)
	{
		if (i == bookmark)
		{
			getElement('bookmark' + i).className = 'active';
		}
		else
		{
			getElement('bookmark' + i).className = '';
		}
	}

	initPages(bookmark);
	setPage(1);
	nextPageIndex = 0;
}

function initPages(bookmark)
{
	var pages = '';
	for (i = 1; i <= pageCount[bookmark]; i++)
	{
		pages += '<a href="javascript:setPage(' + i + ')" id="page' + i + '">' + i + '</a>';
	}

	getElement('pages').innerHTML = pages;
}

function setNextPage()
{
	if (nowPage < pageCount[nowBookmark])
	{
		setPage(nowPage + 1);
	}
	else
	{
		if (nowBookmark < bookmarkCount)
		{
			setBookmark(nowBookmark + 1);
		}
		else
		{
			setBookmark(1);
		}
	}
}

function setAutoNextPage()
{
	if (nextPageIndex >= nextPageDelay)
	{
		nextPageIndex = 0;
		setNextPage();
	}

	nextPageIndex++;
	setTimeout('setAutoNextPage();', 1000);
}

function initBookmark()
{
	var bookmarks = '';
	if (bookmarkCount == 1) getElement('homepage-navi').style.display = 'none';
	for (i = 1; i <= bookmarkCount; i++)
	{
		bookmarks += '<a href="javascript:setBookmark(' + i + ')" id="bookmark' + i + '" onClick="this.blur();">' + bookmarkData[i] + '</a>';
	}

	getElement('homepage-navi').innerHTML = bookmarks;
}

function initHomePage()
{
	initBookmark();
	setBookmark(1);
	setPage(1);
	setAutoNextPage();
}

$(document).ready(function(){
	$("a.fancy").fancybox({
		 'width' : 1020,
		 'height' : 700,
		 'type' : 'iframe'
	 });
   });


/*** SESSION_EXPIRE ***/
var sessionExpire = 0;
function setSessionExpire()
{
	if (sessionExpire == 0) sessionExpire = time() + Math.round(getElement('idExpire').innerHTML) - 1;
	var timeLeft = sessionExpire - time();
	if (timeLeft <= 0 && timeLeft > -5) getElement('idExpire').innerHTML = 'X';
	else if (timeLeft <= 0) window.location = siteURL;
	else getElement('idExpire').innerHTML = timeInSecond(timeLeft);
	setTimeout('setSessionExpire();', 1000);
}

function time()
{
	var timeNow = new Date();
	return Math.round(timeNow.getTime()/1000);
}

function timeInSecond(seconds)
{
	if (seconds < 60)
	{
		return seconds;
	}
	else if(seconds < 3600)
	{
		var min = Math.floor(seconds / 60);
		var sec = seconds - min * 60;
		return ((min<10)?'0'+min:min) + ':' + ((sec<10)?'0'+sec:sec);
	}
	else if(seconds < (3600*24))
	{
		var hour = Math.floor(seconds / 3600);
		var min = Math.floor((seconds - hour * 3600)/60);
		var sec = seconds - hour * 3600 - min * 60;
		return ((hour<10)?'0'+hour:hour) + ':' + ((min<10)?'0'+min:min) + ':' + ((sec<10)?'0'+sec:sec);
	}
	else
	{
		return Math.round(seconds / (3600*24)) + '[dni]';
	}
}



var PreLoaderPics = new Array();
PreLoaderPics[0] = new Image(); PreLoaderPics[0].src = siteURL + 'images/xform/loader.gif';
PreLoaderPics[1] = new Image(); PreLoaderPics[1].src = siteURL + 'images/xform/ok.png';
PreLoaderPics[2] = new Image(); PreLoaderPics[2].src = siteURL + 'images/xform/error.png';
