development = true; // remove from set_regex()
//development = false;

////////////////////////////////////////////////////////

function get_container(el)
{
	var el_parent;
	if($chk($(el)))
		el_parent = $(el);
	else
		el_parent = $(this);

	var parent_id = false;

	while(el_parent = el_parent.getParent())
	{
		var id = el_parent.getProperty('id');
		if($defined(id) && id.match(/^(pg)/))
		{
			parent_id = id;
			break;
		}
	}

	return parent_id;
}

////////////////////////////////////////////////////////

function get_pg(el)
{
	var id = get_container(el);
	var pg = $(id).getElements('div[class^=pg]');
	var pg_cont_id = -1;
	var pg_parent = false;
	var el_parent;

	if($chk($(el)))
		el_parent = $(el);
	else
		el_parent = $(this);

	while(el_parent = el_parent.getParent())
	{
		if(el_parent.hasClass('pgContainer'))
		{
			pg_parent = el_parent;
			break;
		}
	}

	var count = pg.length;

	for(var i=0;count>i;i++)
	{
		if(pg_parent == pg[i])
		{
			pg_cont_id = i;
			break;
		}
	}

	return pg_cont_id;
}

////////////////////////////////////////////////////////

function refresh_pg(id)
{
	var pg = $(containers[id]).getElements('div[class^=pg]');
	$(containers[id]).pg = pg; // bug is here for IE <--------- 
}

////////////////////////////////////////////////////////

function parse_index(id)
{
	if(id.match(/_+([0-9]{1,3})$/))
		id  = id.replace(/_+([0-9]{1,3})$/,'');

	return id;
}

////////////////////////////////////////////////////////

function set_regex()
{
	// regular expressions
	var alpha = /^([A-Za-z\ -\.])+$/;
	var num = /^([0-9])+$/;
	var alpha_num = /^([A-Za-z0-9\ -\.])+$/;
	var radio = 'radio';
	var select = 'select';

	// reference: regex alpha = '^([A-Za-z -])*$';
	// reference: regex num = '^([0-9])*$';
	// reference: regex alpha num = '^([A-Za-z0-9 -])*$';

	regex = {
		email_address: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
		calcType: radio,
		city: alpha,
		state: select,
		pplNum: num,
		houseInc: radio,
		year1: select,
		make1: select,
		model1: select,
		mpg1: num,
		vehicle1: num,
		fuel1: select,
		highMiles: num,
		airMiles: num,
		airShort: num,
		airMed: num,
		airLong: num,
		airExtended: num,
		homeArea: num,
		homeMats: select,
		homeKind: select,
		homeYear: num,
		pwrCostEle: num,
		pwrHourEle: num,
		hasClean: radio,
		pwrClean: num,
		pwrCostGas: num,
		pwrHourGas: num,
		watCost: num,
		commCost: num,
		pwrCostGas: num,
		protCost: num,
		cerCost: num,
		dairyCost: num,
		protCost: num,
		protCostBeef: num,
		protCostMeat: num,
		protCostSea: num,
		protCostNuts: num,
		protCostPoultry: num,
		vegCost: num,
		otherFood01: num,
		otherFood02: num,
		otherFood03: num,
		otherFood04: num,
		eatCost: num,
		srvCostClothing: num,
		srvCostDrugs: num,
		srvCostHouse: num,
		srvCostEnt: num,
		srvCostBooks: num,
		srvCostClean: num,
		srvCostSchool: num,
		srvCostDoc: num,
		srvCostInsur: num,
		srvCostHobbies: num,
		srvCostServices: num,
		srvCostInHome: num,
		srvCostDonate: num,
		srvCostStorage: num,
		srvCostPets: num
	};

	if(development)
		regex = {};
}

////////////////////////////////////////////////////////

