// Script for highlighting and selecting images on PAW browse search page
// Basic terminology relating to image states:
//		burnt		- image has been clicked to select it
//		frozen		- image has not been clicked to select it
//		hot			- image has mouse over or is burnt
//		cold		- image does not have mouse over or is frozen
//		disabled	- image is 'greyed out' - user cannot interact with it
//		heat		- make an image hot
//		cool		- make an image cold
//		burn		- make an image burnt
//		freeze		- make an image frozen
//		disable		- make an image disabled

//Selection state 'constants'
var SS_FROZEN = 0;
var SS_BURNT = 1;
var SS_DISABLED = 2;

//Split a URL.  First part is protocol and path without last '/', second part is any characters after the last / in url 
function split_url(url) {
	index = url.length - 1;
	while(index >= 0 && url.charAt(index) != '/') {
		index--;
	}
	return new Array(url.substr(0, index), url.substr(index + 1));
}

function updateEnabled() {
	selectionMade = true;
	/******************************************
	 * HANDLE PARLIAMENTARIANS SELECTIONS     *
	 ******************************************/
	if (isBurnt('parl_comm_up') || isBurnt('parl_comm') || isBurnt('parl_comm_low')) {
		//alert('updateEnabled: 1');
		set_enable_glance(false);
		set_enable_elec(false);
		set_enable_party(false);
		set_enable_parl_middle(false);
		set_enable_parl_bottom(false);
		set_enable('parl_comm_up', !isBurnt('parl_comm_low'));
		set_enable('parl_comm_low', !isBurnt('parl_comm_up'));
		if (isBurnt('parl_comm_up')) {
			burn('parl_comm');
		} else if (isBurnt('parl_comm_low')) {
			burn('parl_comm');
		}
	} else if (isBurnt('parl_NSW') || isBurnt('parl_WA') || isBurnt('parl_SA') || isBurnt('parl_Tas') || isBurnt('parl_Vic')) {
		set_enable_glance(false);
		set_enable_elec(false);
		set_enable_party(false);
		set_enable_parl_comm(false);
		set_enable_parl_bottom(false);
		
		//Only enable the burnt state
		set_enable('parl_NSW', isBurnt('parl_NSW'));
		set_enable('parl_WA', isBurnt('parl_WA'));
		set_enable('parl_SA', isBurnt('parl_SA'));
		set_enable('parl_Tas', isBurnt('parl_Tas'));
		set_enable('parl_Vic', isBurnt('parl_Vic'));

		low2Burnt = isBurnt('parl_low2');
		set_enable('parl_up2', !low2Burnt);
		set_enable('parl_box1a', !low2Burnt);
		set_enable('parl_box1c', !low2Burnt);
		set_enable('parl_box1e', !low2Burnt);
		set_enable('parl_box1g', !low2Burnt);

		up2Burnt = isBurnt('parl_up2');
		set_enable('parl_low2', !up2Burnt);
		set_enable('parl_box1b', !up2Burnt);
		set_enable('parl_box1d', !up2Burnt);
		set_enable('parl_box1f', !up2Burnt);
		set_enable('parl_box1h', !up2Burnt);
	} else if (isBurnt('parl_up2') || isBurnt('parl_low2')) {
		set_enable_glance(false);
		set_enable_elec(false);
		set_enable_party(false);
		set_enable_parl_comm(false);
		set_enable_parl_bottom(false);

		low2Burnt = isBurnt('parl_low2');
		set_enable('parl_up2', !low2Burnt);
		set_enable('parl_box1a', !low2Burnt);
		set_enable('parl_box1c', !low2Burnt);
		set_enable('parl_box1e', !low2Burnt);
		set_enable('parl_box1g', !low2Burnt);

		up2Burnt = isBurnt('parl_up2');
		set_enable('parl_low2', !up2Burnt);
		set_enable('parl_box1b', !up2Burnt);
		set_enable('parl_box1d', !up2Burnt);
		set_enable('parl_box1f', !up2Burnt);
		set_enable('parl_box1h', !up2Burnt);
	} else if (isBurnt('parl_QLD') || isBurnt('parl_NT') || isBurnt('parl_ACT')) {
		set_enable_glance(false);
		set_enable_elec(false);
		set_enable_party(false);
		set_enable_parl_comm(false);
		set_enable_parl_middle(false);
		
		//Only enable the burnt state
		set_enable('parl_QLD', isBurnt('parl_QLD'));
		set_enable('parl_NT', isBurnt('parl_NT'));
		set_enable('parl_ACT', isBurnt('parl_ACT'));
		
		burn('parl_low3');
	} else if (isBurnt('parl_low3')) {
		set_enable_glance(false);
		set_enable_elec(false);
		set_enable_party(false);
		set_enable_parl_comm(false);
		set_enable_parl_middle(false);
		set_enable_parl_bottom(true);

	/******************************************
	 * HANDLE ELECTORATES SELECTIONS          *
	 ******************************************/
	} else if (isBurnt('elec_comm_up') || isBurnt('elec_comm') || isBurnt('elec_comm_low')) {
		//alert('updateEnabled: 1');
		set_enable_glance(false);
		set_enable_parl(false);
		set_enable_party(false);
		set_enable_elec_middle(false);
		set_enable_elec_bottom(false);
		set_enable('elec_comm_up', !isBurnt('elec_comm_low'));
		set_enable('elec_comm_low', !isBurnt('elec_comm_up'));
		if (isBurnt('elec_comm_up')) {
			burn('elec_comm');
		} else if (isBurnt('elec_comm_low')) {
			burn('elec_comm');
		}
	} else if (isBurnt('elec_NSW') || isBurnt('elec_WA') || isBurnt('elec_SA') || isBurnt('elec_Tas') || isBurnt('elec_Vic')) {
		set_enable_glance(false);
		set_enable_parl(false);
		set_enable_party(false);
		set_enable_elec_comm(false);
		set_enable_elec_bottom(false);
		
		//Only enable the burnt state
		set_enable('elec_NSW', isBurnt('elec_NSW'));
		set_enable('elec_WA', isBurnt('elec_WA'));
		set_enable('elec_SA', isBurnt('elec_SA'));
		set_enable('elec_Tas', isBurnt('elec_Tas'));
		set_enable('elec_Vic', isBurnt('elec_Vic'));
		
		low2Burnt = isBurnt('elec_low2');
		set_enable('elec_up2', !low2Burnt);
		set_enable('elec_box1a', !low2Burnt);
		set_enable('elec_box1c', !low2Burnt);
		set_enable('elec_box1e', !low2Burnt);
		set_enable('elec_box1g', !low2Burnt);

		up2Burnt = isBurnt('elec_up2');
		set_enable('elec_low2', !up2Burnt);
		set_enable('elec_box1b', !up2Burnt);
		set_enable('elec_box1d', !up2Burnt);
		set_enable('elec_box1f', !up2Burnt);
		set_enable('elec_box1h', !up2Burnt);
	} else if (isBurnt('elec_up2') || isBurnt('elec_low2')) {
		set_enable_glance(false);
		set_enable_parl(false);
		set_enable_party(false);
		set_enable_elec_comm(false);
		set_enable_elec_bottom(false);

		low2Burnt = isBurnt('elec_low2');
		set_enable('elec_up2', !low2Burnt);
		set_enable('elec_box1a', !low2Burnt);
		set_enable('elec_box1c', !low2Burnt);
		set_enable('elec_box1e', !low2Burnt);
		set_enable('elec_box1g', !low2Burnt);

		up2Burnt = isBurnt('elec_up2');
		set_enable('elec_low2', !up2Burnt);
		set_enable('elec_box1b', !up2Burnt);
		set_enable('elec_box1d', !up2Burnt);
		set_enable('elec_box1f', !up2Burnt);
		set_enable('elec_box1h', !up2Burnt);
	} else if (isBurnt('elec_QLD') || isBurnt('elec_NT') || isBurnt('elec_ACT')) {
		set_enable_glance(false);
		set_enable_parl(false);
		set_enable_party(false);
		set_enable_elec_comm(false);
		set_enable_elec_middle(false);
		
		//Only enable the burnt state
		set_enable('elec_QLD', isBurnt('elec_QLD'));
		set_enable('elec_NT', isBurnt('elec_NT'));
		set_enable('elec_ACT', isBurnt('elec_ACT'));
		
		burn('elec_low3');
	} else if (isBurnt('elec_low3')) {
		set_enable_glance(false);
		set_enable_parl(false);
		set_enable_party(false);
		set_enable_elec_comm(false);
		set_enable_elec_middle(false);
		set_enable_elec_bottom(true);

	/******************************************
	 * HANDLE NO SELECTIONS                   *
	 ******************************************/
	} else {
		//alert('updateEnabled: 2');
		selectionMade = false;
		set_enable_glance(true);
		set_enable_elec(true);
		set_enable_party(true);
		set_enable_parl(true);
	}
	
	if (selectionMade) {
		highlightGo();
	}
	else {
		resetGo();
	}
	return false;
}

