function init()
{
	if (!timer_loaded) return;
	clearTimeout(timer_loaded);

	if (typeof(window.print) == "object") {
		// menu update for IE

		window.onresize = onResize;

		iframe1 = document.createElement("iframe");
		iframe1.style.position = "absolute";
		iframe1.style.left = "-999em";
		iframe1.style.zIndex = 2;
		iframe1.style.filter = "alpha(opacity=1)";
		document.getElementsByTagName("body")[0].appendChild(iframe1);

		iframe2 = document.createElement("iframe");
		iframe2.style.position = "absolute";
		iframe2.style.left = "-999em";
		iframe2.style.zIndex = 2;
		iframe2.style.filter = "alpha(opacity=1)";
		document.getElementsByTagName("body")[0].appendChild(iframe2);

		image1 = document.createElement("div");
		image1.style.position = "absolute";
		image1.style.left = "-999em";
		image1.style.width = "48px";
		image1.style.height = "48px";
		image1.style.zIndex = 250;
		document.getElementsByTagName("body")[0].appendChild(image1);

		//png update for IE
		var tags = ["div", "span", "b", "i"];
		for (var j = 0; j < tags.length; j++) {
			var divs = document.getElementsByTagName(tags[j]);
			for (var i = 0; i < divs.length; i++) {
				var src = getCurrentStyle(divs[i], "backgroundImage").match(/(url\(\"?)[^\"\)]*(?=\"?\))/gi);
				if (src && (src = src.toString().replace(/url\(\"?/gi, "")).match(/\-alpha.png$/gi)) {
					divs[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='crop')";
					divs[i].style.backgroundImage = "none";
					divs[i].style.background = "none";
				}
			}
		}
		//\for IE
	}

	document.getElementById("menu-holder") && (document.getElementById("menu-holder").className = "js-menu");
	document.getElementById("not-menu") && (document.getElementById("not-menu").onmousemove = closemenu);

	// run across inputs
	var inputs = document.getElementsByTagName("input");
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].getAttribute("type") == "file") {
			if ((window.clientInformation || document.all) && !(typeof(document.fileCreatedDate) == "string")) {
				inputs[i].parentNode.parentNode.getElementsByTagName("span")[0].style.display = "none";
			} else {
				inputs[i].onchange = fileChange;
			}
		}
		if (inputs[i].className.match(/\bitem\b/gi)) {
			inputs[i].onclick = checkBoxList;
		}
		if (inputs[i].className.match(/\bitem\-all\b/gi)) {
			inputs[i].onclick = selectAll;
		}
	}

	// run across textareas
	var textareas = document.getElementsByTagName("textarea");
	for (var i = 0; i < textareas.length; i++) {
		if (textareas[i].className.match(/\brestricted\b/) && textareas[i].getAttribute("cols")) {
			textareas[i].onkeypress = restrictedTextarea_keypress;
			textareas[i].onkeyup = restrictedTextarea_change;
			textareas[i].onchange = restrictedTextarea_change;

			// update label (if it exists)
			var tid = textareas[i].getAttribute("id");
			if (tid) {
				var labels = document.getElementsByTagName("label");
				for (var j = 0; j < labels.length; j++) {
					if (labels[j].getAttribute("for") == tid) {
						var small = document.createElement("small");
						small.appendChild(document.createTextNode(" (" + textareas[i].getAttribute("cols") + ")"));
						labels[j].appendChild(small);
						textareas[i].counter = small;
					}
				}
			}
		}
	}

	var menu = document.getElementById("menu");
	if (menu) {
		var sfEls = menu.getElementsByTagName("li");
		for (var i = 0; i < sfEls.length; i++) {
			if (sfEls[i].getElementsByTagName("ul")[0]) {
				var div = document.createElement("div");
				var a = sfEls[i].getElementsByTagName("a")[0];
				div.innerHTML = a.innerHTML;
				div.className = "parent";
				sfEls[i].onmouseover = onmenuitemhover;
				sfEls[i].onmouseout = onmenuitemhout;
				sfEls[i].top = (sfEls[i].parentNode.id == "menu");
				sfEls[i].show = showLI;
				sfEls[i].hide = hideLI;
				a.innerHTML = "1";
				a.replaceChild(div, a.firstChild);

				// for IE
				if (typeof(window.print) == "object" && sfEls[i].parentNode.id == "menu") {
					var menuholder = document.getElementById("menu-holder");
					var mTop = menu.offsetTop + menuholder.offsetTop + a.parentNode.offsetTop - 12;
					var mLeft = menu.offsetLeft + menuholder.offsetLeft + a.parentNode.offsetLeft - 22;
					var image2 = document.createElement("div");
					image2.style.position = "absolute";
					image2.style.left = mLeft + "px";
					image2.style.top = mTop + "px";
					image2.style.width = "48px";
					image2.style.height = "48px";
					if (!sfEls[i].className.match(/\bopened\b/gi)) {
						image2.style.display = "none";
					}
					image2.style.zIndex = 250;
					var theImg = div.getElementsByTagName("img")[0];
					theImg && (image2.style.filter = theImg.style.filter);
					sfEls[i].icon = image2;
					document.getElementsByTagName("body")[0].appendChild(image2);
				}
				//\for IE
			}
		}
	}

	setUpDoubleLists();

	setTimeout(function(){clearTimeout(timer_login)}, 100);
}


/** Menu functions */

var menutimer = null;
var current1 = null;
var current2 = null;
var pretender1 = null;
var pretender2 = null;
var timeout = 300; //ms


function onmenuitemhover(evt)
{
	if (typeof evt == "undefined") evt = window.event;
	clearTimeout(menutimer);
	if (this.top) {
		pretender1 = this;
	}
	else {
		pretender2 = this;
	}
	if (this.icon) {
		this.icon.style.display = "block";
	}
	menutimer = setTimeout(updatemenu, timeout);
}


function onmenuitemhout()
{
	try {
		clearTimeout(menutimer);
		if (this.top) {
			pretender1 = 0;
		}
		pretender2 = 0;
		if (this.icon && !this.className.match(/\bopened\b/gi)) {
			this.icon.style.display = "none";
		}
		menutimer = setTimeout(updatemenu, timeout);
	} catch(e) {}
}


function closemenu()
{
	if (pretender1 == 0 && pretender2 == 0) return;
	pretender1 = 0;
	pretender2 = 0;
	menutimer = setTimeout(updatemenu, timeout);
}


function updatemenu()
{
	if (pretender1 && pretender1 != current1) {
		current1 && (current1.hide());
		current1 = pretender1;
		current1.show();
		pretender1 = null;
	}
	if (pretender2 && pretender2 != current2) {
		current2 && (current2.hide());
		current2 = pretender2;
		current2.show();
		pretender2 = null;
	}
	if (pretender1 == 0) {
		current1 && (current1.hide());
		current1 = null;
		pretender1 = null;
	}
	if (pretender2 == 0) {
		current2 && (current2.hide());
		current2 = null;
		pretender2 = null;
	}
}


function showLI()
{
	this.className += " current";
	// for IE
	if (typeof(window.print) == "object" && !this.className.match(/\bopened\b/gi)) {
		var menuholder = document.getElementById("menu-holder");
		var mTop = menu.offsetTop + menuholder.offsetTop + this.offsetTop;
		var mLeft = menu.offsetLeft + menuholder.offsetLeft + this.offsetLeft - 10;
		var UL = this.getElementsByTagName("ul")[0];
		if (UL) {
			if (this.parentNode.className.match(/\bopened\b/gi)) {
				mTop -= 22;
				mLeft -= 223;
			}
			if (this.top) {
				var iframe = iframe1;
			} else {
				var iframe = iframe2;
				mTop += this.parentNode.offsetTop + this.parentNode.parentNode.offsetTop;
				mLeft += this.offsetWidth;
			}
			iframe.style.left =		UL.offsetLeft + mLeft + "px";
			iframe.style.top =		UL.offsetTop + mTop + "px";
			iframe.style.width =		UL.offsetWidth + "px";
			iframe.style.height =	UL.offsetHeight + "px";
			iframe.style.display =	"block";
		}
	}
	//\for IE
}


function hideLI()
{
	//for IE
	if (typeof(window.print) == "object") {
		var LIs = this.getElementsByTagName("li");
		for (var i = 0; i < LIs.length; i++) {
			LIs[i].className = LIs[i].className.replace(/\s?current\b/gi, "");
		}
		if (this.top) {
			var iframe = iframe1;
		} else {
			var iframe = iframe2;
		}
		iframe.style.display = "none";
	}
	//\for IE
	this.className = this.className.replace(/\s?current\b/gi, "");
}

/** restrictedTextarea_keypress
*	event handler for restricted textareas
*/
function restrictedTextarea_keypress(evt)
{
	if (typeof evt == "undefined") {
		evt = window.event;
	}
	var key = evt.keyCode;

	var max = parseInt(this.getAttribute("cols"));
	if (max == 0) return;

	if (this.value.length == max && (key < 16 || key > 46) && key != 91 && key != 93 && key != 8) {
		return false;
	}
	if (this.value.length > max) {
		this.value = this.value.substring(0, max);
	}

}


/** restrictedTextarea_change
*	event handler for restricted textareas
*/
function restrictedTextarea_change()
{
	var max = parseInt(this.getAttribute("cols"));
	if (max == 0) return;

	if (this.value.length > max) {
		this.value = this.value.substring(0, max);
	}

	if (this.counter) {
		this.counter.firstChild.nodeValue = " (" + (max - this.value.length) + ")";
	}
}


function onResize() // for IE
{
	var menu = document.getElementById("menu");
	var menuholder = document.getElementById("menu-holder");
	if (menu) {
		var sfEls = menu.getElementsByTagName("li");
		for (var i = 0; i < sfEls.length; i++) {
			if (typeof(window.print) == "object" && sfEls[i].icon) {
				var mLeft = menu.offsetLeft + menuholder.offsetLeft + sfEls[i].offsetLeft - 32;
				sfEls[i].icon.style.left = mLeft + "px";
			}
		}
	}
}


/** fileChange
*	event handler for file inputs
*/
function fileChange()
{
	var span = this.parentNode.parentNode.getElementsByTagName("span")[0];
	span.firstChild.nodeValue = this.value;
}


function getCurrentStyle(ele, prop)
{
	if (ele.currentStyle) {
		prop = prop.replace(/(\-\w)/gi, function(w){return w.replace("-", "").toUpperCase()})
		return ele.currentStyle[prop];
	} else {
		return document.defaultView.getComputedStyle(ele, "").getPropertyValue(prop);
	}
	return null;
}


function toggleAsset(button)
{
	var content = button.parentNode.parentNode.parentNode.getElementsByTagName("div")[1];
	var img = button.getElementsByTagName("img")[0];
	if (content && img) {
		if (img.getAttribute("alt") == "Hide") {
			img.setAttribute("alt", "Edit");
			img.setAttribute("src", img.getAttribute("src").replace(/hide\+/gi, "edit+"));
			content.style.display = "none";
		} else {
			img.setAttribute("alt", "Hide");
			img.setAttribute("src", img.getAttribute("src").replace(/edit\+/gi, "hide+"));
			content.style.display = "block";
		}
	}
	//IE bug fix
	if (typeof(document.fileCreatedDate) == "string") {
		var buttons = document.getElementsByTagName("button");
		for (var i=0;i<buttons.length;i++) {
			var display = getCurrentStyle(buttons[i], "display");
			buttons[i].style.display = "none";
			buttons[i].style.display = display;
		}
	}
}


function toggleTable(button)
{
	var tbody = button.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("tbody")[0];
	var img = button.getElementsByTagName("img")[0];
	if (tbody && img) {
		if (img.getAttribute("alt") == "Hide") {
			img.setAttribute("alt", "View");
			img.setAttribute("src", img.getAttribute("src").replace(/hide\+/gi, "view+"));
			tbody.style.display = "none";
		} else {
			img.setAttribute("alt", "Hide");
			img.setAttribute("src", img.getAttribute("src").replace(/view\+/gi, "hide+"));
			tbody.style.display = getCurrentStyle(button.parentNode.parentNode.parentNode, "display");
		}
	}
	//IE bug fix
	if (typeof(document.fileCreatedDate) == "string") {
		var buttons = document.getElementsByTagName("button");
		for (var i=0;i<buttons.length;i++) {
			var display = getCurrentStyle(buttons[i], "display");
			buttons[i].style.display = "none";
			buttons[i].style.display = display;
		}
	}
}


/** showTooltip
*	Prints the current page and returns false to prevent link following
*	@returns bool (false)
*/
function showTooltip(divid, event, toshow)
{
	var tooltip = document.getElementById("ToolTip");
	if (tooltip == null) {
		tooltip = document.createElement("div");
		tooltip.setAttribute("id", "ToolTip");
		var arrow = document.createElement("div");
		arrow.className = "arrow";
		tooltip.appendChild(arrow);
		var content = document.createElement("div");
		tooltip.appendChild(content);
		document.getElementsByTagName("body")[0].appendChild(tooltip);
		//for IE
		if (typeof(document.fileCreatedDate) == "string") {
			var src = getCurrentStyle(arrow, "backgroundImage").match(/(url\(\"?)[^\"\)]*(?=\"?\))/gi);
			if (src && (src = src.toString().replace(/url\(\"?/gi, "")).match(/\balpha\-png\b/gi)) {
				arrow.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='crop')";
				arrow.style.backgroundImage = "none";
				arrow.style.background = "none";
			}
		}
		//\for IE
	}
	if (toshow) {
		try {
			tooltip.getElementsByTagName("div")[1].innerHTML = document.getElementById(divid).innerHTML;
			tooltip.style.top = document.documentElement.scrollTop + event.clientY - 24 + "px";
			tooltip.style.left = document.documentElement.scrollLeft + event.clientX + 20 + "px";
			tooltip.style.display = "block";
		} catch(e) {
			tooltip.style.display = "none";
		}
	} else {
		tooltip.style.display = "none";
	}
}


/** popUp
*	Pops up window with the link provided as parameter
*	returns false to prevent link following
*	@param	url	String
*	@returns bool (false)
*/
function popUp(url)
{
	if (window.open) {
		window.open(url, null, "directories=no,location=no,menubar=no,toolbar=no,width=770,height=600");
	}
	return false;
}


/** checkBoxList
*	event handler for onclick event for checkboxes with class="item-all"
*	@returns void
*/
function selectAll()
{
	var th = this.parentNode;
	var tr = th.parentNode;
	var num = 0;
	var col = 0;
	var THs = tr.getElementsByTagName("th");
	for (num = 0; num < THs.length; num++) {
		col += (THs[num].getAttribute("colspan"))?THs[num].getAttribute("colspan")*1:1;
		if (THs[num] == th) break;
	}

	var TRs = tr.parentNode.parentNode.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
	for (var i = 0; i < TRs.length; i++) {
		try {
			var TDs = TRs[i].getElementsByTagName("td");
			var rowcol = 0;
			for (var j = 0; j < TDs.length; j++) {
				rowcol += (TDs[j].getAttribute("colspan"))?TDs[j].getAttribute("colspan")*1:1;
				if (rowcol == col) break;
			}
			TDs[j].getElementsByTagName("input")[0].checked = this.checked;
		} catch(e){}
	}
}


/** checkBoxList
*	event handler for onclick event for checkboxes with class="item"
*	@returns void
*/
function checkBoxList()
{
	var td = this.parentNode;
	var tr = td.parentNode;
	var num = 0;
	var col = 0;
	var TDs = tr.getElementsByTagName("td");
	for (num = 0; num < TDs.length; num++) {
		col += (TDs[num].getAttribute("colspan"))?TDs[num].getAttribute("colspan")*1:1;
		if (TDs[num] == td) break;
	}

	var allchecked = true;
	var allunchecked = false;
	var TRs = tr.parentNode.parentNode.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
	for (var i = 0; i < TRs.length; i++) {
		try {
			var TDs = TRs[i].getElementsByTagName("td");
			var rowcol = 0;
			for (var j = 0; j < TDs.length; j++) {
				rowcol += (TDs[j].getAttribute("colspan"))?TDs[j].getAttribute("colspan")*1:1;
				if (rowcol == col) break;
			}
			var ischecked = TDs[j].getElementsByTagName("input")[0].checked;
			allchecked = (allchecked && ischecked);
			allunchecked = (allunchecked || !ischecked);
		} catch(e){}
	}
	if (allchecked || allunchecked) {
		try {
			var TRs = tr.parentNode.parentNode.getElementsByTagName("thead")[0].getElementsByTagName("tr");
			for (var i = 0; i < TRs.length; i++) {
				var THs = TRs[i].getElementsByTagName("th");
				var rowcol = 0;
				for (var j = 0; j < THs.length; j++) {
					rowcol += (THs[j].getAttribute("colspan"))?THs[j].getAttribute("colspan")*1:1;
					if (rowcol == col) break;
				}
				THs[j].getElementsByTagName("input")[0].checked = (allchecked || !allunchecked);
			}
		} catch(e){}
	}
}


/** validateMobileNumber
*	Check if the value of the input parameter is valid mobile number
*	@param	input	string or object	input element or it's ID
*	@returns bool
*/
function validateMobileNumber(input)
{
	if (typeof input == "string") {
		input = document.getElementById(input);
	}
	if (!input) return false;
	return (!!input.value.match(/^\d{7,15}$/i) && parseInt(input.value) > 0);
}


/** printPage
*	Prints the current page and returns false to prevent link following
*	@returns bool (false)
*/
function printPage()
{
	window.print();
	return false;
}


/** savelogin
*	save login details into cookie
*	should be on submit for form
*	@returns true
*/
function savelogin()
{
	var cb_save = document.getElementById("rememberlogin");
	var in_login = document.getElementById("login");
	var top_login = document.getElementById("top_login");
	if ((cb_save && cb_save.checked && in_login) || top_login) {
		var value = (in_login)?in_login.value:top_login.value;
		document.cookie = "login=" + value + "; path=/";
	} else {
		document.cookie = "login=; path=/";
	}
	return true;
}


/** onlogincreated
*	read login value from cookies and set on form submit event handler
*	should be called when login is already created
*	@returns void
*/
function onlogincreated()
{
	var cook = document.cookie;
	var in_login = document.getElementById("login");
	var top_login = document.getElementById("top_login");
	var top_password = document.getElementById("top_password");
	var cb_save = document.getElementById("rememberlogin");
	var login = cook.match(/login\=[^;]*(;|$)/gi);
	if (login) {
		login = login.toString().replace(/(login\=|;)/gi, "");
	}
	var form = null;
	if (in_login || top_login) {
		if (in_login) {
			if (login) {
				in_login.value = login;
				cb_save.checked = true;
			}
			form = in_login.parentNode;
		} else {
			if (login) {
				top_login.value = login;
			}
			form = top_login.parentNode;
		}
		while (!form.tagName.match(/(form|html)/gi)) {
			form = form.parentNode;
		}
		form.onsubmit = savelogin;
	}

	if (top_login) {
		top_login.onfocus =	topLoginFocus;
		top_login.onblur =	topLoginBlur;
		top_login.oldvalue =	"Mobile No";
	}
	if (top_password) {
		top_password.onfocus =	topPasswordFocus;
		top_password.onblur =	topPasswordBlur;
		top_password.oldvalue =	"Password";
	}
}


/** topLoginFocus
*	onfocus event handler for top-login field
*/
function topLoginFocus()
{
	if (this.value == this.oldvalue) this.value = "";
}


/** topLoginBlur
*	onblur event handler for top-login field
*/
function topLoginBlur()
{
	if (this.value.replace(/\s*/gi, "") == "") this.value = this.oldvalue;
}


/** topPasswordFocus
*	onfocus event handler for top-password field
*/
function topPasswordFocus()
{
	if (this.value == this.oldvalue) {
		this.value = "";
		if (typeof(window.print) == "object") {
			var pswd = document.createElement("input");
			pswd.type = "password";
			pswd.onfocus = topPasswordFocus;
			pswd.onblur = topPasswordBlur;
			pswd.oldvalue = this.oldvalue;
			var id = this.id;
			this.id += 1;
			pswd.id = id;
			this.parentNode.replaceChild(pswd, this);
			setTimeout("document.getElementById('" + id + "').focus()", 5);
		} else {
			this.type = "password";
		}
	}
}


/** topPasswordBlur
*	onblur event handler for top-password field
*/
function topPasswordBlur()
{
	if (this.value.replace(/\s*/gi, "") == "") {
		this.value = this.oldvalue;
		if (typeof(window.print) == "object") {
			var pswd = document.createElement("input");
			pswd.type = "text";
			pswd.onfocus = topPasswordFocus;
			pswd.onblur = topPasswordBlur;
			pswd.oldvalue = this.oldvalue;
			var id = this.id;
			this.id += 1;
			pswd.id = id;
			this.parentNode.replaceChild(pswd, this);
			pswd.value = pswd.oldvalue;
		} else {
			this.type = "text";
		}
	}
}


/** checklogin
*	runs every millisecond until login field will be created
*	terminates in init function
*	@returns void
*/
function checklogin()
{
	if (document.getElementById("login") || document.getElementById("top_login")) {
		onlogincreated();
	} else {
		timer_login = setTimeout(checklogin, 1);
	}
}


/** checkloaded
*	runs every millisecond until down logo will be created
*	terminates in init function
*	@returns void
*/
function checkloaded()
{
	if (document.getElementById("down-logo")) {
		init();
	} else {
		timer_loaded = setTimeout(checkloaded, 1);
	}
}


/** setUpDoubleLists
*	runs once in initgeneral to initialise double lists if they are exists
*	@returns void
*/
function setUpDoubleLists()
{
	var l = 1;
	var from_list = document.getElementById("list-from-" + l);
	while (from_list) {
		var to_list = document.getElementById("list-to-" + l);
		var from_but = document.getElementById("button-from-" + l);
		var to_but = document.getElementById("button-to-" + l);
		var hid_list = document.getElementById("list-hidden-" + l);
		if (to_list && from_but && to_but && hid_list) {
			from_list.ondblclick = listsMoveFrom2To;
			from_but.onclick = listsMoveFrom2To;
			to_list.ondblclick = listsMoveTo2From;
			to_but.onclick = listsMoveTo2From;

			while (hid_list.options.length) {
				hid_list.options[0] = null;
			}
			for (var i = 0; i < to_list.options.length; i++) {
				hid_list.options[hid_list.options.length] = new Option(to_list.options[i].text, to_list.options[i].value, true, true);
			}
		}
		l++;
		from_list = document.getElementById("list-from-" + l);
	}
}


Array.prototype.sortOptions = function()
{
	this.sort(function(a, b){
		if (a.text < b.text) return -1;
		if (a.text > b.text) return 1;
		return 0;
	});
}


/** listsMoveFrom2To
*	event handler for double lists to move items from “list-from-#” to “list-to-#”
*	@returns void
*/
function listsMoveFrom2To()
{
	var id = this.id.replace(/[^\d]*/gi, "");
	var from_list = document.getElementById("list-from-" + id);
	var to_list = document.getElementById("list-to-" + id);
	for (var i = 0; i < from_list.options.length; i++) {
		if (to_list.options.length == to_list.getAttribute("size")) {
			break;
		}
		if (from_list.options[i].selected) {
			to_list.options[to_list.options.length] = new Option(from_list.options[i].text, from_list.options[i].value, false, false);
			from_list.options[i] = null;
			i--;
		}
	}

	var nodes = Array();
	for (var i = 0; i < to_list.options.length; i++) {
		nodes[i] = {text : to_list.options[i].text, value : to_list.options[i].value};
	}
	nodes.sortOptions();
	for (var i = 0; i < to_list.options.length; i++) {
		to_list.options[i].text = nodes[i].text;
		to_list.options[i].value = nodes[i].value;
	}

	var hid_list = document.getElementById("list-hidden-" + id);
	while (hid_list.options.length) {
		hid_list.options[0] = null;
	}
	for (var i = 0; i < to_list.options.length; i++) {
		hid_list.options[hid_list.options.length] = new Option(to_list.options[i].text, to_list.options[i].value, true, true);
	}
}


/** listsMoveTo2From
*	event handler for double lists to move items from “list-to-#” to “list-from-#”
*	@returns void
*/
function listsMoveTo2From()
{
	var id = this.id.replace(/[^\d]*/gi, "");
	var from_list = document.getElementById("list-from-" + id);
	var to_list = document.getElementById("list-to-" + id);
	for (var i = 0; i < to_list.options.length; i++) {
		if (from_list.options.length == from_list.getAttribute("size")) {
			break;
		}
		if (to_list.options[i].selected) {
			from_list.options[from_list.options.length] = new Option(to_list.options[i].text, to_list.options[i].value, false, false);
			to_list.options[i] = null;
			i--;
		}
	}

	var nodes = Array();
	for (var i = 0; i < from_list.options.length; i++) {
		nodes[i] = {text : from_list.options[i].text, value : from_list.options[i].value};
	}
	nodes.sortOptions();
	for (var i = 0; i < from_list.options.length; i++) {
		from_list.options[i].text = nodes[i].text;
		from_list.options[i].value = nodes[i].value;
	}

	var hid_list = document.getElementById("list-hidden-" + id);
	while (hid_list.options.length) {
		hid_list.options[0] = null;
	}
	for (var i = 0; i < to_list.options.length; i++) {
		hid_list.options[hid_list.options.length] = new Option(to_list.options[i].text, to_list.options[i].value, true, true);
	}
}


/** goTo
*	help function to go to URL
*	@param	url		url to go
*	@param	noreturn		if true, disables back button. default true;
*
*	@returns void
*/
function goTo(url, noreturn)
{
	if (noreturn) {
		document.location.href.replace(url);
	} else {
		document.location.href = url;
	}
}


/* initialisation */


window.onload = init;


var timer_login = setTimeout(checklogin, 1);
var timer_loaded = setTimeout(checkloaded, 1);
