// Manifesto: $Id: library.js,v 1.33 2008/05/24 22:57:23 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;
}
// pops up File Upload handler window
function quickUpload(fieldid) {
	window.open("","UploadWindow","top=80,left=80,width=670,height=400,toolbar=no,menubar=no,scrollbars=yes");
	var obj = getObjectRef(fieldid);
	var form = obj.form;
	dtDOM.setAttr(form,"action",js_g_url+"_media_browser.php");
	dtDOM.setAttr(form,"target","UploadWindow");
	form.submit();
	return false;
}
function addExistingUpload(i) {
	// find "newmediaupload" row, build a new row, and do an insertBefore()
	var addrow = getObjectRef("newmediaupload");
	var t_tr = dtDOM.buildElement("TR");
	var t_td1 = dtDOM.buildElement("TD",false,{ "class": "formfield" });
	t_td1.appendChild(document.createTextNode("<? echo _('Existing Media'); ?>"));
	t_tr.appendChild(t_td1);
	var t_td2 = dtDOM.buildElement("TD",false,{ "class": "forminput" });
	t_div = dtDOM.buildElement("DIV",false,{"class":"existing_media"});
	t_div1 = dtDOM.buildElement("DIV",false,{"class":"existing_media_thumb"});
	dtDOM.setStyle(t_div1,{"float":"left","width":"150px"});
	t_filename = document.createTextNode(i.filename)
	t_a = dtDOM.buildLinkElement("#",t_filename,{"onclick":"return newWin('"+js_g_url+"_media_browser.php?m="+i.hashid+"',400,670);","onmouseover":"showThumb(this,'"+i.src+"');","onmouseout":"hideThumb();"});
	t_div1.appendChild(t_a);
	t_div.appendChild(t_div1);
	t_div2 = dtDOM.buildElement("DIV",false,{"class":"existing_media_data"});
	t_b = dtDOM.buildElement("B");
	t_b.appendChild(document.createTextNode("#media_"+i.hashid+"#"));
	t_a2 = dtDOM.buildLinkElement("#",t_b,{"onclick":"return newWin('"+js_g_url+"_media_browser.php?m="+i.hashid+"',400,670);"});
	t_input = dtDOM.buildInputElement("checkbox","delete_media[]","delete_media_"+i.hashid,i.hashid);
	t_inputtext = document.createTextNode("<? echo _('Delete'); ?>");
	t_div2.appendChild(t_a2);
	t_div2.appendChild(t_input);
	t_div2.appendChild(t_inputtext);
	t_div.appendChild(t_div2);
	t_td2.appendChild(t_div);
	t_tr.appendChild(t_td2);
	addrow.parentNode.insertBefore(t_tr,addrow);
	var hashfield = getObjectRef("hash_media");
	if (hashfield.value == "") {
		hashfield.value = i.hashid;
	} else {
		hashfield.value += ","+i.hashid;
	}
	dtDOM.setAttr("userfile","value","");
}
// quick thumbnail viewer for images
function showThumb(target,src) {
	if (target.nodeName == "A") {
		var div = dtDOM.buildElement("DIV","thumbpop");
		dtDOM.setStyle(div,{"background-color":"#ffffff","border":"1px solid #999999","padding":"5px","position":"absolute","bottom":"20px","left":"20px","zIndex":100});
		var newimg = dtDOM.buildElement("IMG",false,{"src":src,"alt":src});
		div.appendChild(newimg);
		dtDOM.setStyle(target.parentNode,"position","relative");
		target.parentNode.appendChild(div);
	}
}
// hide thumbnail viewer
function hideThumb() {
	var obj;
	if (obj = getObjectRef("thumbpop")) {
		obj.parentNode.removeChild(obj);
	}
}
// pops up Date Selector handler window
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+40)+"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);
	var zcloser = dtDOM.buildElement("DIV");
	dtDOM.setStyle(zcloser,"color","#aaaaaa");
	dtDOM.setStyle(zcloser,"fontSize","14px");
	zcloser.appendChild(document.createTextNode('CLICK ANYWHERE TO CLOSE'));
	zinner.appendChild(zcloser);
	z.appendChild(zinner);
	return false;
}
function showSheet(text,alerttype) {
	//blackout();
	var sheet,sheettext;
	var autohide = 4000;
	sheet = getObjectRef("sheet");
	sheettext = getObjectRef("sheettext");
	sheettext.innerHTML = "";
	if (arguments.length == 3) {
		autohide = arguments[2];
	}
	if (alerttype) {
		var b = dtDOM.buildElement("DIV");
		dtDOM.setStyle(b,{"color":"#990000","font-weight":"bold","margin-bottom":"10px"});
		switch(alerttype) {
			case "form validation":
				dtDOM.setStyle(sheet,"backgroundColor","#990000");
				dtDOM.setStyle(sheet,"color","#ffffff");
				b.appendChild(document.createTextNode("Form Validation Error"));
				break;
			case "error":
				dtDOM.setStyle(sheet,"backgroundColor","#990000");
				dtDOM.setStyle(sheet,"color","#ffffff");
				b.appendChild(document.createTextNode("Error"));
				break;
			case "ajax":
				dtDOM.setStyle(sheet,"backgroundColor","#990000");
				dtDOM.setStyle(sheet,"color","#ffffff");
				b.appendChild(document.createTextNode("Remote Lookup Error"));
				break;
			case "info":
				dtDOM.setStyle(sheet,"backgroundColor","#009900");
				dtDOM.setStyle(sheet,"color","#ffffff");
				b.appendChild(document.createTextNode("Help"));
				break;
			case "help":
				autohide = 0;
				dtDOM.setStyle(sheet,"backgroundColor","#ffff99");
				dtDOM.setStyle(sheet,"color","#000000");
				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);
		if (autohide) setTimeout("hideSheet()",autohide);
	}
	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'
		}
	}
}
var dtAddLoadEvent = function(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		};
	}
};
// fix this stuff below someday!
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();
}