function enabled(imageName) {
	return document.images[imageName].selectionState != SS_DISABLED;
}

function isHot(imageName) {
	//alert('isHot: ' + imageName);
	return (document.images[imageName].src.indexOf("_sel") != -1);
}

function isCold(imageName) {
	//alert('isCold: ' + imageName);
	return (document.images[imageName].src.indexOf("_sel") == -1 && document.images[imageName].src.indexOf("_dim") == -1);
}

function isDisabled(imageName) {
	return document.images[imageName].selectionState == SS_DISABLED;
}

function heat(imageName) {
	if ((!isHot(imageName)) && enabled(imageName)) {
		split_src = split_url(document.images[imageName].src);
		document.images[imageName].src = split_src[0] + '_sel/' + split_src[1];
	}
}

function cool(imageName) {
	//alert('cool: ' + imageName);
	if (!isCold(imageName)) {
		//alert('cool: X ' + imageName);
		split_src = split_url(document.images[imageName].src);
		path = split_src[0];  //This will be something like images/parl_sel
		path = path.substr(0, path.length - 4);  //This will remove the _sel from path
		document.images[imageName].src = path + '/' + split_src[1];
		//alert('cool: ' + path + '/' + split_src[1]);
	}
}

function isBurnt(imageName) {
	//alert('isBurnt: ' + imageName);
	return document.images[imageName].selectionState == SS_BURNT;
}

