if (typeof(DEBUG) == "undefined") {
	var DEBUG = false;
}
if (typeof(WEB_URL) == "undefined") {
	var WEB_URL = "";
}


function include(filename) {
	var script = document.createElement('script');
	if (filename.match(new RegExp("(http|https)://.*"))) {
		script.src = filename;
	} else {
		script.src = WEB_URL+'/js/'+filename+'.js';
	}

	script.type = 'text/javascript';
	document.documentElement.firstChild.appendChild(script);

	return script;
}

function addOnEventAction(obj, event, f) {
	if(window.addEventListener){
		obj.addEventListener(event, f, false);
	} else if(window.attachEvent) {
		obj.attachEvent("on"+event, f);
	} else {
		eval('if (obj.on' + event + ') { var old = obj.on' + event + '; obj.on' + event + ' = function () { old(); f(); } } else { obj.on' + event + ' = f; }');
	}
}

function addOnLoadEvent(f) {
	addOnEventAction(window, "load", f);
}

function cursorPosition(e) {
	var pos = new Array();
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		pos['x'] = e.pageX;
		pos['y'] = e.pageY;
	} else if (e.clientX || e.clientY) {
		pos['x'] = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
		pos['y'] = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
	}
	return pos;
}

function windowHeight() {
	return (window.innerHeight)?window.innerHeight:document.documentElement.clientHeight;
}


/********************************************************/
/*					Support functions					*/
/********************************************************/

var checkingRules = new Array();

function checkForm(id){
  var msg = HF_Lang.BAD_FORM_INPUT;
  var result = true;

  for(i in checkingRules[id]) {
	var rule = checkingRules[id][i];
	if (rule.rule) {
	  eval("var r = (" + rule.rule + ");");
	  if (!r) {
		msg += "\n  - " + rule.description;
		result = false;
	  }
	} else {
	  if (document.getElementById(rule.element) == null) { 	  // radiobox
		  if (document.getElementById(rule.element+"_1") != null) {
			var i = 0;
			var el = null;
			var checked = false;
			while((el = document.getElementById(rule.element+"_" + ++i)) != null) {
			  if (el.checked) {
				checked = true;
				if (!el.value.match(new RegExp(rule.regex))) {
				  msg += "\n  - ";
				  if (rule.description != "")
					msg += rule.description;
				  else
					msg += HF_Lang.INVALID_VALUE_FOR + ": " + document.getElementById(rule.element + "_label").innerHTML.replace(': *', '').replace(':', '');
				  result = false;
				}
				break;
			  }
			}
			if (!checked && !"".match(new RegExp(rule.regex))) {
			  msg += "\n  - ";
			  if (rule.description != "")
				msg += rule.description;
			  else
				msg += HF_Lang.INVALID_VALUE_FOR + ": " + document.getElementById(rule.element + "_label").innerHTML.replace(': *', '').replace(':', '');
			  result = false;
			}
		  }
	  } else if (document.getElementById(rule.element).type == "checkbox") { // checkbox
	  	var el = document.getElementById(rule.element);
	  	if ((!el.checked || !el.value.match(new RegExp(rule.regex))) && !"".match(new RegExp(rule.regex))) {
		  msg += "\n  - ";
		  if (rule.description != "")
			msg += rule.description;
		  else
			msg += HF_Lang.INVALID_VALUE_FOR + ": " + document.getElementById(rule.element + "_label").innerHTML.replace(': *', '').replace(':', '');
		  result = false;
		}
	  } else if (document.getElementById(rule.element).type == "textarea") { // textarea
	  	var el = document.getElementById(rule.element);
		if (!document.getElementById(rule.element).value.replace(/\n/g, "").match(new RegExp(rule.regex))) {
		  msg += "\n  - ";
		  if (rule.description != "")
			msg += rule.description;
		  else
			msg += HF_Lang.INVALID_VALUE_FOR + ": " + document.getElementById(rule.element + "_label").innerHTML.replace(': *', '').replace(':', '');
		  result = false;
		}
	  } else { // other inputs
		if (!document.getElementById(rule.element).value.match(new RegExp(rule.regex))) {
		  msg += "\n  - ";
		  if (rule.description != "")
			msg += rule.description;
		  else
			msg += HF_Lang.INVALID_VALUE_FOR + ": " + document.getElementById(rule.element + "_label").innerHTML.replace(': *', '').replace(':', '');
		  result = false;
		}
	  }
	}
  }
  if (!result)
	alert(msg);

  return result;
}



/********************************************************/
/*			Support functions - "design" style			*/
/********************************************************/
// Open popup window
function PopupLink(link, resizable) {
  var _width = screen.availWidth, _height = screen.availHeight;
  var my_left = 0, my_top = 0;
  var my_width = 800;
  var my_height = 400;

  if (_width > my_width) my_left = (_width-my_width)/2;
  if (_height > my_height) my_top = (_height-my_height)/2;

  return !open(link, "", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+(resizable?"yes":"no")+",resizable="+(resizable?"yes":"no")+",copyhistory=no,top="+my_top+",left="+my_left+",width="+my_width+",height="+my_height);
}



