function MM_swapImgRestore() { //v3.0
	var i, x, a = document.MM_sr; 
	for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d = document; 
	if (d.images){ 
		if (!d.MM_p) d.MM_p=new Array();
		var i, j = d.MM_p.length, a = MM_preloadImages.arguments; 
		for (i=0; i < a.length; i++) {
			if (a[i].indexOf("#") != 0){ 
				d.MM_p[j] = new Image; 
				d.MM_p[j++].src = a[i];
			}
		}
	}
}

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_swapImage() { //v3.0
	var i, j = 0, x, a = MM_swapImage.arguments; 
	document.MM_sr = new Array; 
	for (i = 0; i < (a.length - 2); i += 3) {
		if ((x = MM_findObj(a[i])) != null) {
			document.MM_sr[j++] = x; 
			if (!x.oSrc) x.oSrc = x.src; 
			x.src = a[i+2];
		}
	}
}

function check_email(emailStr) {

	var msg = '';

	/* The following variable tells the rest of the function whether or not
	to verify that the address ends in a two-letter country or well-known
	TLD. 1 means check it, 0 means don't. */

	var checkTLD = 1;

	/* The following is the list of known TLDs that an e-mail address must end with. */

	var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|COM|NET|ORG|EDU|INT|MIL|GOV|ARPA|BIZ|AERO|NAME|COOP|INFO|PRO|MUSEUM)$/;

	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format. It also is used to separate the username
	from the domain. */

	var emailPat = /^(.+)@(.+)$/;

	/* The following string represents the pattern for matching all special
	characters. We don't want to allow special characters in the address.
	These characters include ( ) < > @ , ; : \ " . [ ] */

	var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

	/* The following string represents the range of characters allowed in a
	username or domainname. It really states which chars aren't allowed.*/

	var validChars = "\[^\\s" + specialChars + "\]";

	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes). E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */

	var quotedUser = "(\"[^\"]*\")";

	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names. E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */

	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	/* The following string represents an atom (basically a series of non-special characters.) */

	var atom = validChars + '+';

	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */

	var word = "(" + atom + "|" + quotedUser + ")";

	// The following pattern describes the structure of the user

	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");

	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */

	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");

	/* Finally, let's start trying to figure out if the supplied address is valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */

	var matchArray = emailStr.match(emailPat);

	if (matchArray == null) {

		/* Too many/few @'s or something; basically, this address doesn't
		even fit the general mould of a valid e-mail address. */

		msg = "Your email address seems incorrect (check @ and .'s)";
		error = 1;
	}

	if (matchArray != null) {

		var user = matchArray[1];
		var domain = matchArray[2];
    
		// Start by checking that only basic ASCII characters are in the strings (0-127).
    
		for (i = 0; i < user.length; i++) {

			if (user.charCodeAt(i) > 127) {

				msg = "Ths username in your email address contains invalid characters.";
				error = 1;
			}
		}

		for (i = 0; i < domain.length; i++) {

			if (domain.charCodeAt(i) > 127) {

				msg = "Ths domain name in your email address contains invalid characters.";
				error = 1;
			}
		}
    
		// See if "user" is valid
    
		if (user.match(userPat) == null) {
    
			// user is not valid
    
			msg = "The username in your email address doesn't seem to be valid.";
			error = 1;
		}


		/* if the e-mail address is at an IP address (as opposed to a symbolic
		host name) make sure the IP address is valid. */

		var IPArray = domain.match(ipDomainPat);

		if (IPArray != null) {
    
			// this is an IP address
    
			for (var i = 1; i <= 4; i++) {

				if (IPArray[i] > 255) {

					msg = "Destination IP address in email address is invalid!";
					error = 1;
				}
			}

			return true;
		}
    
		// Domain is symbolic name. Check if it's valid.
    
		var atomPat = new RegExp("^" + atom + "$");
		var domArr = domain.split(".");
		var len = domArr.length;

		for (i = 0; i < len; i++) {

			if (domArr[i].search(atomPat) == -1) {

				msg = "The domain name of your email address does not seem to be valid.";
				error = 1;
			}
		}
    
		/* domain name seems valid, but now make sure that it ends in a
		known top-level domain (like com, edu, gov) or a two-letter word,
		representing country (uk, nl), and that there's a hostname preceding
		the domain or country. */
    
		if (checkTLD && domArr[domArr.length-1].length != 2 &&
			domArr[domArr.length - 1].search(knownDomsPat) == -1) {

			msg = "The email address must end in a well-known domain or two letter " + "country.";
			error = 1;
		}
    
		// Make sure there's a host name preceding the domain.
    
		if (len < 2) {

			msg = "This email address is missing a hostname!";
			error = 1;
		}

	}

	return msg;		
}

function process_contact() {

	var lname   = document.getElementById('lname').value;
	var fname   = document.getElementById('fname').value;
	var email   = document.getElementById('email').value;
	var title   = document.getElementById('title').value;
	var company = document.getElementById('company').value;
	var phone   = document.getElementById('phone_number').value;
	var time    = document.getElementById('best_time').value;
	var other   = document.getElementById('issue_other').value;

	var msg = '';

	if (time.length < 2) { msg = "Please enter the best time to reach you."; }

	var e_msg = check_email(email);

	if (e_msg != '') { msg = e_msg; }

	if (phone.length < 10) { msg = "Please enter your daytime phone number."; }

	if (company.length < 2) { msg = "Please enter the name of the company you represent."; }

	if (title.length < 2) { msg = "Please enter your title."; }

	if (lname.length < 2) { msg = "Please enter your name."; }

	if (fname.length < 2) { msg = "Please enter your name."; }

	if (other.checked) {

		var other_text = document.getElementById('issue_other_text');

		if (other_text.value.length < 2) {

			msg = "Please enter what other problem you face in finding candidates.";
		}
	}

	if (msg != '') {

		alert(msg);
		return false;

	} else {

		return true;
	}

	return '';
}