function burn(imageName) {
	//alert('burn: ' + imageName);
	if (enabled(imageName)) {
		heat(imageName);
		document.images[imageName].selectionState = SS_BURNT;
	}
}

function freeze(imageName) {
	cool(imageName);
	document.images[imageName].selectionState = SS_FROZEN;
}

function disable(imageName) {
	//alert('disable: ' + imageName);
	if (imageName.indexOf("party")<0 && imageName.indexOf("glance")<0) {
		if (!isDisabled(imageName)) {
			split_src = split_url(document.images[imageName].src);
			//alert('disable: ' + split_src[0] + '_dim/' + split_src[1]);
			document.images[imageName].src = split_src[0] + '_dim/' + split_src[1];
			document.images[imageName].selectionState = SS_DISABLED;
		}
	}
}

function enable(imageName) {
	//alert('enable: ' + imageName);
	if (document.images[imageName].selectionState == SS_DISABLED) {
		//alert('enable: X ' + imageName);
		document.images[imageName].selectionState = SS_FROZEN;
		cool(imageName);
	}
}
	
function set_enable(imageName, enabled) {
	if (enabled) {
		enable(imageName)
	} else {
		disable(imageName)
	}
}

function toggleImageClick(imageName) {
	if (isBurnt(imageName)) {
		freeze(imageName);
	} else {
		burn(imageName);
	}
	updateEnabled();
	return false;
}

function toggleImageOver(imageName) {
	if (!isDisabled(imageName)) {
		heat(imageName);
	}
}

function toggleImageOut(imageName) {
	if (!(isBurnt(imageName) || isDisabled(imageName))) {
		cool(imageName);
	}
}

function highlightGo() {
	document.images['go_btn'].src = 'images/browse/gen/go_blue.gif';
}

function resetGo() {
	document.images['go_btn'].src = 'images/browse/gen/go.gif';
}

function set_enable_parl_comm(enabled) {
	set_enable('parl_comm', enabled);
	set_enable('parl_comm_up', enabled);
	set_enable('parl_comm_low', enabled);
}

function set_enable_parl_middle(enabled) {
	set_enable('parl_NSW', enabled);
	set_enable('parl_WA', enabled);
	set_enable('parl_SA', enabled);
	set_enable('parl_Tas', enabled);
	set_enable('parl_Vic', enabled);
	set_enable('parl_up2', enabled);
	set_enable('parl_low2', enabled);
	set_enable('parl_box1a', enabled);
	set_enable('parl_box1b', enabled);
	set_enable('parl_box1c', enabled);
	set_enable('parl_box1d', enabled);
	set_enable('parl_box1e', enabled);
	set_enable('parl_box1f', enabled);
	set_enable('parl_box1g', enabled);
	set_enable('parl_box1h', enabled);
}