/********************************************************/
/*				CSS Class based functions				*/
/********************************************************/
// Adding some functions to "CSS marked" objects

addOnLoadEvent(function () {
  if (!document.getElementsByTagName) return false;
  var hrefs = document.getElementsByTagName("a");
  for (var i=0; i < hrefs.length; i++) {
	if (hrefs[i].className.match("popupWindow")) {
	  eval('hrefs[i].onclick = function() { return PopupLink("'+hrefs[i]+'"); }');
	} else if (hrefs[i].className.match("popupImage")) {
	  eval('hrefs[i].onclick = function() { return PopupLink("'+hrefs[i]+'.html", true); }');
	} else if (hrefs[i].className.match("resizablePopupWindow")) {
	  eval('hrefs[i].onclick = function() { return PopupLink("'+hrefs[i]+'", true); }');
	} else if (hrefs[i].className.match("blankWindow")) {
	  eval('hrefs[i].onclick = function() { return !window.open("'+hrefs[i]+'"); }');
	}
  }
});

// Add discussion reaction undercolor
addOnLoadEvent(function(){
	if (!document.getElementsByTagName) return false;
	var hrefs = document.getElementsByTagName("a");
	for (var i=0; i < hrefs.length; i++) {
		if (hrefs[i].className.match("entry-reaction-info")) {
			hrefs[i].onclick = function() { var info = this.href.split(/\s*#\s*/); refreshDiscussionUndercolor(info[1]); };
			hrefs[i].onmouseover = function() { var info = this.href.split(/\s*#\s*/); document.getElementById(info[1]).className += " undercolored-entry"; }
			hrefs[i].onmouseout = function() { var info = this.href.split(/\s*#\s*/); var obj = document.getElementById(info[1]); obj.className = obj.className.replace(" undercolored-entry", ""); }
		}
	}
});
function refreshDiscussionUndercolor(entryId) {
	if (!entryId) {
		var info = document.location.href.split(/\s*#\s*/);
		entryId = info[1];
	}

	if (!document.getElementsByTagName) return false;
	var divs = document.getElementsByTagName("div");
	for (var i=0; i < divs.length; i++) {
		if (divs[i].className.match("permanently-undercolored-entry")) {
			divs[i].className = divs[i].className.replace(" permanently-undercolored-entry", "");
		}
	}

	if (entryId) {
		document.getElementById(entryId).className += " permanently-undercolored-entry";
	}
}
addOnLoadEvent(function(){ refreshDiscussionUndercolor(false); });


function addHTMLEditor() {
	if (!document.getElementsByTagName) return false;
	var textareas = document.getElementsByTagName("textarea");
	for (var i=0; i < textareas.length; i++) {
		if (textareas[i].className.match("HTMLEditor")) {
			var textArea = textareas[i];

			var sBasePath = WEB_URL + '/js/fck/';
			var oFCKeditor = new FCKeditor(textArea.id, textArea.style.width, textArea.style.height);
			oFCKeditor.BasePath     = sBasePath;
			oFCKeditor.Config['CustomConfigurationsPath'] = sBasePath + 'config_general.js';
			if (navigator.userAgent.indexOf('Opera') < 0) {
				oFCKeditor.ToolbarSet = 'Default';
			}
			// Drop down menus are not suitable with Opera
			else {
				oFCKeditor.ToolbarSet = 'Opera';
			}

			if (typeof(textArea.form.HTMLEditorOnSubmitOriginal) == "undefined") {
				if (typeof(FCKFilterStringArray) == "undefined") {
					FCKFilterStringArray = new Array();
				}

				textArea.form.HTMLEditorOnSubmitOriginal = textArea.form.onsubmit;
				textArea.form.onsubmit = function(e) {
					var HTMLEditors = this.getElementsByTagName("textarea");
					for (var ii=0; ii < HTMLEditors.length; ii++) {
						if (HTMLEditors[ii].className.match("HTMLEditor")) {
							var textAreaObj = document.getElementById(HTMLEditors[ii].id + "___Frame").contentWindow.document.getElementsByTagName("iframe");
							textAreaObj = textAreaObj[0].contentDocument.body;
							var textAreaHTML = textAreaObj.innerHTML;

							for(filter in FCKFilterStringArray) {
								eval('textAreaHTML = textAreaHTML.replace(/href="' + filter.replace(/\//g, '\\/') + '"/g, \'href="' + FCKFilterStringArray[filter] + '"\');');
								eval('textAreaHTML = textAreaHTML.replace(/_fcksavedurl="' + filter.replace(/\//g, '\\/') + '"/g, \'_fcksavedurl="' + FCKFilterStringArray[filter] + '"\');');
							}
							textAreaObj.innerHTML = textAreaHTML;
						}
					}

					result = this.HTMLEditorOnSubmitOriginal(e);

					if (!result) {
						var HTMLEditors = this.getElementsByTagName("textarea");
						for (var ii=0; ii < HTMLEditors.length; ii++) {
							if (HTMLEditors[ii].className.match("HTMLEditor")) {
								var textAreaObj = document.getElementById(HTMLEditors[ii].id + "___Frame").contentWindow.document.getElementsByTagName("iframe");
								textAreaObj = textAreaObj[0].contentDocument.body;
								HTMLEditorReplaceUris(textAreaObj);
							}
						}
					}

					return result;
				}
			}

			oFCKeditor.ReplaceTextarea();
			
/*
			// NOT NEEDED NOW - it's done in HF_Form class
			eval('setTimeout(function() {'
				+ ' var textAreaObj = document.getElementById(textArea.id + "___Frame").contentWindow.document.getElementsByTagName("iframe");'
				+ ' HTMLEditorReplaceUris(textAreaObj[0].contentWindow.document.firstChild.lastChild);'
				+ '}, 5000);');
*/
		}
	}
}
function HTMLEditorReplaceUris(editorContent) {
	var editorContentHTML = editorContent.innerHTML.replace(/%5B/g, "[").replace(/%5D/g, "]");
	for(filter in FCKFilterStringArray) {
		eval('editorContentHTML = editorContentHTML.replace(/' + FCKFilterStringArray[filter].replace(/\//g, '\\/').replace(/\[/g, '\\[').replace(/\]/g, '\\]') + '/g, "' + filter + '");');
	}
	editorContent.innerHTML = editorContentHTML;
}
addOnLoadEvent(function(){ addHTMLEditor(); });

addOnLoadEvent(function() {
  if (!document.getElementsByTagName) return false;
  var hrefButtons = document.getElementsByTagName("a");
  for (var i=0; i < hrefButtons.length; i++) {
    if (hrefButtons[i].className.match("button")) {
      if (navigator.userAgent.indexOf('Opera') < 0) {
		  var button = document.createElement('button');
		  button.innerHTML = hrefButtons[i].innerHTML;
		  eval('button.onclick = function() {document.location = "' + hrefButtons[i].href + '";};');

		  hrefButtons[i].parentNode.replaceChild(button, hrefButtons[i]);
	  } else {
		  var form = document.createElement('form');
		  form.method = "post";
		  eval('form.action = "' + hrefButtons[i].href + '";');

		  var submit = document.createElement('input');
		  submit.type = "submit";
		  submit.value = hrefButtons[i].innerHTML;
		  form.appendChild(submit);

		  hrefButtons[i].parentNode.replaceChild(form, hrefButtons[i]);
	  }
	  i--;
    }
  }
});

// Set value to openner object
function setToOpener(objId, val, closeWindow, linkType, originalUrl) {
	if (typeof(closeWindow) == "undefined")
		closeWindow = true;

	// To FCK wysiwyg editor
	if(objId == "___editor___") {
		window.opener.SetUrl('/['+linkType+':'+val+']');
	} else if(objId == "___editorFiltered___") {
		url = '/['+linkType+':'+val+']';

		window.opener.SetUrl(originalUrl);
		window.opener.parent.parent.FCKFilterStringArray[originalUrl] = url;
	} else {
		opener.document.getElementById(objId).value = val;
		if (opener.document.getElementById(objId).onchange)
			opener.setTimeout("document.getElementById('"+objId+"').onchange()", 1);
	}
	
	if (closeWindow)
		window.close();
	return false;
}


/***********************************************************
funkce createCookie a readCookie vytvoril Peter-Paul Koch
http://www.quirksmode.org/
***********************************************************/
var Cookies = {
	init: function () {
		var allCookies = document.cookie.split('; ');
		for (var i=0;i<allCookies.length;i++) {
			var cookiePair = allCookies[i].split('=');
			this[cookiePair[0]] = cookiePair[1];
		}
	},
	create: function (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=/";
		this[name] = value;
	},
	erase: function (name) {
		this.create(name,'',-1);
		this[name] = undefined;
	}
};
addOnLoadEvent(function(){Cookies.init()});

function createCookie(name, value, days) {
	Cookies.create(name, value, days);
}
function readCookie(name) {
	return Cookies[name];
}


/************************************************************/
version = navigator.appVersion.toLowerCase();
agent = navigator.userAgent.toLowerCase();
ie = (version.indexOf('msie')>-1);
win = (version.indexOf('windows')>-1);
opera = (agent.indexOf('opera')>-1);
ie50 = (version.indexOf('msie 5.0')>-1);

function prn() {
document.write(' ~ \074a href=\"javascript:goprn();\"\076Vytisknout stránku\074/a\076');
}
function goprn() {
window.print();
}
function fav() {
if ((opera) && (win)) return false;
else if ((ie) && (win)) document.write(' ~ \074a href=\"javascript:gofav();\"\076Přidat web do záložek\074/a\076');
}
function gofav() {
window.external.addFavorite('http://www.sibietposteris.cz','Sibi et Posteris');
}

