/*
* Name:jsfunctions.js
* Author:Kumar Chetan
* Description:Contains various javascript functions.
*/

/*
* Error handling
*/
var debugme = 0;
function handleError(str,page,line,chr) {
	if (debugme == 1) alert('OUCH!!\n Error Occured!\nPage: '+page +'\n Line no: '+line+'\n Character: ' +chr);
	return true;
}

window.onerror = handleError;

/*
* Simple. 
*/
function d(str){	document.write(str);}


/*
* Simple again. Get the dom element.
*/

function getDOMel(s) {return document.getElementById(s);}

/*
* Simply Checks the boxes
*/
function CheckAll(form2, boxname)
{
	l = eval('document.'+form2+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+form2+'.elements['+i+'];');
		if ((e.name == boxname ) && (e.type=='checkbox'))e.checked = true;
	}
}

/*
* Simply UnChecks the boxes
*/

function UnCheckAll(form2, boxname)
{
	l = eval('document.'+form2+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+form2+'.elements['+i+'];');
		if ((e.name == boxname ) && (e.type=='checkbox'))e.checked = false;
	}
}


/*
* Simple. It will send u to a 'url' on event.
*/
function go2url(url)
{
	window.location = url;
}



/*
* Will check for null Values in the array of textboxes.
*/
function chkfrm(form2, boxname, msg){
	var flag = 0; 
	var l = eval('document.'+form2+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+form2+'.elements['+i+'];');
		if ((e.name == boxname ) && (e.value=='')){if(msg!='')alert(msg);e.focus();flag = 1;}
		if (flag==1) {return (false); break;}
	}
	if(flag==0){ return (true);	}
}

function mychkfrm(form2, boxname){
	var flag = 0; 
	//msg = (msg==''?'':msg);
	var l = eval('document.'+form2+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+form2+'.elements['+i+'];');
		if ((e.name == boxname ) && (e.value=='')){e.focus(); flag = 1;};
		if (flag==1) {return (false); break;}
	}
	if(flag==0){ return (true);	}
}

var fieldcounter = 0;

function moreFields(whichfield,wheretoadd)
{
	fieldcounter++;
	newFields = document.getElementById(whichfield).cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';
	var newField = newFields.childNodes;
	for (var i=0;i<newField.length;i++)
	{
		var theName = newField[i].name
		if (theName)
			newField[i].name = theName + fieldcounter;
	}
	var insertHere = document.getElementById(wheretoadd);
	insertHere.parentNode.insertBefore(newFields,insertHere);
}


/*
* Populates another Select box. U can say chained selects. 
*/

function replace_values(frm, triggefield, triggerval, fieldname,newvalues)
{
  v = eval('document.'+frm+'.'+triggefield+'.options[document.'+frm+'.'+triggefield+'.selectedIndex].value');
  if (v == triggerval)
  {
    var new_arr_length = eval(newvalues+'['+triggerval+'].length');
    ex_len = eval('document.'+frm+'.'+fieldname+'.length');
    for(k=(ex_len - 1); k > 0; k--)
    {
      eval('document.'+frm+'.'+fieldname+'.options['+k+'] = null;');
    }
    for(i=0;i<new_arr_length;i++)
    {
      eval('option0 = new Option('+newvalues+'['+triggerval+'][i], '+newvalues+'['+triggerval+'][i]);');
      eval('my_var = document.'+frm+'.'+fieldname);
      my_var.options[my_var.length] = option0;
    }
  }
}

function replace_values(frm, triggefield, triggerval, fieldname,newvalues)
{
  v = eval('document.'+frm+'.'+triggefield+'.options[document.'+frm+'.'+triggefield+'.selectedIndex].value');
  if (v!='' && v == triggerval)
  {
    var new_arr_length = eval(newvalues+'['+triggerval+'].length');
    ex_len = eval('document.'+frm+'.'+fieldname+'.length');
    for(k=(ex_len - 1); k > 0; k--)
    {
      eval('document.'+frm+'.'+fieldname+'.options['+k+'] = null;');
    }
    for(i=0;i<new_arr_length;i++)
    {
      eval('option0 = new Option('+newvalues+'['+triggerval+'][i], '+newvalues+'['+triggerval+'][i]);');
      eval('my_var = document.'+frm+'.'+fieldname);
      my_var.options[my_var.length] = option0;
    }
  }
}



function checkdate(y,m,d){
	if(y=='' || m=='' || d==''){
		return(false);
	}
	leapy = 0;
	if((y%4)==0) leapy = 1;
	if((leapy==1) && (m==2) && (d>29)){
		return(false);
	}else if((leapy==0) &&(m==2) && (d>28)){
		return(false);
	}else if(((m==4) || (m==9) || (m==11)) && (d>30)){
		return(false);
	}else{
		return (true);
	}
}

