var NONE_SELECTED_VALUE="---none---";
var MAX_MESSAGE_PARTS=5;
var MAX_MESSAGE_LENGTH=158;
var CARRIER_OVERHEAD=2;
var AT_AND_T="at_t";
var CINGULAR_ONLY="cingular_only";
var VERIZON="verizon";
var VERIZON_PAGER="verizon_pager";
var SPRINT="sprint";
var NEXTEL="nextel";
var TMOBILE="tmobile";
var VIRGIN="virgin";
var ALLTEL_NON_PCS="alltel";
var ALLTEL_PCS="alltelpcs";
var QWEST="qwest";
var SUNCOM="suncom";
var CRICKET="cricket";
var ARGENTINA_TELECOM_PERSONAL="ar_telecom_personal";
var CANADA_BELL_MOBILITY="ca_bell";
var CANADA_ROGERS="ca_rogers";var CANADA_TELUS="ca_telus";
var CANADA_FIDO="ca_fido";
var CANADA_UNKNOWN="ca_unknown";
var CROATIA_VIP="hr_vip";
var FRANCE_ORANGE="fr_orange";
var GERMANY_TMOBILE="de_tmobile";
var GERMANY_O2="de_o2";
var SOUTH_AFRICA_VODACOM="za_vodacom";
var UKRAINE_KYIVSTAR="ua_kyivstar";
var UKRAINE_UMC="ua_umc";

var req;
var singlePartOverheadLength;
var maxSinglePartLength;
var multiPartOverheadLength;
var maxMultiPartLength;
var maxTotalMessageLength;
var numParts;
var numSent;
var numb='0123456789';

function isValid(parm,val){
	if(parm===""){
		return true;
		}
	for(i = 0; i < parm.length; i++){
		if(val.indexOf(parm.charAt(i),0)==-1){
			return false;
			}
		}
	return true;
	}
	
function isNum(parm){
	return isValid(parm,numb);
	}
	
function valid(form){
	var carrier = form.carrier.options[form.carrier.selectedIndex].value;
	if(!validNumber(form.areacode,form.prefix,form.linenumber,carrier)){
		alert("Please enter a valid phone number.");
		return false;
		}
	if(carrier==NONE_SELECTED_VALUE){
		alert("Please select a carrier!");
		return false;
		}
		
	var message = form.message.value;
	if(!message||(message.length===0)){
		alert("Please enter a message.");
		form.message.focus();
		form.message.select();
		return false;
		}
		
	var senderCarrier = form.senderCarrier.options[form.senderCarrier.selectedIndex].value;
	if(!validSenderNumber(form.senderAreaCode,form.senderPrefix,form.senderLineNumber,senderCarrier)){
		alert("Please enter a valid reply mobile number or leave the field blank.");
		return false;
		}
		
	if(!isSenderNumberBlank(form.senderAreaCode.value,form.senderPrefix.value,form.senderLineNumber.value)){
		if(senderCarrier==NONE_SELECTED_VALUE){
			alert("Please select your carrier!");
			return false;
			}
		}
		
	if(!validSenderEmail(form.senderEmail.value)){
		alert("Please enter a valid reply email address or leave the field blank.");
		form.senderEmail.focus();
		form.senderEmail.select();
		return false;
		}
			
	var validNonEmptySenderNumber = validNumber(form.senderAreaCode,form.senderPrefix,form.senderLineNumber,senderCarrier);
	var senderEmail = form.senderEmail.value;	
	var nonEmptySenderEmail = senderEmail&&(senderEmail.length>0);
	if(!(validNonEmptySenderNumber||nonEmptySenderEmail)){
		alert("Please enter your mobile number or email address.");
		return false;
		}
	return true;
	}
	
function validNumber(areaCode,prefix,lineNumber,carrier){
	var areaCodeString = areaCode.value;
	var prefixString = prefix.value;
	var lineNumberString = lineNumber.value;
	var fullNumber = areaCodeString+prefixString+lineNumberString;
	
	if((carrier=="de_tmobile")||(carrier=="de_o2")){
		if(!isNum(fullNumber)||(fullNumber.length<6)){
			areaCode.focus();
			areaCode.select();
			return false;
			}
		}
	else if((carrier=="hr_vip")||(carrier=="fr_orange")||(carrier=="ua_kyivstar")||(carrier=="ua_umc")||(carrier=="ar_telecom_personal")){
		if(!isNum(fullNumber)||(fullNumber.length<9)){
			areaCode.focus();
			areaCode.select();
			return false;
			}
		}
	else{
		if(isNum(areaCodeString)){
			if(areaCodeString.length!=3){
				areaCode.focus();
				areaCode.select();
				return false;
				}
		} else{
				areaCode.focus();
				areaCode.select();
				return false;
				}
				
	if(isNum(prefixString)){
		if(prefixString.length!=3){
			prefix.focus();
			prefix.select();
			return false;
			}
		}
	else{
		prefix.focus();
		prefix.select();
		return false;
		}
		
	if(isNum(lineNumberString)){
		if(lineNumberString.length!=4){
			lineNumber.focus();
			lineNumber.select();
			return false;
			}
		}
	else{
		lineNumber.focus();
		lineNumber.select();
		return false;
		}
	}
	return true;
	}

