//Execute command or redirect to url upon an OK click from the confirm function
function msgOk(my_cmd) {
    Page.Message.close();
    if (my_cmd.indexOf("(") != -1) //This is a JS command
        eval(my_cmd);
    else                        //Assume this is an url
        location.href=my_cmd;
}

//Confirm dialog function
function myConfirm(string,my_cmd) {
     Page.Message.setTitle(lang['user/settings_confirm']);
     Page.Message.setHeader(lang['user/settings_confirm']);
     Page.Message.addBodyText(string);
     Page.Message.addButton(lang['user/settings_cancel'],"Page.Message.close()");
     Page.Message.addButton(lang['user/settings_ok'],"msgOk('"+my_cmd.replace(/'/g,"\\'")+"')");
     Page.Message.open();
}

function myAlert(msg) {
    Page.Message.setTitle(lang['user/settings_error']);
    Page.Message.setHeader(lang['user/settings_error']);
    Page.Message.addBodyText(msg);
    Page.Message.open('error');
}

function addEvent(poElm,psEvt,psFunc)
{
	if ( typeof poElm.addEventListener != "undefined" )
  	poElm.addEventListener( psEvt, eval(psFunc), false );
	else if ( typeof poElm.attachEvent != "undefined" )
		poElm.attachEvent( "on"+psEvt, eval(psFunc));
	else {
		var oldEvent = eval("poElm.on" + psEvt);
		if(oldEvent) {
			var evalString = "window.onload = function (event) {" +	"oldEvent(event); " + psFunc + "(event); };";
			eval(evalString);
   	}
   	else {
    	eval("poElm.on" + psEvt + "=" + psFunc +";");
		}
	}
}
function getOffsetX(obj)
	{
		var currentX = 0;
		while (obj.offsetParent)
		{
			currentX += obj.offsetLeft;
			obj = obj.offsetParent;
		}
		return currentX;
	}
	
function getOffsetY(obj)
	{
		var currentY = 0;
		while(obj.offsetParent)	{
			currentY += obj.offsetTop
			obj = obj.offsetParent;
		}
		return currentY;
	}


function contains(poElm1, poElm2)
{
	if(poElm2) {
		while(poElm2.parentNode) {
			if((poElm2 = poElm2.parentNode) == poElm1)
				return true;
		}
		return false;
	}
	else {
		return false;
	}
}



// hold a reference to current shown menu
var currentMenu = null;
var menuClose = false;

function toggleMenu(menuId, posObj) {
	if (currentMenu && currentMenu.id == menuId) {
		hideMenu();
	} else {
		showMenu(menuId, posObj);
	}
}

// obj: element clicked to show menu
// id: id of the menu div to be shown
function showMenu(menuId, posObj) {
	if (menuClose) {
		window.clearTimeout(menuClose);
	}

	var menu = document.getElementById(menuId);
	if (menu) {
		if (currentMenu!=menu) {
			hideMenu(currentMenu);
		}
		if (posObj) {
			menu.style.top = getOffsetY(posObj) + posObj.offsetHeight;
			menu.style.left = getOffsetX(posObj);
			if (document.body.parentNode.offsetHeight) {
    			var h = Math.min(menu.offsetHeight, .9 * document.body.parentNode.offsetHeight);
    			if (menu.offsetHeight > h + 10) {
			        menu.style.height = h;
			        menu.style.width = menu.offsetWidth + 20;
		        }
		    }
		    menu.style.width = Math.min(menu.offsetWidth, 300);
		}
		menu.style.visibility = "visible";
		currentMenu = menu;
	}
}

function hideMenu() {
	if (currentMenu) {
		if (menuClose) {
			window.clearTimeout(menuClose);
		}
		menuClose = window.setTimeout(function() {
			if (currentMenu) {
				currentMenu.style.visibility = "hidden";
				currentMenu = null;
			}
		}, 200);
	}
}

function hideAll(event) {
	current = (window.event) ? window.event.srcElement : event.target;
	if(currentMenu && !contains(document.getElementById("topmenu"), current)) {
		hideMenu(currentMenu);
	}
}



addEvent(document,"click","hideAll");

/*Skin-skifter*/
function skinChange(obj) {
	document.getElementById('skin').href = StaticRoot + '/layout/puma/skins/' + obj.options[obj.selectedIndex].value + '/skin.css'
}

var skins = Array("silver", "olive", "blue");
var skinnames = Array("Silver", "Olive", "Blue");
var colors = Array("6699CC 336699 FFFFFF", "999999 666666 FFFFFF", "669966 336633 FFFFFF", "FF9900 CC3300 FFFFFF", "CC0000 999999 FFFFFF", "CCCCCC 000099 FFFFFF");
var colornames_en = Array("Easy blue", "Grim gray", "Garden green", "Flippy orange", "Red", "Light gray");
var colornames_da = Array("Blå", "Grå", "Grøn", "Orange", "Rød", "Lysegrå");
function drawOptions(choices, names, selected) {
	for (var i=0;i < choices.length; i++) {
		document.write('<option value="' + choices[i] + '"')
		if (choices[i] == selected) document.write(' selected')
		document.write('>' + names[i] + '</option>')
	}
}

// Til js-menu - Jakob skal rydde op herunder :)

var is
is = new browserHandling()
function browserHandling(){
	// declared =/
	this.IE = 0
	this.NS = 0
	this.element = (document.getElementById) ? 1 : 0
	this.NSapp = (navigator.appName == "Netscape") ? 1 : 0
	this.IEapp = (navigator.appName == "Microsoft Internet Explorer") ? 1 : 0
	this.OPERAapp = (navigator.userAgent.indexOf("Opera") != -1)
	this.MAC = (navigator.userAgent.toLowerCase().indexOf("mac") != -1)
	this.WIN = (navigator.userAgent.toLowerCase().indexOf("windows") != -1)
	this.appver = navigator.appVersion
	if (this.IEapp)
		this.IE = (document.all) ? 1 : 0
	else if (this.NSapp && !this.element)
		this.NS = (document.layers) ? 1 : 0
	if (this.NSapp)
		this.version = parseFloat(this.appver)
	else
		this.version = parseFloat(this.appver.substr(this.appver.indexOf("MSIE") + 5, 3))
}

//getElementByID
function getEle(id){
	if(is.NS) 
		return document.layers[id]
	else if (is.element)
		return document.getElementById(id)
	else if (is.IE)
		return document.all[id]
	else
		return -1
}
function toggleFolder(div, id) {
	if(!div) return
	//cookie is comma-seperated list of folder ids
	var arr = /openfolders=([^;]*)/g.exec(document.cookie)
	//add a space in each end
	var openfolders = arr ? ',' + unescape(arr[1]) + ',' : ','

	if(div.className.indexOf('tree-folder-closed') != -1) {
		div.className = div.className.replace(/ tree-folder-closed/, '');
		openfolders += id + ','
	}else{
		div.className += ' tree-folder-closed';
		openfolders=openfolders.replace(new RegExp(',' + id + ',', 'g'), ',')
	}
	document.cookie = 'openfolders=' + escape(openfolders.substring(1, openfolders.length - 1))
}
function createFolder() {
	var s = prompt(lang_create, lang_default_name);
	if (s) {
		location.href = 'do.php?action=folder_create&folder_id=' + folder_id + 
			'&name=' + escape(s);
	}
}
function renameFolder() {
	var s = prompt(lang_rename, folder_name);
	if (s) {
		location.href = 'do.php?action=folder_rename&folder_id=' + folder_id + 
			'&name=' + escape(s);
	}
}
function deleteFolder() {
	if (is_empty) {
		myConfirm(    lang_delete_confirm + " '" + folder_name + "'?",
                    "do.php?action=folder_delete&folder_id=" + folder_id 
                );	
	} else {
		myAlert(lang_not_empty);
	}
}



//Toggle description layer
function toggleLayer(desc, id){
	getEle("groupdesc").value = desc;
	getEle("groupdescForm").id.value = id;
}

//cookies
function getCookie(name){
  var cname = name + "=";
  var dc = document.cookie;
  if (dc.length > 0) {
    var begin = dc.indexOf(cname);
    if (begin != -1) {
      begin += cname.length;
      end = dc.indexOf(";", begin);
      if (end == -1) end = dc.length;
        return unescape(dc.substring(begin, end));
    }
  }
  return null;
}

 function setCookie(name, value, expires, path, domain, secure) {
                document.cookie = name + "=" + escape(value) +
                ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
                ((path == null) ? "" : "; path=" + path) +
                ((domain == null) ? "" : "; domain=" + domain) +
                ((secure == null) ? "" : "; secure");
 }

function trim(s) {
	return s.replace(/^\s+|\s+$/g, '');
}
String.prototype.trim = function() { return trim(this) };

function displayInputError(input, msg) {
	input.focus();
	input.select();
	myAlert(lang[msg]);
	window.setTimeout(function() { input.focus(); }, 1);
}

function validateEmail(s) {
	var re = /^[\w.-]+@([\w.-]+\.)+([a-z]{2}|com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/i;
	return re.test(s);
}

function validateEmailInput(input, required) {
	input.value = trim(input.value);
	var ok = (input.value.length == 0 && !required) || validateEmail(input.value);
	if (!ok) {
		displayInputError(input, 'general/alert_invalid-email');
	}
	return ok;
}

function validateUrlInput(input) {
	input.value = trim(input.value);
	var ok;
	if (input.value.length > 0) {
		var url = input.value;

		//add missing http:// if input looks remotely like an URL
		var noProto = /^(\w+\.)+[a-z]{2,}/;
		if (noProto.test(url)) {
			url = 'http://' + url;
		}

		var re = /^(((http|https|ftp|telnet):\/\/(\w+(:\w+)?@)?([\w-]+\.)*[\w-]+\/?|(file|gopher|mailto|news):)[^\s]*|javascript:.*)$/i;
		ok = re.test(url);
		if (ok) {
			input.value = url;
		} else {
			displayInputError(input, 'general/alert_invalid-url');
		}
	} else {
		ok = true;
	}
	return ok;
}

function validateNick(nick) {
	var re = /^[a-z0-9](|[a-z0-9-]*[a-z0-9])$/i;
	return re.test(nick);
}

function validateNickInput(input, required) {
	input.value = trim(input.value);
	var ok = (input.value.length == 0 && !required) || validateNick(input.value);
	if (!ok) {
		displayInputError(input, 'general/alert_invalid-nick');
	}
	return ok;
}

