/* Show / hide */
function show(e){
	document.getElementById(e).style.display='';
}
function hide(e){
	document.getElementById(e).style.display='none';
}
function showhide(e,show){
	if(show)document.getElementById(e).style.display='';
	else document.getElementById(e).style.display='none';
}
function toggle(e){
	element = document.getElementById(e).style;
	if (element.display=='none') element.display='';
	else element.display='none';
}

/* Enable / disable */
function enable(e){
	document.getElementById(e).style.disabled='false';
}
function disable(e){
	document.getElementById(e).style.disabled='true';
}
function enabledisable(e,enable){
	if(enable) document.getElementById(e).style.disabled='false';
	else document.getElementById(e).style.disabled='true';
}
function check(e){
	document.getElementById(e).style.checked='true';
}
function uncheck(e){
	document.getElementById(e).style.checked='false';
}

/* Clear a input field */
function clear(e){
	document.getElementById(e).value='';
}

/* Get query param */
function query(name){
	return query(name,window.location);
	
}
function query(name,URL){
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( URL );
	if( results == null )
		return "";
	else
		return results[1];
}

/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
	
	Some ways to call it

    To get all a elements in the document with a “info-links” class.
        getElementsByClassName(document, "a", "info-links");
    To get all div elements within the element named “container”, with a “col” class.
        getElementsByClassName(document.getElementById("container"), "div", "col"); 
    To get all elements within in the document with a “click-me” class.
        getElementsByClassName(document, "*", "click-me"); 
        
*/

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/* Editing DIVs */
function writeindiv(text,id){
	if (document.getElementById){
		x = document.getElementById(id);
		x.innerHTML = text;
	}
	else if (document.all){
		x = document.all[id];
		x.innerHTML = text;
	}
}

function appendindiv(text,id){
	if (document.getElementById){
		x = document.getElementById(id);
		x.innerHTML = x.innerHTML + text;
	}
	else if (document.all){
		x = document.all[id];
		x.innerHTML = x.innerHTML + text;
	}
}

function removediv(id,containerid){
	var d = document.getElementById(container);
	var olddiv = document.getElementById(id);
	d.removeChild(olddiv);
}

function removediv(id){
	var d = document.getElementById(id);
	var p = d.parentNode;
	p.removeChild(d);
}

/* Cookie stuff */
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 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 eraseCookie(name) {
	createCookie(name,"",-1);
}

/* Get the selected text from the screen */
function getSel() {
	var txt = '';
	var foundIn = '';
	if (window.getSelection)
		txt = window.getSelection();
	else if (document.getSelection)
		txt = document.getSelection();
	else if (document.selection)
		txt = document.selection.createRange().text;
	else return;
	return txt;
}

function insertAtCursor(el,val) {
	//IE support
	if (document.selection) {
		el.focus();
		sel = document.selection.createRange();
		sel.text = val;
	}
	//MOZILLA/NETSCAPE support
	else if (el.selectionStart || el.selectionStart == '0') {
		var startPos = el.selectionStart;
		var endPos = el.selectionEnd;
		el.value = el.value.substring(0, startPos) + val + el.value.substring(endPos, el.value.length);
	} 
	else {
		el.value += val;
	}
}

/* Open a popup window */
function popup(url) {
	newwindow=window.open(url,'popup','height=250,width=400,resizable=true');
	return false;
}

/* Array.indexOf */
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}