var isDOM = (document.getElementById || document.all || document.layers) ? true : false;
var isNS = (navigator.appName == "Netscape") ? true : false;
var isFf = (navigator.appName == "Firefox") ? true : false;
var isNS6=(isDOM && isNS) ? true : false;
var notNS6=(!isDOM && isNS) ? true : false;
var isIE=(!isNS && !isFf && isDOM)? true : false;
var debug;

if(_domain != undefined)
	{
	document.domain	=	_domain;	/* access denied problem with IE */
	}
// prevents form submission based on enter  # http://www.irt.org/script/1693.htm
var nav = window.Event ? true : false;
			if (nav) {
			   window.captureEvents(Event.KEYDOWN);
			   window.onkeydown = NetscapeEventHandler_KeyDown;
			} else {
			   document.onkeydown = MicrosoftEventHandler_KeyDown;
			}

			function NetscapeEventHandler_KeyDown(e) {
			  if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit') { return false; }
			  return true;
			}

			function MicrosoftEventHandler_KeyDown() {
			  if (event.keyCode == 13 && event.srcElement.type != 'textarea' && event.srcElement.type != 'submit')
				return false;
			  return true;
			}

// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}


function deg2rad(deg)
	{
	return Math.PI * ( parseInt(deg) / 180 );
	}
function rad2deg(rad)
	{
	return 180 * ( parseFloat(rad) / Math.PI );
	}
function getSelect(dfe)
	{
	var args = getSelect.arguments; // getSelect(dfe,true) returns value
		var myReturn = (args[1]) ? "value" : "index";
		// returns index of value
	for(i=0; i<dfe.length;i++)
		{
		if (dfe[i].selected==true)
			{
			if(myReturn == "value"){return dfe[i].value;}else{return i;}
			}
		}

	}
function defaultSelect(dfe,key)
	{
	for(i=0; i<dfe.length;i++)
		{
		if (key==dfe[i].value)
			{
			dfe[i].selected = true;
			return;
			}
		}
	number = dfe.length - 1;
	dfe[number].selected = true; // set custom to true, not found in the list
	}

function delay(secs)
	{ /* gap is in millisecs */
	gap = secs * 1000;
	var then,now; then=new Date().getTime();
		now=then;
	while((now-then)<gap)
		{
		now=new Date().getTime();
		}
	}

function confirmMe(where,msg)
	{
	var agree = confirm(msg);
	if (agree) { goHere(where) ; }
	}
function goHere(where)
	{
	location.replace(where);
	window.focus();
	}
function returnRandom(min,max)
	{
	return (Math.round((Math.random()*(max-min))+min));
	}
function reloadMe()
	{
	location.reload();
	}


function doAjax(url,method,params,id)
	{
	// id is DIV ID
	myAjax = new Ajax.Updater(id, url, {method: method, parameters: params});
	}

function getPositionDIV(id){
	obj = document.getElementById(id);
		var left = 0;
		var top  = 0;
		
		
		while (obj.offsetParent){
			left += obj.offsetLeft;
			top  += obj.offsetTop;
			obj   = obj.offsetParent;
		}
		left += obj.offsetLeft;
		top  += obj.offsetTop;
			

		return {"x":left, "y":top};
	}
function setPositionDIV(id,x,y){
	obj = document.getElementById(id);
		obj.style.top	= "" + y + "px";
		obj.style.left	= "" + x + "px";

	}
function getDimensionDIV(id){
	obj = document.getElementById(id);
		width = (obj.style.width != undefined) ? obj.style.width.split("px").join("") : 0;
		height = (obj.style.height != undefined) ? obj.style.height.split("px").join("") : 0;
			

		return {"w":width, "h":height};
	}
function setDimensionDIV(id,w,h){
	obj = document.getElementById(id);
		obj.style.width	= "" + w + "px";
		obj.style.height= "" + h + "px";

	}
function setInnerDIV(id,myS)
	{
	obj = document.getElementById(id);
		obj.innerHTML = myS;

	}
function humpBackStyle(style)
	{
	tArr = style.split("-");
	if(tArr[1] != undefined)
		{
		newStyle = tArr[0];
		for (i=1;i<tArr.length ;i++ )
			{
			myFirst = tArr[i].charAt(0).toUpperCase();
			newStyle += "" + myFirst + tArr[i].substr(1);			
			}
		return newStyle;
		}
		else
			{
			// no split needed
			return style;
			}
	}
