
/**
 * getXMLHttpRequest
 * @return {XMLHttpObject) 
 */

function getXMLHttpRequest() {
	var xmlHttp;
	try{
		//FF, Opera 8.0+, Safari, IE7.0+
		xmlHttp = new XMLHttpRequest();
	}catch(e){
		//IE 6.0-
		try{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				xmlHttp = new ActiveXObject("Microsfot.XMLHTTP");
			}catch(e){
				
			}
		}
	}
	return xmlHttp;
}

function validateEmail(email) {

	var ret_val = new Array();
	
    var reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    var address = email;

    if (!reg.test(address)) {
    	ret_val[0] = false;
    	ret_val[1] = "Invalide email";
        return ret_val;
    } else {
    	ret_val[0] = true;
    	ret_val[1] = "";
    	return ret_val;
    }
}
    
function validateInput(field) {
	var ret_val = new Array();
	var error = "Required field: ";

	if( field.value == "" ) {
		error += field.name +"\n";
		ret_val[0] = false;
		ret_val[1] = error;
	} else {
		ret_val[0] = true;
		ret_val[1] = "";
	}
	
	if( field.name == "customer_address" ) {
		ret_val = validateEmail(field.value);
	}
	
	return ret_val;
}

function compFormPost(frmObj) {
	var str = '';
	var elm;
	var endName = '';
	var ret_param = new Array();

	ret_param[0] = true;
	ret_param[1] = "";
	for (i = 0, k = frmObj.length; i < k; i++) {
		elm = frmObj[i];
		
		if( ret_param[0] == true ) {
			switch (elm.type) {
				case 'text':
				case 'hidden':
				case 'password':
				case 'textarea':
				case 'select-one':					
					str += elm.name + '=' + escape(elm.value) + '&';
					ret_param = validateInput(elm);
					break;
				case 'select-multiple':
					sElm = elm.options;
					str += elm.name + '='
					for (x = 0, z = sElm.length; x < z; x++) {
						if (sElm[x].selected) {
							str += escape(sElm[x].value) + ',';
						}
					}
					str = str.substr(0, str.length - 1) + '&';
					break;
				case 'radio':
					if (elm.checked) {
						str += elm.name + '=' + escape(elm.value) + '&';						
					}
					break;
				case 'checkbox':
					if (elm.checked) {
						if (elm.name == endName) {
							if (str.lastIndexOf('&') == str.length - 1) {
								str = str.substr(0, str.length - 1);
							}
							str += ',' + escape(elm.value);
						} else {
							str += elm.name + '=' + escape(elm.value);
						}
						str += '&';
						endName = elm.name;
					}
					break;
			}
						
		} else {
			return ret_param;
		}
	}

//	return str.substr(0, str.length - 1);
	ret_param[0] = true;
	ret_param[1] = str.substr(0, str.length - 1);
	return ret_param;
}

	
function ajaxFunctionPost(frmObj, fileName) {

	var xmlHttp = getXMLHttpRequest();
	if( xmlHttp == null ) {
		alert("Your browser does not support Ajax!!!");
		return;
	}
	
	var param;
	var ret_param = compFormPost(frmObj);
	
	if( ret_param[0] == false) {
//		document.getElementById("result").value = param[1];
		document.getElementById("result").innerHTML = ret_param[1];
//		result.value = param[1];
		
		return false;
	} else {
		param = ret_param[1];
//		alert("send mail ready");

		xmlHttp.onreadystatechange = function() {
			if( xmlHttp.readyState == 4 ) {

	//			alert("readyState is : " + xmlHttp.readyState);
				if( xmlHttp.status == 200 || xmlHttp.status == 0) {
					
					var resText = xmlHttp.responseText;
						//alert("res : "+resText);
						//alert("The email has been sent.");
//					document.getElementById("result").value = resText;
					document.getElementById("result").innerHTML = resText;
//					result.value = resText;

					return true;
		             
				} else {
					//alert("status is " + xmlHttp.status);
				}
			} else {
//				alert("readyState is : " + xmlHttp.readyState);
			}
		}
		
//		xmlHttp.open("POST", "http://www.neodomains.ca/domains/submitMail", true);
		xmlHttp.open("POST", "/domains/submitMail", true);
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
		xmlHttp.setRequestHeader("Cache-Control", "no-cache, must-revalidate");
		xmlHttp.setRequestHeader("Pragma", "no-cache");
		
		xmlHttp.send(param);
	
		return true;
//		return false;
	}
}

function ajaxFunctionGet() {
	alert("This is get method!");
	var xmlHttp = getXMLHttpRequest();
	if( xmlHttp == null ) {
		alert("Your browser does not support Ajax!!!");
		return;
	}
	
	xmlHttp.onreadystatechange = function() {
		if( xmlHttp.readyState == 4 ) {
			var resText = xmlHttp.responseText;
			//alert("res : "+resText);
			document.getElementById("time").value = resText;
		}
	}
	
	xmlHttp.open("GET", "/WebTest/simpleAjaxTest", true);
	xmlHttp.send(null);
}

function RunTimer() {
	var today = new Date();
	var RunTime = today.getTime();
	return RunTime;
}

function wait_time() {
//	document.getElementById("result").innerHTML = "The email has been sent.";	
	var startTime = RunTimer();
	var endTime = RunTimer();
	while(true) {
		for(var i=0; i<1000; i++) {
		}	
		endTime = RunTimer();
		if( (endTime - startTime) > 3000 ) {
			//alert("5000 milisecond more");
			break;
		}
	}
}

function sendMailAjax(frmObj, fileName) {
	var ret_val = ajaxFunctionPost(frmObj, fileName);
//	alert('ret_val='+ret_val);
//	setTimeout("wait_time()", 5000);
	wait_time();

	if( ret_val == true ) {
		downloadPDF(fileName);
		//setTimeout('downloadPDF(fileName)', 5000);
		return true;
	} else {
		return false;
	}
}
	
function downloadPDF(fileName) {

	var url = "http://www.neodomains.ca/domains/content/customizedTemplate/advantage/";
	if( fileName == "adam_campbell_buying") {
		url += "adam_campbell_buying.pdf";
	} else if(fileName == "adam_campbell_selling") {
		url += "adam_campbell_selling.pdf";
	}
//	alert("fileName = "+url);
	
	document.forms['send_request'].action = url;
	document.forms['send_request'].submit();
}




