/************************
Name: Form checker
Date: 2004/01/11
Modification: 
	- 2005/03/26 Compare Object function
Purpose: Validate form element

Written by: Peter Dikhazi

************************/
function fnFormValidate(){
	//collect all information
	    var oColl = document.getElementsByTagName('SPAN');
	    var error = '';
    	
	    try{
		    for (var i = 0; i < oColl.length;i++){
			    if (oColl[i].getAttribute('soda_error') == '1'){
				    var vType = oColl[i].getAttribute('soda_validation_type');
				    var validateObjectName = oColl[i].getAttribute('soda_validate_object');
				    var validateObjects = document.getElementsByName(validateObjectName);
				    var validateObject = null;
				    if (validateObjects.length > 0){
    				
					    if (validateObjects[0].tagName == 'SELECT'){
						    validateObject = validateObjects[0].options[validateObjects[0].selectedIndex];
					    }else{
						    validateObject = validateObjects[0];
					    }
    					
					    var compareValue = oColl[i].getAttribute('soda_compare_value');
					    var errorMessage = oColl[i].getAttribute('soda_errormessage');				
					    var compareObject = null;
					    if (oColl[i].getAttribute('soda_compare_object') != ''){
						    compareObject = document.getElementById(oColl[i].getAttribute('soda_compare_object'));
					    }	
					    var regExp;
					    if ((vType != null) && (validateObject != null)){
						    switch (vType.toUpperCase()){
							    //Required fields
							    case 'REQUIRED':								
									    if(validateObject.value != null){
										    if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == ''){
											    error += errorMessage + '\n';
										    }
									    }	
    																				
								    break;
							    //EQUAL
							    case 'EQUAL':								
									    if(validateObject.value != null){
    										
										    if ((compareValue == "") && (compareObject != null)){
											    if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == compareObject.value.replace(/(^\s*)|(\s*$)/g, "")){
												    error += errorMessage + 's\n';
											    }							
										    }else{
											    if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == compareValue){
												    error += errorMessage + '\n';
											    }
										    }
									    }												
								    break;		
							    //NOTEQUAL
							    case 'NOTEQUAL':								
									    if(validateObject.value != null){
    										
										    if ((compareValue == "") && (compareObject != null)){
											    if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") != compareObject.value.replace(/(^\s*)|(\s*$)/g, "")){
												    error += errorMessage + '\n';
											    }							
										    }else{
											    if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") != compareValue){
												    error += errorMessage + '\n';
											    }
										    }
									    }											
								    break;	
							    case 'EMAIL':
								    //
								    var regularExpress = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
								    regExp = new RegExp(regularExpress);
								    var ma = regExp.exec(validateObject.value);						
								    if (ma == null){
									    error += errorMessage + '\n';
								    }
								    break;
							    case 'URL':
								    var regularExpress = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'&lt;&gt;()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'&lt;&gt;()\[\]{}\s\x7f-\xff]+)*)?/;
								    regExp = new RegExp(regularExpress);
    								
								    var ma = regExp.exec(validateObject.value);	
								    if (ma == null){
									    error += errorMessage + '\n';
								    }						
								    break;
							    case 'ISDATE':
								    //var regularExpress =  /(([1-9]|[1-2][0-9]|3[0-1]|0[1-9])[/ /.]([1-9]|1[0-2]|0[1-9])[/ /.]([1-9][0-9])\d\d)|(([1-9]|[1-2][0-9]|3[0-1]|0[1-9])[- /.](0[1-9]|1[0-2]|[1-9])[- /.]([1-9][0-9])\d\d)/;						
								    //regExp = new RegExp(regularExpress);						
								    //var ma = regExp.exec(validateObject.value);	
								    //if (ma == null){
								    //	error += errorMessage + '\n';
								    //}	
								    break;															
						    }//switch
					    }//if
				    }//if
			    }//if
		    }//for
	    }catch(e){
		    alert(e.message);
		    return false;
	    }
	    if (error.length != 0){
		    var messageHeader = 'Fields with an * are required.\nThe following required fields are missing:\n';
		    var messageFooter = '\nPlease fill out all required fields and resubmit the form.';
		    var header = document.getElementById('sys_message_header');
		    var footer = document.getElementById('sys_message_footer');
		    if (header != null) messageHeader = header.value;
		    if (footer != null) messageFooter = footer.value;
		    alert(messageHeader + '\n\n' + error + '\n' + messageFooter);
		    return false;	
	    }else{
		    return true;	
	    }
}
function IsInteger(control){
// parse the input as an integer
   var intValue = parseInt(control.value, 10);

   // if this is not an integer
   if (isNaN(intValue))
      {

      // clear text box
      control.value = '';

      }
   // if this is an integer
   else
      {
   
      switch (true)
         {
         case (intValue == 0) :
            // clear text box
            control.value = '';
            break;
         case (intValue > 0) :
            // put the parsed integer value in the text box
            if (intValue > 2000){
                control.value = '2000';
            }else{
                control.value = intValue.toString();
            }
            break;
         case (intValue < 0) :
            // put the positive parsed integer value in the text box
            control.value = (-1 * intValue).toString();
            break;
         }
      }
}