function extend_validation(list, ext_value)
{
	var regex_validate_list = [];

	list.each(function(el){
		var index = el+'_'+ext_value;

		// regex
		if($defined(regex[el]))
			regex[index] = regex[el];

		// regex_validate
		regex_validate_list[index] = false;

		// optional
		if(optional_items.contains(el))
			optional_items[optional_items.length] = index;

		// input text
		input[index] = input[el];

		// extend disable_items
		if($defined(disable_items[el]))
		{
			var list2 = [];
			var count = disable_items[el].length;

			for(var i=0;count>i;i++)
			{
				var value = disable_items[el][i]+'_'+ext_value;
				list2[i] = value;
			}

			disable_items[index] = list2;
		}

		// extend enable_items
		if($defined(enable_items[el]))
		{
			var list2 = [];
			var count = enable_items[el].length;

			for(var i=0;count>i;i++)
			{
				var value = enable_items[el][i]+'_'+ext_value;
				list2[i] = value;
			}

			enable_items[index] = list2;
		}

		// extend allow_defaults
		if($defined(allow_defaults[el]))
		{
			var list2 = [];
			var count = allow_defaults[el].length;

			for(var i=0;count>i;i++)
			{
				var value = allow_defaults[el][i]+'_'+ext_value;
				list2[i] = value;
			}

			allow_defaults[index] = list2;
		}
	});

	var cont_index = containers[container_id].getProperty('id');
	var list = regex_validate[cont_index];

	if(development)
		var count = 0;
	else
		var count = list.length;
	
	var list2 = [];

	for(var i=0;count>i;i++)
	{
		list2[list2.length] = list[i];
		if(i == pg_id)
			list2[list2.length] = regex_validate_list;
	}

	regex_validate[cont_index] = list2;
}

////////////////////////////////////////////////////////

function set_items()
{
	// upon clicking the form element with the corresponding name, the array of element names get disabled
	/* disable_items = {
	 *	form_element_name: ['disable_me','disable_me2','disable_me3']
	 *	...
	 * }
	 */
	disable_items = {
		calcQuickRadio: ['calcFullRadio'],
		calcFullRadio: ['calcQuickRadio'],
		city: ['zip'],
		state: ['zip'],
		year1: ['mpg'],
		make1: ['mpg'],
		model1: ['mpg'],
		mpg1: ['year','make','model'],
		airMiles: ['airShort','airMed','airLong','airExtended'],
		airShort: ['airMiles'],
		airMed: ['airMiles'],
		airLong: ['airMiles'],
		airExtended: ['airMiles'],
		pwrCostEle: ['pwrHourEle'],
		pwrHourEle: ['pwrCostEle'],
		hasCleanYes: ['hasCleanNo'],
		hasCleanNo: ['hasCleanYes','pwrClean'],
		pwrClean: ['hasCleanNo'],
		pwrCostGas: ['pwrHourGas'],
		pwrHourGas: ['pwrCostGas']
	};

	// upon clicking the form element with the corresponding name, the array of element names get enabled
	/* enable_items = {
	 *	form_element_name: ['enable_me','enable_me2','enable_me3']
	 *	...
	 * }
	 */
	enable_items = {
		calcFullRadio: ['calcFullRadio'],
		calcQuickRadio: ['calcQuickRadio'],
		city: ['city','state'],
		state: ['city','state'],
		pplNum: ['pplNum','forHouse'],
		year1: ['year','make','model'],
		make1: ['year','make','model'],
		model1: ['year','make','model'],
		mpg1: ['mpg'],
		airMiles: ['airMiles'],
		airShort: ['airShort','airMed','airLong','airExtended'],
		airMed: ['airShort','airMed','airLong','airExtended'],
		airLong: ['airShort','airMed','airLong','airExtended'],
		airExtended: ['airShort','airMed','airLong','airExtended'],
		pwrCostEle: ['pwrCostEle'],
		pwrHourEle: ['pwrHourEle'],
		hasCleanYes: ['hasCleanYes','pwrClean'],
		hasCleanNo: ['hasCleanNo'],
		pwrClean: ['pwrClean','hasCleanYes'],
		pwrCostGas: ['pwrCostGas'],
		pwrHourGas: ['pwrHourGas']
	};

	// form elements that are not required
	optional_items = ['houseInc','year','make','model','mpg','mdy','fuelType','highMiles','airMiles','airShort','airMed','airLong','airExtended','pwrCostOther','protCost','cerCost','dairyCost','vegCost','protCostBeef','protCostMeat','protCostSea','protCostNuts','protCostPoultry','otherFood01','otherFood02','otherFood03','otherFood04','eatCost','srvCostClothing','srvCostDrugs','srvCostHouse','srvCostEnt','srvCostBooks','srvCostClean','srvCostSchool','srvCostDoc','srvCostInsur','srvCostHobbies','srvCostServices','srvCostInHome','srvCostDonate','srvCostStorage','srvCostPets'];

	// each element is allowed to be the default value as long as the associated array of element names has its default value set also
	/* allow_defaults = {
	 *	form_element_name: ['i_am_default',''i_am_default2,'i_am_default3']
	 *	...
	 * }
	 */

	allow_defaults = {
		year: ['make','model'],
		make: ['year','model'],
		model: ['year','make'],
		mpg: ['mdy','fuelType','highMiles'],
		fuelType: ['mpg','mdy','highMiles']
	};

}