function isSenderNumberBlank(areaCode,prefix,lineNumber){
	return((!areaCode||(areaCode.length===0))
			 &&(!prefix||(prefix.length===0))
			 &&(!lineNumber||(lineNumber.length===0)));
	}
	
function validSenderNumber(areaCode,prefix,lineNumber,carrier){
	var areaCodeString = areaCode.value;
	var prefixString = prefix.value;
	var lineNumberString = lineNumber.value;
	
	if(isSenderNumberBlank(areaCodeString,prefixString,lineNumberString)){
		return true;
		}
	return validNumber(areaCode,prefix,lineNumber,carrier);
	}

function validSenderEmail(emailStr){
	if(!emailStr||(emailStr.length===0)){
		return true;
		}
/*
	else if(emailStr.search(/@keakaj\.com$/i)!=-1){
		return false;
		}
*/		
	var checkTLD = 1;
	var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	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=emailStr.match(emailPat);
	
	if(matchArray===null){
		return false;
		}
		
	var user = matchArray[1];
	var domain = matchArray[2];
	var i;
	for(i = 0; i < user.length; i++){
		if(user.charCodeAt(i)>127){
			return false;
			}
		}
	for(i=0;i<domain.length;i++){
		if(domain.charCodeAt(i)>127){
			return false;
			}
		}
		
	if(user.match(userPat)===null){
		return false;
		}
		
	var IPArray = domain.match(ipDomainPat);
	if(IPArray!==null){
		for(i=1;i<=4;i++){
			if(IPArray[i]>255){
				return false;
				}
			}
	return true;
	}
	
	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){
			return false;
			}
		}
	if(checkTLD&&domArr[domArr.length-1].length!=2&&domArr[domArr.length-1].search(knownDomsPat)==-1){
		return false;
		}
		
	if(len<2){
		return false;
		}
	return true;
}

function carrierChanged(elem){
	var chosenCarrierValue = elem.options[elem.selectedIndex].value;
	if(chosenCarrierValue.search("---")!=-1){
		selectItemInPopup(elem,NONE_SELECTED_VALUE);
		}
	calculateGlobalVars();
	}
	
function selectItemInPopup(popup,itemValue){
	var numOptions=popup.options.length;
	for(var i=0;i<numOptions;i++){
		if(popup.options[i].value==itemValue){
			popup.selectedIndex=i;
			break;
			}
		}
	}
	
function getCookie(cookieName){
	var allCookies=""+document.cookie;
	var cookieValue="";
	var cookieStartIndex = allCookies.indexOf(cookieName);
	if((cookieStartIndex!=-1)&&(cookieName!=="")){
		var cookieEndIndex = allCookies.indexOf(';',cookieStartIndex);
		if(cookieEndIndex==-1){
			cookieEndIndex = allCookies.length;
			}
			
	cookieValue = unescape(allCookies.substring(cookieStartIndex+cookieName.length+1,cookieEndIndex));
	}
	return cookieValue;
	}
	
function setValuesFromCookies(){
	var recipientNumber = getCookie('RecipientNumber');
	var recipientAreaCode = recipientNumber.substring(0,3);
	var recipientPrefix = recipientNumber.substring(3,6);
	var recipientLineNumber = recipientNumber.substring(6);
	document.getElementById("areacode").value = recipientAreaCode;
	document.getElementById("prefix").value = recipientPrefix;
	document.getElementById("linenumber").value = recipientLineNumber;
	var recipientCarrier = getCookie('RecipientCarrier');
	selectItemInPopup(document.getElementById("carrier"),recipientCarrier);
	var senderNumber = getCookie('SenderNumber');
	var senderAreaCode = senderNumber.substring(0,3);
	var senderPrefix=senderNumber.substring(3,6);
	var senderLineNumber=senderNumber.substring(6);
	document.getElementById("senderAreaCode").value = senderAreaCode;
	document.getElementById("senderPrefix").value = senderPrefix;
	document.getElementById("senderLineNumber").value = senderLineNumber;
	var senderCarrier=getCookie('SenderCarrier');
	selectItemInPopup(document.getElementById("senderCarrier"),senderCarrier);
	var senderEmail=getCookie('SenderEmail');
	document.getElementById("senderEmail").value=senderEmail;
	}
	
function setup(){
	setValuesFromCookies();
	MM_preloadImages('../media/btno-01.gif','../media/btno-02.gif','../media/btno-03.gif','../media/btno-04.gif');
	calculateGlobalVars();
	}
	
