/* common.js

This brings up a pop-up for the user to enter info

TODO
We'd rather not put this in a popup.

HISTORY
050419 FH
	comment
*/
var browserOK = ( parseInt( navigator.appVersion )<= 2 ) ? false: true ;

// initialize fields array;
var arrFields = new Array();

//form values to varify when validate() is called
//
arrFields[arrFields.length] = new Array("strName1","First Name",1);
arrFields[arrFields.length] = new Array("strName2","Last Name",1);
arrFields[arrFields.length] = new Array("strEmail","Email",1);
arrFields[arrFields.length] = new Array("strState","State",1);
arrFields[arrFields.length] = new Array("strPhoneDay","Daytime Phone",1);
arrFields[arrFields.length] = new Array("strPhoneNight","Evening Phone",1);
arrFields[arrFields.length] = new Array("strBestTime","Best Time to call",1);
arrFields[arrFields.length] = new Array("strDescription","Subject Matter",1);


function chg_img( imageSet,imageName, imageNumber ) {
      if ( browserOK ) imageName.src = imageSet[imageNumber].src;
}

function urgentAlert(){
    document.getElementById("showAlert").innerHTML = '<table cellpadding="0" cellspacing="0" border="0"><tr><td class="redbold" align="center">Call Now!!<br>1-800-804-7820</td></tr></table><br><br>';
    return true;
}
        
function confirm_action(url,msg){
    if(confirm(msg)){
        location.replace(url)
    }else{
        return;
    }
}

//! popup.php doesn't seem to exist.
function launchWindow( _mode, URL,w,h) {
  
  var popupViewer = open("popup.php?mode=quiz" , "efficientTools" , "scrollbars=yes, resizable=no,width=505,height=600,left=100,top=100");
  popupViewer.focus();
  return false;
}


//	validate
//
//	validate checks each of the HTML fields in the arrFields array
//	to make sure a valid value has been entered for them before the form is submitted.
//
//   arrFields[0] - name of form element
//   arrFields[1] - display name for error message
//   arrFields[2] - 0 or 1, whether the field is required
//
function validate(){
			
	var strErr= "";
	
	//email regexp
	var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

	// loop through each field
	for (counter=0; counter<arrFields.length; counter++){

		// Build reference to document object 
		obj = eval("document.forms[0]." + arrFields[counter][0]);

		// Text fields
		if (obj.type == "text" || obj.type == "password" || obj.type == "textarea" || obj.type == "hidden" || obj.type == "file"){

			// Check for required text value
			if ((arrFields[counter][2] == 1 && obj.value.length == 0) || ((obj.name.substring(0,8) == "flt_from" || obj.name.substring(0,6) == "flt_to") && obj.value == "mm/dd/yyyy")) {
				strErr += arrFields[counter][1]+"\n";

			// Check for valid values
			} else if (obj.value.length > 0) {

				if (arrFields[counter][1].substring(arrFields[counter][1].length-5,arrFields[counter][1].length) == "Email" && !obj.value.match(re)){
					strErr += arrFields[counter][1]+" (must be a valid email address)\n";
				} else if (obj.name.substring(0,3) == "num" || obj.name.substring(0,3) == "int"){
					while (obj.value.indexOf('$') > -1){
						obj.value = obj.value.substring(0,obj.value.indexOf('$')) + obj.value.substring(obj.value.indexOf('$')+1,obj.value.length);
					}
					while (obj.value.indexOf(',') > -1){
						obj.value = obj.value.substring(0,obj.value.indexOf(',')) + obj.value.substring(obj.value.indexOf(',')+1,obj.value.length);
					}
					if (isNaN(obj.value)){
						strErr += arrFields[counter][1] + " (must be numeric)\n";
					} else if (obj.name.substring(0,11) == "numQuantity" && obj.value <= 0){
						strErr += arrFields[counter][1] + " (must be greater than 0)\n";
					}
				} else if (obj.name.substring(0,3) == "dtm" || obj.name.substring(0,8) == "flt_from" || obj.name.substring(0,6) == "flt_to") {
					if (isDate(obj.value) == false){
						strErr += arrFields[counter][1] + " (must be a valid date)\n";
					}
				}

			}
		
		// Select fields
		} else if (obj.type == "select-one") {
			
			// Check for required select index
			if (arrFields[counter][2] == 1 && obj.selectedIndex == 0){
				strErr += arrFields[counter][1]+"\n";
			}

		// Checkbox or radio buttons
		} else if (obj.length > 0) {
			
			// Check for required select index
			if (arrFields[counter][2] == 1){
				blnChecked = false;
				for (loop=0; loop<obj.length; loop++){
					if (obj[loop].checked == true){
						blnChecked = true;	
						break;
					}
				}
				if (blnChecked == false){
					strErr += arrFields[counter][1]+"\n";
				}
			}
									
		}			
	}
					
	//display error message
	if (strErr.length > 0){
		alert('Please enter a valid value for the following:\n\n' + strErr);
		return false;
	} else {	
		return true;
	}

}

//	isDate
//
//	isDate is a function which is used to determine if the specified date is a 
//	valid date.
//
//	dDate - Date being validated
//
function isDate(dDate) {
	
	// Begin by converting the supplied date into an array with [mm][dd][yyyy]
	if (dDate.indexOf("/") > -1){
		arrDate = dDate.split("/");
	} else {
		arrDate = dDate.split("-");
	}
	
	// If array is less than 3 elements, date is not valid- return false
	if (arrDate.length != 3) return false;

	// Make sure we've got the right century
	if (arrDate[2].length == 2){
		arrDate[2] = '20'+arrDate[2];
	}
		
	// All three elements must be numeric
	if (isNaN(arrDate[0]) || isNaN(arrDate[1]) || isNaN(arrDate[2])) return false;
		
	// Convert the supplied date into a javascript date.  This will work even if
	// the date supplied is not valid; but the final value will be a different date
	// than the one originally supplied.
	chkDate = new Date(arrDate[0]+'/'+arrDate[1]+'/'+arrDate[2]);
	
	// Now get the month, day, and year of the new date.  Check to see if they 
	// match the original values for for month, day, and year.  If any don't 
	// match, an invalid date was supplied.
	if (arrDate[0] != (chkDate.getMonth() + 1)) return false;
	if (arrDate[1] != chkDate.getDate()) return false;
	if (arrDate[2] != chkDate.getFullYear()) return false;
	
	// If we've made it this far, we've got a valid date
	return true;
}