function isObject(a)
{
   return typeof a == 'object';
}

function isArray(a)
{
   return isObject(a) && (typeof a.constructor == Array || typeof a.length == 'number');
}

function openScrollableWindow(target, width, height, name)
{
	options="toolbar=0,status=1,menubar=0,scrollbars=1,resizable=1,width=" + width + ",height=" + height;
	window.open(target,name,options);
}

function LTrim(str)
{
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(0)) != -1) 
   {
      var j=0, i = s.length;
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

function RTrim(str)
{
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 
   {
      var i = s.length - 1; 
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }

   return s;
}

function Trim(str)
{
   return RTrim(LTrim(str));
}

function Void()
{
}

//Functino to trim a blank,Enter Character and tab in a field
function trim(strText)
 {
    var i = 0;
    // this will get rid of leading spaces, Enter Character and tab
    while((strText.substring(0,1) == ' ') || (strText.charCodeAt(0)==13) || (strText.charCodeAt(0)==10) || (strText.charCodeAt(0)==9))
    {
        strText = strText.substring(1, strText.length);
    }
    // this will get rid of trailing spaces, Enter Character and tab
    while ((strText.substring(strText.length-1,strText.length) == ' ') || (strText.charCodeAt(strText.length-1)==13) || (strText.charCodeAt(strText.length-1)==10) || (strText.charCodeAt(strText.length-1)==9) )
    {
        strText = strText.substring(0, strText.length-1);
    }
    return strText;
 }

//***************************************************************************
//This function trim the value of all the text box and textarea in the form
//@parm : HTML form object for which all the text box and textarea has to trim
//***************************************************************************
function trimForm(objForm)
{
	for(i=0;i<objForm.elements.length;i++)
	{
		field=objForm.elements[i];
		if(field.type == 'text' || field.type == 'textarea' )
			field.value=trim(field.value);
	}//end of for(i=0;i<objForm.elements.length;i++)
}//end of function trimForm()

var reAlphabetic = /^[a-zA-Z]+$/;

//***************************************************************
//THIS FUNCTION CHECKS FOR THE ALPHA NUMERIC CHARACTERS
//***************************************************************

function isAlphaNumeric(obj,fieldname)
{
	obj.value=trim(obj.value);

	var regexp=/^[a-zA-Z0-9]{1}[a-zA-Z0-9\s]*$/;

	if(regexp.test(obj.value)==false)
	{
		alert(fieldname+" should be alphabets and numbers");
		obj.focus();
		obj.select();
		return false;
	}
	else 
	return true;
}

//************************************************************************************
//Function-
//Author-
//Date Created-
//Purpose-Send document.form.object.name,message,maxlength,format,condition for validating
//************************************************************************************
//format or not

function isDate(obj,displayname){
	var passedvalue = obj.value;
	var Format = "MM/DD/YYYY";
	if(trim(passedvalue).length <= 0)
	{
		alert("Enter "+displayname+ " in the format 'MM/DD/YYYY' ");
		obj.focus();
		obj.select();
		return false;
	}

	var dateArray = passedvalue.split("/");

	var passedDay = dateArray[0];
	var passedMonth = dateArray[1];
	var passedYear = dateArray[2];

	if(isNaN(passedMonth) || isNaN(passedDay) || isNaN(passedYear) )
	{
		//alert("Please enter "+displayname+ " in the format 'MM/DD/YYYY '");
		alert("Enter "+displayname+ " in the format 'MM/DD/YYYY' ");
		obj.focus();
		obj.select();
		return false;
	}

	var passedMonth = trim(passedMonth);
	var passedDay = trim(passedDay);
	var passedYear = trim(passedYear);

	var formattedDate = passedDay+"/"+passedMonth+"/"+passedYear;
	obj.value = formattedDate;
	var regexp = "";
	var Required = true;

	var InvalidDate = "Please enter  valid "+displayname;
	var ObjectName = obj;
	ObjectName=eval(ObjectName);
	l=ObjectName.value.length;
	da=ObjectName.value
		if ((Required==true) || (Required==false && l>0)){

			if ((Format == "DD/MM/YYYY")||(Format == "MM/DD/YYYY")){
				regexp = /^(\d{2}\/\d{2}\/\d{4})$/;
			}

			if (Format == "DD/MM/YY"){
				regexp = /^(\d{2}\/\d{2}\/\d{2})$/;
			}

			if (regexp == ""){
				alert("Enter "+displayname+ " in the format 'MM/DD/YYYY' ");
				//alert("Please enter "+displayname+ " in the format 'MM/DD/YYYY '");
				ObjectName.focus();
				ObjectName.select();
				return false;
			}
			else{
				if (regexp.test(ObjectName.value)==false){
					alert("Enter "+displayname+ " in the format 'MM/DD/YYYY' ");
					//alert("Please enter "+displayname+ " in the format 'MM/DD/YYYY '");
					ObjectName.focus();
					ObjectName.select();
					return false;
				}
			}

			if (Format == "DD-MM-YYYY"){dd=da.substr(0,2);mm=da.substr(3,2);yy=da.substr(6,4)}
			if (Format == "MM/DD/YYYY"){dd=da.substr(3,2);mm=da.substr(0,2);yy=da.substr(6,4)}
			if (Format == "DD/MM/YYYY"){dd=da.substr(0,2);mm=da.substr(3,2);yy=da.substr(6,4)}
			if (Format == "DD/M/YY"){mm=da.substr(3,2);dd=da.substr(0,2);yy=da.substr(6,2)}

			if (Format == "DD/MM/YY"){
				if (yy < 50 ) {
					yy = '20' + yy;
				}
				else if ( yy >= 50 ){
					yy = '19' + yy;
				}
			}
			if ( (dd <= 00 || mm <= 00 || yy <=0000 )|| (dd>31 || mm>12) || ((mm == 1 || mm == 3 || mm ==5 || mm == 7 || mm == 8 || mm == 10 || mm == 12) && dd > 31) || ((mm == 04 || mm == 06 || mm == 9 || mm == 11) && dd > 30)  || ((yy % 4) == 0 && mm==2 && dd > 29) ||((yy % 100)==0 && (yy % 400)!=0 && mm==2 && dd>=29)|| ((yy % 4) != 0 && mm==2 && dd > 28)){
				//alert("Please enter "+displayname+ " in the format 'MM/DD/YYYY '");
				alert("Enter "+displayname+ " in the format 'MM/DD/YYYY' ");
				ObjectName.focus();
				ObjectName.select();
				return false;
			}
		}
		return true;
}//end of function isDate(obj,displayname)

//************************************************************************************
//Function-
//Author-
//Date Created-
//Purpose-
//************************************************************************************
function isChecked(obj,displayName)
{
	//alert("Inside isChecked");
	//alert(obj.checked);
	var vflag=true;
	if(!obj.checked)
	{
		alert("Please check "+displayName);
		obj.select();
		obj.focus();
		vflag=false;
	}
	return vflag
	}

//************************************************************************************
//Function-
//Author-
//Date Created-
//Purpose-
//************************************************************************************
function isAlphabetic(obj,displayName)
{	
	var s=obj.value;
	if(reAlphabetic.test(s))
	{
   		return true;
   	}
	else
	{
		alert("Please enter a valid "+displayName);
		obj.select();
		obj.focus();
		return false;
	}
}//end of function isAlphabetic(obj,displayName)

//************************************************************************************
//Function-
//Author-
//Date Created-
//Purpose-Function to check for Number fields
//************************************************************************************
function isNumber(obj,displayName)
{
	var str=obj.value;

	str=trim(str);
	obj.value=str;
	var vflag=true;
	if(isNaN(str))
	{
		alert(displayName+" should be a Number");
		//alert("Please enter a valid "+displayName);
		obj.select();
		obj.focus();
		vflag=false;
	}
	return vflag
}//end of function isNumber(obj,displayName)	

// to check whether one of the checkbox is checked or not .This could be used in while implementing Delete  function
function mChkboxValidation(obj)
{
 with(obj) 
 {
	  for(var i=0;i<obj.elements.length;i++)
	  {
		   if(obj.elements[i].type=="checkbox")
		   {
			    if (obj.elements[i].checked)
			    {
			     iFlag = 1;
			     break; 
			    }
			    else
			    {
			     iFlag = 0;
			    }
		   } 
		}
 } 
 if (iFlag == 0)
    return true;
 else
  return false;

}  

//************************************************************************************
//Function-compareDates
//Author-
//Date Created-
//Purpose-compares the dates
//************************************************************************************
 function compareDates(StartDate,StartDateName,EndDate, EndDateName, comperator)
    {
    
	    var objStartDate = eval("document.forms[0]."+StartDate);  
	    var objEndDate = eval("document.forms[0]."+EndDate); 
	   	var dtStartDate = getDateValue(objStartDate.value);
	    var dtEndDate = getDateValue(objEndDate.value);
	    var ONE_DAY = 1000 * 60 * 60 * 24;
	    var date1_ms = eval(dtStartDate).getTime();
	    var date2_ms = eval(dtEndDate).getTime();
	    var difference_ms = (date2_ms - date1_ms);
	    if(Math.round(difference_ms/ONE_DAY) >= 0)
	    {
		    return true;
	    }// end of if(Math.round(difference_ms/ONE_DAY) >= 0)
	    else
	    {
	        if(comperator == 'greater than')
		     {
		        alert(StartDateName+" cannot be "+comperator+" "+EndDateName);
		        return false;
		     }
		    else
		        alert(EndDateName+" can not be "+comperator+" "+StartDateName);
		    return true;
	    }// end of else
    }// end of function compareDates(StartDate,StartDateName,EndDate, EndDateName, comperator)


//************************************************************************************
//Function-
//Author-
//Date Created-
//Purpose-To return date object from a string
//Example : "11/20/2002"
//************************************************************************************
function getDateValue(dateValues)
    {
	    var dateArray = dateValues.split("/");
	    return new Date(eval(dateArray[2]),eval(dateArray[0]-1),eval(dateArray[1]));   
    }// end of function getDateValue(dateValues)

    
//this function will select or deselect all the check boxes available in the form 

function checkAll( bChkd, objform, chkName )
{        
   for(i=0;i<objform.length;i++)
	{ 
		if(objform.elements[i].name == chkName)
		{                 
			objform.elements[i].checked = bChkd;         
		}
	}        
}



