/*

	Dom's lib of evil goodies

*/
function rnd() {var sDate = new Date();return sDate.getTime()/1000;}

// remove leading whitespace
String.prototype.lTrim = function () {
	return this.replace(/^\s*/, "");
}
// remove trailing whitespace
String.prototype.rTrim = function () {
	return this.replace(/\s*$/, "");
}
// remove leading and trailing whitespace
String.prototype.trim = function () {
	return this.rTrim().lTrim();
}
// removes unwanted characters from a string
String.prototype.clean = function() {
	strQuote = /'/g;
	strDQuote= /"/g;
	strLT=/</g;
	strGT=/>/g;
	//myString = this.replace(strQuote, "’");			// Single Quote
	myString = this.replace(strDQuote, "''");	// Double Quote
	myString = myString.replace(strLT, "[");		// lt HTML
	myString = myString.replace(strGT, "]");		// gt HTML
	myString = myString.trim();
	return myString;
}
function PadLeft(String,Length,PadChar) {
	String += ""       // Force argument to string.
	Length += ""       // Force argument to string.
	PadChar += ""      // Force argument to string.
	if((PadChar == "") || (!(PadChar.length == 1)))
	PadChar = " "
	var Count = 0
	var PadLength = 0
	Length = parseInt(0 + Length,10)
	if(Length <= String.length) // No padding necessary.
	return(String)
	PadLength = Length - String.length
	for(Count = 0; Count < PadLength; Count++)
	String = PadChar + String
	return(String)
}
function FormatNumber(Number,Decimals,Separator) {
	Number += ""          // Force argument to string.
	Decimals += ""        // Force argument to string.
	Separator += ""       // Force argument to string.
	if((Separator == "") || (Separator.length > 1))
	Separator = "."
	if(Number.length == 0)
	Number = "0"
	var OriginalNumber = Number  // Save for number too large.
	var Sign = 1
	var Pad = ""
	var Count = 0
	// If no number passed, force number to 0.
	if(parseFloat(Number)){
	Number = parseFloat(Number)} else {
	Number = 0}
	// If no decimals passed, clisting decimals to 2.
	if((parseInt(Decimals,10)) || (parseInt(Decimals,10) == 0)){
	Decimals = parseInt(Decimals,10)} else {
	Decimals = 2}
	if(Number < 0)
	{
	Sign = -1         // Remember sign of Number.
	Number *= Sign    // Force absolute value of Number.
	}
	if(Decimals < 0)
	Decimals *= -1    // Force absolute value of Decimals.
	// Next, convert number to rounded integer and force to string value.
	// (Number contains 1 extra digit used to force rounding)
	Number = "" + Math.floor(Number * Math.pow(10,Decimals + 1) + 5)
	if((Number.substring(1,2) == '.')||((Number + '')=='NaN'))
	return(OriginalNumber) // Number too large to format as specified.
	// If length of Number is less than number of decimals requested +1,
	// pad with zeros to requested length.
	if(Number.length < Decimals +1) // Construct pad string.
	{
	for(Count = Number.length; Count <= Decimals; Count++)
	Pad += "0"
	}
	Number = Pad + Number // Pad number as needed.
	if(Decimals == 0){
	// Drop extra digit -- Decimal portion is formatted.
	Number = Number.substring(0, Number.length -1)} else {
	// Or, format number with decimal point and drop extra decimal digit.
	Number = Number.substring(0,Number.length - Decimals -1) +
		  Separator +
		  Number.substring(Number.length - Decimals -1,
		  Number.length -1)}
	if((Number == "") || (parseFloat(Number) < 1))
	Number="0"+Number // Force leading 0 for |Number| less than 1.
	if(Sign == -1)
	Number = "-" + Number  // Set sign of number.
	return(Number)
}
function FormatNumberField(Object,Decimals,Pad,Separator,PadChar) {
	if(Object.value == "")
	Object.value = "0"
	if(Object == null)
	return(null)
	Separator += ""      // Force argument to string.
	if((Separator == "") || (Separator.length > 1))
	Separator = "."
	PadChar += ""
	if((PadChar == "") || (!(PadChar.length == 1)))
	PadChar = " "
	Object.value = FormatNumber(Object.value,Decimals,Separator)
	Object.value = PadLeft(Object.value,Pad,PadChar)
	return(Object.value)
}
function makeNumber(obj) { //Simple Number without Decimals
	obj.value = obj.value.replace(/ /g, ""); //Remove space
	obj.value = obj.value.replace(/-/g, ""); //Remove dash
	obj.value = obj.value.replace(/\(/g, ""); //Remove parenthesis
	obj.value = obj.value.replace(/\)/g, ""); //Remove parenthesis
	obj.value = obj.value.replace(/\+/g, ""); //Remove plus
	obj.value = FormatNumberField(obj,0,"","",""); //Validate
}
function makeFloat(obj) { //Numeric/Currency with Decimals
	obj.value = obj.value.replace(/ /g, ""); //Remove space
	obj.value = obj.value.replace(/-/g, ""); //Remove dash
	obj.value = obj.value.replace(/,/g, "."); //Replace comma with period;
	obj.value = FormatNumberField(obj,2,"",".","");
}
function makePercent(obj) { //Percentage with Decimals if applicable
	obj.value = obj.value.replace(/,/g, "."); //Replace comma with period;
	var pVal = FormatNumberField(obj,2,"",".","");
	if (pVal>100) { //Reset to 100
		pVal = 100;
	}
	if (pVal<0) { //Reset to 0
		pVal = 0;
	}
	obj.value = pVal*1; //Remove trailing 00
}
function cleanThis(targ) {
	targ.value = targ.value.clean();
}
function EBI(objID) {
	if (document.getElementById(objID)) {
		return document.getElementById(objID);
	} else {
		return false;
	}
}
// check whether field has a value
function isPopulated(src) {
	if (src) {
		var srcVal = src.value;
		srcVal = srcVal.trim();
		if (srcVal.length == 0) {
			return false;
		} else {
			return true;
		}
	}
}
// validate email address
function ValidateEmail(src) {
	var emailReg = /^([a-zA-Z0-9_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
	return emailReg.test(src);
}
// validate email address extension
function ValidateEmailEx(src) {
	var emailReg = /^[\w\.\+\-]+@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	return emailReg.test(src);
}

function ValidateAlphaNumeric(src) {
	var alphaReg = /[^a-zA-Z0-9]/g
	return !alphaReg.test(src);
}
// Create xmlHttp Object for function: XMLHttp(formFields, strUrl, httpGET)
function GetXmlHttpObject() {
	var xmlHttp;
	if (!window.XMLHttpRequest) {
		try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0"); return xmlHttp; } catch (ex) {}
		try { xmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); return xmlHttp; } catch (ex){}
		try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); return xmlHttp; } catch (ex) {}
		return null;
	} else	{
		try {xmlHttp = new XMLHttpRequest(); return xmlHttp;} catch(ex) {}
		return null;
	}
}
// Use AJAX-type method to execute server-side script
function XMLHttp(formFields, strUrl, httpGET) {
	 var strText = "";
	 var getorpost=(typeof(httpGET)!="undefined" && httpGET==true)? "GET" : "POST";
	 xmlhttp = GetXmlHttpObject();
	 try {
		 if (xmlhttp != null) {
			 xmlhttp.open(getorpost, strUrl, false);
			 xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			 xmlhttp.send(formFields);
			 strText = xmlhttp.responseText;
		 }
	 }catch(ex){}
	 return strText;
}
// Simple Find & Replace within a string
function ReplaceString(TheString, SearchFor, ReplaceWith) {
	var SearchPattern = eval("/" + SearchFor + "/g");
	return TheString.replace(SearchPattern, ReplaceWith);
}
// Set SelectBox's Selected Value
function setSelect(elmID, selectedValue, force) {
	if ((force !== 'undefined') && (force == true)) {
		if (EBI(elmID)) { //Make sure select box exists
			EBI(elmID).value = selectedValue;
		}
	} else {
		if (selectedValue.length!==0 && selectedValue.trim()!=="") { //check that a value was sent
			if (EBI(elmID)) { //Make sure select box exists
				EBI(elmID).value = selectedValue;
			}
		}
	}
}

