var isLoaded = 0;
var strContactForm = '<form name="contact" method="post" action="#" onsubmit="checkContactForm(); return false;">' +
			'<label>&nbsp;</label>* Items highlighted with red are required.<br /><br />' +
			'<label>First name</label><input type="text" class="required" name="first_name" maxlength="32" size="37" /><br />' +
			'<label>Last name</label><input type="text" class="required" name="last_name" maxlength="32" size="37" /><br />' +
			'<label>E-mail</label><input type="text" name="email" class="required" onblur="checkEmail(this);" maxlength="128" size="37" /><br />' +
			'<label>Phone</label><input type="text" name="phone" onblur="cleanPhone(this);" maxlength="32" size="37" /><br />' +
			'<label>Comment</label><textarea rows="10" cols="40" name="comment"></textarea><br />' +
			'<label>&nbsp;</label><button name="submitButton" type="submit">Send</button>' +
			'</form>';

function checkContactForm()
{
	var msg = '';

	if ( document.contact.first_name.value.length < 1 ) {
		msg += 'Please enter your first name.\n';
	}
	if ( document.contact.last_name.value.length < 1 ) {
		msg += 'Please enter your last name.\n';
	}
	if ( document.contact.email.value.length < 1 ) {
		msg += 'Please enter your e-mail address.\n';
	}
	if ( msg.length > 0 ) {
		alert(msg);
	} else {
		sendContact();
	}
}

function sendContact()
{
	var location		= './inc/ajax/send.ajax.php';
	var postVariables	= 'mode=send';
	
	postVariables += '&first_name='+cleanUp(document.contact.first_name.value) +
				'&last_name='+cleanUp(document.contact.last_name.value) +
				'&email='+cleanUp(document.contact.email.value) +
				'&phone='+cleanUp(document.contact.phone.value) +
				'&comment='+cleanUp(document.contact.comment.value);				

	document.getElementById('floatingLayer').innerHTML = '<strong>Sending...</strong><br /><br /><img src="./images/sending.gif" alt="Sending E-mail" />';
	document.contact.submitButton.disabled=true;
	document.getElementById('floatingLayer').style.display='block';
			
	http.open("GET", location + '?' + postVariables, true);
	http.onreadystatechange =  sendContactResponse;
	http.send(null);	
	
	//window.open(location+'?'+postVariables,'noNamedWindow');
}

function sendContactResponse()
{
	if ( http.readyState == 4 ) {
		var objTimer = setTimeout('sendingLoadScreen()', 3000);
	}	
}

function sendingLoadScreen()
{
	document.getElementById('contactForm').innerHTML = '<h2>Your e-mail has been successfully sent.</h2>';		
	document.getElementById('floatingLayer').style.display='none';
	var objTimer = setTimeout('placeContactForm()', 3000);
}

function placeContactForm()
{
	document.getElementById('contactForm').innerHTML = strContactForm;
}

function onLoad(pageName)
{
	switch ( pageName ) {
		case 'contact.php':
			placeContactForm();
			document.getElementById('chatArea').innerHTML = '<h2>Gtalk</h2><iframe name="googleChat" allowtransparency="true"></iframe>'+
				document.getElementById('chatArea').innerHTML;
			var arrFrame = document.getElementsByName("googleChat");			
			changeChatSource(arrFrame[0]);
			break;	
	}	
}

function cleanPhone(objField)
{
	switch ( cleanNumber(objField.value).length ) {
		case 11:
			objField.value = cleanNumber(objField.value, 0);
			objField.value = '('+objField.value.substr(1,3)+') '+objField.value.substr(4,3)+'-'+objField.value.substr(7,4);
			break;
		case 10:
			objField.value = cleanNumber(objField.value, 0);
			objField.value = '('+objField.value.substr(0,3)+') '+objField.value.substr(3,3)+'-'+objField.value.substr(6,4);
			break;	
		case 7:
			objField.value = cleanNumber(objField.value, 0);
			objField.value = objField.value.substr(0,3)+'-'+objField.value.substr(3,4);
			break;
		default:
			objField.value='';
			break;
		
	}
}

function chkLen(strNumber, intLen)
{
	var newVal = '';
	var intStopper = 5;  /* will stop function after intStopper loops */
	var intCounter = 0;

	if ( intLen == '' || intLen == 0 || intLen == undefined ) {
		intLen = 2;
	}

	if ( strNumber == undefined ) {
		strNumber = 0;
	}
	newVal = strNumber.toString();
	while ( newVal.length < intLen && intCounter < intStopper ) {
		newVal = '0'+strNumber;
		intCounter++;
	}
	return newVal;
}

