var YEAR  = 0;
var MAKE  = 1;
var MODEL = 2;
var MILES = 3;

//---------------------------------------------
// calccore.js contains all the code for carbon calculations.
// This code is shared between carboncalc.php & ecards.php.
//
// Initialize by passing calcInit() a callback object.
//
// Following callback functions are called (all are optional)
//
// callbackObject.onYearSelected()  -> When user selects year
// callbackObject.onMakeSelected()  -> When user selects Make
// callbackObject.onModelSelected() -> When user selects Model
// callbackObject.onFinish()        -> When user finishes all the inputs.
//---------------------------------------------

var gCallback;
function calcInit(callback) {
    gCallback =callback;
}

function selectYear()
{
	disableControls();
	
	if (document.f1.yearselect.selectedIndex == 0)
	{
		enableControls(YEAR);
		return;
	}
	
	var makeyear   = document.f1.yearselect.options[document.f1.yearselect.selectedIndex].text;
	
	loadScript("/carboncalc/" + makeyear + ".js");
	enableControls(MAKE);
	document.f1.modelselect.selectedIndex = 0;
	document.f1.makeselect.focus();
	
    if (gCallback) {
        gCallback.makeyear = makeyear;
        gCallback.makeyearValue = document.f1.yearselect.options[document.f1.yearselect.selectedIndex].value;

        if (gCallback.onYearSelected) {
            gCallback.onYearSelected(makeyear);
        }
    }

}

function selectMake()
{
	disableControls();
	
	if (document.f1.makeselect.selectedIndex == 0)
	{
		enableControls(MAKE);
		return;
	}
	
	var makeyear    = document.f1.yearselect.options[document.f1.yearselect.selectedIndex].text;
	var make        = document.f1.makeselect.options[document.f1.makeselect.selectedIndex].text;
	
	loadScript('/carboncalc/'+ makeyear + make.replace(/ /g, "_") + '.js');
	enableControls(MODEL);
	document.f1.modelselect.selectedIndex = 0;
	document.f1.modelselect.focus();
	
    if (gCallback) {
        gCallback.make = make;
        gCallback.makeValue = document.f1.makeselect.options[document.f1.makeselect.selectedIndex].text;

        if (gCallback.onMakeSelected) {
            gCallback.onMakeSelected(make);
        }
    }
}

function selectModel()
{
	if (document.f1.modelselect.selectedIndex == 0)
	{
		enableControls(MODEL);
	}
	else
	{
		enableControls(MILES);
		document.f1.mileselect.focus();	

        if (gCallback) {
            gCallback.model = document.f1.modelselect.options[document.f1.modelselect.selectedIndex].text;
            gCallback.modelValue = document.f1.modelselect.options[document.f1.modelselect.selectedIndex].value;

            if (gCallback.onModelSelected) {
                gCallback.onModelSelected(gCallback.model);
            }
        }

        selectMile();
	}
}

function selectMile() {
    if (gCallback) {
        gCallback.mile = document.f1.mileselect.options[document.f1.mileselect.selectedIndex].text;
        gCallback.mileValue = document.f1.mileselect.options[document.f1.mileselect.selectedIndex].value;

        if (gCallback.onFinish) {
            gCallback.onFinish(gCallback.mile);
        }
    }
}

function loadScript(src)
{
	var script = document.createElement("script");
	
	script.src  =  src;
	script.type = "text/javascript";
	script.id   = "load_scr";
    
	document.getElementsByTagName("head")[0].appendChild(script); 
}

function disableControls()
{
	document.f1.yearselect.disabled  = true;
	document.f1.makeselect.disabled  = true;
	document.f1.modelselect.disabled = true;
	document.f1.mileselect.disabled  = true;
}

function enableControls(focus)
{
	var disabled   = true;
	var enabled    = false;
	var on         = '<img src="/images/linkarrow.gif" />';
	var off        = '';
	var bold	   = "bold";
	var normal     = "normal";
	var gray       = "gray";
	var black      = "black";
	
	var controls = [enabled, disabled, disabled, disabled];
	var colors   = [black, gray, gray, gray];
	var bkgcolors= ['#fff','#ccc','#ccc','#ccc'];
	var weights  = [bold, normal, normal, normal]
	
	var indexes  = [document.f1.yearselect, document.f1.makeselect, document.f1.modelselect, document.f1.mileselect];
	
	for (var i = 0; i < 3; i++)
	{
		if (i < focus)
		{
			weights[i]    = normal;
			
			controls[i+1] = enabled;
			colors[i+1]   = black;
			bkgcolors[i+1]   = '#fff';
			weights[i+1]   = bold;
		}
		else
		{
			break;
		}
	}

	for (i = 0; i < 4; i++) 
	{ 
		indexes[i].disabled     = controls[i]; //Enable the dropdowns
		indexes[i].style.backgroundColor = bkgcolors[i];
		//pointers[i].innerHTML   = markers[i];  //Move the carat
		//labels[i].style.color   = colors[i];   //Change the color of the label
	}
}

function validateForm(frm)
{
	if(!frm.yearselect.selectedIndex)
	{
		alert("Please select the year your car was made.\n");
		frm.yearselect.focus();
		return false;
	}
	else if(!frm.makeselect.selectedIndex)
	{
		alert("Please select the make of your car.\n");
		frm.makeselect.focus();
		return false;
	}
	else if(!frm.modelselect.selectedIndex)
	{
		alert("Please select the model of your car.\n");
		frm.modelselect.focus();
		return false;
	}
	else if(!frm.mileselect.selectedIndex && frm.validatemileselect)
	{
		alert("Please select miles driven per year for your car.\n");
		frm.mileselect.focus();
		return false;
	}
	else if ( ((frm.signup && frm.signup.checked) ||  (frm.optattr2 && frm.optattr2.checked) )&& frm.ea.value != "")
	{
		var emailregex  = /^\s*[\+\w\_\-\.]+@[\w\_\-\.]+\.\w+\s*$/;
		var emailresult = frm.ea.value.match(emailregex);
	
		if (emailresult == null)
		{
			alert ("If you'd like our newsletter, please provide a valid email address.\n\nOtherwise, simply uncheck the newsletter box.");
			frm.ea.focus();
			return false;
		}
	}

    return true;
}