// Get form Context
function getForm(formName) {
	var obj_frm = null;
	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
		try { obj_frm = eval("document." + formName);} catch (ex) {}
	} else {
		try { obj_frm = document.forms[formName]; } catch (ex) {}
	}
	return obj_frm;
}

// Show or Hide an Element
function sh(elmID, elmTarget) {
	var objTarget = null;
	if (elmID) {
		if (EBI(elmID)) {
			objTarget = EBI(elmID);
		}
	} else {
		if (elmTarget) {
			objTarget = elmTarget;
		}
	}
	if (objTarget) {
		if (objTarget.style.display=="none") {
			objTarget.style.display = "inline";
		} else {
			objTarget.style.display = "none";
		}
	}
}

function AddEvent( obj, types, fn ) {
	var type;
	for(var i = 0; i < types.length; i++) {
		type = types[i];
		if ( obj.attachEvent ) {
			obj['e'+type+fn] = fn;
			obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
			obj.attachEvent( 'on'+type, obj[type+fn] );
		} else {
			obj.addEventListener( type, fn, false );
		}
	}
}

/*
	Form Validation Functions
	Shows/Hide Validation Messages
*/
function Show_Error(formName, errObject) {
	var frm = getForm(objForm);
	if (frm[errObject]) {frm[errObject].focus();}
	EBI("v"+errObject).style.display = "block";
}
function Hide_Error(errObject) {
	EBI("v"+errObject).style.display = "none";
}

/*
	PORTAL SPECIFIC FUNCTIONS
	
*/
function btnOv(objBtn) {
	objBtn.style.backgroundPosition = "bottom";
}
function btnOut(objBtn) {
	if (objBtn.className!="ON") {
		objBtn.style.backgroundPosition = "top";
	}
}
function btnDn(btnID) {
	if (EBI(btnID)) {
		EBI(btnID).style.backgroundPosition = "bottom";
		EBI(btnID).className = "ON";
	}
}

