/*
* Name:jsfunctions.js
* Author:Kumar Chetan
* Description:Contains various javascript functions.
*/
var debugme = 0;
/*
* Error handling
*/
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



/*
* 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)
{
	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=='')){alert('Null value not allowed!');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,newstrs, newvalues)
{
  v = eval('document.'+frm+'.'+triggefield+'.options[document.'+frm+'.'+triggefield+'.selectedIndex].value');
  if (v!='' && v == triggerval)
  {
    var new_arr_length = eval(newstrs+'['+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], '+newstrs+'['+triggerval+'][i]);');
      eval('my_var = document.'+frm+'.'+fieldname);
      my_var.options[my_var.length] = option0;
    }
  }
}


function checkdate(y,m,d){
	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 albhabets only
*/
function isAlphabet(field) {
	var alph_exp = "([a-zA-Z])$";
	var valid_alpha = new RegExp(alph_exp);
	if(!valid_alpha.test(field.value)) {
		return true;
	}
	return false;
}

/*
* This function will check for numbers only
*/
function isNumber(field) {
	var num_exp = "([0-9])$";
	var valid_num = new RegExp(num_exp);
	if(!valid_num.test(field.value)) {
		return true;
	}
	return false;
}

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

/* Function to Check ADD PROJECT Form */
function chk_form(f){
	with(f){
		if(isEmpty(proj_name)){alert("Please enter Project Name");proj_name.focus();return false;}
		if(isEmpty(url)){alert("Please enter URL");url.focus();return false;}
		if(isEmpty(title)){alert("Please enter Title");title.focus();return false;}
		if(isEmpty(description)){alert("Please enter Description");description.focus();return false;}
		if(isEmpty(userid)){alert("Please enter User ID");userid.focus();return false;}
		if(isEmpty(passwd)){alert("Please enter Password");passwd.focus();return false;}
		if(isEmpty(fullname)){alert("Please enter Full Name");fullname.focus();return false;}
		if(isEmpty(email)){alert("Please enter Email ID");email.focus();return false;}
		if(!isValidEmail(email)){alert("Please enter a Valid Email ID");email.focus();return false;}
	}
}

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



/*
* Date:4/23/2006 at 1:52:00 PM
* Description:Drop down menus.
* This script will not work in frameset.
*/

/*
* Try to locate the layer object...
*/
function findlayer(n, d) { 
/*counter i and layer object x*/
  var i,x;
  if(!d) d=document;/*Document, top level object*/
  /*Simply try to check is the layer available in "all" array.*/
  if(!(x=d[n])&&d.all) 
    x=d.all[n];
  /*if not found Loop till you find the layer available in form array.*/
  for (i=0;!x&&i<d.forms.length;i++) 
    x=d.forms[i][n];
  /*if still not found Loop till you find the layer available in layers array. 
  This is a recursive step. */
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
    x=findlayer(n,d.layers[i].document);
  /*if still not found then use getelementById too look for any elem with given 
  Id */
  if(!x && d.getElementById) x=d.getElementById(n);
  
  /*Just return the object.*/
  return x;
}

function hideme(layername)
{
if( (layername = findlayer(layername)) != null ){
  if(layername.style){
    layername = layername.style;
    layername.visibility = 'hidden';
    }}
}

/*
* this will just show or hide the layer passed as first arg, 2nd arg being 'show'
* or 'hide'
*/
function showhidelayer(layername, todo) { 
	
	
my = layername;
if( (layername = findlayer(layername)) != null ){
  if(layername.style){
    layername = layername.style;
    if(todo=='hide')
    {
    //setTimeout('hideme(my)',1000);
    hideme(my);
    }else if(todo=='show')
    {
  layername.visibility = 'visible'; 
    }
  }else{
    alert("Could not perform action:"+todo+"!");
  }
}else{
   alert("Object not found!");
}
}

// Function used to check for the confirmation code
function checkForDuplicate(conf_code,image_code)
{
  var reverse_code = '';

  for (i = 0; i <= conf_code.length; i++) {
    reverse_code = conf_code.charAt (i) + reverse_code
  }
	
	if(image_code == reverse_code) {
		return true;
	} else {
		return false;
	}
}