function set_enable_parl_bottom(enabled) {
	set_enable('parl_QLD', enabled);
	set_enable('parl_NT', enabled);
	set_enable('parl_ACT', enabled);
	set_enable('parl_low3', enabled);
	set_enable('parl_box2a', enabled);
	set_enable('parl_box2b', enabled);
}

function set_enable_parl(enabled) {
	set_enable_parl_comm(enabled);
	set_enable_parl_middle(enabled);
	set_enable_parl_bottom(enabled);
}

function set_enable_glance(enabled) {
//	set_enable('glance_comm', enabled);
//	set_enable('glance_NSW', enabled);
//	set_enable('glance_WA', enabled);
//	set_enable('glance_SA', enabled);
//	set_enable('glance_Tas', enabled);
//	set_enable('glance_Vic', enabled);
//	set_enable('glance_QLD', enabled);
//	set_enable('glance_NT', enabled);
//	set_enable('glance_ACT', enabled);
}

function set_enable_elec_comm(enabled) {
	set_enable('elec_comm', enabled);
	set_enable('elec_comm_up', enabled);
	set_enable('elec_comm_low', enabled);
}

function set_enable_elec_middle(enabled) {
	set_enable('elec_NSW', enabled);
	set_enable('elec_WA', enabled);
	set_enable('elec_SA', enabled);
	set_enable('elec_Tas', enabled);
	set_enable('elec_Vic', enabled);
	set_enable('elec_up2', enabled);
	set_enable('elec_low2', enabled);
	set_enable('elec_box1a', enabled);
	set_enable('elec_box1b', enabled);
	set_enable('elec_box1c', enabled);
	set_enable('elec_box1d', enabled);
	set_enable('elec_box1e', enabled);
	set_enable('elec_box1f', enabled);
	set_enable('elec_box1g', enabled);
	set_enable('elec_box1h', enabled);
}

function set_enable_elec_bottom(enabled) {
	set_enable('elec_QLD', enabled);
	set_enable('elec_NT', enabled);
	set_enable('elec_ACT', enabled);
	set_enable('elec_low3', enabled);
	set_enable('elec_box2a', enabled);
	set_enable('elec_box2b', enabled);
}

function set_enable_elec(enabled) {
	set_enable_elec_comm(enabled);
	set_enable_elec_middle(enabled);
	set_enable_elec_bottom(enabled);
}

function set_enable_party(enabled) {
//	set_enable('party_all', enabled);
//	set_enable('party_ALP', enabled);
//	set_enable('party_lib', enabled);
//	set_enable('party_min', enabled);
//	set_enable('party_nat', enabled);
//	set_enable('party_pau', enabled);
//	set_enable('party_cou', enabled);
//	set_enable('party_gre', enabled);
//	set_enable('party_dem', enabled);
}

function resetImage(imageName) {
	if (isBurnt(imageName)) {
		freeze(imageName)
	} else {
		enable(imageName);
	}
}

function init() {
	for(index = 0; index < document.images.length; index++) {
		document.images[index].selectionState = SS_FROZEN;
	}
}