/*
* This function will check for valid email
*/
function isValidEmail(field){
	var re = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,4}(\.[a-z]{2}){0,2})$/i;
	return re.test(field.value);
}

/*
* This function will check for empty input boxes
*/
function isEmpty(val){
	var re = /^\s*$/;
	return re.test(val.value);
}

/*
* This function will check for numeric inputs
*/
function isNumeric(val){
		var valid = "0123456789";
 		var ok = 1;
		var temp;
		var value1=val.value;
		for (var i=0; i<value1.length; i++) 
		{
			temp = "" + val.value.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			ok = 0;
		}
		return (ok);
}

function check_this(obj, txt){
	if(isEmpty(obj)){alert("Please enter "+txt);obj.focus();return false;}
}


var fieldcounter = 0;

function moreFields(whichfield,wheretoadd)
{
	fieldcounter++;
	newFields = document.getElementById(whichfield).cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';
	var newField = newFields.childNodes;
	for (var i=0;i<newField.length;i++)
	{
		var theName = newField[i].name
		if (theName)
			newField[i].name = theName + fieldcounter;
	}
	var insertHere = document.getElementById(wheretoadd);
	insertHere.parentNode.insertBefore(newFields,insertHere);
}


var fieldcounter2 = 0;

function moreFields2(whichfield,wheretoadd)
{
	fieldcounter2++;
	newFields = document.getElementById(whichfield).cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';
	var newField = newFields.childNodes;
	for (var i=0;i<newField.length;i++)
	{
		var theName = newField[i].name
		if (theName)
			newField[i].name = theName + fieldcounter;
	}
	var insertHere = document.getElementById(wheretoadd);
	insertHere.parentNode.insertBefore(newFields,insertHere);
}


function openBrWindow(theURL,winName,features) { 
  window.open(theURL,winName,features);
}


/*
* Name: count_options()
* Parameters: name of select element and the form object
* Author: Kumar Chetan
* Description: This will count the number of options selected for menu named el 
* in form f.
*/
function count_sel(f, el)
{
	var e,k=0;
	var l = eval('document.'+f+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+f+'.elements['+i+'];');
		if ((e.name == el ) && (e.disabled!=1))
			for(var j=0;j<e.options.length;j++)
			{
			if(e.options[j].selected)
				k++;
			}
	}

	return(k);
}


function countcheckboxes(f, el)
{
	var e,k=0;
	var l = eval('document.'+f+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+f+'.elements['+i+'];');
		if ((e.name == el ) && (e.disabled!=1) && e.checked==1)
				k++;
	}

	return(k);
}
/* Name: myfocus()
* Parameters: name of element and the form object
 * Author: Kumar Chetan
 * Description: This is a simple function. 
 */
function myfocus(f, el)
{
	var l = eval('document.'+f+'.elements.length;');
	for(var i=0;i<l;i++)
	{
		var e = eval('document.'+f+'.elements['+i+'];');
		if(e.name==el && el.disabled!=1)
		{
			e.focus();
			break;
		}
	}
}

/* Name: myisempty()
 * Parameters: name of element and the form object
 * Author: Kumar Chetan
 * Description: This is a simple function.
 * Need more error checking.
 */
function myisempty(f, el)
{
	var l = eval('document.'+f+'.elements.length;');
	for(var i=0;i<l;i++)
	{
		var e = eval('document.'+f+'.elements['+i+'];');
		if(e.name==el && el.disabled!=1)
		{
			break;
		}
	}
	if(isEmpty(e))
		return (1);
	else
		return (0);
}


/* Name: get_from_opts()
 * Parameters: a key, name of element and the form object
 * Author: Kumar Chetan
 * Description: Quick workaround to get the other value from select menu.
 */
function get_from_opts(f, el, key)
{
	key = (key!=''?key:0);
	var arr = new Array();
	var l = eval('document.'+f+'.elements.length;');
	for (var i=0;i<l;i++)
	{
		var e = eval('document.'+f+'.elements['+i+'];');
		if ((e.name == el ) && (e.disabled!=1))
			for(var j=0;j<e.options.length;j++)
			{
			if(e.options[j].selected && e.options[j].value=='-1')
				arr[key] = e.options[j].value;
			}
	}
	return(arr[key]);
}


function openMyWin(theURL, theName){
    if (!window.open(theURL, theName)) 
  	alert ('This application requires pop ups to be enabled. Kindly enable popup windows.');
	
}

