// prototype

function $() {
	var elements = new Array();
	for(var i=0;i<arguments.length;i++) {
		var element = arguments[i];
		if(typeof element == 'string') {
			element = document.getElementById(element);
		}
		if(arguments.length == 1) {
			return element;
		}
		elements.push(element);
	}
	return elements;
}

function getElementsByClassName(classname,tag,node) {
	if(tag == null) {
		tag = '*';
	}
	if(node == null) {
		node = document;
	}
	var result = new Array();
	var elements = node.getElementsByTagName(tag);
	var len = elements.length;
	var pattern = new RegExp('(^|\\s)'+classname+'(\\s|$)');
	for(i=0,j=0; i<len; i++) {
		if(pattern.test(elements[i].className)) {
			result[j++] = elements[i];
		}
	}
	return result;
}

function addLoadEvent(func) {
	if(typeof window.onload != 'function') {
		window.onload = func;
	} else {
		var oldonload = window.onload;
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function addUnloadEvent(func) {
	if(typeof window.onunload != 'function') {
		window.onunload = func;
	} else {
		var oldonunload = window.onunload;
		window.onunload = function() {
			oldonunload();
			func();
		}
	}
}

// addEvent

function addEvent(obj,type,fn) {
	if(obj.addEventListener) {
		obj.addEventListener(type,fn,false);
		EventCache.add(obj,type,fn);
	} else if(obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn] ( window.event ); }
		obj.attachEvent("on"+type,obj[type+fn]);
		EventCache.add(obj,type,fn);
	} else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function () {
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function (node,sEventName,fHandler) {
			listEvents.push(arguments);
		},
		flush : function () {
			var i, item;
			for(i = listEvents.length - 1;i >= 0;i = i - 1) {
				item = listEvents[i];
				if(item[0].removeEventListener) {
					item[0].removeEventListener(item[1],item[2],item[3]);
				};
				if(item[1].substring(0,2) != "on") {
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent) {
					item[0].detachEvent(item[1],item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

//addEvent(window,'unload',EventCache.flush);

// styleswitcher

function _setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function setActiveStyleSheet(title) {
  _setActiveStyleSheet(title);
  createCookie("style",title,365);
  return false;
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return 'standard';
}

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 expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(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 null;
}

function loadStyle() {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  _setActiveStyleSheet(title);
}

addLoadEvent(loadStyle);
loadStyle();

// other

function openwin(url,defx,defy) {
	var sizes = defy ? "width="+defx+",height="+defy+"," : "";
	var popwin = window.open(url,"popwin",sizes+"menubar=no,directories=no,location=no,toolbar=no,scrollbars=no");
	if(popwin) {
		popwin.focus(); 
		if(defy) {
			popwin.resizeTo(defx+20,defy+40);
		}
		return(false);
	} else {
		return(true);
	}
}

function initinput(id,defval) {
	addLoadEvent(function() { 
		var input = document.getElementById(id);
		if(input) {
			if(!input.value) { 
				input.value = defval; 
			}
			input.onfocus = function() { if(this.value == defval) { this.value = ''; } };
			input.onblur = function() { if(this.value == '') { this.value = defval; } };
		}
	});
}

function initradios() {
	var hrefs = getElementsByClassName('radio','A');
	for(i=0; i<hrefs.length; i++) {
		if(hrefs[i].previousSibling && hrefs[i].previousSibling.tagName == 'INPUT') {
			switch(hrefs[i].previousSibling.type) {
				case 'checkbox':
					hrefs[i].onclick = function() {
						this.previousSibling.checked = !this.previousSibling.checked; 
						return false; 
					};
					break;
				case 'radio':
					hrefs[i].onclick = function() {
						this.previousSibling.checked = true; 
						return false; 
					};
					break;
			}
		}
	}
}

function initconfirms(prefix,suffix) {
	var hrefs = getElementsByClassName('confirm','A');
	for(i=0; i<hrefs.length; i++) {
		hrefs[i].onclick = function() { 
			return window.confirm(prefix+this.title+suffix); 
		};
	}
}

function initreplys(ithread,isubject,ibody) {
	var thread = document.getElementById(ithread);
	var subject = document.getElementById(isubject);
	var body = document.getElementById(ibody);
	if(thread && subject && body) {
		var hrefs = getElementsByClassName('reply','A');
		for(i=0; i<hrefs.length; i++) {
			hrefs[i].getarg = getarg;
			hrefs[i].onclick = function() {
				thread.value = this.getarg('[thread]');
				subject.value = this.getarg('[subject]');
				body.focus();
				return false;
			};
		}
	}
}

function getarg(name) {
	var arg = '';
	var i = this.href.indexOf(name);
	if(i != -1) {
		arg = this.href.substring(i+name.length+1)
		var j = arg.indexOf('&');
		if(j != -1) {
			arg = arg.substring(0,j);
		}
	}
	return(unescape(arg.replace(/\+/g,' ')));
}

function initlinkform(linkclass,formid,radioname,namename) {
	var hrefs = getElementsByClassName(linkclass,'A');
	for(i=0; i<hrefs.length; i++) {
		hrefs[i].onclick = function() { 
			var theform = document.getElementById(formid);
			if(theform && theform.elements[radioname]) {
				for(j=0; j<theform.elements[radioname].length; j++) {
					if(theform.elements[radioname][j].checked) {
						this.href += (this.href.indexOf('?') == -1 ? '?' : '&') +
							radioname + '=' + theform.elements[radioname][j].value + '&' +
							namename + '=' + escape(theform.elements[radioname][j].title);
						break;
					}
				}
			}
			return true;
		};
	}
}

addLoadEvent(initradios);
addLoadEvent(function() { initconfirms('Opravdu ','?'); });
