var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_setTextOfTextfield(objName,x,newText) { //v3.0
  var obj = MM_findObj(objName); if (obj) obj.value = newText;
}
function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='The E-mail Address Field must contain a valid e-mail address.\n';
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

// global var that determines whether to check for additional required information or not
var additionalReq = 0;
// set additional required fields
function setAddReq() {additionalReq = 1;}

/*
 * Checks for required fields before submitting.
 */
function checkFields(id) {
	var form = document.getElementById(id);
	var fname = form.first_name.value;
	var lname = form.last_name.value;
	var company = form.company.value;
	var email = form.email.value;
	
	// additional requirements
	var phone = form.phone.value;
	var address = form.address.value;
	var city = form.city.value;
	var state = form.state.value;
	var zip = form.zip.value;
	var state = form.state.value;
	
	var alertTxt = '';
	
	if (fname == '' || fname.indexOf("enter your") >=0) {
		alertTxt += 'The first name field is required\n';
		document.getElementById('first_nameReq').innerHTML = '<font style=" color: red;"> * required</font>';
	} else {document.getElementById('first_nameReq').innerHTML = ' *';}
	
	if (lname == '' || lname.indexOf("enter your") >=0) {
		alertTxt += 'The last name field is required\n';
		document.getElementById('last_nameReq').innerHTML = '<font style=" color: red;"> * required</font>';
	} else {document.getElementById('last_nameReq').innerHTML = ' *';}
	
	if (company == '' || company.indexOf("enter your") >=0) {
		alertTxt += 'A company name is required.\n';
		document.getElementById('companyReq').innerHTML = '<font style=" color: red;"> * required</font>';
	} else {document.getElementById('companyReq').innerHTML = ' *';}
	
	if (email == '' || email.indexOf("enter your") >=0) {
		alertTxt += 'The email address field is required.\n\n';
		document.getElementById('emailReq').innerHTML = '<font style=" color: red;"> * required</font>';
	} else {document.getElementById('emailReq').innerHTML = ' *';}
	
	if (additionalReq) {
		if (phone == '') {
			alertTxt += 'A phone number is required\n';
			document.getElementById('phoneReq').innerHTML = '<font style=" color: red;"> * required</font>';
		} else {document.getElementById('phoneReq').innerHTML = ' *';}
		
		if (address == '') {
			alertTxt += 'Your address is required\n';
			document.getElementById('addressReq').innerHTML = '<font style=" color: red;"> * required</font>';
		} else {document.getElementById('addressReq').innerHTML = ' *';}
		
		if (city == '') {
			alertTxt += 'Your city is required\n';
			document.getElementById('cityReq').innerHTML = '<font style=" color: red;"> * required</font>';
		} else {document.getElementById('cityReq').innerHTML = ' *';}
		
		if (state == '') {
			alertTxt += 'Your state is required\n';
			document.getElementById('stateReq').innerHTML = '<font style=" color: red;"> * required</font>';
		} else {document.getElementById('stateReq').innerHTML = ' *';}
		
		if (zip == '') {
			alertTxt += 'Your zipcode is required\n\n';
			document.getElementById('zipReq').innerHTML = '<font style=" color: red;"> * required</font>';
		} else {document.getElementById('zipReq').innerHTML = ' *';}
		
		if (state == '...') {
			alertTxt += 'Your state is required\n\n';
			document.getElementById('stateReq').innerHTML = '<font style=" color: red;"> * required</font>';
		} else {document.getElementById('stateReq').innerHTML = ' *';}
	}
	
	if (alertTxt != '') {
		alert(alertTxt+'Please enter the required information before submitting your request.');
		return false;
	}
	return true;
}

/*
 * Changes which fields are required based on what subject is selected on the 
 * get_started.php page.
 */