////////////////////////////////////////////////////////

function get_regex_keys()
{
	var list = [];

	for(var key in regex)
		list[list.length] = key;

	return list;
}

////////////////////////////////////////////////////////

function item_disable(element)
{
	if(start)
	{

		// define el variable
		var el;

		if(element.getTag() == 'select')
			el = element.id;
		else if(element.getTag() == 'input')
		{
			if(element.getProperty('type') == 'radio')
				el = element.getProperty('name');
				if(!$defined(disable_items[el]))
					el = element.id;
			else
				el = element.id;
		}

		// get disabled/enabled array
		if($defined(disable_items[el]) && $defined(enable_items[el]))
		{
			//if(containers[container_id].id == 'pgTransport')
				//alert('here: '+el);

			var d_items = disable_items[el];
			var e_items = enable_items[el];
	
			// disable tiems
			d_items.each(function(el2){
				var element = false;
	
				var radio = false;
	
				if(regex[el2] == 'radio')
				{
					element = $$('input[name='+el2+']');
					radio = true;
				}
				else if(regex[el2] == 'select')
					element = $(el2);
				else
					element = $(el2);
	
				if(radio)
					element.each(function(el3){ el3.addClass('disabled'); });
				else
					element.addClass('disabled');
			});
	
			// enable items
			e_items.each(function(el2){
				var element;
				var radio = false;
	
				if(regex[el2] == 'radio')
				{
					element = $$('input[name='+el2+']');
					radio = true;
				}
				else if(regex[el2] == 'select')
					element = $(el2);
				else
					element = $(el2);
	
				if(radio)
					element.each(function(el3){ el3.removeClass('disabled'); });
				else
					element.removeClass('disabled');
			});
		}
	}
}

////////////////////////////////////////////////////////

function set_disable(pg, field_identifiers)
{
	if(!development)
	{
		for(var el in disable_items)
		{
			var run = false;
			var element;
			var radio = false;
			var check_index = el.replace(/_+([0-9])$/,'');
			
			if(!$defined(field_identifiers) || ($defined(field_identifiers) && field_identifiers.contains(check_index) && el.match(/_+([0-9])$/)))
				run = true;

			if(run)
			{
				if(regex[el] == 'radio')
				{
					if($defined(pg))
						element = pg.getElements('input[name='+el+']');
					else
						element = $$('input[name='+el+']');
	
					radio = true;
				}
				else if(regex[el] == 'select')
				{
	
					if($defined(pg))
						element = pg.getElements(el);
					else
						element = $(el);
				}
				else
				{
					if($defined(pg))
						element = pg.getElement(el);
					else
						element = $(el);
				}
	
	
	
				if(radio)
				{
					element.each(function(el2){
						el2.addEvent('focus',function(){ item_disable(this); remove_error(); });
					});
				}
				else
				{
					if($defined(element))
					{
						element.addEvent('focus',function(){
							item_disable(this);
							remove_error();
						});
					}
				}
			}
		}
	}
}

////////////////////////////////////////////////////////

function remove_error()
{
	var elements = $$('.error');
	elements.each(function(el){
		if(el.hasClass('disabled'))
			el.removeClass('error');
	});
}

