var nums = new Array();
var container;
var checkform = true;
var x_min,x_width,y_min,y_width;

function init(){
	if ($('home_form')) {
		Form.focusFirstElement($('home_form'));
	}
	if ($('car_form')) {
		var cars = document.getElementsByClassName('car','cars');
		for (var i=0;i<cars.length;i++) {
			var car_num = parseInt(cars[i].id.replace('car',''));
			nums.push(car_num);
		}
		container = 'cars_sent';
		Form.focusFirstElement($('car_form'));
	}
	if ($('air_form')) {
		var flights = document.getElementsByClassName('flight','flights');
		for (var i=0;i<flights.length;i++) {
			var flight_num = parseInt(flights[i].id.replace('flight',''));
			nums.push(flight_num);
		}
		container = 'flights_sent';
		Form.focusFirstElement($('air_form'));
	}
	if ($('totals_form')) {
		x_min = findPosX($('forest'));
		y_min = findPosY($('forest'));
		x_width = $('forest').offsetWidth - 40;
		y_width = $('forest').offsetHeight - 40;
		plantTrees();
	}
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

var num_trees = 0;
function plantTrees() {
	if (num_trees < how_many) {
		var left = x_min+Math.round(x_width*Math.random());
		var top = y_min+Math.round(y_width*Math.random());
		$('forest').appendChild($('forest').firstChild.cloneNode(true));
		$('forest').lastChild.style.left = left+'px';
		$('forest').lastChild.style.top = top+'px';
		$('forest').lastChild.style.zIndex = top;
		Element.show($('forest').lastChild);
		num_trees++;
		//$('counter').innerHTML++;
		setTimeout('plantTrees()',10);//10 millisecond interval between tree plantings
	}
}

function putSelect() {
	var x = arguments[1].lastChild.innerHTML;
	new Insertion.After(arguments[0],x);
}

function computekWh() {
	var dollars = $F('dollars');
	var price = $F('state');
	if (!isNaN(dollars) && price != '') {
		var cost = Math.round(dollars/price);
		if (cost == 0) {
			$('kWh').value = '';
		} else {
			$('kWh').value = cost;
		}
	}
}

function computeDollars() {
	var kWh = $F('kWh');
	var price = $F('state');
	if (!isNaN(kWh) && price != '') {	
		var cost = Math.round(kWh*price*100)/100;
		if (cost == 0) {
			$('dollars').value = '';
		} else {
			$('dollars').value = cost;
		}
	}
}

function insertMPG(car_id_num) {
	mpg = $F('mpg_avgs'+car_id_num);
	$('mpg'+car_id_num).value = mpg;
}

function additionalFlight() {
	var num = nums.last() + 1;
	nums.push(num);
	var print_num = document.getElementsByClassName('flight','flights').length + 1;
	var copy = $('flight').cloneNode(true);
	copy.id = 'flight'+num;
	$('flights').appendChild(copy);
	elems = document.getElementsByClassName('template','flight'+num);
	text = document.createTextNode('FLIGHT '+print_num+':');
	elems[0].appendChild(text);
	elems[1].id = 'air_from'+num;
	elems[1].setAttribute('name','air_from'+num);
	elems[2].setAttribute('for','air_from'+num);
	elems[3].id = 'air_from_list'+num;
	elems[4].id = 'air_to'+num;
	elems[4].setAttribute('name','air_to'+num);
	elems[5].setAttribute('for','air_to'+num);
	elems[6].id = 'air_to_list'+num;
	elems[7].setAttribute('for','one_way'+num);
	elems[8].id = 'one_way'+num;
	elems[8].setAttribute('name','num_ways'+num);
	elems[8].setAttribute('checked','checked');
	elems[9].setAttribute('for','round_trip'+num);
	elems[10].id = 'round_trip'+num;
	elems[10].setAttribute('name','num_ways'+num);
	elems[11].id = 'passengers'+num;
	elems[11].setAttribute('name','passengers'+num);
	elems[12].setAttribute('for','passengers'+num);
	elems[13].id = 'remove_link'+num;
	for (var i=0;i<elems.length;i++) {
		Element.removeClassName(elems[i],'template');
	}
	if (print_num%2==0) Element.addClassName('flight'+num,'grey');
	new Ajax.Autocompleter("air_from"+num, "air_from_list"+num, "../makeAirportList.php", {paramName: "query", frequency: .2, minChars: 1, afterUpdateElement: focusAirTo});
	new Ajax.Autocompleter("air_to"+num, "air_to_list"+num, "../makeAirportList.php", {paramName: "query", frequency: .2, minChars: 1});
	Element.show('flight'+num);
	Field.focus('air_from'+num);
}

function focusAirTo() {
	var num = arguments[0].id.replace('air_from','');
	Field.activate("air_to"+num);
}

function additionalCar() {
	var num = nums.last() + 1;
	nums.push(num);
	var print_num = document.getElementsByClassName('car','cars').length + 1;
	var copy = $('car').cloneNode(true);
	copy.id = 'car'+num;
	$('cars').appendChild(copy);
	elems = document.getElementsByClassName('template','car'+num);
	text = document.createTextNode('CAR '+print_num+':');
	var j = 0;
	elems[j].appendChild(text); j++;
	elems[j].setAttribute('for','mt'+num); j++;
	elems[j].setAttribute('name','mt'+num);
	elems[j].id = 'mt'+num; j++;
	
	elems[j].setAttribute('for','car_make'+num); j++;
	elems[j].setAttribute('name','car_make'+num);
	elems[j].id = 'car_make'+num; j++;
	//elems[j].id = 'car_make_list'+num; j++;
	elems[j].id = 'car_model_div'+num; j++;
	elems[j].id = 'car_year_div'+num; j++;
	
	elems[j].setAttribute('for','mpg'+num); j++;
	elems[j].setAttribute('name','mpg'+num);
	elems[j].id = 'mpg'+num; j++;
	
	elems[j].id = 'remove_link'+num;
	for (var i=0;i<elems.length;i++) {
		Element.removeClassName(elems[i],'template');
	}
	if (print_num%2==0) Element.addClassName('car'+num,'grey');
	//new Autocompleter.Local("car_make"+num, "car_make_list"+num, makes, {partialSearch: false, afterUpdateElement: modelSelect});
	Element.show('car'+num);
	Field.activate('mt'+num);
}

function modelSelect(make,select_id) {
	//var make = arguments[0].value;
	var num = select_id.replace('car_make','');
	Element.hide('car_model_div'+num);
	Element.hide('car_year_div'+num);
	if (make) {
		//Element.update($('car_model_div'+num),"<label>Car Model</label>loading . . . ");
		$('mpg'+num).value = mpgs[makes.indexOf(make)];
		var req = new Ajax.Request('../makeModelSelect.php',{method: 'get', asynchronous: false, parameters: 'make='+make+'&num='+num})
		Element.update($('car_model_div'+num), req.transport.responseText);
		Element.show('car_model_div'+num);
		Field.focus('car_model'+num);
	} else {
		$('mpg'+num).value = '21.5';
	}
}

function yearSelect(num) {
	var a = {
			make: $F('car_make'+num),
			model: $F('car_model'+num),
			number: num
			};
	var h = $H(a);
	var m = new Ajax.Request('../returnAvgMpg.php', {parameters: h.toQueryString(), method: 'get', asynchronous: false});
	var r = new Ajax.Request('../makeYearSelect.php', {parameters: h.toQueryString(), method: 'get', asynchronous: false});
	Element.update($('car_year_div'+num),r.transport.responseText);
	Element.show('car_year_div'+num);
	Field.focus('car_year'+num);
	$('mpg'+num).value = m.transport.responseText;
}

function transSelect(num) {
	var a = {
			make: $F('car_make'+num),
			model: $F('car_model'+num),
			year: $F('car_year'+num),
			number: num
			};
	var h = $H(a);
	var m = new Ajax.Request('../returnAvgMpg.php', {parameters: h.toQueryString(), method: 'get', asynchronous: false});
	$('mpg'+num).value = m.transport.responseText;
	Field.activate('mpg'+num);
}

function removeBlock(id) {
	var parent_node = $(id).parentNode;
	Element.cleanWhitespace(parent_node);
	var class_name = parent_node.id.substring(0,parent_node.id.length-1);
	if ($(id).previousSibling) var previous_sibling_num = $(id).previousSibling.id.replace(class_name,'');
	Element.remove(id);
	nums = nums.without(id.replace(class_name,''));
	var remaining = document.getElementsByClassName(class_name,parent_node);
	for (var i=0;i<remaining.length;i++) {
		var new_text = class_name.toUpperCase()+' '+(i+1)+':';
		var title_text = document.getElementsByClassName('title_text',remaining[i])[0];
		Element.update(title_text,new_text);
		if (i%2==0) {
			if (Element.hasClassName(remaining[i],'grey')) {
				Element.removeClassName(remaining[i],'grey');
			}
		} else {
			if (!Element.hasClassName(remaining[i],'grey')) {
				Element.addClassName(remaining[i],'grey');
			}
		}
	}
	if (previous_sibling_num) {
		if (document.car_form) {
			Field.activate('mt'+previous_sibling_num);
		}
		if (document.air_form) {
			Field.activate('air_from'+previous_sibling_num);
		}
	}
}

function trace(text){
	Element.update('trace',text);
}

function leaveFor(form_action) {
	if (nums.length > 0) $(container).value = nums.join();
	document.forms[0].action = form_action;
	document.forms[0].submit();
}

function checkForm(sSessionURL, pageNum){
	var errors = new Array();
	if ($('home_form')) {
		var kWh = $F('kWh');
		var dollars = $F('dollars');
		var price = $F('state');
		if (isNaN(kWh) || isNaN(dollars)) {
			errors.push('Please enter numbers only.');
		}
		if (kWh == '') {
			if (dollars != '' && price != '') {
				computekWh();
			}
			if (dollars != '' && price == '') {
				errors.push('Please enter your home state.');
			}
			if (dollars == '' && price != '') {
				errors.push('Please enter your monthly electricity bill in dollars.');
			}
			if (dollars == '' && price == '') {
				errors.push('Please enter either your monthly electricity usage in kilowatt-hours, or your monthly electricity bill in dollars and your home state.');
			}
		}
		if (errors.length == 0) {
			return true;
		}
	} else if ($('car_form')) {
		for (var i=0;i<nums.length;i++) {
			var car_num = nums[i];
			var car_title_text = document.getElementsByClassName('title_text','car'+nums[i])[0].firstChild.nodeValue.replace(':','');
			var mt = $F('mt'+car_num);
			var mpg = $F('mpg'+car_num);
			if (mt == '') {
				errors.push('Please enter the Miles Per Month for '+car_title_text+'.');
			}
			if (mpg == '') {
				errors.push('Please enter the Miles Per Gallon for '+car_title_text+'.');
			}
			if (isNaN(mt) || isNaN(mpg)) {
				errors.push('Please enter numbers only.');
			}
		}
		if (errors.length == 0) {
			if (nums.length > 0) $('cars_sent').value = nums.join();
			return true;
		}
	} else if ($('air_form')) {
		var from_blanks = 0;
		var to_blanks = 0;
		for (var i=0;i<nums.length;i++) {
			var flight_num = nums[i];
			var flight_title_text = document.getElementsByClassName('title_text','flight'+nums[i])[0].firstChild.nodeValue.replace(':','');
			var air_from = $F('air_from'+flight_num);
			var air_to = $F('air_to'+flight_num);
			if (air_from == '') {
				errors.push('Please enter the airport from which you traveled for '+flight_title_text+'.');
				from_blanks++;
			}
			if (air_to == '') {
				errors.push('Please enter the airport to which you traveled for '+flight_title_text+'.');
				to_blanks++;
			}
			if (!$F('passengers'+flight_num)) {
				errors.push('Please enter the # of passengers or iterations for '+flight_title_text+'.');
			}
			if (isNaN($F('passengers'+flight_num))) {
				errors.push('Please enter numbers only for the # of passengers or iterations.');
			}
			var air_fromCheck = new Ajax.Request('../airCheck.php',{method:'post', parameters: 'name='+air_from, asynchronous:false});
			if (air_fromCheck.transport.responseText == 'false') {
				errors.push('Please choose the origin airport from the list that appears as you type for '+flight_title_text+'.');
			}
			var air_toCheck = new Ajax.Request('../airCheck.php',{method:'post', parameters: 'name='+air_to, asynchronous:false});
			if (air_toCheck.transport.responseText == 'false') {
				errors.push('Please choose the destination airport from the list that appears as you type for '+flight_title_text+'.');
			}
		}
		if (from_blanks == nums.length && to_blanks == nums.length) {
            pageNum = pageNum + 1;
			leaveFor('?p=' + pageNum + '&air=exclude' + sSessionURL);
			return false;
		}
		if (errors.length == 0) {
			if (nums.length > 0) $('flights_sent').value = nums.join();
			return true;
		}
	}
	trace('> '+errors.join('<br />> '));
	return false;
}

function openPurchasePage() {
	if ($F('monthlyTotal') > 0) {
		window.open('','purchase','width=584,height=500,toolbar=yes,scrollbars=yes,resizable=yes,status=yes');
		document.forms[0].target = 'purchase';
		document.forms[0].action = 'https://www.3phases.com/footprint-calculator/new_calculator/purchase.php';
		//document.forms[0].action = 'http://www.3degreesinc.com/calculator/default/purchase.php';
        return true;
	} else {
		return false;
	}
}