function swapRequired() {
	var form = document.getElementById('getStartedForm');
	if (form.subject) {
		if (form.subject.selectedIndex == 2) {
			window.location = "get_started.php?register";
		}
		else if (form.subject.selectedIndex > 2) {
			document.getElementById('phoneReq').innerHTML = ' *';
			document.getElementById('addressReq').innerHTML = ' *';
			document.getElementById('cityReq').innerHTML = ' *';
			document.getElementById('stateReq').innerHTML = ' *';
			document.getElementById('zipReq').innerHTML = ' *';
			document.getElementById('stateReq').innerHTML = ' *';
			additionalReq = 1;
		}
		else {
			document.getElementById('phoneReq').innerHTML = '';
			document.getElementById('addressReq').innerHTML = '';
			document.getElementById('cityReq').innerHTML = '';
			document.getElementById('stateReq').innerHTML = '';
			document.getElementById('zipReq').innerHTML = '';
			document.getElementById('stateReq').innerHTML = '';
			additionalReq = 0;
		}
	}
}

function submitLoginN(what) {
	document.loginForm.loginC.disabled = 1;
	document.loginForm.forgotPass.disabled = 1;
	if (what == 'registerUser') {
		window.location = "get_started.php?register";
	} else {
		document.loginForm.action = document.loginForm.action + "?" + what;
		document.loginForm.submit();
	}
}

function submitF(id, where) {
	var form = document.getElementById(id);
	form.action = where;
	form.submit();
}

// global datsheet var used for selecting ds type
var dataSheetType = "";

// changes the action appropriately to display the right requested core
function dataReq() {
	document.requestDS.action = document.requestDS.action + "?datasheet&type=" + dataSheetType;
}

// sets the Data Sheet type as the user clicked
function setDSType(type) {
	dataSheetType = type;
}

/*
 * Standard startsWith() function.
 * - As of right now, cannot have REGEX special characters in the str var.
 */
String.prototype.startsWith = function(str) 
{return (this.match("^"+str)==str);}

// global var which determines whether to update or not
var updateInfo = 0;

function m_setUpdate() {
	updateInfo = 1;
}

function m_submit() {
	if (updateInfo) {
		document.updateForm.action = document.updateForm.action + "?update";
	}
}

// formats a phone number on blue
function formatPhone(isField) {
	var isPhone = isField.value;

	if (isPhone.length == 0) {
		// empty phone field, just return
		return;
	}
	
	// Strip out any extra characters that we do not need only keep letters and numbers
	isPhone = isPhone.replace(/[^0-9A-Za-z]/g,'');
	
	// trim to only be 11 chars MAX
	isPhone = isPhone.substr(0, 11);
	
	if (isPhone.length < 10) {
		alert('Please enter your full 10-digit phone number including Area Code.');
		isField.value = "";
		isField.focus();
	}
	else if (isPhone.length == 10) {
		isPhone = isPhone.replace(/([0-9a-zA-Z]{3})([0-9a-zA-Z]{3})([0-9a-zA-Z]{4})/,'($1) $2-$3');
		isField.value = isPhone;
	}
	else if (isPhone.length == 11) {
		isPhone = isPhone.replace(/([0-9a-zA-Z]{1})([0-9a-zA-Z]{3})([0-9a-zA-Z]{3})([0-9a-zA-Z]{4})/,'$1($2) $3-$4');
		isField.value = isPhone;
	}
}

/*** JAVASCRIPT FOR UPLOADING FILES ***/

var direction = 'next'; 	// next = forward, back = backward, DUH
function setDir(dir) {
	direction = dir;
}

function checkFiles() {
	// check to see if user pressed the '<- Back' button
	if (direction == 'back') {
		document.uploadFiles.action = '?step=2';
		return true;
	}
	
	// being checking for files
	var execFile = document.uploadFiles.executable.value;
	var dataFile = document.uploadFiles.inputdata.value;
	
	var vAlert = '';
	
	if(dataFile != '' && dataFile != 'inputdata.zip') {
		vAlert = 'The input data-file must be named \'inputdata.zip\'.\n  - Please rename the file and try again.\n';
		document.getElementById('inputReq').innerHTML = '<font style=" color: red;"> ^ rename</font>';
	}
	if (execFile == '') {
		vAlert += 'An executable file if required before uploading.\n';
		document.getElementById('execReq').innerHTML = '<font style=" color: red;"> ^ required</font>';
	}
	
	
	// if any errors, print and don't submit the form
	if (vAlert != '') {
		alert(vAlert+'\nPlease locate the errors (shown in red) and try again.');
		return false;
	}
}