function updateCounts(message){
	var numChars = message.value.length;
	if(numChars > maxTotalMessageLength){
		message.value = message.value.substr(0,maxTotalMessageLength);
		numChars=maxTotalMessageLength;
		}
		
	document.getElementById('characterCount').innerHTML="Chars: " + numChars + ";";
	numParts = 1;
	if(numChars>maxSinglePartLength){
		numParts=Math.ceil(numChars/maxMultiPartLength);
		}
		
	document.getElementById('partCount').innerHTML="Parts: "+numParts;
	}
	
function calculateGlobalVars(){
	var senderAreaCode = document.getElementById("senderAreaCode").value;
	var senderPrefix = document.getElementById("senderPrefix").value;
	var senderLineNumber = document.getElementById("senderLineNumber").value;
	var senderNumber = senderAreaCode+senderPrefix+senderLineNumber;
	var senderEmail = document.getElementById("senderEmail").value;
	var senderCarrierElement = document.getElementById("senderCarrier");
	var senderCarrier = senderCarrierElement.options[senderCarrierElement.selectedIndex].value;
	var replyAddressLength=38;
	if(senderNumber&&(senderNumber.length>0)){if(senderCarrier){
		if(senderCarrier==AT_AND_T){
			replyAddressLength=senderNumber.length+9;
			}
			else if(senderCarrier==CINGULAR_ONLY){
				replyAddressLength=senderNumber.length+21;
				}
			else if(senderCarrier==VERIZON){
				replyAddressLength=senderNumber.length+9;
				}
			else if(senderCarrier==VERIZON_PAGER){
				replyAddressLength=senderNumber.length+13;
				}
			else if(senderCarrier==SPRINT){
				replyAddressLength=senderNumber.length+23;
				}
			else if(senderCarrier==NEXTEL){
				replyAddressLength=senderNumber.length+20;
				}
			else if(senderCarrier==TMOBILE){
				replyAddressLength=senderNumber.length+11;
				}
			else if(senderCarrier==VIRGIN){
				replyAddressLength=senderNumber.length+9;
				}
			else if(senderCarrier==ALLTEL_NON_PCS){
				replyAddressLength=senderNumber.length+17;
				}
			else if(senderCarrier==ALLTEL_PCS){
				replyAddressLength=senderNumber.length+18;
				}
			else if(senderCarrier==QWEST){
				replyAddressLength=senderNumber.length+11;
				}
			else if(senderCarrier==SUNCOM){
				replyAddressLength=senderNumber.length+14;
				}
			else if(senderCarrier==CRICKET){
				replyAddressLength=senderNumber.length+17;
				}
			else if(senderCarrier==ARGENTINA_TELECOM_PERSONAL){
				replyAddressLength=senderNumber.length+19;
				}
			else if(senderCarrier==CANADA_BELL_MOBILITY){
				replyAddressLength=senderNumber.length+11;
				}
			else if(senderCarrier==CANADA_ROGERS){
				replyAddressLength=senderNumber.length+14;
				}
			else if(senderCarrier==CANADA_TELUS){
				replyAddressLength=senderNumber.length+13;
				}
			else if(senderCarrier==CANADA_FIDO){
				replyAddressLength=senderNumber.length+7;
				}
			else if(senderCarrier==CROATIA_VIP){
				replyAddressLength=senderNumber.length+6;
				}
			else if(senderCarrier==FRANCE_ORANGE){
				replyAddressLength=senderNumber.length+9;
				}
			else if(senderCarrier==GERMANY_TMOBILE){
				replyAddressLength=senderNumber.length+15;
				}
			else if(senderCarrier==GERMANY_O2){
				replyAddressLength=senderNumber.length+11;
				}
			else if(senderCarrier==SOUTH_AFRICA_VODACOM){
				replyAddressLength=senderNumber.length+10;
				}
			else if(senderCarrier==UKRAINE_KYIVSTAR){
				replyAddressLength=senderNumber.length+17;
				}
			else if(senderCarrier==UKRAINE_UMC){
				replyAddressLength=senderNumber.length+14;
				}
			}
		}
		else if(senderEmail&&(senderEmail.length>0)){
			replyAddressLength=senderEmail.length;
			}
	singlePartOverheadLength = replyAddressLength+CARRIER_OVERHEAD;
	maxSinglePartLength = MAX_MESSAGE_LENGTH-singlePartOverheadLength;
	multiPartOverheadLength = singlePartOverheadLength+"x of x: ".length;
	maxMultiPartLength = MAX_MESSAGE_LENGTH-multiPartOverheadLength;
	maxTotalMessageLength = MAX_MESSAGE_PARTS*maxMultiPartLength;
	updateCounts(document.getElementById('messageText'));
	}
	
function MM_preloadImages(){
	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_swapImgRestore(){
	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_findObj(n,d){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);}
return x;}
function MM_swapImage(){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 MM_displayStatusMsg(msgStr){status=msgStr;document.MM_returnValue=true;}