/**
* @version $Id: ajaxcontact.js
* @copyright Copyright (C) 2006 Emir Sakic, http://www.sakic.net. All rights reserved.
*/

function mpri(url,params) {    
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	disableForm(true);
	showAnimation(true);
	document.getElementById('DivRcm').ajaxInProgress = true;

	http_request.onreadystatechange = function() {
		processContents(http_request);
	}
	http_request.open('POST', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader("Content-length", params.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(params);
}

function prfi(t,i,m,n,e,s,c,r,u,b,d,j) {
	var content = new String;
	if ( InvalidEmail ) {
		content += "<font color=\"" + r + "\">" + i + "</font><br />";
	}
	if ( EmptyMessage ) {
		content += "<font color=\"" + r + "\">" + m + "</font><br />";
	}
	if ((InvalidEmail && !EmptyMessage) || (!InvalidEmail && EmptyMessage)) {
		content += "<br />";
	}
 	if (!InvalidEmail && !EmptyMessage) {
		if ( RcmCarrValue=="sms" ) {
			content += "<font color=\"" + r + "\">" + j + "</font><br />";
		} else {
			content += t;
		}
	}
	content += d;
	content +=
		"<form name=\"rcmform\" id=\"rcmform\" method=\"post\" action=\"javascript:get(document.getElementById('rcmform'));\">" +
		"<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" +
		"<tr>" +
		"<td>" + u +
		"<div id=\"DivRcmCarr\"></div></td>" +
		"<td style=\"vertical-align:top;\" rowspan=\"3\"><div id=\"DivRcmMsg\"></div>" +
		"</td>" +
		"</td>" +
		"</tr>" +		
		"<tr>" +
		"<td style=\"vertical-align:top; height:90px;\">" + n +
		"<div id=\"DivRcmFrom\"></div>" + e +
		"<div id=\"DivRcmEmail\"></div>";
	if (RcmCarrValue=="sms") {
		content +=
		"<div style=\"position: relative; left: 120px; top: 10px; display:inline;\">" + b +
		"<div id=\"DivRcmNr\" style=\"display:inline;\"></div></div>";
	}
	content +=
		"</tr>" +
		"<tr>" +
		"<td style=\"vertical-align:bottom;\">" +
		"<input type=\"button\" id=\"send\" name=\"send\" value=\"" + s + "\" class=\"button\" onclick=\"javascript:get(this.parentNode);\" tabindex=\"5\" />&nbsp;&nbsp;" +
		"<input type=\"button\" id=\"cancel\" name=\"cancel\" value=\"" + c + "\" class=\"button\" onclick=\"javascript:rcm_cancel();\" tabindex=\"6\" />" +
		"</td>" +
		"</tr>" +
		"</table>" +
		"</form>";
	document.getElementById('DivRcm').innerHTML = content;
	build_rcm_carrier_field ();
	build_rcm_from_field ();
	build_rcm_email_field ();
	build_rcm_msg_field ();
	if (RcmCarrValue=="sms") {
		document.getElementById('DivRcmNr').innerHTML = charscalc();
	}
}

function brcfi(is) {
	smssel = '';
	emailsel = '';
	if (RcmCarrValue=="sms") {
		smssel = ' selected="selected"';
	} else {
		emailsel = ' selected="selected"';
	}
	document.getElementById('DivRcmCarr').innerHTML = "<select id=\"rcm_carrier\" name=\"rcm_carrier\" class=\"select\" style=\"width:" + is + "px\" onchange=\"save_rcm_carr_field (this.options[selectedIndex].value)\" tabindex=\"1\">" +
	"<option value=\"email\"" + emailsel + ">Email</option>" +
	"<option value=\"sms\"" + smssel + ">SMS</option>" +
	"</select>";
}

function brffi(is) {
	document.getElementById('DivRcmFrom').innerHTML = "<input type=\"text\" id=\"rcm_from_name\" name=\"rcm_from_name\" class=\"input\" size=\"" + is + "\" value=\"" +
	RcmFromValue + "\"" +
	" onchange=\"save_rcm_from_field(this.value); charsleft()\" onkeypress=\"charsleft()\" onkeydown=\"charsleft()\" onblur=\"charsleft()\" onkeyup=\"charsleft()\" onfocus=\"charsleft()\" tabindex=\"2\" />";
}

function brefi(is,rc) {
	if (InvalidEmail) {
		addstyle = " style=\"border-color:" + rc + "\";";
	} else {
		addstyle = "";
	}
	document.getElementById('DivRcmEmail').innerHTML = "<input type=\"text\" id=\"rcm_from_email\" name=\"rcm_from_email\" class=\"input\" size=\"" + is + "\" value=\"" +
	RcmEmailValue + "\"" + addstyle +
	" onchange=\"save_rcm_email_field(this.value); charsleft()\" onkeypress=\"charsleft()\" onkeydown=\"charsleft()\" onblur=\"charsleft()\" onkeyup=\"charsleft()\" onfocus=\"charsleft()\" tabindex=\"3\" />";
}

function prmfi(ym,tr,tc,te,sh,rc) {
	if (EmptyMessage) {
		addstyle = " style=\"border-color:" + rc + "\";";
	} else {
		addstyle = "";
	}
	document.getElementById('DivRcmMsg').innerHTML = ym;
	if (te != 1) {
		document.getElementById('DivRcmMsg').innerHTML += ' <a href="javascript: void(0)" onclick="pop_rcm_msg_field()">' + sh + '</a>';
	}
	document.getElementById('DivRcmMsg').innerHTML += "<br />" +
	"<textarea id=\"rcm_text\" name=\"rcm_text\"" + addstyle + " rows=\"" + tr + "\" cols=\"" + tc + "\" onchange=\"save_rcm_msg_field(this.value); charsleft()\" onkeypress=\"charsleft()\" onkeydown=\"charsleft()\" onblur=\"charsleft()\" onkeyup=\"charsleft()\" onfocus=\"charsleft()\" tabindex=\"4\">" +
	RcmMsgValue +
	"</textarea>";
}

function pormfi(ym,tr,tc,te,ex,sh,rc) {
	RcmMsgValue = "";
	document.getElementById('DivRcmMsg').innerHTML = ym;
	if (te != 1) {
		document.getElementById('DivRcmMsg').innerHTML = ym + ' <a href="javascript: void(0)" onclick="javascript: push_rcm_msg_field()">' + ex + '</a><br /><br />';
	} else {
		prmfi(ym,tr,tc,te,sh,rc);
	}
}

function processContents(http_request) {
	if (http_request.readyState == 4) {
		showAnimation(false);
	    if (http_request.status == 200) {
                document.getElementById('DivRcm').innerHTML = http_request.responseText;
            } else {
                document.getElementById('DivRcm').innerHTML = 'There was a problem with the request.';
            }
        }
}
    
function get(obj) {
	if (!ValidEmail(document.getElementById('rcm_from_email').value)) {
		InvalidEmail = 1;
	} else {
		InvalidEmail = 0;
	}
	if (document.getElementById('rcm_text').value=="") {
		EmptyMessage = 1;
	} else {
		EmptyMessage = 0;
	}
	if (InvalidEmail || EmptyMessage) {
		print_rcm_form();
	} else {
		var poststr = "rcm_carrier=" + encodeURI( document.getElementById('rcm_carrier').value ) +
			"&rcm_from_name=" + encodeURI( document.getElementById('rcm_from_name').value ) +
			"&rcm_from_email=" + encodeURI( document.getElementById('rcm_from_email').value ) +
			"&rcm_text=" + encodeURIComponent( document.getElementById('rcm_text').value );
		makePOSTRequest('/content/contact.php', poststr);
	}
}

function save_rcm_from_field (str) {
  	RcmFromValue = str;
}

function save_rcm_nr_field (str) {
	RcmNrValue = str;
}

function save_rcm_email_field (str) {
	RcmEmailValue = str;
}

function build_rcm_msg_field () {
	if (RcmMsgValue!="") {
		push_rcm_msg_field ();
	} else {
		pop_rcm_msg_field ();
	}
}

function save_rcm_msg_field (str) {
	RcmMsgValue = str;
}

function save_rcm_carr_field (value) {
  	RcmCarrValue = value;
  	print_rcm_form();
}

function rcm_cancel () {
	RcmFromValue = "";
	RcmEmailValue = "";
	InvalidEmail = 0;
	EmptyMessage = 0;
	RcmMsgValue = "";
	RcmCarrValue = "";
	RcmNrValue = "+";
	print_rcm_form();
}

function ValidEmail (email) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=email.match(emailPat)
	if (matchArray==null) {
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
			return false
		    }
		  }
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 ||
		domArr[domArr.length-1].length>4) {
		return false
	}
	if (len<2) {
	   return false
	}
	return true;
}

