/*Generic functions to handle generic javascript actions.
Please only include generics function ONLY. Keep this file clean and out of custom js
Thanks. Justin
*/

/*init global variables*/
var isBusy=false;
var prevImg="";
var prevClass="";
var prevColor="";
var prevSt="";
var prevSval="";

/*functions */
function changeClass(divObj,classN){
	if(typeof(divID)=="string"){var divObj=document.getElementById(divObj);}
	
	if(classN==undefined){divObj.className=prevClass;}
	else{
		prevClass=divObj.className;
		divObj.className=classN;
	}
		
}

function changeColor(divObj,color){
	if(typeof(divID)=="string"){var divObj=document.getElementById(divObj);}
	
	if(color==undefined){divObj.style.backgroundColor=prevColor;}
	else{
		prevColor=divObj.style.backgroundColor;
		divObj.style.backgroundColor=color;
	}
	
}
/*divID = the id of the div or obj
 st  = the style type. ex. display, backgroundColor..etc..
 sval   = the style value. ex. none, 600px ...
*/
function changeStyle(divObj,st,sval){
	if(typeof(divObj)=="string"){var divObj=document.getElementById(divObj);}
	
	if(st==undefined && sval==undefined){divObj.style[prevSt]=prevSval;}
	else{
		prevSt=st;
		prevSval=divObj.style[st];
		divObj.style[st]=sval;
	}

	
	
	
}

function updateHTML(divObj,shtml){
	if(typeof(divObj)=="string"){var divObj=document.getElementById(divObj);}
		divObj.innerHTML=shtml;
}

function changePosition(divObj,xleft,xtop){
	if(typeof(divObj)=="string"){var divObj=document.getElementById(divObj);}
		if(xleft!="-1"){
			divObj.style.left=xleft+"px";
	
		}
		if(xtop!="-1"){
			divObj.style.top=xtop+"px";
		
		}
}

function changeImage(imgObj,imgSrc){
	if(imgSrc==undefined){imgObj.src=prevImg;}
	else{ prevImg=imgObj.src;imgObj.src=imgSrc;	}
}



function goTo(url){
	window.location=url;	
}

function initCurrency(){
	var shtml="<div style='position:absolute;width:300px;height:160px;border:1px solid #666666;display:none;background-color:white;z-index:1005;'  id='curContent'>";
	shtml+="Content here</div>";
	document.write(shtml);
	
}


function doConvert(sAmt){
	//get the user define rate
	var myTo=document.getElementById("countryCode").value;
	var selObj=document.getElementById("countryCode");
	var amtFor="";
	for(i=0;i<selObj.options.length;i++){
		if(	selObj.options[i].selected==true){
			amtFor=selObj.options[i].text;	
		}
	}

	var ffMat=amtFor.substring(amtFor.indexOf("(")+1,amtFor.length-1);

	var totAmount=formatCurrency(sAmt*myTo);
	var usD=formatCurrency(sAmt);
	//updateHTML("amtTitle",amtFor);
	changeStyle("resultDiv","display","block");
	updateHTML("resultNumber","$"+usD+" USD = "+totAmount+" "+ffMat);
}

function convertCurrency(cObj,amountMoney,fDir){


	var xyPos=findPos(cObj);
	var sTopx=xyPos[1]+20;
	var sLeft=xyPos[0];
	if(fDir=="left"){
		var sLeft=xyPos[0]-	240;
	}
	changePosition("curContent",sLeft,sTopx);
	loadData("/Ajaxcall/API.cfm?action=getCurrencyForm&arg1="+amountMoney+"&nc="+Math.random(),"curContent");
	//updateHTML("curContent",shtml);
	changeStyle("curContent","display","block");
}

function formatCurrency(strValue)
{
	strValue = strValue.toString().replace(/\$|\,/g,'');
	dblValue = parseFloat(strValue);

	blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
	dblValue = Math.floor(dblValue*100+0.50000000001);
	intCents = dblValue%100;
	strCents = intCents.toString();
	dblValue = Math.floor(dblValue/100).toString();
	if(intCents<10)
		strCents = "0" + strCents;
	for (var i = 0; i < Math.floor((dblValue.length-(1+i))/3); i++)
		dblValue = dblValue.substring(0,dblValue.length-(4*i+3))+','+
		dblValue.substring(dblValue.length-(4*i+3));
	return (((blnSign)?'':'-') + dblValue );
}

