// Manifesto: $Id: library.js,v 1.45 2009/03/26 20:37:05 spud Exp $
// license: GNU LGPL
// copyright 2001-2008: dada typo and contributors

// Attach the default window.onload script for Manifesto
dtDOM.addEvent(window,"load",pageLoaded);

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 randomNumber(max) {
	return Math.round(Math.random() * max);
}
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(/[;\/%~,&#{}'"$]/g,"");
	s = s.replace(/ /g,"-");
	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 inDeepArray(arr,prop,val) {
	if (typeof arr != "object") return false;
	for(var i=0;i<arr.length;i++) {
		if (arr[i][prop] == val) return i;
	}
	return false;
}
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 newWindow(url) {
	if (url != "") {
		window.open(url,'External');
	}
	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;
	var oldaction = dtDOM.getAttr(form,"action");
	dtDOM.setAttr(form,"action",js_g_url+"_media_browser.php");
	dtDOM.setAttr(form,"target","UploadWindow");
	form.submit();
	dtDOM.setAttr(form,"action",oldaction);
	dtDOM.removeAttr(form,"target");
	return false;
}
function addExistingUpload(i) {
	// find "newmediaupload" row, build a new row, and do an insertBefore()
	var check = getObjectRef("existing_media_"+i.hashid);
	if (!check) {
		var addrow = getObjectRef("newmediaupload");
		var t_tr = dtDOM.buildElement("TR");
		var t_td1 = dtDOM.buildElement("TD",false,{ "class": "formfield" });
		t_td1.appendChild(document.createTextNode("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("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,win_h,win_w,max_h,max_w,final_h,final_w;
	if (dtDOM.isMSIE) {
		win_h = document.body.parentNode.clientHeight;
		win_w = document.body.parentNode.clientWidth;
	} else {
		win_h = window.innerHeight;
		win_w = window.innerWidth;
	}
	max_h = win_h - 150;
	max_w = win_w - 200;
	if (h <= max_h && w <= max_w) {
		final_h = h;
		final_w = w;
	} else {
		if (h > max_h) {
			final_h = max_h;
			// reduce width by same proportion
			w = w * (max_h/h);
		} else {
			final_h = h;
		}
		if (w > max_w) {
			final_w = max_w;
			final_h = final_h * (max_w/w);
		} else {
			final_w = w;
		}
	}
	z = blackout();
	var zinner = dtDOM.buildElement("DIV","zoomDiv");
	dtDOM.setStyle(zinner,"backgroundColor","#ffffff");
	dtDOM.setStyle(zinner,"height",(final_h+50)+"px");
	dtDOM.setStyle(zinner,"width",(final_w+20)+"px");
	dtDOM.setStyle(zinner,"textAlign","center");
	dtDOM.setStyle(zinner,"verticalAlign","middle");
	dtDOM.setStyle(zinner,"margin", "20px auto");
	var zimg = dtDOM.buildElement("IMG","zoomImage",{ "src": url , "alt": "Full-Size Image" });
	dtDOM.setStyle(zimg,{"margin":"10px","maxHeight":final_h+"px","maxWidth":final_w+"px"});
	zinner.appendChild(zimg);
	var zcloser = dtDOM.buildElement("DIV");
	dtDOM.setStyle(zcloser,{"color":"#000000","fontSize":"12px","textAlign":"left"});
	var closeimg = dtDOM.buildElement("IMG","closeImage",{ "src": "/images/default/icons/closebox.gif" , "alt": "Close", "height": "12px", "width": "12px" });
	dtDOM.setStyle(closeimg,{"margin": "0 6px 0 10px"});
	zcloser.appendChild(closeimg);
	zcloser.appendChild(document.createTextNode('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","fontWeight":"bold","marginBottom":"3px"});
		switch(alerttype) {
			case "form validation":
				dtDOM.setStyle(sheet,"backgroundColor","#990000");
				dtDOM.setStyle(sheet,"color","#ffffff");
				dtDOM.setStyle(b,"color","#000000");
				b.appendChild(document.createTextNode("Form Validation Error"));
				break;
			case "error":
				dtDOM.setStyle(sheet,"backgroundColor","#990000");
				dtDOM.setStyle(sheet,"color","#ffffff");
				dtDOM.setStyle(b,"color","#000000");
				b.appendChild(document.createTextNode("Error"));
				break;
			case "ajax":
				dtDOM.setStyle(sheet,"backgroundColor","#990000");
				dtDOM.setStyle(sheet,"color","#ffffff");
				dtDOM.setStyle(b,"color","#000000");
				b.appendChild(document.createTextNode("Remote Lookup Error"));
				break;
			case "info":
				dtDOM.setStyle(sheet,"backgroundColor","#009900");
				dtDOM.setStyle(sheet,"color","#ffffff");
				b.appendChild(document.createTextNode("Confirmation"));
				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) sheetTimeout = setTimeout("hideSheet()",autohide);
	}
	return false;
}
function hideSheet() {
	var sheet;
	sheet = getObjectRef("sheet");
	dtDOM.slide(sheet,10,10);
	if (typeof sheetTimeout != "undefined") clearTimeout(sheetTimeout);
	return false;
}
function toggleDisc(imgref,force) {
	if (typeof imgref == "string") imgref = getObjectRef(imgref);
	if (imgref) {
		if (force) {
			imgref.src = js_g_url+'images/default/icons/disclosure_'+force+'.gif';
			return false;
		}
		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();
}

