// JavaScript Document
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/*
disable or enable elements in the form depen on the flag
*/
function DisableEnableFormElements(p_form, p_flag){
	for(i=0; i<p_form.elements.length; i++)
	{
		var val = false;
		if (p_flag=="enable"){
			val = false;
		}else if (p_flag=="disable"){
			val = true;
		}
		p_form.elements[i].disabled = val;
	}	
}

/*
empty elements in the form
*/
function EmptyFormElements(p_form){
	for(i=0; i<p_form.elements.length; i++)
	{
		var elem = p_form.elements[i];
		if (elem.type=='text' || elem.type=='textarea' || elem.type=='password') elem.value = "";
		if (elem.type=='select-one') elem.selectedIndex=0;
		if (elem.type=='radio') elem.checked=false;
	}
}

/*
get random number in a range
*/
function rand(l,u) // lower bound and upper bound
{
	return Math.floor((Math.random() * (u-l+1))+l);
}

/*
based on JQuery - Fade the element TO
p_speed: A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
*/
function fadeTo(p_elem_id, p_speed, p_opacity, p_callback_func)
{
	if (p_elem_id.substr(0, 1)!="#") p_elem_id="#"+p_elem_id;
	$(p_elem_id).fadeTo(p_speed, p_opacity, p_callback_func);
}

/*
based on JQuery - Fade the element IN
p_speed: A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
*/
function fadeIn(p_elem_id, p_speed, p_callback_func)
{
	if (p_elem_id.substr(0, 1)!="#") p_elem_id="#"+p_elem_id;
	$(p_elem_id).fadeIn(p_speed, p_callback_func);
}
function fadeOut(p_elem_id, p_speed, p_callback_func)
{
	if (p_elem_id.substr(0, 1)!="#") p_elem_id="#"+p_elem_id;
	$(p_elem_id).fadeOut(p_speed, p_callback_func);
}

function Hide(p_elem_id, p_speed, p_callback_func)
{
	var obj = document.getElementById(p_elem_id);
	$(obj).hide(p_speed, p_callback_func);
}
function Show(p_elem_id, p_speed, p_callback_func)
{
	var obj = document.getElementById(p_elem_id);
	$(obj).show(p_speed, p_callback_func);
}

/*
Limit the textfield to only recept 0-9, a-z, A-Z, - and _
*/
function LimitInput(key_event)
{
	var cc;
    if (document.all) //Checks for IE 4.0 or later
    {
		cc = event.keyCode;
    }
    else if (document.getElementById) //checks for Netscape 6 or later
    {
		cc = key_event.which;
    }
    else if (document.layers) //Checks for Netscape 4
    {
		cc = key_event.which;
    }
	if (cc==8 || cc==13 || cc==45 || cc==95 || (cc>=48 && cc<=57) || (cc>=65 && cc<=90) || (cc>=97 && cc<=122) || cc==37 || cc==39 || cc==9)
	{	
	}else{
		return false;
	}
}

/*
Limit the textfield to only recept 0-9
*/
function LimitInputNumeric(key_event)
{
	var cc;
    if (document.all) //Checks for IE 4.0 or later
    {
		cc = event.keyCode;
    }
    else if (document.getElementById) //checks for Netscape 6 or later
    {
		cc = key_event.which;
    }
    else if (document.layers) //Checks for Netscape 4
    {
		cc = key_event.which;
    }
	//37: left; 39: right; 9: tab
	if (cc==8 || cc==13 || cc==45 || cc==95 || (cc>=48 && cc<=57) || cc==37 || cc==39 || cc==9)
	{	
	}else{
		return false;
	}
}

/*
Loop through the combobox and make the selection if matched with p_val
*/
function MakeCoboboxSelection(p_combobox, p_val)
{
	for(var i=0; i<p_combobox.length; i++)
	{
		if (p_combobox.options[i].value==p_val)
		{
			p_combobox.options[i].selected = true;
			break;
		}
	}
}

/*
add new table row
*/
function addRow(table_id, rowIndex, quest_id, quest_data)
{
	var newRow = document.getElementById(table_id).insertRow(rowIndex);
	newRow.setAttribute('id', 'quest_'+quest_id);
	var oCell = newRow.insertCell(0);
	oCell.innerHTML = quest_data;
}

/*
remove table row
*/
function removeRow(table_id, src)
{
	var oRow = src.parentNode.parentNode;
	document.getElementById(table_id).deleteRow(oRow.rowIndex);
}

// JavaScript Document
function getCookie(c_name)
{
	if (document.cookie.length>0){
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{ 
			c_start=c_start + c_name.length+1; 
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}
function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
} 