////////////////////////////////////////////////////////

function get_increment_value(field_name)
{
	var regex_keys = get_regex_keys();

	var count = regex_keys.length;
	var amount = 0;

	for(var i=0;i<count;i++)
	{
		if(regex_keys[i].search(field_name)>-1)
			amount++;
	}

	return amount;
}

////////////////////////////////////////////////////////

function reset_fields(pg)
{
	var inputs = pg.getElements('input');
	var select = pg.getElements('select');

	inputs.each(function(el){
		el.addEvent('blur',validate_field);

		if(el.getProperty('type') == 'radio')
			el.checked = false;
		else
		{
			//var matches;
			var id = el.id; //parse_index(el.id);

			el.value = input[id];
			el.removeClass('error');
			el.removeClass('disabled');
		}
	});

	select.each(function(el){
		el.addEvent('change',validate_field);
		el.removeClass('error');
		el.removeClass('disabled');

		var options = el.getElements('option');
		options.each(function(el2){
			el2.selected = false;
			if(el2.disabled)
				el2.selected = true;
		});

	});
}

////////////////////////////////////////////////////////

function set_another_car(add)
{

	if(!$defined(add))
		var add = $('pgTransport').getElement('p[class=addCar]').getElement('a');


	add.removeEvents('click');
	get_another_car(add);
}

function get_another_car(add)
{
	add.addEvent('click',function(){
		var pg_clone = $('pgTransport').getElement('div[class=pgContainer]').clone();
		pg_clone.setStyle('display','none');

		var contain = get_container(add);
		var pg_value = get_pg(add);

		var increment_value = get_increment_value('year');
		var field_identifiers = ['year','make','model','mpg','mdy','fuelType','highMiles'];

		extend_validation(field_identifiers,increment_value);

		pg_clone.getElements('input').each(function(el){
			el.removeEvents('click');
			el.removeEvents('focus');
			el.removeEvents('blur');

			el.addEvent('blur',validate_field);

			if(el.getProperty('type') == 'radio')
				el.checked = false;
			else
			{
				//var matches;
				var id = el.id; //parse_index(el.id);

				el.value = input[id];
				el.removeClass('error');
				el.removeClass('disabled');
			}

			el.name+='_'+increment_value;
			el.id+='_'+increment_value;

			el.addEvent('focus',function(){ item_disable(el); remove_error(); });

			//el.onmouseover = function(){ this.title=this.id; };
		});

		pg_clone.getElements('select').each(function(el){

			el.name+='_'+increment_value;
			el.id+='_'+increment_value;

			el.removeEvents('focus');
			el.addEvent('focus',function(){ item_disable(el); remove_error(); });

			//el.onmouseover = function(){ this.title=this.id; };

			el.addEvent('change',validate_field);
			el.removeClass('error');
			el.removeClass('disabled');

			var options = el.getElements('option');
			options.each(function(el2){
				el2.selected = false;
				if(el2.disabled)
					el2.selected = true;
			});
		});

		pg_clone.getElements('label').each(function(el){
			el.setProperty('for', el.getProperty('for')+'_'+increment_value);
		});

		hide_input(pg_clone);

		pg_clone.injectAfter($(contain).pg[pg_value]); //.clone();
		refresh_pg(container_id);

		set_car_count();
		set_another_car($('pgTransport').getElements('div[class=pgContainer]')[(pg_value+1)].getElement('p[class=addCar]').getElement('a'));

		move_next();
	});
}

////////////////////////////////////////////////////////

function set_car_count()
{
	var span = $('pgTransport').getElements('span.pgCount');
	var count = span.length;

	for(var i=0;count>i;i++)
		span[i].setText('Page '+(i+1)+'/'+count);
}

////////////////////////////////////////////////////////

function check_defaults(list)
{
	var default_value = true;
	var count = list.length;

	for(var i=0;count>i;i++)
	{
		var key = list[i];

		switch(regex[key])
		{
			case 'radio':
				var el = $$('input[name='+key+']');
				el.each(function(el2){
					if(el2.checked)
						default_value = false;
				});
			break;
			case 'select':
				var el = $(key).getElements('option');
				var count2 = el.length;

				for(var i=0;count2>i;i++)
				{
					// find option selected that is not disabled
					if((el[i].selected && !el[i].disabled) || i==(count-1))
					{
						default_value = false;
						break;
					}
				}
			break;
			default:
				var el = $(key);
				if(el.getProperty('value')!=input[key])
					default_value = false;
			break;
		}
	}

	return default_value;
}