function ValidNr (Phone) {
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;

	if ((Phone==null)||(Phone=="")){
		return false
	}
		
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < Phone.length; i++)
	{   
		// Check that current character isn't whitespace.
		var c = Phone.charAt(i);
		if (validWorldPhoneChars.indexOf(c) == -1) returnString += c;
	}
	s=returnString;
	
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++)
    {   
	// Check that current character is number.
	var c = s.charAt(i);
	if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function charsleft() {
	if (RcmCarrValue=="sms") {
		document.getElementById('DivRcmNr').innerHTML = charscalc();
	} else {
		return;
	}
}

function charscalc() {
	var name = document.getElementById('rcm_from_name');
	var email = document.getElementById('rcm_from_email');
	var msg = document.getElementById('rcm_text');
	var ans = msg.value.length + name.value.length + email.value.length;
	var max = 157 - name.value.length - email.value.length;
	if (ans>157) {
		msg.value = msg.value.substring(0,max);
		free = 0;
	} else {
		free = 157 - ans;
	}
	return free;
}

function showAnimation(spin) {
	var loading = document.getElementById('loading');
	if (spin) {
		loading.style.display = 'block';
		preloadTimer = setInterval('doAnimation()', 100);
	} else {
		loading.style.display = 'none';
		clearInterval(preloadTimer);
	}
}

function doAnimation(from) {
	document.getElementById('SpinImage').src = '/content/contact_files/img/'+preloadFrame+'.png';
	preloadFrame++;
	if (preloadFrame > 12) preloadFrame = 1;
}

function disableForm(value) {
	if (document.getElementById('send')) {
		document.getElementById('send').disabled = value;
	}
	if (document.getElementById('cancel')) {
		document.getElementById('cancel').disabled = value;
	}
}
