// Manifesto: $Id: library.js,v 1.28 2008/02/21 14:21:46 spud Exp $
// license: GNU LGPL
// copyright 2001-2008: dada typo and contributors

function isEmpty(s) { return ((s == null) || (s.length == 0)) }
function isWhitespace(s) {
	if (isEmpty(s)) return true;
	if (s == "\t") return true;
	if (s == "\n") return true;
	if (s == "\r") return true;
	return false;
}
function hasWhitespace(s) {
	var i;
	var whitespace = " \t\n\r";
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (whitespace.indexOf(c) != -1) return true;
	}
	return false;
}
function cleanname(s) {
	// strips out shell metacharacters and forces name to lowercase
	s = decodeURI(s);
	s = s.replace(/[;\/%~,&#{}'"$]/,"");
	s = s.replace(" ","_");
	if (s.indexOf(".") == 0) {
		s = s.substr(1);
	}
	return s.toLowerCase();
}
function isValidEmail(str) {
	var emailpat = /^[\w\.]+@[\w\.]+\.?[\w\.]?\.\w{2,4}/;
	if (emailpat.test(str)) {
		return true;
	} else {
		return false;
	}
}
function inArray(arr,item) {
	if (typeof arr != "object") return false;
	for(var i=0;i<arr.length;i++) {
		if (arr[i] == item) return true;
	}
}
function get_subdir(form) {
	var fname = form.filename.value;
	var num = 0;
	for (var x = 0; x < fname.length; x++) {
		num += fname.charCodeAt(x);
	}
	var total = num % 13 + 1;
	showSheet("Subdirectory for " + fname + " should be "  + total);
	return false;
}
function newWin(url) {
	if (arguments.length > 1) {
		var height = arguments[1];
		var width = arguments[2];
	} else {
		var height = 400;
		var width = 400;
	}
	if (arguments.length == 4) {
		window.open(url,'New','top=80,left=80,width='+width+',height='+height+','+arguments[3]);
	} else {
		window.open(url,'New','top=80,left=80,width='+width+',height='+height+',toolbar=no,menubar=no,scrollbars=yes');
	}
	return false;
}
function calpop(ext) {
	return newWin(js_g_url+"calpop.php?ext="+ext,200,260);
}
function blackout() {
	var b = document.body;
	var z = dtDOM.buildElement("DIV","blackout");
	dtDOM.setStyle(z,"background","transparent url(/images/whiteout.png) top left repeat");
	dtDOM.setStyle(z,"position","fixed");
	dtDOM.setStyle(z,"top","0");
	dtDOM.setStyle(z,"left","0");
	dtDOM.setStyle(z,"height","100%");
	dtDOM.setStyle(z,"width","100%");
	dtDOM.setStyle(z,"textAlign","center");
	dtDOM.setStyle(z,"verticalAlign","middle");
	dtDOM.setStyle(z,"zIndex","200");
	dtDOM.setHandler(z,"onclick","this.parentNode.removeChild(this)");
	return b.appendChild(z);
}
function unblackout() {
	var z = getObjectRef("blackout");
	z.parentNode.removeChild(z);
}
function zoomImage(url,h,w) {
	var z;
	z = blackout();
	var zinner = dtDOM.buildElement("DIV","zoomDiv");
	dtDOM.setStyle(zinner,"backgroundColor","#ffffff");
	dtDOM.setStyle(zinner,"height",(h+20)+"px");
	dtDOM.setStyle(zinner,"width",(w+20)+"px");
	dtDOM.setStyle(zinner,"textAlign","center");
	dtDOM.setStyle(zinner,"verticalAlign","middle");
	if (dtDOM.isMSIE) {
		var zheight = (document.body.parentNode.clientHeight - h - 20)/2;
	} else {
		var zheight = (window.innerHeight - h - 20)/2;
	}
	dtDOM.setStyle(zinner,"margin", zheight+"px auto");
	var zimg = dtDOM.buildElement("IMG","zoomImage",{ "src": url , "alt": "Full-Size Image" });
	dtDOM.setStyle(zimg,"margin","10px");
	dtDOM.setStyle(zimg,"maxWidth",w+"px");
	dtDOM.setStyle(zimg,"maxHeight",h+"px");
	zinner.appendChild(zimg);
	z.appendChild(zinner);
	return false;
}
function showSheet(text,alerttype) {
	//blackout();
	var sheet,sheettext;
	sheet = getObjectRef("sheet");
	sheettext = getObjectRef("sheettext");
	sheettext.innerHTML = "";
	if (alerttype) {
		var b = dtDOM.buildElement("DIV");
		dtDOM.setStyle(b,{"color":"#990000","font-weight":"bold","margin-bottom":"10px"});
		switch(alerttype) {
			case "form validation":
				b.appendChild(document.createTextNode("Form Validation Error"));
				break;
			case "error":
				b.appendChild(document.createTextNode("Error"));
				break;
			case "ajax":
				b.appendChild(document.createTextNode("Remote Lookup Error"));
				break;
			case "help":
				b.appendChild(document.createTextNode("Help"));
				break;
		}
		sheettext.appendChild(b);
	}
	if (typeof text == "object") { // for arrays
		var txt = "";
		for(var i=0;i<text.length;i++) {
			txt += text[i] + "<br />";
		}
		sheettext.innerHTML = txt;
	} else {
		sheettext.innerHTML = text;
	}
	if (dtDOM.getStyle(sheet,"display") == "none") {
		var slider = new SlideObj();
		slider.slide(sheet,10,10);
	}
	return false;
}
function hideSheet() {
	var sheet;
	sheet = getObjectRef("sheet");
	dtDOM.slide(sheet,10,10);
	return false;
}
function toggleDisc(imgref) {
	if (typeof imgref == "string") imgref = getObjectRef(imgref);
	if (imgref) {
		if (imgref.src == js_g_url+'images/default/icons/disclosure_right.gif') {
			imgref.src = js_g_url+'images/default/icons/disclosure_down.gif'
		} else {
			imgref.src = js_g_url+'images/default/icons/disclosure_right.gif'
		}
	}
}
menuactive = 0;
timeOn = null;
m = null;
function showMenu() {
	var obj = getObjectRef(m);
	// hide all the other menus now
	var navrow = obj.parentNode.parentNode;
	var childdivs = navrow.getElementsByTagName('div');
	for(var i=0;i<childdivs.length;i++) {
		if (childdivs[i].className.indexOf('dhtmlmenu') != -1) {
			childdivs[i].style.display = 'none';
		}
	}
	if (timeOn != null) {
		clearTimeout(timeOn);
		hideMenu();
	}
	obj.style.display = 'block';
	return false;
}
function hideMenu() {
	if (menuactive == 0) {
		var obj = getObjectRef(m);
		obj.style.display = 'none';
	}
	return false;
}
function menuMouseOver(obj) {
	clearTimeout(timeOn);
	menuactive = 1;
}
function menuMouseOut(obj) {
	menuactive = 0;
	setTimeout('hideMenu()', 400)
}
function setTimer() {
 timeOn = setTimeout('timedOut()',800)
}
function timedOut() {
	hideMenu();
}