////////////////////////////////////////////////////////

function set_validation()
{
	for(var key in regex)
	{
		var el;

		switch(regex[key])
		{
			case 'radio':
				el = $$('input[name='+key+']');
				el.each(function(el2){
					el2.addEvent('blur', validate_field);
					//el2.addEvent('focus', function(){
					//	var label = get_label(el2);
					//	label.removeClass('error');
					//});
				});

				el = el[0];
			break;
			case 'select':
				el = $(key);
				el.addEvent('change',validate_field);
				//el.addEvent('focus', function(){ el.removeClass('error'); });
			break;
			default:
				el = $(key);
				el.addEvent('blur',validate_field);
			break;
		}

		var pg_container = get_container(el);
		var pg_cont_id = get_pg(el);

		if(!$chk(regex_validate[pg_container]))
			regex_validate[pg_container] = [];

		if(!$chk(regex_validate[pg_container][pg_cont_id]))
			regex_validate[pg_container][pg_cont_id] = [];

		regex_validate[pg_container][pg_cont_id][key] = false;
	}
}

////////////////////////////////////////////////////////

function validate_page()
{
	if(!results)
	{
		var regex_keys = get_regex_keys();
		var valid = true;
		var pg_container = containers[container_id].getProperty('id');
	
		if(!development)
		{
			for(var key in regex_validate[pg_container][pg_id])
			{
				if(regex_keys.contains(key))
				{
					var el;
					if(regex[key] == 'radio')
						el = $$('input[name='+key+']')[0];
					else
						el = $(key);
	
					validate_field(el);
	
					if(!regex_validate[pg_container][pg_id][key])
						valid = false;
				}
			}
		}
	
		return valid;
	}
}

////////////////////////////////////////////////////////

function validate_field(element)
{
	var el;
	if($chk($(element)))
		el = $(element);
	else
		el = $(this);

	var type;
	var pg_container = get_container(el);
	var valid = false;

	if(el.getTag() == 'select')
		type = 'select';
	else if(el.getTag() == 'input' && el.getProperty('type') == 'radio')
		type = 'radio';

	switch(type)
	{
		case 'radio':
			// get radio dots
			var el_index = el.getProperty('name');
			var el2 = $$('input[name='+el_index+']');
			var count = el2.length;

			// process radio dots
			for(var i=0;count>i;i++)
			{
				var label = get_label(el2[i]);
				if(label)
					label.removeClass('error');

				// find clicked dot
				if(el2[i].checked)
				{
					valid = true;
					break;
				}
			}

			// check if item is optional
			if(optional_items.contains(el_index))
					valid = true;

			// check if item is disabled
			if(el2[0].hasClass('disabled'))
				valid = true;
			// display error if invalid
			else if(!valid)
			{
				for(var i=0;count>i;i++)
				{
					var label = get_label(el2[i]);
					if(label)
						label.addClass('error');
				}
			}
		break;

		case 'select':
			// get select menu
			var el_index = el.id;
			var el2 = $(el_index).getElements('option');
			var count = el2.length;

			// process select menu
			for(var i=0;count>i;i++)
			{
				// find option selected that is not disabled
				if(el2[i].selected && !el2[i].disabled)
				{
					valid = true;
					break;
				}
			}

			// check if item is optional
			if(optional_items.contains(el_index))
				valid = true;

			// check if disabled
			if($(el_index).hasClass('disabled'))
				valid = true;

			if(valid)
				el.removeClass('error');
			else
				el.addClass('error');
		break;

		default:
			// get element
			var el_index = el.id;
			var reg_index = el_index;
			// check if its valid

			if(
				(el.getProperty('value').match(regex[reg_index]) && el.getProperty('value')!=input[el_index]) ||
				(el.getProperty('value')==input[el_index] && optional_items.contains(el_index))
			  )
			{
				valid = true;
				el.removeClass('error');
			}

			// check if disabled and valid
			if(el.hasClass('disabled') && (el.getProperty('value')==input[el_index] || el.getProperty('value').match(regex[reg_index])))
				valid = true;

			if(!valid)
				el.addClass('error');
		break;
	}

	if(!valid && $defined(allow_defaults[el_index]))
		valid = check_defaults(allow_defaults[el_index]);

	regex_validate[pg_container][pg_id][el_index] = valid;
}