function setStyleDIV(id,styles)
	{
	obj = document.getElementById(id);
	// styles is array
	for (var k in styles)
		{
		key = humpBackStyle(k);
		var value = styles[k];

		eval("obj.style."+key+" = '"+value+"';");
		}

	}
function getStyleDIV(id,styles)
	{
	obj = document.getElementById(id);
	myR = {};
	// styles is array
	for (var i=0;i<styles.length;i++)
		{
		k = styles[i];

		key = humpBackStyle(k);
		eval("var value =  obj.style."+key+";");
		if(value != undefined)
			{
				value = "" + value;
				value = value.split("px").join("");
				if(value != "")
						{
						if(!isNaN(value))
							{
							value = (value.indexOf('.') == -1) ? parseInt(value) : parseFloat(value).toFixed(2);
							}

						}
			eval("myR."+key+" = value;");
			}
			else
				{
				eval("myR."+key+" = null;");
				}
		}
	
	return myR;
	}
function toggleDIV(id)
	{
	obj = document.getElementById(id);

	var args = toggleDIV.arguments;
		extra = (args[1]) ? args[1] : false;

	if(extra)
		{
		obj.style.visibility = (obj.style.visibility == "hidden") ? "visible" : "hidden";
		}
		else
			{
			obj.style.display = (obj.style.display == "none") ? "block" : "none";
			}

	}
function hideDIV(id)
	{
	obj = document.getElementById(id);

	var args = hideDIV.arguments;
		extra = (args[1]) ? args[1] : false;

	//alert(obj.style.display);

	if(extra)
		{
		obj.style.visibility = "hidden";
		}
		else
			{
			obj.style.display = "none";
			}

	}
function showDIV(id)
	{
	obj = document.getElementById(id);

	var args = showDIV.arguments;
		extra = (args[1]) ? args[1] : false;

	//alert(obj.style.display);

	if(extra)
		{
		obj.style.visibility = "visible";
		}
		else
			{
			obj.style.display = "block";
			}

	}
function validNumber(myNumber)
	{
	// verify that the field is a number
	myTest = !(isNaN(myNumber-0));

	return myTest;
	}
