// JavaScript Document

// SUPPORT FUNCTIONS FOR REGISTRATION PAGE
// JEREMY BLOOMSTROM
// 12/2009


function bockNonNumeric(e) {
	if (navigator.appName.indexOf('Netscape') != -1) {
		if (e.which == 9 || e.which == 8 || (e.which > 47 && e.which < 58) ) {
			return;
		}
		else {
			return false;
		}
	}
	else {
		if (e.keyCode == 9 || e.keyCode == 8 || (e.keyCode > 47 && e.keyCode < 58)) {
			return;
		}
		else {
			return false;
		}
	}
}

function findPos(obj) {
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function getradioSelection(group) { 
var index = -1;
  for(var k=0;k<group.length;k++) {
    if(group[k].checked) {
       index = k;
	}
  }
  if (index == -1) {
	  return false;
  }
  else {
	  return group[index].value;
  }
} 

function verify(field) {
	var error = false;
	if (field == 'registration') { // entire form before submission
		var errorMessage = "";
		var fieldNames = ["username","password","email_to","name","con_primary_contact","address","suburb","state","postcode","telephone"]
		if (!getradioSelection(document.forms['registration'].elements['rgAreYou'])) { // are you not checked
			error = true;
			errorMessage += "Error : Are you ... : ";
			errorMessage += "Please select which type of member you are\n";
		}
		if (!getradioSelection(document.forms['registration'].elements['rgRenewalOption'])) { // renewal options not checked
			error = true;
			errorMessage += "Error : Renewal Options : ";
			errorMessage += "Please select a renewal option\n";
		}
		
		for (var ii = 0; ii < fieldNames.length ; ii++) {
			fieldValue = document.forms.registration.elements[fieldNames[ii]].value;
			switch(fieldNames[ii]) {
				case 'username':
				if (user_names.indexOf(fieldValue) != -1 && !renew) { // username has been used already
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "That username is already in use\n";
				}
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Username is required\n";
				}
				break;
				
				case 'password':
				pwv = document.forms['registration'].password_verify.value;
				if (fieldValue != pwv && pwv != '') { // passwords do not match and verify is not blank;
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Passwords do not match\n";
				}
				break;
				
				case 'email_to':
				pattern = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
				if (String(fieldValue).search(pattern) == -1 || fieldValue == '') { //not a valid email address
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Please provide a valid email address\n";
				}
				break;
				
				case 'state':
				var valid_states = ["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"];
				if (valid_states.indexOf(fieldValue) == -1) { // not a valid state
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Please Enter a Valid State Abbreviation\n";
				}
				break;
				
				case 'name':
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Business name is required\n";
				}
				break;
				
				case 'con_primary_contact':
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Primary Contact is required\n";
				}
				break;
				
				case 'address':
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Address is required\n";
				}
				break;
				
				case 'state':
				var valid_states = ["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"];
				if (valid_states.indexOf(fieldValue) == -1) { // not a valid state
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Please Enter a Valid State Abbreviation\n";
				}
				break;
				
				case 'suburb':
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "City is required\n";
				}
				break;
				
				case 'postcode':
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Zip Code is Required\n";
				}
				break;
				
				case 'telephone':
				if (fieldValue == '') {
					error = true;
					errorMessage += "Error : " + fieldNames[ii]+" : ";
					errorMessage += "Phone Number is Required\n";
				}
				break;
			}
		}
		
			
		if (error) {
			alert(errorMessage);
			return false;
		}
		else {
			validateForm('registration');
			//this.location.replace('http://palmerchamber.org');
			return;
		}
	}
	
	var fieldValue = document.forms['registration'].elements[field].value;
	var offset = 91;
	
	switch (field) {
		case 'username':
		if (user_names.indexOf(fieldValue) != -1) { // username has been used already
			error = true;
			errorMessage = "That username is already in use";
		}
		if (fieldValue == '') {
			error = true;
			errorMessage = "Username is required";
		}
		break;
		
		case 'password':
		pwv = document.forms['registration'].password_verify.value;
		if (fieldValue != pwv && pwv != '') { // passwords do not match and verify is not blank;
			error = true;
			errorMessage = "Passwords do not match";
		}
		break;
		
		case 'password_verify':
		pw = document.forms['registration'].password.value;
		if (fieldValue != pw && fieldValue != '') { // passwords do not match and verify is not blank;
			error = true;
			errorMessage = "Passwords do not match";
			offset = 111;
		}
		break;
		
		case 'email_to':
		pattern = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
		if (String(fieldValue).search(pattern) == -1 || fieldValue == '') { //not a valid email address
			error = true;
			errorMessage = "Please provide a valid email address";
		}
		break;
		
		case 'name':
		if (fieldValue == '') {
			error = true;
			errorMessage = "Business name is required";
		}
		break;
		
		case 'con_primary_contact':
		if (fieldValue == '') {
			error = true;
			errorMessage = "Primary Contact is required";
		}
		break;
		
		case 'address':
		if (fieldValue == '') {
			error = true;
			errorMessage = "Address is required";
		}
		break;
		
		case 'suburb':
		if (fieldValue == '') {
			error = true;
			errorMessage = "City is required";
		}
		break;
		
		case 'state':
		var valid_states = ["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"];
		if (valid_states.indexOf(fieldValue) == -1) { // not a valid state
			error = true;
			errorMessage = "Please Enter a Valid State Abbreviation";
		}
		break;	
		
		case 'postcode':
		if (fieldValue == '') {
			error = true;
			errorMessage = "Zip Code is Required";
		}
		break;
		
		case 'telephone':
		if (fieldValue == '') {
			error = true;
			errorMessage = "Phone Number is Required";
		}
		break;			
	}
	
	if (error) {
		document.forms['registration'].elements[field].style.color = 'red';
		document.forms['registration'].elements[field].style.borderColor = 'red';
		var coord = findPos(document.forms['registration'].elements[field]);
		var left = (coord[0]+100);
		var top = (coord[1]-offset);
		$('divError').style.top = top+'px';
		$('divError').style.left = left+'px';
		$('divError').innerHTML = errorMessage;
		$('divError').style.display = '';
		
	}
	else {
		document.forms['registration'].elements[field].style.color = '#2F5C74';
		document.forms['registration'].elements[field].style.borderColor = '#D5D5D5';
		$('divError').style.display = 'none';
	}
		
}

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}