////////////////////////////////////////////////////////

function get_label(el)
{
	var item = false;
	var id = el.id;

	if($defined($('label[for='+id+']')))
		item = $('label[for='+id+']');

	return item;
}

////////////////////////////////////////////////////////

//function set_protein()
//{
//	var tr_proteinTotal = $('proteinTotal');
//	var tr_proteinAll = $$('tr.proteinAll');

//	$('proteinSub').addEvent('click',function(){
//		tr_proteinTotal.addClass('hide');
//		tr_proteinAll.each(function(el){
//			el.removeClass('hide');
//		});
//	});
//	$('proteinOnly').addEvent('click',function(){
//		tr_proteinTotal.removeClass('hide');
//		tr_proteinAll.each(function(el){
//			el.addClass('hide');
//		});
//	});
//}

////////////////////////////////////////////////////////

function hide_elements()
{
	hide.each(function(el){ $(el).setStyle('display','none'); });

	containers.each(function(el){
		var pg = el.getElements('div[class=pgContainer]');
		pg.each(function(el2){ el2.setStyle('display','none'); });

		el.setStyle('display','none');
		el.pg = pg;
	});
}

function show_elements()
{
	hide.each(function(el){ $(el).setStyle('display','block'); });
}

////////////////////////////////////////////////////////

function show_page()
{
	$(containers[container_id]).setStyle('display','block');
	$(containers[container_id].pg[pg_id]).setStyle('display','block');

	if(container_id>1)
		show_previous();
	else
		hide_previous();

	if((containers.length-1) == container_id && (containers[container_id].pg.length-1) == pg_id)
		hide_next();
	else
		show_next();

	set_icons();

	if(container_id<(containers.length-1) && container_id>0)
		$('secNav').setStyle('display','block');
	else
		$('secNav').setStyle('display','none');
}

function hide_page()
{
	$(containers[container_id]).setStyle('display','none');
	$(containers[container_id].pg[pg_id]).setStyle('display','none');
}

////////////////////////////////////////////////////////

function show_results()
{
	// process results here
	
	//alert("this is the show results step");
	
	//window.location="http://wwfmaps.org/CC/carbon_calc_results.php";
	
	
	document.carbonForm.action = "carbon_calc_results.php";
	document.carbonForm.submit();	
}

////////////////////////////////////////////////////////

function hide_previous()
{
	if($chk($('secNav')))
		$('secNav').getElement('a.previous').setStyle('visibility','hidden');
}

function show_previous()
{
	if($chk($('secNav')))
		$('secNav').getElement('a.previous').setStyle('visibility','visible');
}

////////////////////////////////////////////////////////

function hide_next()
{
	if($chk($('secNav')))
		$('secNav').getElement('a.next').setStyle('visibility','hidden');
}

function show_next()
{
	if($chk($('secNav')))
		$('secNav').getElement('a.next').setStyle('visibility','visible');
}

////////////////////////////////////////////////////////

function move_next()
{
	if(validate_page() || (container_id == (containers.length-1)))
	{
		hide_page();

		pg_id++;
		if(($(containers[container_id]).pg.length-1) < pg_id)
		{
			container_id++;
			pg_id = 0;
		}

		if((containers.length-1) == container_id)
		{
			results = true;

			set_results_nav();
			show_results();
			//disable_nav();
		}

		if(container_id>activate_menu)
		{
			activate_menu = container_id;
			set_active();
		}

		show_page();

		if(!start)
		{
			show_elements();
			start = true;
		}
	}
	/*
	else
	{
		var alert_list = [];
		for(var key in regex_validate['pgTransport'][pg_id])
		{
			if($type(regex_validate['pgTransport'][pg_id][key]) != 'function')
				alert_list[alert_list.length] = key+': '+regex_validate['pgTransport'][pg_id][key];
		}
		alert('validate: '+alert_list);
		alert(alert_list);
	}
	*/
}