function popMe()
	{
		// myLocation, windowName, parameters of popup, internal or external	
		//	           "javascript:popMeExt('tellafriend.html?who=alumni','eCardWindow','resizable=1,toolbar=1,location=1,directories=0,status=1,menubar=0,scrollbars=1,width=740,height=600,left=center,top=center','internal');"

	var args = popMe.arguments;

	if (window.screen) 
		{
		var screenAvailWidth	= screen.availWidth  ;
		var screenAvailHeight	= screen.availHeight ;
		}
// undefined to empty
	if(typeof screenAvailWidth == "undefined"){screenAvailWidth = "";}
	if(typeof screenAvailHeight == "undefined"){screenAvailHeight = "";}


	if(args[0]){myLocation=args[0];}else{myLocation="";}
	if(args[1]){windowName=args[1];}else{windowName="genericPopup";}
	if(!args[2]){parameters="resizable=1,toolbar=1,location=1,directories=0,status=0,menubar=1,scrollbars=1,width=800,height=500,left=130,top=10";}else{parameters=args[2];}

var regExp = /(\S*)(width\=)(\S+)(\,)(\S*)(height=)(\S+)(\,)(\S*)(left\=)(\S+)(\,)(top\=)(\S+)(\,*)/
var result = parameters.match(regExp);
// result[3]= value to right of left=
// result[6]= value to right of top= 
if (result != null)
	{
	// redo left
	switch(result[11].toString())
		{
		default:
			// number
			myNumber = parseInt(result[11]);
		break;
		case "right":
			// myNumber = parseInt(screenAvailWidth-width);
			(screenAvailWidth) ? myNumber = parseInt(parseInt(screenAvailWidth)-result[3]) : myNumber = 0;
		break;
		case "center":
			// myNumber = parseInt((screenAvailWidth-width)/2);
			(screenAvailWidth) ? myNumber = parseInt((parseInt(screenAvailWidth)-result[3])/2) : myNumber = 0;
		break;
		}
		myVar = "left="+result[11].toString();
			myNewVar = "left="+myNumber;
		parameters = parameters.split(myVar).join(myNewVar);

	// redo top
	switch(result[14].toString())
		{
		default:
			// number
			myNumber = parseInt(result[14]);
		break;
		case "bottom":
			// myNumber = parseInt(screenAvailHeight-height);
			(screenAvailHeight) ? myNumber = parseInt(parseInt(screenAvailHeight)-result[7]) : myNumber = 0;
		break;
		case "center":
			// myNumber = parseInt((screenAvailHeight-height)/2);
			(screenAvailHeight) ? myNumber = parseInt((parseInt(screenAvailHeight)-result[7])/2) : myNumber = 0;			
		break;
		}
		myVar = "top="+result[14].toString();
			myNewVar = "top="+myNumber;
		parameters = parameters.split(myVar).join(myNewVar);		
	}

// if left=left, left=0
// if left=right, left=screenAvailWidth-width : 100 if not set
// if left=center, left=(screenAvailWidth-width)/2  : 50 if not set

// if top=top, top=0;
// if top = bottom, top=screenAvailHeight-height : 100 if not set
// if top=center, top=(screenAvailHeight-height)/2  : 50 if not set

/*
var screenWidth = "{screenWidth}";
	var screenHeight = "{screenHeight}";
	var screenAvailWidth = "{screenAvailWidth}";
	var screenAvailHeight = "{screenAvailHeight}";
	*/
	if(!args[3]){myMethod="internal";}else{myMethod=args[3];}

	if(myMethod=="internal")
		{
		// internal window
		eval('var '+windowName+' = window.open(myLocation,"'+windowName+'",parameters);');
		eval(windowName+'.focus();');
		}
		else if(myMethod == "external")
			{
			myExit=escape(myLocation);
			myCurrent=escape(location.href);

			//external window
			var exitPopupWindow = window.open(_popMe+"myCurrent="+myCurrent+"&myExit="+myExit,"exitPopupWindow",parameters);
			exitPopupWindow.focus();
			}
			else
				{
				alert(document.domain);
				// document write in new window
				if(!args[4]){myString="testing";}else{myString=args[4];}
					
				alert(myString);
					eval('var '+windowName+' = window.open(myLocation,"'+windowName+'",parameters);');
						// window opener callback to allow this?	... need an actual file so IE doesn't give security error (devil)					
						eval(windowName+'.document.write(myString);');							
							eval(windowName+'.document.close();');
						eval(windowName+'.focus();');

						
						
				}
	

	//return (eval(windowName));
	}

function isFunction(a) {
    return typeof a == 'function';
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
}

function getSearch()
	{
	var myArr = null;
	var myS = document.URL.indexOf('search/');
	if (myS != -1)
		{
		myArr = document.URL.substring(myS+7, document.URL.length).split(',');
		}
	return myArr;
	}
function getVARS()
	{
	var myIndex = document.URL.indexOf('?');
	var myKeys = "";
	var myValues = "";	
	if (myIndex != -1)
		{
		var pairs = document.URL.substring(myIndex+1, document.URL.length).split('&');		
			for (var i=0; i<pairs.length; i++)
				{
				nameVal = pairs[i].split('=');
				if(nameVal[0])
					{
					eval(unescape(nameVal[0])+" = '" + unescape(nameVal[1]) + "';");
					//alert(unescape(nameVal[0])+" = '" + unescape(nameVal[1]) + "';");
					
					}
				}		
		}
	}





function validField(myField)
	{
		// verify that it is not empty
	if(myField == "")
		{
		return false;
		}
		else
			{
			return true;
			}
	}
function validEmail(myEmail)
	{
	// returns true or false
	// m@m.com9 should not be valid :::::::  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	return(filter.test(myEmail));
	}

/**  HACKED by monte
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "\xA0\xA0";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "" + item + " =>\n";
   dumped_text += dump(value,level+1);
  } else if (typeof(value) == 'function')
  { // nothing
  }else {
		if(value != "")
			{
			if(!isNaN(value))
				{
				value = "" + value;
				value = (value.indexOf('.') == -1) ?  parseInt(value) : parseFloat(value).toFixed(2);
				}
			}
   dumped_text += level_padding + "" + item + " -> " + value + "\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 


 function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