var globalmenu;
var sitemenu;

function initGlobalMenu() {
	if (EBI("globalmenu")) {
		globalmenu = new simpleMenu('globalmenu', 'vertical-g');
	}
}
function initSiteMenu() {
	if (EBI("sitemenu")) {
		if (EBI("sitemenu").innerHTML !== "") {
			sitemenu = new simpleMenu('sitemenu', 'vertical');
		}
	}
}

function Get_Users() {
	if (EBI("userList")) {
		strList = XMLHttp("", "App.aspx?cmd=get_users&rnd=" + rnd(), true);
		if (strList.indexOf("Error")<0) {
			EBI("userList").innerHTML = strList;
		}
	}
	setTimeout("Get_Users()", 5000);
}
function userInfo(sUser) {
	if (sUser!="") {
		window.open("Directory_User.aspx?cmd=view&user=" + sUser, "", "width=100,height=100,top=400,left=400,status=yes", "");
	}
}
function EDB_OV(obj) {
	obj.className = "ED_ResultBox_Ov";
}
function EDB_OUT(obj) {
	obj.className = "ED_ResultBox";
}


var opsClose;
function showOptions(ev) {
	hideElement("SELECT", "")
	xPos = ev.clientX;
	yPos = ev.clientY;
				
	var objOps = document.getElementById("Ops");
	objOps.style.left = xPos - 160;
	objOps.style.top  = yPos + 10;
	objOps.style.display = "block";
	clo();
}

function hideOptions() {
	showElement("SELECT", "")
	var objOps = document.getElementById("Ops");
	objOps.style.left = 0;
	objOps.style.top  = 0;
	objOps.style.display = "none";
	clo();
}
function sto() {
	opsClose = window.setTimeout("hideOptions()", 2000);
}
function clo() {
	window.clearTimeout(opsClose);
}
function hideElement(elmID, targ) {
if (targ=="") {
	targWin = ""
} else {
	targWin = "window."+targ+"."
}

	for (i = 0; i < eval(targWin+"document.getElementsByTagName(elmID).length"); i++)
	{
		obj = eval(targWin+"document.getElementsByTagName(elmID)[i]");

		obj.style.visibility = "hidden";
	}
}

function showElement(elmID, targ) {
if (targ=="") {
	targWin = ""
} else {
	targWin = "window."+targ+"."
}

	for (i = 0; i < eval(targWin+"document.getElementsByTagName(elmID).length"); i++)
	{
		obj = eval(targWin+"document.getElementsByTagName(elmID)[i]");

		obj.style.visibility = "";
	}
}
function addBookmark() {
	var p = EBI("lblHeading").innerHTML;
	var u = document.location.href;
	if (p!="" && u!="") {
		var sRet = XMLHttp("i=yes&p=" + p +"&u=" + u, "App.aspx?cmd=addbookmark", false);
		alert(sRet)
	}
	
}
function RDBookmark(p,u) {
	if (p!="" && u!="") {
		var sRet = XMLHttp("i=yes&p=" + p +"&u=" + u, "App.aspx?cmd=addbookmark", false);
		alert(sRet)
	}
}
function printPage() {
	EBI("header").style.margin = "-70 0 0 0";
	EBI("navigation").style.display = "none";
	hideOptions();
	window.print();
	EBI("header").style.margin = "";
	EBI("navigation").style.display = "";
}

var noteID = 0;
function AddNote() {
	EBI("noteTitle").value = "";
	EBI("noteText").innerHTML = "";
	EBI("noteBox").style.display = "block";
	EBI("flashHeader").style.visibility = "hidden";
}
function ShowNote(_noteID) {
	GetNote(_noteID);
	noteID = _noteID;
	EBI("noteBox").style.display = "block";
	EBI("flashHeader").style.visibility = "hidden";
}
function HideNote() {
	noteID = 0;
	EBI("noteBox").style.display = "none";
	EBI("flashHeader").style.visibility = "visible";
}
function GetNote(_noteID) {
	var noteText = XMLHttp("", "App.aspx?cmd=getnote&noteid=" + _noteID + "&rnd=" + rnd(), true);
	EBI("noteTitle").value = noteText.split("[::]")[0];
	EBI("noteText").innerHTML = noteText.split("[::]")[1];
}
function SaveNote() {
	EBI("notetitle").value = EBI("noteTitle").value;
	EBI("nt").value = EBI("noteText").innerHTML;
	if (noteID!=0) {
		EBI("frmNotes").action = "App.aspx?cmd=savenote&noteID=" + noteID;
	} else {
		EBI("frmNotes").action = "App.aspx?cmd=addnote";
	}
		EBI("frmNotes").submit();
}
function MLSearch(e) {
	intKeyCode = e.keyCode;
	if (intKeyCode==13) {
		cleanThis(EBI("QS"));
		MediaSearch();
	}
}
function MediaSearch() {
	var targ = EBI("QS");
	if (targ.value!=="Search Media Library" && targ.value!=="") {
		document.forms[0].onsubmit = function() {return false};
		document.location = "MediaLib.aspx?cmd=search&s=" + targ.value;
	}
}

