/******** Phone validation: http://www.smartwebby.com/DHTML/phone_no_validation.asp ***********/

var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

function checkInternationalPhone(strPhone){
	var bracket=3
	var strPhone=trim(strPhone)
	if(strPhone.indexOf("+")>1) return false;
	if(strPhone.indexOf("-")!=-1)bracket=bracket+1
	if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)
		return false
	var brchr=strPhone.indexOf("(")
	if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")
		return false
	if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)
		return false
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (!isNaN(s) && s.length >= minDigitsInIPhoneNumber);
}
function trim(s){
	var i;
	var returnString = "";
	for (i = 0; i < s.length; i++){   
		var c = s.charAt(i);
		if (c != " ") returnString += c;
	}
	return returnString;
}
function stripCharsInBag(s, bag){
	var i;
	var returnString = "";
	for (i = 0; i < s.length; i++){   
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}
/********** End phone validation***********/
function checkEmail(email){
	var pattern = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
	var flag=email.match(pattern);
	return flag;
}

/******************  VALIDATION FUNCTIONS***************************/

function submitForm(action,form){
	var url="action?func=sendApplication";
	for(var i=0;i<form.elements.length;i++){
		var el=form.elements[i];
		if(el.type=="text" || el.type=="select-one" || el.type=="textarea" || ((el.type=="checkbox"||el.type=="radio") && el.checked)){
			url+="&"+el.name+"="+el.value;
		}
	}
	var prog = $('progress').empty().addClass('ajax-loading');
	var req = new Ajax( url, {
		method: 'post',
		onComplete: function(response){
			prog.removeClass('ajax-loading');
			alert(response);
			},
		onFailure: function(response){
			for (i in response)
				alert(response[i]);
			prog.removeClass('ajax-loading');
		}
	});
	req.request();
}

function validateApplyNowForm(formname){
	var root=document.getElementById(formname);
	var valid=true;
	if(!validateField(root.fname,"This field is required","fnamemsg","")) valid=false;
	if(!validateField(root.lname,"This field is required","lnamemsg","")) valid=false;
	if(!validatePhoneField(root.phonen,root.intercode,"phonemsg","phone",true)) valid=false;
	if(!validateField(root.country,"This field is required","countrymsg","")) valid=false;
	if(!validateField(root.address,"This field is required","addressmsg","")) valid=false;
	if(!validateEmail(root.email,true,"emailmsg")) valid=false;
	if(!validateField(root.program,"This field is required","proghint","")) valid=false;
	if(!validateField(root.volume,"This field is required","volhint","")) valid=false;
	if(!validateField(root.destinations,"This field is required","desthint","")) valid=false;
	if (!valid)
		return false;
	root.phone.value=root.intercode.value+"-"+root.phonen.value;
	var prods="";
	if(root.Callback.checked) prods+="Callback, ";
	if(root.CallingCards.checked) prods+="Calling Cards, ";
	if(root.VoIP.checked) prods+="VoIP, ";
	if(root.other.checked) prods+=root.otherproduct.value+",";
	if(prods=="") prods="none of listed products,";
	else prods=prods.substring(0,prods.length-1)+".";
	var exp="";
	for(i=0;i<root.experience.length;i++){
		if(root.experience[i].checked){
			exp=root.experience[i].value;
			break;
		}
	}
	var url="actions/common/ajax_functions.php?func=sendApplication&fname="+root.fname.value+"&lname="+root.lname.value+"&phone="+root.phone.value+"&country="+root.country.value+"&address="+root.address.value;
	url+="&email="+root.email.value+"&program="+root.program.value+"&volume="+root.volume.value+"&destinations="+root.destinations.value+"&comments="+root.comments.value;
	url+="&prods="+prods+"&experience="+exp;
	var req=new Ajax(url,{
		method:'GET',
		onComplete:function (response){
			document.getElementById('resulting_message').style.display="block";
			document.getElementById('resulting_message').innerHTML=response;
			root.reset();
		}	
	});
	req.request();
}

function validateRequestCLIAvailable(formname){
	var wrongData=false;
	var root=document.getElementById(formname);
	if(root.email.value=="" || !checkEmail(root.email.value)){
		root.email.style.borderColor="red";
		wrongData = true;
	}else
		root.email.style.borderColor="";
		
	if(root.phone.value=="" || !checkInternationalPhone(root.phone.value)){
		root.phone.style.borderColor="red";
		wrongData = true;
	}else
		root.phone.style.borderColor="";
		
	if(root.name.value==""){
		root.name.style.borderColor="red";
		wrongData = true;
	}else
		root.name.style.borderColor="";
	
	if(root.country.value==""){
		root.country.style.borderColor="red";
		wrongData = true;
	}else
		root.country.style.color="";

	if(!wrongData){
		url="actions/common/ajax_functions.php?func=requestCLIAvailable&name="+root.name.value+"&email="+root.email.value+"&phone="+root.phone.value+"country="+root.country.value;
		var req = new Ajax( url, {
		method: 'get',
		onComplete: function(response){
			document.getElementById('resulting_message').style.display="block";
			document.getElementById('resulting_message').innerHTML=response;
		}
	});
	req.request();
	}
}
/******FADE*****/
function fade(domId){
	obj = document.getElementById(domId);
	if(obj.style.display == "none") 
	return false; 
	var alpha = 0; 
	function f(){ 
		alpha++; 
		setOpacity(domId, alpha); 
		if(alpha > -1){  
			setTimeout(f, 100); 
		}else{
			obj.style.display = 'none'; 
		}
	}
	setTimeout(f, 100); 
}
function setOpacity(domId, val) {
	if(val>10) return;
	obj = document.getElementById(domId);
	obj.style.MozOpacity = val;
	obj.style.opacity = val/10;
	obj.style.filter = 'alpha(opacity=' + val*10 + ')';
}

function setInternationalCode(hideObj,val,nbflds){
	var filds=hideObj.split(";");// the other fields are the ones to be hidden
	nbflds=nbflds.split(";");
	if(val==""){
		for(i=0;i<nbflds.length;i++){
			if(document.getElementById(nbflds[i]))
				document.getElementById(nbflds[i]).value="";
			if(document.getElementById('select'+nbflds[i]))
				document.getElementById('select'+nbflds[i]).value="";
		}
		
		for(i=0;i<filds.length;i++){
			if(document.getElementById(filds[i]))
				document.getElementById(filds[i]).parentNode.parentNode.style.display="none";
		}
		return;
	}
	if (window.XMLHttpRequest) req=new XMLHttpRequest(); else req=new ActiveXObject("Microsoft.XMLHTTP");
	var url="actions/common/ajax_functions.php";
	var params="func=getInternationalCode&country="+val.replace("&","@");
	req.open("POST", url, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	req.setRequestHeader("Content-length", params.length);
	req.setRequestHeader("Connection", "close");
	req.onreadystatechange = function(){
		if(req.readyState == 4 && req.status == 200) {
			for(i=0;i<nbflds.length;i++){
			if(document.getElementById(nbflds[i]))
				document.getElementById(nbflds[i]).value=req.responseText;
			if(document.getElementById('select'+nbflds[i]))
				document.getElementById('select'+nbflds[i]).value=req.responseText;
			}
			if(val=="USA / Canada" || val == "Canada / USA"){
				for(i=0;i<filds.length;i++){
					if(document.getElementById(filds[i])){
						try { document.getElementById(filds[i]).parentNode.parentNode.style.display="table-row";}
						catch(e){document.getElementById(filds[i]).parentNode.parentNode.style.display="block";}
						
					}
				}
			}else{
				for(i=0;i<filds.length;i++){
					if(document.getElementById(filds[i]))
						document.getElementById(filds[i]).parentNode.parentNode.style.display="none";
				}
			}
		}
	}
	req.send(params);
}
/*****FORM VALIDATION FUNCTIONS****/
function validateField(field,message,msgfield,defaultval){
	if(!field) return;
	field.value=field.value.replace(/^\s+|\s+$/g,"");
	var fieldname=field.name;
	var space=field.id.lastIndexOf('username')>=0 && field.value.lastIndexOf(" ")>=0;
	if(field.value=="" || field.value==defaultval || space ){
		field.parentNode.className="invalidVal";
		if(space) message="No spaces are allowed.";
		document.getElementById(msgfield).className="redc data";
		document.getElementById(msgfield).innerHTML=message;
		return false;
	}else{
		field.parentNode.className="";
		document.getElementById(msgfield).innerHTML="";
		return true;
	}
}
function validateFieldNumeric(field,message,msgfield,required){
	if(!field) return;
	field.value=field.value.replace(/^\s+|\s+$/g,"");
	var fieldname=field.name;
	if(required && field.value==""){
		field.parentNode.className="invalidVal";
		document.getElementById(msgfield).className="redc data";
		document.getElementById(msgfield).innerHTML=message;
		return false;
	}else if(field.value!="" && isNaN(field.value)){
		field.parentNode.className="invalidVal";
		document.getElementById(msgfield).className="redc data";
		document.getElementById(msgfield).innerHTML="Please enter a numeric value";
		return false;
	}else{
		field.parentNode.parentNode.className="";
		document.getElementById(msgfield).className="";
		document.getElementById(msgfield).innerHTML="";
		return true;
	}
}

function validatePhoneField(nb,code,msgfield,type,required){
	nb.value=nb.value.replace(/^\s+|\s+$/g,"");
	code.value=code.value.replace(/^\s+|\s+$/g,"");
	if(required || (!required && (code.value!="" && nb.value!=""))){
		if(nb.value==""){
			nb.parentNode.className="invalidVal";
			document.getElementById(msgfield).className="redc data";
			document.getElementById(msgfield).innerHTML="Please enter the "+type+" number";
			return false;
		}if(code.value==""){
			nb.parentNode.className="invalidVal";
			document.getElementById(msgfield).className="redc data";
			document.getElementById(msgfield).innerHTML="Please enter the country code.";
			return false;
		}
		if(!checkInternationalPhone(code.value+"-"+nb.value)){
			nb.parentNode.className="invalidVal";
			document.getElementById(msgfield).className="redc data";
			document.getElementById(msgfield).innerHTML="Please enter a valid "+type+" number.";
			return false;
		}
	}
	nb.parentNode.className="";
	document.getElementById(msgfield).className="";
	document.getElementById(msgfield).innerHTML="";
	return true;
}

function validatePasswords(pass1,pass2,pass1msg,pass2msg,oldpass,oldpassmsg,required){
	if(required || pass1.value.replace(/^\s+|\s+$/g,"")!="" || pass2.value.replace(/^\s+|\s+$/g,"")!="" ){
		if(pass1.value.replace(/^\s+|\s+$/g,"")==""){
			pass1.parentNode.className="invalidVal";
			document.getElementById(pass1msg).className="redc data";
			document.getElementById(pass1msg).innerHTML="Please enter a password";
			document.getElementById(pass2msg).innerHTML="";
			pass2.parentNode.className="";
			return false;
		}if(pass1.value.length<6){
			pass1.parentNode.className="invalidVal";
			document.getElementById(pass1msg).className="redc data";
			document.getElementById(pass1msg).innerHTML="Please enter a password of more than 6 characters.";
			document.getElementById(pass2msg).innerHTML="";
			pass2.parentNode.className="";
			return false;
		}
		if(pass2.value!=pass1.value){
			pass2.parentNode.className="invalidVal";
			document.getElementById(pass2msg).className="redc data";
			document.getElementById(pass2msg).innerHTML="The passwords does not match";
			document.getElementById(pass1msg).innerHTML="";
			pass1.parentNode.className="";
			return false;
		}
	}
	document.getElementById(pass1msg).innerHTML="";
	document.getElementById(pass2msg).innerHTML="";
	document.getElementById(pass1msg).className="";
	document.getElementById(pass2msg).className="";
	pass1.parentNode.className="";
	pass2.parentNode.className="";
	if(oldpass!=""){
	}
	return true;
}
function validateEmail(field,required,msgfield){
	field.value=field.value.replace(/^\s+|\s+$/g,"");
	if(required){
		if(field.value==""){
			field.parentNode.className="invalidVal";
			document.getElementById(msgfield).className="redc data";
			document.getElementById(msgfield).innerHTML="This field is required.";
			return false;
			
		}
	}
	if(!field.value.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/) && field.value!=""){
		field.parentNode.className="invalidVal";
		document.getElementById(msgfield).className="redc data";
		document.getElementById(msgfield).innerHTML="Please enter a valid email.";
		return false;
	}
	field.parentNode.className="";
	document.getElementById(msgfield).className="";
	document.getElementById(msgfield).innerHTML="";
	return true;
}
function validateUSField(field, msgfield, message, country, required){
	if (country.lastIndexOf("USA / Canada") >=0 || country.lastIndexOf("Canada / USA") >= 0){
		if(field.value == ""){
			setInvalid(field,message,msgfield);
			return false;
		}
		else{
			setValid(field,msgfield);
			return true;
		}
	}else{
		setValid(field,msgfield);
		return true;
	}
}
function setValid(field,msgfield){
	field.value=field.value.replace(/^\s+|\s+$/g,"");
	field.parentNode.className="";
	if(document.getElementById(msgfield))
		document.getElementById(msgfield).innerHTML="";
	return true;
}
function setInvalid(field,message,msgfield){
	field.value=field.value.replace(/^\s+|\s+$/g,"");
	field.parentNode.className="invalidVal";
	if(document.getElementById(msgfield)){
		document.getElementById(msgfield).className="redc data";
		document.getElementById(msgfield).innerHTML=message;
	}
	return false;
}
//on Focus and blue
function updateField(fld,val,setEmpty){
	if(setEmpty){
		if(fld.value==val){
			fld.value="";
			fld.style.color='';
		}
	}else{
		if(fld.value == "" || fld.value == val){
			fld.value = val;
			fld.style.color="silver";
		}
	}
}

function selectHorizMenuTab(selected, row){
	var menu=document.getElementById(row);
	for(i=0;i<menu.cells.length;i=i+2){
		if(i==selected){
			menu.cells[i].className="menuBlockSelected";
		}else{
			menu.cells[i].className="menuBlock";
		}
	}
}
function selectVerticalMenuTab(selected,tab){
	var menu=document.getElementById(tab);
	for(i=0;i<menu.rows.length;i++){
		if(i==selected){
			menu.rows[i].cells[0].className="vmenu_left_selected";
			menu.rows[i].cells[1].className="vmenu_selected";
		}else{
			menu.rows[i].cells[0].className="vmenu_left";
			menu.rows[i].cells[1].className="vmenu";
		}
	}
}

//stabs
function getProductsIds(){
	if (window.XMLHttpRequest) req=new XMLHttpRequest(); else req=new ActiveXObject("Microsoft.XMLHTTP");
	var url="actions/common/ajax_functions.php";
	var params="func=getProductsIds";
	req.open("POST", url, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	req.setRequestHeader("Content-length", params.length);
	req.setRequestHeader("Connection", "close");
	req.onreadystatechange = function(){
		if(req.readyState == 4 && req.status == 200) {
			
		}
	}
	req.send(params);
}






var horizontal_offset="9px" //horizontal offset of hint box from anchor link


var vertical_offset="0" //horizontal offset of hint box from anchor link. No need to change.
var ie=document.all
var ns6=document.getElementById&&!document.all

function getposOffset(what, offsettype){
	var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
	var parentEl=what.offsetParent;
	while (parentEl!=null){
		totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		parentEl=parentEl.offsetParent;
	}
	return totaloffset;
}

function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
	var edgeoffset=(whichedge=="rightedge")? parseInt(horizontal_offset)*-1 : parseInt(vertical_offset)*-1
	if (whichedge=="rightedge"){
		var windowedge=ie && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-30 : window.pageXOffset+window.innerWidth-40
		dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
		edgeoffset=dropmenuobj.contentmeasure+obj.offsetWidth+parseInt(horizontal_offset)
	}
	else{
		var windowedge=ie && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
		dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
		if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
		edgeoffset=dropmenuobj.contentmeasure-obj.offsetHeight
	}
	return edgeoffset
}

function showhint(e ,menucontents, obj, tipwidth){
	if ((ie||ns6) && document.getElementById("hintbox")){
		dropmenuobj=document.getElementById("hintbox")
		dropmenuobj.innerHTML=menucontents
		dropmenuobj.style.left=dropmenuobj.style.top=-500
		if (tipwidth!=""){
			dropmenuobj.widthobj=dropmenuobj.style
			dropmenuobj.widthobj.width=tipwidth
		}
		dropmenuobj.x=getposOffset(obj, "left")
		dropmenuobj.y=getposOffset(obj, "top")
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+"px"
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+"px"
		dropmenuobj.style.visibility="visible"
		obj.onclick=function(event){hidetip(event,menucontents, obj, tipwidth);};
	}
}

function hidetip(e,menucontents, obj, tipwidth){
	if(dropmenuobj.style.visibility!="hidden"){
		dropmenuobj.style.visibility="hidden"
		dropmenuobj.style.left="-500px"
	}else{
		showhint(e, menucontents, obj, tipwidth)
	}
}

function createhintbox(){
	var divblock=document.createElement("div")
	divblock.setAttribute("id", "hintbox")
	document.body.appendChild(divblock)
}

if (window.addEventListener)
	window.addEventListener("load", createhintbox, false)
else if (window.attachEvent)
	window.attachEvent("onload", createhintbox)
else if (document.getElementById)
	window.onload=createhintbox;
/******* END TIP *******/
	

function updateTableRows(tab,strt){
	for(i=strt;i<tab.rows.length;i++){
		if( i % 2 ==0 ) tab.rows[i].className="evenRow";
		else tab.rows[i].className="oddRow";
	}
}
function showHideUSfields(form, countryname){
    if(!form[countryname]) return;
    var country = form[countryname].value
    var enable =  (country.lastIndexOf("USA / Canada") >= 0 || country.lastIndexOf("Canada / USA") >= 0);
    for (i = 0 ; i < form.elements.length; i++){
        if(form.elements[i].parentNode.name == "usfield"){
            form.elements[i].disabled = !enable;
        }
    }
}

function ShowHideObject(objectid, display){
	var obj = document.getElementById(objectid);
	if(!obj) return;
	var disp = (display) ? display : "block";
	if(obj.style.display != "none") obj.style.display = "none";
	else obj.style.display = disp;
}