function cleanNumber(strNumber, is_float)
{
	var strSafe = '0123456789';
	var newSafe = '';

	if ( is_float == 1 ) {
		strSafe += '.';
	}

	if ( strNumber == undefined ) {
		return '';
	} else {
		if ( strNumber.length > 0 ) {
			for ( var i = 0; i < strNumber.length; i++ ) {
				if ( strSafe.indexOf(strNumber.substr(i,1)) != -1) {
					newSafe += strNumber.substr(i,1);
				}
			}
		}
		return newSafe;
	}
}

function checkEmail(fldObject)
{
	if ( fldObject.value != '' ) {
		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
		var regex = new RegExp(emailReg);
	
		if ( !regex.test(fldObject.value) ) {
			alert('Please enter a valid e-mail address');
			fldObject.value='';
			fldObject.focus();
	    		return false;
		} else {
			return true;
		}
	}
}


/**
 * cleanUp()
 *
 * This function loops through the passed string variable and replaces the reserved char (&) with "__ampersand__"
 * @param string strOld
 * @return string strNew
 */
function cleanUp(strOld)
{
	var newStr = '';

	if ( strOld != undefined && strOld.length > 0 ) {
		for ( var i = 0; i < strOld.length; i++) {
			switch ( strOld.substr(i,1) ) {
				case "|":
					break;
				case "`":
					newStr += '{tld}';
					break;
				case "#":
					newStr += '{nmbr}';
					break;
				case "'":
					newStr += '{sqte}';
					break;
				case '"':
					newStr += '{dqte}';
					break;
				case "=":
					newStr += '{eq}';
					break;
				case "&":
					newStr += '{amp}';
					break;
				case "/":
					newStr += '{sl}';
					break;
				case "\\":
					newStr += '{bsl}';
					break;
				case "\n":
					newStr += '{nl}';
					break;
				case ":":
					newStr += '{col}';
					break;
				case "?":
					newStr += '{que}';
					break;
				case "+":
					newStr += '{pls}';
					break;
				default:
					newStr += strOld.substr(i,1);
					break;
			}
		} /* End for ( var i = 0; i < str.length; i++) */
	}


	return newStr;
} /* End function cleanUp */

/**
 * targetNewWindow
 *
 * Force target of link to new window while maintaining XHTML Strict compatibility
 * @param object obj
 */
function targetNewWindow(obj)
{
	obj.target='_blank';	
} /* End function targetNewWindow() */

/**
 * openLink
 *
 * Opens new window to a specifid location
 * @param str link
 * @param str pageName
 */
function openLink(link, pageName)
{
	switch ( link ) {
		case '1':
			window.open('http://validator.w3.org/check?uri=http%3A%2F%2Fmarccabrera.com%2Fmarc%2F'+pageName, 'ValidXHTML');
			break;	
		case '2':
			window.open('http://jigsaw.w3.org/css-validator/validator?profile=css21&warning=0&uri=http%3A%2F%2Fmarccabrera.com%2Fmarc%2F'+pageName, 'ValidCSS');
			break;
		case '3':
			window.open('http://www.zend.com/store/education/certification/authenticate.php?ClientCandidateID=ZEND003518&RegistrationID=215159050', 'ZenCert');
			break;
		case '4':
			window.open('http://www.ncsacademy.com/verifycert.cfm?cert=1411947', 'JavaScriptCert');
			break;
		default:
			window.open(link, 'linkMC');
			break;
	}
} /* End function openLink() */

function changeChatSource(obj)
{
	if ( isLoaded == 0 ) {
		obj.src='http://www.google.com/talk/service/badge/Show?tk=z01q6amlqnrood2mbmu5uhinb0t6nqetqkqr3hcu6g4h452eq29dadpdi71p03f8ij46i0bbtam55om2dshc87jgr4adereorbu7k5fd70vpfd45re8b77gmpt37f55asqo5a8n691t8i2l6kirn56savakrombtvn0r5ol0e&amp;w=200&amp;h=60';	
		isLoaded = 1;
	}
}


/* ======================================== Begin Ajax information ======================================== */
/**
* function getHTTPObject
* This function is set up to
* allow access to the XMLHttpRequest Object
* within JavaScript
*/
function getHTTPObject() {
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/

	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
} /* End function getHTTPObject */

/* Load the getHTTPObject into the JavaScript http varaible */

var http = getHTTPObject(); // We create the HTTP Object