function openPopup(url,sName,width,height,left,top,toolbar,resize){
	var sopt="top="+top+",left="+left+",width="+width+",height="+height+",toolbar="+toolbar+",resizable="+resize;
	if(sName==undefined){sName="myPopup";}
	if(width!=undefined && width!=-1 ){sopt+="width="+width+",";}
	if(height!=undefined && height!=-1 ){sopt+="height="+height+",";}
	if(left!=undefined && left!=-1 ){sopt+="left="+left+",";}
	if(top!=undefined && top!=-1 ){sopt+="top="+top+",";}
	if(toolbar!=undefined){sopt+="toolbar="+toolbar+",";}
	if(resize!=undefined){sopt+="resizable="+resize+",";}
	if(sopt!=""){sopt=sopt.substr(0,sopt.length-1);}
	
	return window.open(url,sName,sopt);
	
}

function validateForm(frmObj,doSub){
	
	var sobj=frmObj.elements;	
	var errHead="Please correct the following error(s):\n_____________________________________________\n"
	var err="";
	var sType="";
	for(var i=0;i<sobj.length;i++){
		if(sobj[i].getAttribute("req")){
			sType=sobj[i].getAttribute("dtype");
			switch(sType){
				case "email":
				 //email validate
				 	if(!validEMail(sobj[i].value))err+="\n-"+sobj[i].getAttribute("label")+" is not a valid email";
				break;
				case "date":
					if(!validDate(sobj[i].value))err+="\n-"+sobj[i].getAttribute("label")+" is not a valid date";
				break;
				case "number":
					if(!validNumber(sobj[i].value))err+="\n-"+sobj[i].getAttribute("label")+" is not a valid number";
					//number only
				break;
				case "checkbox":
					if(!sobj[i].checked)err+="\n-"+sobj[i].getAttribute("label")+" is not checked";
					break;
				case "radio":
					if(!validRadio(sobj[i].name))err+="\n-"+sobj[i].getAttribute("label")+" must be choosen";
				break;
				default:
					if(trim(sobj[i].value)=="")err+="\n-"+sobj[i].getAttribute("label")+" cannot be empty";
					//strings...
			}
			
		}
		
	}
	if(err!=""){
			alert(errHead+err);
			return false;
		}
			if(doSub){frmObj.submit();}
			return true;
}




function loadData(url,divName,custFunc){
var  xmlhttp=getHTTP();	
	xmlhttp.onreadystatechange=function(){
			if (xmlhttp.readyState == 4) {
			// only if "OK"
			if (xmlhttp.status == 200) {
			   document.getElementById(divName).innerHTML=xmlhttp.responseText;
			     document.getElementById(divName).style.display="block";
				 if(custFunc!=undefined || custFunc!="")eval(custFunc);
			   isBusy=false;
			} else {
				alert("There was a problem retrieving the XML data:\n" +
					xmlhttp.statusText);
					isBusy=false;
			}
 		}
	};
	//if(isBusy){return;}
	waitGen(divName);
  	xmlhttp.open("GET",url,true)
  	xmlhttp.send(null)
	isBusy=true;
	
}



/*helper functions*/ 
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
function waitGen(divID){
document.getElementById(divID).innerHTML="<div style='font-weight:400;text-align:center;width:auto;padding-top:10px;color:#333333;font-size:11px;margin-top:50px;'><img src='/images/lineart/loading.gif'><br>Loading content...</div>";
}

function validRadio(radname){
	var myRads=document.getElementsByName(radname);
	for(var i=0;i<myRads.length;i++){
		if(myRads[i].checked==true){
			return true;
			}
	}
	return false;
}

function validNumber(x){
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	if (anum.test(x))
		testresult=true
	else{
		testresult=false
	}
	return (testresult)
}

function validDate(dval){
	var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
	var returnval=false
	if (!validformat.test(dval))
		returnval=false;
	else{ //Detailed check for valid date ranges
		var monthfield=dval.split("/")[0]
		var dayfield=dval.split("/")[1]
		var yearfield=dval.split("/")[2]
		var dayobj = new Date(yearfield, monthfield-1, dayfield)
		if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
		returnval=false;
		else
		returnval=true
	}
	
	return returnval
}
function validEMail(email)
{
	var x = email;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) return true;
	else return false;
}


function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

/*end of helper functions*/



function getHTTP()
{
	var xmlhttp=null
	// code for Mozilla, etc.
	if (window.XMLHttpRequest)
	  {
	 return new XMLHttpRequest()
	  }
	// code for IE
	else if (window.ActiveXObject)
	  {
	  return new ActiveXObject("Microsoft.XMLHTTP")
	  }
	if (xmlhttp==null)
	  {
	  alert("Your browser does not support XMLHTTP.")
	  }
}