function process_more_info() {

	var fname = document.getElementById('fname').value;
	var lname = document.getElementById('lname').value;
	var title = document.getElementById('title').value;
	var cname = document.getElementById('company').value;
	var phone = document.getElementById('phone_number').value;
	var email = document.getElementById('email').value;
	var other = document.getElementById('issue_other');

	var msg = '';

	msg = check_email(email);

	if (other.checked) {

		var other_text = document.getElementById('issue_other_text');

		if (other_text.value.length < 2) {
        
			msg   = "Please enter what other problem you face in finding candidates.";
		}       
	}

	if (phone.length < 10) { msg = "Please enter your daytime phone number."; }

	if (cname.length < 2) { msg = "Please enter the name of the company you represent."; }

	if (title.length < 2) { msg = "Please enter your title."; }

	if (lname.length < 2) { msg = "Please enter your last name."; }

	if (fname.length < 2) { msg = "Please enter your first name."; }

	if (msg != '') {

		alert(msg);
		return false;

	} else {

		return true;
	}

	return '';
}

function update_price() {

	var price = 0;

	var post_and_screen   = document.getElementById('post_and_screen_plus');
	var search_and_screen = document.getElementById('search_and_screen_plus');
	var package_a         = document.getElementById('package_a');

	var quantity_string = document.getElementById('quantity').value;

	var prices = new Array(4);

	/* Post and Screen Plus+ */
	prices[0] = new Array(5);
	prices[0][0] = 450;
	prices[0][1] = 425;
	prices[0][2] = 400;
	prices[0][3] = 375;
	prices[0][4] = 350;

	/* Search and Screen Plus+ */
	prices[1] = new Array(5);
	prices[1][0] = 450;
	prices[1][1] = 425;
	prices[1][2] = 400;
	prices[1][3] = 375;
	prices[1][4] = 350;

	/* Combo Package */
	prices[2] = new Array(5);
	prices[2][0] = 850;
	prices[2][1] = 800;
	prices[2][2] = 750;
	prices[2][3] = 700;
	prices[2][4] = 650;

	if (post_and_screen.checked || search_and_screen.checked || package_a.checked) {

		if (quantity_string != '') {

			var quantity = parseInt(quantity_string);

			var listing_type;
			var quantity_range;

			if (post_and_screen.checked) {

				listing_type = 0;

			} else if (search_and_screen.checked) {

				listing_type = 1;

			} else if (package_a.checked) {

				listing_type = 2;

			}

			if (quantity == 1) {

				quantity_range = 0;

			} else if ((quantity >= 2) && (quantity <= 4)) {

				quantity_range = 1;

			} else if ((quantity >= 5) && (quantity <= 9)) {

				quantity_range = 2;

			} else if ((quantity >= 10) && (quantity <= 24)) {

				quantity_range = 3;

			} else if (quantity >= 25) {

				quantity_range = 4;
			}

			price = prices[listing_type][quantity_range] * quantity;
		}
	}

	document.getElementById('price').value = price.toString();

	return '';
}

function process_purchase() {

	var employer_name  = document.getElementById('employer_name').value;

	var payment_visa     = document.getElementById('payment_visa');
	var payment_mc       = document.getElementById('payment_mc');
	var payment_amex     = document.getElementById('payment_amex');
	var payment_discover = document.getElementById('payment_discover');

	var quantity    = document.getElementById('quantity').value;
	var cc_number   = document.getElementById('credit_card_number').value;
	var cc_exp_date = document.getElementById('cc_exp_date').value;
	var cc_cvv      = document.getElementById('cc_cvv_number').value;
	var cc_address  = document.getElementById('cc_address').value;
	var cc_city     = document.getElementById('cc_city').value;
	var cc_state    = document.getElementById('cc_state').value;
	var cc_zip      = document.getElementById('cc_zip').value;
	var cc_name     = document.getElementById('cc_name').value;
	var title       = document.getElementById('title').value;
	var initials    = document.getElementById('initials').value;

        var post_and_screen   = document.getElementById('post_and_screen_plus');
        var search_and_screen = document.getElementById('search_and_screen_plus');
        var package_a         = document.getElementById('package_a');

	var msg = '';

	if ((initials.length != 2) && (initials.length != 3)) {

		msg = "Please enter your initials.";
	}

	if (title.length < 2) { msg = "Please enter your Title."; }

	if (cc_name.length < 2) { msg = "Please enter the Name as it Appears on the Credit Card."; }

	if (cc_zip.length < 2) { msg = "Please enter the Zip Code."; }

	if (cc_state.length < 2) { msg = "Please enter the State."; }

	if (cc_city.length < 2) { msg = "Please enter the City."; }

	if (cc_address.length < 2) { msg = "Please enter the Address the Credit Card is Billed to."; }

	if (cc_cvv.length < 2) { msg = "Please enter the CVV number."; }

	if (cc_exp_date.length < 2) { msg = "Please enter the epiration date."; }

	if (cc_number.length < 2) { msg = "Please enter the Credit Card Number."; }

	if (!payment_visa.checked && !payment_mc.checked && !payment_amex.checked && !payment_discover.checked) {

		msg = "Please select a payment method.";
	}

	if (quantity == '') {

		msg = "Please select the number of job listings you are purchasing.";
	}

	if (!post_and_screen.checked && !search_and_screen.checked && !package_a.checked) {

		msg = "Please select a listing type.";
	}

	if (title.length < 2) { msg = "Please enter the name of the employer making the purchase."; }

	if (msg != '') {

		alert(msg);
		return false;

	} else {

		return true;
	}

	return '';
}

