/*******************************************************************************
FILE NAME    :form.js
DEPENDENCIES :none
********************************************************************************
____________________________ API DOCUMENTATION BEGIN ___________________________
````````````````````````````````````````````````````````````````````````````````

````````````````````````````````````````````````````````````````````````````````
_____________________________ API DOCUMENTATION END ____________________________
*******************************************************************************/

//FUNCTION-- trims white space from beginning and end of text if any
function trim_string(str)
{
 while(str.length > 0 && str.charAt(0) == " ")//trim beginning of text
 {
	str1 = str.substring(1);
	str = str1;
 }

 while(str.length > 0 && str.charAt(str.length -1) == " ")//trim end of text
 {
  str1 = str.substring(0, str.length -1);
  str = str1;
 }
 return str;
}

//FUNCTION-- trims all fields of type text, textarea and password in a form ***requires string.js api
function trim_text_fields(form_obj)
{
 for(var i=0;i<form_obj.elements.length;i++)//if document has a form with elements
 {
  if(form_obj.elements[i].type=="text" || form_obj.elements[i].type=="textarea" || form_obj.elements[i].type=="password")//only trim text, textarea or password form elements
  form_obj.elements[i].value=trim_string(form_obj.elements[i].value);
 }
}

//FUNCTION-- checks if text, textarea or password field contains data
function has_data(text_obj, message)
{
 if(text_obj.value.length==0) return false;
 return true;
}

//FUNCTION-- provides validation for email address
function validate_email_address(text_obj)
{
 if(text_obj.value.length > 0 && text_obj.value.length < 5) return false;
 		
 if(text_obj.value.length > 0 && text_obj.value.indexOf("@") == 0) return false;
 
 if(text_obj.value.length > 0 && text_obj.value.indexOf(".") == 0) return false;
 
 if(text_obj.value.length > 0 && text_obj.value.indexOf("@.") > 0) return false;
 
 if(text_obj.value.length > 0 && text_obj.value.indexOf(".") == text_obj.value.length-1) return false;
 
 if(text_obj.value.length > 0 && text_obj.value.indexOf("@") < 0) return false;
 
 if(text_obj.value.length > 0 && text_obj.value.indexOf(".") < 0) return false;
 
 return true; //return true is we make it this far
}

//FUNCTION-- checks if an item was selected in a pull down menu
function has_selected(menu_obj, index_offset)
{
 //checks against value of element not its indexed number
 if(menu_obj.options.selectedIndex > index_offset && menu_obj.options[menu_obj.options.selectedIndex].value != "null") return true;
 return false;
}

//FUNCTION-- checks if value is numeric between 0 and 9
function is_numeric(text_obj)
{
 for(var i=0;i<text_obj.value.length;i++)
 {
  if(isNaN(text_obj.value.charAt(i))) return false;
 }
 return true;
}

//FUNCTION-- focuses on a form object
function object_focus(form_obj)
{
 form_obj.focus( );
}

//FUNCTION-- selects a form object, select() is a method of password, text and textarea objects only
function object_select(form_obj)
{
 //focus on the form object must be set first before calling select()
 if(form_obj.type=="text" || form_obj.type=="textarea" || form_obj.type=="password") form_obj.select( );
}

//FUNCTION-- validation rules for name
function validateName(formObj)
{
 var v_Expr = "[^0-9]";
 for(var i=0;i<formObj.value.length;i++)
 {
  if(!(validateRegExp(formObj.value.charAt(i), v_Expr))) return false; 
 }
 return true;
}

//FUNCTION-- validation rules for address
function validateAddress(formObj)
{
 var v_Expr = "[A-Za-z0-9 \\.\\,\\-\\'\\#]";
 for(var i=0;i<formObj.value.length;i++)
 {
  if(!(validateRegExp(formObj.value.charAt(i), v_Expr))) return false; 
 }
 return true;
}

//FUNCTION-- validation rules for city
function validateCity(formObj)
{
 var v_Expr = "[^0-9]";
 for(var i=0;i<formObj.value.length;i++)
 {
  if(!(validateRegExp(formObj.value.charAt(i), v_Expr))) return false; 
 }
 return true;
}

//---END