function go() {
	parliament = '';
	house='';
	upper_house = '';
	lower_house = '';
	page = '';

	if(isBurnt('parl_comm')) {
		parliament = 'Federal';
		upper_house = 'Senate';
		lower_house = 'House+of+Representatives';
		page = 'parl';
	} else if(isBurnt('parl_NSW')) {
		parliament = 'NSW';
		upper_house = 'Legislative+Council';
		lower_house = 'Legislative+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_WA')) {
		parliament = 'WA';
		upper_house = 'Legislative+Council';
		lower_house = 'Legislative+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_SA')) {
		parliament = 'SA';
		upper_house = 'Legislative+Council';
		lower_house = 'House+of+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_Tas')) {
		parliament = 'Tas';
		upper_house = 'Legislative+Council';
		lower_house = 'House+of+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_Vic')) {
		parliament = 'Vic';
		upper_house = 'Legislative+Council';
		lower_house = 'Legislative+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_QLD')) {
		parliament = 'Qld';
		lower_house = 'Legislative+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_NT')) {
		parliament = 'NT';
		lower_house = 'Legislative+Assembly';
		page = 'parl';
	} else if(isBurnt('parl_ACT')) {
		parliament = 'ACT';
		lower_house = 'Legislative+Assembly';
		page = 'parl';
	}

	if(upper_house != '' && (isBurnt('parl_comm_up') || isBurnt('parl_up2'))) {
		house = upper_house;
	}
	if(lower_house != '' && (isBurnt('parl_comm_low') || isBurnt('parl_low2') || isBurnt('parl_low3'))) {
		house = lower_house;
	}
	
	if(isBurnt('elec_comm')) {
		parliament = 'Federal';
		upper_house = 'Senate';
		lower_house = 'House+of+Representatives';
		page = 'elec';
	} else if(isBurnt('elec_NSW')) {
		parliament = 'NSW';
		upper_house = 'Legislative+Council';
		lower_house = 'Legislative+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_WA')) {
		parliament = 'WA';
		upper_house = 'Legislative+Council';
		lower_house = 'Legislative+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_SA')) {
		parliament = 'SA';
		upper_house = 'Legislative+Council';
		lower_house = 'House+of+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_Tas')) {
		parliament = 'Tas';
		upper_house = 'Legislative+Council';
		lower_house = 'House+of+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_Vic')) {
		parliament = 'Vic';
		upper_house = 'Legislative+Council';
		lower_house = 'Legislative+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_QLD')) {
		parliament = 'Qld';
		lower_house = 'Legislative+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_NT')) {
		parliament = 'NT';
		lower_house = 'Legislative+Assembly';
		page = 'elec';
	} else if(isBurnt('elec_ACT')) {
		parliament = 'ACT';
		lower_house = 'Legislative+Assembly';
		page = 'elec';
	}

	if(upper_house != '' && (isBurnt('elec_comm_up') || isBurnt('elec_up2'))) {
		house = upper_house;
	}
	if(lower_house != '' && (isBurnt('elec_comm_low') || isBurnt('elec_low2') || isBurnt('elec_low3'))) {
		house = lower_house;
	}

	
	if (parliament == '' || page == '') {
		alert("You must select a state to search on");
		return;
	}
	
	newLocation = page + '_list.php3?srch=browse' + '_' + page + '&parliament=' + parliament;
	if (house != "") {
		newLocation = newLocation + '&house=' + house;
	}
	
	window.location = newLocation;
}

function reset() {
	resetImage('parl_comm');
	resetImage('parl_comm_up');
	resetImage('parl_comm_low');
	resetImage('parl_NSW');
	resetImage('parl_WA');
	resetImage('parl_SA');
	resetImage('parl_Tas');
	resetImage('parl_Vic');
	resetImage('parl_up2');
	resetImage('parl_low2');
	resetImage('parl_box1a');
	resetImage('parl_box1b');
	resetImage('parl_box1c');
	resetImage('parl_box1d');
	resetImage('parl_box1e');
	resetImage('parl_box1f');
	resetImage('parl_box1g');
	resetImage('parl_box1h');
	resetImage('parl_QLD');
	resetImage('parl_NT');
	resetImage('parl_ACT');
	resetImage('parl_low3');
	resetImage('parl_box2a');
	resetImage('parl_box2b');
//	resetImage('glance_comm');
//	resetImage('glance_NSW');
//	resetImage('glance_WA');
//	resetImage('glance_SA');
//	resetImage('glance_Tas');
//	resetImage('glance_Vic');
//	resetImage('glance_QLD');
//	resetImage('glance_NT');
//	resetImage('glance_ACT');
	resetImage('elec_comm');
	resetImage('elec_comm_up');
	resetImage('elec_comm_low');
	resetImage('elec_NSW');
	resetImage('elec_WA');
	resetImage('elec_SA');
	resetImage('elec_Tas');
	resetImage('elec_Vic');
	resetImage('elec_up2');
	resetImage('elec_low2');
	resetImage('elec_box1a');
	resetImage('elec_box1b');
	resetImage('elec_box1c');
	resetImage('elec_box1d');
	resetImage('elec_box1e');
	resetImage('elec_box1f');
	resetImage('elec_box1g');
	resetImage('elec_box1h');
	resetImage('elec_QLD');
	resetImage('elec_NT');
	resetImage('elec_ACT');
	resetImage('elec_low3');
	resetImage('elec_box2a');
	resetImage('elec_box2b');
//	resetImage('party_all');
//	resetImage('party_ALP');
//	resetImage('party_lib');
//	resetImage('party_min');
//	resetImage('party_nat');
//	resetImage('party_pau');
//	resetImage('party_cou');
//	resetImage('party_gre');
//	resetImage('party_dem');
	resetGo();
}
