// JavaScript Document
var jobViewSliderBufferTimer;
function fetchData(url, dataToSend1, objectID){

	var pageRequest=false;
	if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest();
	else if (window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
	else return false;
	pageRequest.onreadystatechange = function(){
		filterData(pageRequest,objectID);
	}
	
	if(dataToSend1>=0){
		var sendData="";
		sendData+="categoryspend="+dataToSend1;
		
		pageRequest.open('POST',url,true);
		pageRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		pageRequest.send(sendData);
	}
	else{
		pageRequest.open('GET', url, true);
		pageRequest.send(null);
	}
}
function fetchDataGeneric(url, dataToSend, objectID){

	var pageRequest=false;
	if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest();
	else if (window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
	else return false;
	pageRequest.onreadystatechange = function(){
		filterData(pageRequest,objectID);
	}
	var sendData="";
	sendData+="data="+dataToSend;
	
	pageRequest.open('POST',url,true);
	pageRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	pageRequest.send(sendData);
	
}
function toggleClass(objectID){
	var object=document.getElementById(objectID);
	//var slider=document.getElementById(sliderID);
	
	if(object.className=="hiddenmenu"){
		object.className="showmenu";
	}
	else if(object.className=="showmenu"){
		object.className="hiddenmenu";
	}
	else if(object.className=="hiddenmenu2"){
		object.className="showmenu2";		
	}
	else if(object.className=="showmenu2"){
		object.className="hiddenmenu2";
	}
	else if(object.className=="c2up"){
		object.className="c2uphidden";
	}
	else if(object.className=="c2uphidden"){
		object.className="c2up";
	}
}
function toggleTextAPR(objectID,slideareaID){
	var object=document.getElementById(objectID);
	var slideobject=document.getElementById(slideareaID);
	if(slideobject.className=="hiddenmenu2"){
		object.innerHTML="Show Details & APR Calculations";		
	}
	else{
		object.innerHTML="-----------------------------------------    Hide    -----------------------------------------";
	}
}

function toggleText(objectID,slideareaID){
	var object=document.getElementById(objectID);
	var slideobject=document.getElementById(slideareaID);
	if(slideobject.className=="hiddenmenu2"){
		object.innerHTML="Show Details & APRs";		
	}
	else{
		object.innerHTML="-----------------------------------------    Hide    -----------------------------------------";
	}
}
function getbuffer(url,formID,sessionState,objectID){
	if (jobViewSliderBufferTimer) {
    	clearTimeout(jobViewSliderBufferTimer); //set new timeout
	
	}
	jobViewSliderBufferTimer = setTimeout(function(){get(url,formID,sessionState,objectID);}, 250);
}
function get(url, formID, sessionState, objectID){
	var pageRequest=false;
	if(window.XMLHttpRequest)pageRequest=new XMLHttpRequest();
	else if (window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
	else {return false;}
	pageRequest.onreadystatechange = function(){
		filterData(pageRequest,objectID);
	}
	if(formID){
		
		var obj=document.getElementById(formID);
		var sendData="";

		for (i=0; i<obj.getElementsByTagName("input").length; i++){
			var id=obj.getElementsByTagName("input")[i].name;
			if((id=="balance")||(id=="underpay")||(id=="spend")||(id=="fico")||(id=="duration")||(id=="gas_spend")||(id=="grocery_spend")||(id=="dining_spend")){
				sendData+= obj.getElementsByTagName("input")[i].name + "=" + 
                   obj.getElementsByTagName("input")[i].value.replace(",","") + "&";
			}
			else if(id=="radio_group"){
				var type=""
				
				if(obj.getElementsByTagName("input")[i].checked){
					type=obj.getElementsByTagName("input")[i].value;
					sendData+=(id+"="+type+"&");

				}
				else if(obj.getElementsByTagName("input")[i].type=="hidden"){

					type=obj.getElementsByTagName("input")[i].value;
					sendData+=(id+"="+type+"&");
				}


			}
			else if(id=="mile_rate"){
				sendData+= obj.getElementsByTagName("input")[i].name + "=" + 
                   (obj.getElementsByTagName("input")[i].value*100) + "&";
			}
			else if((id=="vmc")||(id=="amex")||(id=="discover")){
            

                sendData+= obj.getElementsByTagName("input")[i].name + "=";
                if(obj.getElementsByTagName("input")[i].checked==true||obj.getElementsByTagName("input")[i].value=='yes'){
                    sendData+=("on"+"&");
                }
                else{
                    sendData+="&";
                }
                
			}
            else if((id=="com")||(id=="dm")){

                sendData+= obj.getElementsByTagName("input")[i].name + "=";
                if(obj.getElementsByTagName("input")[i].checked==true){
                    sendData+=("1"+"&");
                }
                else{
                    sendData+=obj.getElementsByTagName("input")[i].value + "&";
                }
            }
		}
		sendData+="sessionState="+sessionState;
		pageRequest.open('POST',url,true);
		pageRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		pageRequest.send(sendData);
	}
	else{
		pageRequest.open('GET', url, true);
		pageRequest.send(null);

	}
	
	if(document.getElementById('content')){unobscureField('content');}
	if(document.getElementById('introbox')){updateInnerHTML('introbox','',0);}
}
function filterData(pageRequest,objectID){
	var object=document.getElementById(objectID);
	if(pageRequest.readyState==4){
		if(pageRequest.status==200)object.innerHTML=pageRequest.responseText;
		else if(pageRequest.status==404) object.innerHTML+= 'Sorry, that information is not currently available.';
		else object.innerHTML+='';
	}
}

function hideField(objectID){
	var object=document.getElementById(objectID);
	object.style.height=0;
	object.style.overflow="hidden";
}
function showField(objectID){
	var object=document.getElementById(objectID);
	object.style.height="100%";
}
function darkenField(objectID,root){
	var object=document.getElementById(objectID);
	
	if(root==null){
		/*object.style.backgroundImage="url(images/blue.png)";*/
		object.style.color="#590059";
		object.style.textDecoration="underline";
	}
	else{
		/*object.style.backgroundImage="url("+root+"images/blue.png)";*/
		object.style.color="#590059";
		object.style.textDecoration="underline";
	}
	/*object.style.backgroundRepeat="repeat-x";*/


}
function revertField(objectID,root){
	var object=document.getElementById(objectID);

	if(root==null){

		/*object.style.backgroundImage="url(images/gray.png)";*/
		object.style.color="blue";
	}
	else object.style.color="blue";
	/*object.style.backgroundImage="url("+root+"images/gray.png)";*/

	/*object.style.backgroundRepeat="repeat-x";*/
	
}
function darkenSession(controlField,root){

	for (i=1; i<=7; i++){
		revertField('control'+i,root);
	}
	revertField('control9',root);

	darkenField(controlField,root);

}
function submitForm(formID, formelementID, state, postField){
	var form=document.getElementById(formID);
	var session = document.getElementById(formelementID);
	session.value=state;
	form.submit();
}
function obscureField(objectID){

	FadeOpacity(objectID,100,20,200,10);

}
function unobscureField(objectID){

	FadeOpacity(objectID,20,100,200,10);
}
function SetOpacity(elem, opacityAsInt)
{
	var opacityAsDecimal = opacityAsInt;
	if (opacityAsInt > 100) opacityAsInt = opacityAsDecimal = 100; 
	else if (opacityAsInt < 0) opacityAsInt = opacityAsDecimal = 0; 
	opacityAsDecimal /= 100;
	if (opacityAsInt < 1) opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0
	elem.style.opacity = (opacityAsDecimal);
	elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
}

function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps){
	var steps = Math.ceil(fps * (time / 1000));
	var delta = (toOpacity - fromOpacity) / steps;
	FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
}
function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep){
	SetOpacity(document.getElementById(elemId),Math.round(parseInt(fromOpacity) + (delta * stepNum)));
	if (stepNum < steps) setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) + ", " + steps + ", " + fromOpacity + ", " + delta + ", " + timePerStep + ");", timePerStep);
}
function IsNumeric(input)
{
   return (input - 0) == input && input.length > 0;
}

