function $() // given an array of ids, returns an array of objects //skillscape//
{
	var elements = new Array();
	
	for (var i = 0; i < arguments.length; i++) 
	{
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function validate_email(email_txt) // validates a string as a email id
{
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@([\\w].+)\.[\\w]$";
	var regex = new RegExp(emailReg);
	return regex.test(email_txt);
}

function validate_integer(int_str) // validates a string as an integer (i.e. no decimal points)
{
	regExpr = new RegExp(/^\d*$/);
	var regex = new RegExp(regExpr);
	return regex.test(int_str);
}

function validate_real_nos(real_nos_str) // validates a string as a Real Number (i.e. with decimal points)
{
	regExpr = new RegExp(/^-?\d*(\.\d{1,2})?$/);
	var regex = new RegExp(regExpr);
	return regex.test(real_nos_str);
}

function RoundOff(number,n) // rounds up given no to 'n' number of places
{
	str='';
	number=parseFloat(number);
	if(!isNaN(number))
	{
		power=Math.pow(10,n);
		number=Math.round(number*power)/power;
		return number;
	}
}

function str_trim(str) // strips of leading and following whitespaces from a string
{	
	if(str.length > 0)
		while(str.charAt(0)==' ')
			str = str.substr(1);
		
	if(str.length > 0)
		while(str.charAt((str.length - 1))==' ')
			str = str.substring(0, str.length-1);
	
	return str;
}

function str_implode(arr, delim) // Join array elements with a string
{
	var ret_str = "";
	var arr_len = 0;

	arr_len = arr.length;
	delim_len = delim.length;
	
	if(arr_len > 0)
	{
		for(var i=0; i < arr_len; i++)
			ret_str += delim + arr[i];

		if(ret_str.substr(0, delim_len))
			ret_str = ret_str.substr(delim_len);
	}
	
	return ret_str;
}

function str_explode(arr, delim)
{
	var ret_str = "";
	var arr_len = 0;

	arr_len = arr.length;
	delim_len = delim.length;
	
	if(arr_len > 0)
	{
		for(var i=0; i < arr_len; i++)
			ret_str += delim + arr[i];

		if(ret_str.substr(0, delim_len))
			ret_str = ret_str.substr(delim_len);
	}
	
	return ret_str;
}

function CheckNum(obj) // validates a form ctrl for an integer
{
	regExpr = new RegExp(/^\d*$/);

	if(str_trim(obj.value)!="")
	{
		if(!regExpr.test(obj.value))
		{
			alert("Please Enter Valid Numbers");
			obj.value="0";		
		}
	}
	else
		obj.value="0";		
}

function CheckRealNum(obj) // validates a form ctrl for a real number
{
	regExpr=new RegExp(/^-?\d*(\.\d{1,2})?$/);
	
	if(str_trim(obj.value)!="")
	{
		if(!regExpr.test(obj.value))
		{
			alert("Please Enter Valid Amount");
			obj.value="0";		
		}
	}
	else
		obj.value="0";		
}

// NAVIGATION BASED
function AddAnother()
{
	if(Validate())
	{
		document.forms[0].add_mode.value = "Y";
		document.forms[0].submit();
	}
	else
		document.forms[0].add_mode.value = "N";
}

function GoToPage(page)
{
	window.document.location.href=page;
}

function ConfirmDelete(txt, page)
{
	var msg = "You Are About To Delete this " + txt + "! Continue?";

	if(confirm(msg))
		window.document.location.href=page;
}

function SubmitToThisPage(frm_nm, ctrl_nm, page_name)
{
	var page_no = document.getElementById(ctrl_nm).value;	
	var frm = eval("document."+frm_nm);
	
	frm.action = page_name+"?page="+page_no;
	frm.submit();
}

function SubmitPage(frm_nm, page)
{
	var frm = eval("document."+frm_nm);	
	frm.action = page;
	frm.submit();
}

function DefaultFocus(ctrl_nm)
{
	if(document.getElementById(ctrl_nm))
	{
		obj = document.getElementById(ctrl_nm);
		obj.focus();
	}
}

function SetFocus(obj)
{
	obj.focus();
	obj.select();
}

function ChangeRank(mode, fld, fld_val, negative_flag)
{
	var str = "";

	if(fld != "" && fld_val != "")
		str = "&fld=" + fld + "&fld_val=" + fld_val;

	if(fld != "" && fld_val != "")
		str += "&negative=" + negative_flag;

	var file = "rank-update.php?mode="+mode+str;
	win = window.open(file,'ChangeRank','width=900,height=600,scrollbars=1,resizable=1');
	WindowPosition(900,600,win);
}

function OpenPopup(file)
{
	win = window.open(file,'Popup','width=600,height=450,scrollbars=1,resizable=1');
	WindowPosition(600,450,win);
}

function CloseWindow(window_obj)
{
//	if(confirm("This Action Will Now Close This Window! Continue?"))
	window_obj.close();
	
//	return false;
}

function SetParentHREF(href_str)
{
	window.opener.location.href = href_str;

	if (window.opener.progressWindow)		
		window.opener.progressWindow.close();
}

function WindowPosition(widthX,heightX,windowName)
{
	var width = (screen.width);
	var height = (screen.height - 25);
	var centerleft = 0;
	var centertop = 0;
	var centerleft = (width/2) - (widthX/2);
	var centertop = (height/2) - (heightX/2);
	var width=widthX;
	var height=heightX;
	windowName.moveTo(centerleft,centertop);
	windowName.resizeTo(width, height);
	windowName.focus();
}

function WindowPosition2(widthX,heightX,windowName) //same as above, only it takes %age vals as params for width n height
{
	var width = (screen.width);
	var height = (screen.height - 25);
		
	var wt = (width * widthX) / 100;
	var ht = (height * heightX) / 100;

	var centerleft = (width/2) - (wt/2);
	var centertop = (height/2) - (ht/2);

	windowName.resizeTo(wt, ht);
	windowName.moveTo(centerleft,centertop);
	windowName.focus();
}

function FillFromList(list_obj)
{
	var cmb = list_obj;

	str = "";
		
	for(i=0; i < cmb.length; i++)
		if(cmb.options[i])
			str += "~" + cmb.options[i].value;
	
	return str.substr(1);
}

function GetSelectedRadioValue(frm_obj, radio_name)
{
	var frm = frm_obj;
	if(!frm) return "";

	for(var i=0; i < frm.elements.length; i++)
		if( (frm.elements[i].type == 'radio') && (frm.elements[i].name == radio_name) && (frm.elements[i].checked))
			return frm.elements[i].value;
			
	return "";
}

function replaceString(oldS,newS,fullS)
{// Replaces oldS with newS in the string fullS  
	for (var i=0; i<fullS.length; i++)
		if (fullS.substring(i,i+oldS.length) == oldS) 
			fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length)  

	return fullS
}

////////////////////////////////

function ShowContent(file_name)
{	
	if(document.getElementById('div_window'))
	{
		var dobj = document.getElementById('div_window');
		
		if(dobj.style.display == "none")
		{
			dobj.style.display = "block";
			ToggleComboBoxVisibility(false);
		}

		div_ht = 175;
		div_wt = 320;
		
		dobj.style.top = divY(div_ht);
		dobj.style.left = divX(div_wt);

		var iobj = document.getElementById("iframe_content");
		iobj.src = file_name;
	}
}

function handleHttpStatusResponse()	// return type flag~id~display string
{
	if (http.readyState == 4)
	{
		result_str = http.responseText;
		document.getElementById("div_window").innerHTML=http.responseText;
  	}
}

function HideContent()
{
	if(document.getElementById('div_window'))
	{
		var dobj = document.getElementById('div_window');
		
		if(dobj.style.display == "block")
		{
			dobj.style.display = "none";
			ToggleComboBoxVisibility(true);
		}
	}
}

function divX(div_width) // width
{
	var screen_width = (screen.width);
	var width_offset = posLeft();
	var x = (width_offset + (screen_width/2) - (div_width/2));
	return x;
}

function divY(div_height) // height
{
	var screen_height = (screen.height - 100);
	var height_offset = posTop();
	var y = height_offset + (screen_height/2) - (div_height/2);
	return y;
}

function posTop() 
{
	return (typeof window.pageYOffset != 'undefined') 
			? window.pageYOffset : (document.documentElement && document.documentElement.scrollTop) 
									? document.documentElement.scrollTop: document.body.scrollTop;
}

function posLeft() 
{
	return (typeof window.pageXOffset != 'undefined') 
			? window.pageXOffset : (document.documentElement && document.documentElement.scrollLeft) 
									? document.documentElement.scrollLeft: document.body.scrollLeft;
}
function ToggleComboBoxVisibility(disp_flag)
{
	visibility_mode = (disp_flag)? "visible": "hidden";

	for(var i = 0; i < document.forms.length; i++) 
		for(var j=0; j < document.forms[i].elements.length; j++)
			if(document.forms[i].elements[j].type == 'select-one')
				document.forms[i].elements[j].style.visibility = visibility_mode;
}