function $(obj) {
	return document.getElementById(obj);
}

if(!Array.indexOf){
	Array.prototype.indexOf = function(obj){
		for(var i=0; i<this.length; i++){
			if(this[i]==obj){
				return i;
			}
		}
		return -1;
	}
}



function get_mem_type() {
	var frm = document.forms['registration'];
	var are_you = frm.hfAreYou.value;
	var num_employees = frm.con_num_employees.value;
	var matches = Array();
	jj = 0;
	for (ii = 0; ii<mem_types.length;  ii++) {
		if (num_employees != '' && are_you == 'business') { // business with employee number filled in;
			if (num_employees >= mem_types[ii].min_employees && num_employees <= mem_types[ii].max_employees) {
				matches[jj] = ii;
				jj++;
			}
		}	
		else if (mem_types[ii][are_you] == 1) {
			//alert("mem_types["+ii+"]["+are_you+"] = "+mem_types[ii][are_you]);
			matches[jj] = ii;
			jj++;
		}
	}
	return matches;
}

/* Function Definition
Name				: repText
Author				: Jeremy Bloomstrom <jeremy.bloomstrom@gmail.com>
Paramenters			: StrLook,StrFind,StrFind
Description			: Recursively look and replace, return result
Returns				: result
*/


function repText(StrLook,StrFind,StrRep) {
	while (StrLook.indexOf(StrFind) != -1) {
		StrLook = StrLook.replace(StrFind,StrRep);
	}
	return StrLook;
}

function getdigits (s) {
    return s.replace (/[^\d]/g, "");
}

function getphone(s,e) {
	s = getdigits(s);
	arr = s.split("");
	switch (arr.length) {
		case 0:
			return "";
		break;
		case 1:
			return "("+arr[0]+"  )   -    ";
		break;
		case 2:
			return "("+arr[0]+arr[1]+" )   -    ";
		break;
		case 3:
			return "("+arr[0]+arr[1]+arr[2]+")   -    ";
		break;
		case 4:
			return "("+arr[0]+arr[1]+arr[2]+") "+arr[3]+ "  -";
		break;
		case 5:
			return "("+arr[0]+arr[1]+arr[2]+") "+arr[3]+arr[4]+ " -";
		break;
		case 6:
			return "("+arr[0]+arr[1]+arr[2]+") "+arr[3]+arr[4]+arr[5]+ "-";
		break;
		case 7:
			return "(907) "+arr[0]+arr[1]+arr[2]+"-"+arr[3]+arr[4]+arr[5]+arr[6];
		break;
		case 8:
			return "("+arr[0]+arr[1]+arr[2]+") "+arr[3]+arr[4]+arr[5]+ "-" + arr[6] + arr[7];
		break;
		case 9:
			return "("+arr[0]+arr[1]+arr[2]+") "+arr[3]+arr[4]+arr[5]+ "-" + arr[6] + arr[7] + arr[8];
		break;
		case 10:
			return "("+arr[0]+arr[1]+arr[2]+") "+arr[3]+arr[4]+arr[5]+ "-" + arr[6] + arr[7] + arr[8] +arr[9];
		break;
		case 11:
			return arr[0] + " ("+arr[1]+arr[2]+arr[3]+") "+arr[4]+arr[5]+arr[6]+ "-" + arr[7] + arr[8] + arr[9] +arr[10];
		default:
			return arr[0] + " ("+arr[1]+arr[2]+arr[3]+") "+arr[4]+arr[5]+arr[6]+ "-" + arr[7] + arr[8] + arr[9] +arr[10];
		break;
	}
}