function move_previous()
{
	hide_page();

	pg_id--;

	if(pg_id < 0)
	{
		container_id--;
		pg_id = ($(containers[container_id]).pg.length-1);
	}

	show_page();
}

////////////////////////////////////////////////////////

function set_buttons()
{
	var next = $('carbonForm').getElements('a[class=next]');
	var previous = $('carbonForm').getElements('a[class=previous]');

	next.each(function(el){ el.addEvent('click',move_next); });
	previous.each(function(el){ el.addEvent('click',move_previous); });
}

////////////////////////////////////////////////////////

function get_icons()
{
	var img = $('mainNav').getElement('ol').getElements('img');
	var li = $('mainNav').getElement('ol').getElements('li');
	var count = img.length;

	for(var i=0;count>i;i++)
	{
		var src = img[i].getProperty('src');
		var src_over = src;
		var src_icon = src.replace(/nav/,'icon');

		src_over = src_over.replace(/\.gif/,'_over.gif');
		src_over = src_over.replace(/\.jpg/,'_over.jpg');

		icons[i] = [];
		icons[i]['src'] = new Image();
		icons[i]['src_over'] = new Image();
		icons[i]['icon'] = new Image();

		icons[i]['src'].src = src;
		icons[i]['src_over'].src = src_over;
		icons[i]['icon'].src = src_icon;
		icons[i]['li'] = li[i];
		icons[i]['title'] = img[i].getProperty('title');
	}
}

function set_icons()
{
	var index = container_id-1;

	if(index>-1)
	{
		var sec_icon = $('secNav').getElement('li.secIcon').getElement('img');
		var count = icons.length;

		if(container_id<(containers.length-1))
		{
			sec_icon.src = icons[index]['icon'].src;
			sec_icon.setProperty('title',icons[index]['title']);
			sec_icon.setProperty('alt',icons[index]['title']);
		}

		for(var i=0;count>i;i++)
		{
			var index_img = get_image_index(icons[i]['src']);
			icons[i]['li'].removeClass('hLight');
			if($defined(icons[i]['li'].getElement('img')))
				icons[i]['li'].getElement('img').src = icons[i]['src'].src;
		}

		if($defined(icons[index]))
		{
			icons[index]['li'].addClass('hLight');
			icons[index]['li'].getElement('img').src = icons[index]['src_over'].src;
		}

		/*
		sec_icon.src = icons[index]['icon'].src;
		sec_icon.setProperty('title',icons[index]['title']);
		sec_icon.setProperty('alt',icons[index]['title']);

		for(var i=0;count>i;i++)
		{
			var index_img = get_image_index(icons[i]['src']);
			if(!$defined(img_rollovers[index_img]))
			{
				img_rollovers[index_img] = [];
				img_rollovers[index_img]['active'] = new Image();
			}

			if(i == index)
			{
				icons[i]['li'].addClass('hLight');
				icons[i]['li'].getElement('img').src = icons[i]['src_over'].src;

				img_rollovers[index_img]['active'].src = icons[i]['src_over'].src;
			}
			else
			{
				icons[i]['li'].removeClass('hLight');
				if($defined(icons[i]['li'].getElement('img')))
				{
					icons[i]['li'].getElement('img').src = icons[i]['src'].src;

					img_rollovers[index_img]['active'].src = icons[i]['src'].src;
				}
			}
		}
		*/
	}
}

////////////////////////////////////////////////////////

function set_png()
{
	var png = $$('.png');
	png.each(function(el){
		var bg = el.getStyle('background-image');

		bg = bg.split('(')[1];
		bg = bg.split(')')[0];

		el.setStyles({
			background: '',
			filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+bg+"')"
		});
	});
}

////////////////////////////////////////////////////////