function checkPlural(elemId,val){
	var object = document.getElementById(elemId);
	if (val!=1)object.innerHTML="s per mile";
	else object.innerHTML=" per mile";
}
function verifyRange(objectID,min_num,max_num,fallback){
	var object=document.getElementById(objectID);
	var min_num2=parseInt(parseFloat(min_num));
	var max_num2=parseInt(parseFloat(max_num));
	var value2=parseInt(parseFloat(object.value.replace(",",""))).toFixed(0);
	if(isNaN(value2)){
		
		if(object.value=="")fallback=0;
		setVal(objectID,fallback,false);
		updateSpendPie(getVal('spend'),objectID);	
	}
	if(value2<min_num2){
		setVal(objectID,min_num2,false);
	}
	if(value2>max_num2){
		setVal(objectID,max_num2,false);
	}

	return true;
}
function updateInnerHTML(objectID,newInner,roundToOne){
	var object = document.getElementById(objectID);
	if(roundToOne){
		newInner=newInner.toFixed(1);
	}
	if (object.id=='SpendPieOther'){
		newInner=addCommas(newInner);
	}
	object.innerHTML = newInner;
}
function updateSpendPie(sourceID){
	
	var s3 = document.getElementById('s3')
	var gas = parseInt(parseFloat(getVal('gas')));
	var grocery= parseInt(parseFloat(getVal('grocery')));
	var dining = parseInt(parseFloat(getVal('dining')));
	var spend = parseInt(parseFloat(getVal('spend')));
	//range checking for slider 3
	if(sourceID=='slider-3'||sourceID=='spend'){
		if(parseInt(spend)>=0&&parseInt(spend)<(parseInt(gas)+parseInt(grocery)+parseInt(dining))){
			if(spend<(gas+grocery)){
				if(spend<gas){		
					dining=0;
					grocery = 0;
					if(spend>=0)gas = spend;
					else gas=0;
				}
				else{
					
					dining=0;
					grocery = spend - gas;
				}
			}
			else{
				
				dining = spend-gas-grocery;
			}
		}
	}
	else if(sourceID=='gas'){
		if(spend>=0&&spend<(gas+grocery+dining)){
			if(spend<(gas+grocery)){	
					dining=0;
					grocery = spend - gas;
			}
			else{
				
				dining = spend-gas-grocery;
			}
		}
		
	}
	else if(sourceID=='grocery'){
		if(spend>=0&&spend<(gas+grocery+dining)){
			if(spend<(gas+grocery)){	
				
					dining=0;
					gas = spend - grocery;
			}
			else{
				
				dining = spend-gas-grocery;
			}
		}
	}
	else if(sourceID=='dining'){
		if(spend>=0&&spend<(gas+grocery+dining)){

			if(spend<(gas+dining)){	
					grocery=0;
					gas = spend - dining;
			}
			else{
				
				grocery = spend-gas-dining;
			}
		}

	}

	setVal('gas',gas,false);
	setVal('grocery',grocery,false);
	setVal('dining',dining,false);
	
	updateInnerHTML('SpendPieOther','<b>$'+(spend-gas-grocery-dining).toFixed(0)+'</b> /mo',0);
	setVal('gas_spend',gas,false);
	setVal('grocery_spend',grocery,false);
	setVal('dining_spend',dining,false);
	if(sourceID=='spend'){setVal('spend',spend); }//only necessary for comma formatting
	
}
function addCommas(nStr) 
{ 
	nStr += ''; 
	x = nStr.split('.'); 
	x1 = x[0]; 
	x2 = x.length > 1 ? '.' + x[1] : ''; 
	var rgx = /(\d+)(\d{3})/; 
	while (rgx.test(x1)) { 
		x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
	} 
	return x1 + x2; 
}
function getVal(elemId){
	var object = document.getElementById(elemId);
	return object.value.replace(",","");
}
function setVal(elemId,newval,leaveoutcomma){
	var object = document.getElementById(elemId);
	newval=parseInt(newval).toFixed(0);
	if(!leaveoutcomma)object.value=addCommas(newval);
	else object.value=newval;

}