function disable_nav()
{
	// disable navigation
	var nav = $('mainNav').getElement('ol').getElements('a');
	nav.each(function(el){
		el.removeEvents('click');
		el.removeEvents('mouseover');
		el.removeEvents('mouseout');
		el.addEvent('click',function(event){ var event = new Event(event); event.preventDefault(); });

		el.getParent().removeClass('hLight');
		el.removeClass('imgRoll');
		el.addClass('disabled');

		var img = el.getElement('img');
		var img_src = img.src;
		
		if(img_src.search('_over')>-1)
			img_src = img_src.replace('_over','');

		img.src = img_src;
	});
}

////////////////////////////////////////////////////////

function set_results_nav()
{
	var nav_total = $('pgResults').getElement('div.resHeader').getElement('a.total');
	var nav_category = $('pgResults').getElement('div.resHeader').getElement('a.category');

	nav_total.addEvent('click',function(){
		if((containers[container_id].pg.length-1) == pg_id)
		{
			nav_total.getParent().addClass('hLight');
			nav_category.getParent().removeClass('hLight');

			move_previous();
		}
	});

	nav_category.addEvent('click',function(){
		if((containers[container_id].pg.length-1) > pg_id)
		{
			nav_category.getParent().addClass('hLight');
			nav_total.getParent().removeClass('hLight');

			move_next();
		}
	});
}

////////////////////////////////////////////////////////

function set_active()
{
	var nav = $('mainNav').getElement('ol').getElements('a');
	var count = nav.length;

	for(var i=0;count>i;i++)
	{
		el = nav[i];

		if(i<activate_menu)
		{
			var img = el.getElement('img');
			var img_src = img.src;
		
			if(img_src.search('_over')>-1)
				img_src = img_src.replace('_over','');

			el.removeClass('disabled');

			if(img_src.search('.gif')>-1)
				img_src = img_src.replace('.gif','_over.gif');
			else if(img_src.search('.jpg')>-1)
				img_src = img_src.replace('.jpg','_over.jpg');

			if(i == (activate_menu-1))
			{
				el.removeEvents('click');
				el.addEvent('click',function(){
					hide_page();
					var count = nav.length;

					for(var i=0;count>i;i++)
					{
						if(nav[i] == this)
						{
							container_id = i+1;
							pg_id = 0;
							break;
						}
					}

					show_page();
				});
			}
		}

		if(activate_menu == (i+1))
			el.getParent().addClass('hLight');
		else
			el.getParent().removeClass('hLight');
	}
}


////////////////////////////////////////////////////////

function hide_input(pg)
{
	var pg_cont;
	if($defined(pg))
		pg_cont = $(pg);
	else
		pg_cont = $('carbonForm');

	var elements = pg_cont.getElements('input[type=text]');
	elements.each(function(el){
		if($defined(el.id))
		{
			var index = el.id;

			if(!$defined(input[index]))
				input[index] = el.value;
		}

		el.addEvent('focus', function(){
			if($defined(el.id))
			{
				var index = el.id;

				if(el.value == input[index])
					el.value = '';
			}
		});
		el.addEvent('blur', function(){
			if($defined(el.id))
			{
				var index = el.id;

				if(el.value == '')
					el.value = input[index];
			}
		});
	});
}

////////////////////////////////////////////////////////

window.addEvent('domready',function(){
	containers = $('carbonForm').getElements('div[id^=pg]');
	hide = ['mainNav','secNav'];
	disable_items = [];
	enable_items = [];
	optional_items = [];
	input = [];
	regex_validate = [];
	icons = [];
	start = false;
	results = false;
	regex = {};

	activate_menu = 0;
	container_id = 0;
	pg_id = 0;

	hide_elements();
	hide_previous();
	hide_input();
	set_buttons();
	set_another_car();
//	set_protein();
	disable_nav();
	set_icons();
	set_regex();
	set_items();
	set_disable();
	set_validation();
	get_icons();

	if(window.ie6)
		set_png();

	show_page();
});

// catches hitting 'enter' on the first page
document.addEvent('keypress',function(e){
	if(e.keyCode == 13 && !start)
		move_next();
});

////////////////////////////////////////////////////////
