var checklist = false;

/**function save_listing (link, id) {

	link.firstChild.nodeValue = 'Adding...';

	$.post (
		'/account/save-listing',
		{ listing_id: id },
		function (resp) {
			link.firstChild.nodeValue = 'Added to My Property! Click to view.';
			link.href = '/account/my-property';
			link.onclick = null;
			link.className += link.className ? ' added' : 'added';
		}
	);

	return false;

}

function save_open_home (link, id) {

	link.firstChild.nodeValue = 'Adding...';

	$.post (
		'/account/save-open-home',
		{ open_home_id: id },
		function (resp) {
			link.firstChild.nodeValue = 'Added to My Open Homes List! Click to view.';
			link.href = '/account/my-property';
			link.onclick = null;
			link.className += link.className ? ' added' : 'added';
		}
	);

	return false;

}

function redirect (url) {

	location.href = url;

	return false;

}

function confirm_redirect (url, message) {

	if (confirm (message))
		redirect (url);

	return false;

}

function image_switcher () {

	$("div.imgThumbnails ul li a").click( function () {

		var pri = document.getElementById('primary-image');

		pri.href = this.href;
		pri.firstChild.src = this.firstChild.src.replace('photos2','photos');
		pri.firstChild.alt = this.firstChild.alt;

		return false;

	});

} **/

function Node (id, label) {

	this.id = id;
	this.label = label;
	this.children = new Array ();

}

function createElement (type, name, checked) {

	var element = null;

	try {
		element = document.createElement('<input type="'+type+'" name="'+name+'"'+(checked ? ' checked="checked"' : '')+'>');
	} catch (e) {}

	if (!element || element.nodeName != 'INPUT') {
		element = document.createElement('input');
		element.type = type;
		element.name = name;
		element.checked = checked;
	}

	return element;

}

function nodeChecklist (nodes, element_id, checked_id) {

	var element = document.getElementById(element_id);

	if (nodes.length > 0) {

		var ul = $.UL({id: element_id, className: 'checklist'});

		for (var i = 0; i < nodes.length; i++) {

			var label = document.createElement ('label');
			label.setAttribute ('for', element_id + '_' + nodes[i].id);

			var input = createElement ('checkbox', 'suburb_id[]', false);
			input.id = element_id + '_' + nodes[i].id;
			input.value = nodes[i].id;
			input.checked = (checked_id && nodes[i].id == checked_id);

			label.appendChild (input);

			label.appendChild (
				document.createTextNode (' ' + nodes[i].label)
			);

			label.onmouseover = function() { this.className = 'hover' }
			label.onmouseout = function() { this.className = '' }

			ul.appendChild ($.LI( {}, label ));

		}

		element.parentNode.replaceChild (ul, element);

	} else {

		var p = $.P( {id: element_id}, 'Please select a region and district' );

		element.parentNode.replaceChild (p, element);

	}

	return true;

}

function nodeSelectBox (nodes, element_id, selected_id, all_text, disabled) {

	var element = document.getElementById(element_id);
	var select = $.SELECT({id: element_id, name: element_id});
	var child_nodes = new Array ();

	select.appendChild ($.OPTION({
		text: all_text,
		innerText: all_text,
		value: '',
		selected: !selected_id
	}));

	for (var i = 0; i < nodes.length; i++) {

		var selected = (selected_id && nodes[i].id == selected_id);

		if (selected)
			child_nodes = nodes[i].children;

		select.appendChild ($.OPTION({
			text: nodes[i].label,
			innerText: nodes[i].label,
			value: nodes[i].id,
			selected: selected
		}));

	}

	if (disabled)
		select.disabled = true;

	element.parentNode.replaceChild (select, element);

	return child_nodes;

} 

function changeRegion () {

	var districts = new Array ();
	var region_id = this.options[this.selectedIndex].value;

	for (var i = 0; i < regions.length; i++) {

		if (regions[i].id == region_id)
			districts = regions[i].children;

	}

	nodeSelectBox (districts, 'district_id', false, 'All districts', !region_id);

	if (is_property) {

		document.getElementById('district_id').onchange = changeDistrict;

		if (checklist)
			nodeChecklist (new Array (), 'suburb_id');
		else
			nodeSelectBox (new Array (), 'suburb_id', false, 'All suburbs', true);

	}

}

function changeDistrict () {

	var suburbs = new Array ();
	var district_id = this.options[this.selectedIndex].value;
	var region = document.getElementById('region_id');
	var region_id = region.options[region.selectedIndex].value;

	for (var i = 0; i < regions.length; i++) {

		if (regions[i].id == region_id) {

			for (var j = 0; j < regions[i].children.length; j++) {

				if (regions[i].children[j].id == district_id)
					suburbs = regions[i].children[j].children;

			}

		}

	}

	if (checklist)
		nodeChecklist (suburbs, 'suburb_id');
	else
		nodeSelectBox (suburbs, 'suburb_id', false, 'All suburbs', !district_id);

}

function search_options (listing_sub_type_id, region_id, district_id, suburb_id) {

	is_property = (listing_type_id != 4);
	is_lifestyle = (listing_sub_type_id == 5);

	var districts = nodeSelectBox (regions, 'region_id', region_id, 'All regions', false);
	document.getElementById('region_id').onchange = changeRegion;

	var suburbs = nodeSelectBox (districts, 'district_id', district_id, 'All districts', !region_id);
	document.getElementById('district_id').onchange = changeDistrict;

	if (is_property) {

		if (checklist)
			nodeChecklist (suburbs, 'suburb_id', suburb_id);
		else
			nodeSelectBox (suburbs, 'suburb_id', suburb_id, 'All suburbs', (!region_id || !district_id));

	}


	var listing_sub_types = new Array ();
	var listing_types = '1';
	for (var i = 0; i < listing_types.length; i++) {

		//if (listing_types[i].id == listing_type_id)
		if (listing_types[i] == listing_type_id)
			listing_sub_types = listing_types[i].children;

	}
}


/**function setMapLocation (region_id, district_id) {

	var districts = nodeSelectBox (regions, 'region_id', region_id, 'All regions', false);
	document.getElementById('region_id').onchange = changeRegion;

	var suburbs = nodeSelectBox (districts, 'district_id', district_id, 'All districts', false);
	document.getElementById('district_id').onchange = changeDistrict;

	if (is_property)
		nodeSelectBox (suburbs, 'suburb_id', false, 'All suburbs', (!region_id || !district_id));

	var listing_sub_type = document.getElementById('listing_sub_type_id');
	var listing_sub_type_id = listing_sub_type.options[listing_sub_type.selectedIndex].value;


	var ajaxListings = document.getElementById('ajaxListings');

	if (region_id) {

		ajaxListings.innerHTML = '<p>Loading listings...<img src="/img/template/throbber.gif" class="throbber" /></p>';

		var listings_url = "/ajax/listings?listing_type_id="+listing_type_id+"&listing_sub_type_id="+listing_sub_type_id+"&region_id="+region_id+"&district_id="+district_id;

		$.get( listings_url, function (data) {
			ajaxListings.innerHTML = data;
		});

	} else {

		ajaxListings.innerHTML = '<p>Select a region or district from the map to load listings.</p>';

	}


	var ajaxSuburbs = document.getElementById('ajaxSuburbs');

	if (district_id) {

		ajaxSuburbs.innerHTML = '<p>Loading suburbs...<img src="/img/template/throbber.gif" class="throbber" /></p>';

		var suburbs_url = "/ajax/suburbs?listing_type_id="+listing_type_id+"&listing_sub_type_id="+listing_sub_type_id+"&region_id="+region_id+"&district_id="+district_id;

		$.get( suburbs_url, function (data) {
			ajaxSuburbs.innerHTML = data;
		});

	} else {

		ajaxSuburbs.innerHTML = '';

	}

}

function appendStylesheet (href, media) {

	var link = document.createElement ('link');
	link.setAttribute ('rel', 'stylesheet');
	link.setAttribute ('type', 'text/css');
	link.setAttribute ('href', href);
	link.setAttribute ('media', media);

	document.getElementsByTagName('head')[0].appendChild(link);

}
**/
function addLoadEvent (func) {

	var oldonload = window.onload;

	if (typeof window.onload != 'function') {

		window.onload = func;

	} else {

		window.onload = function() {

			if (oldonload)
				oldonload ();

			func ();

		}

	}

}
/**
function deleteChildNodes (parent) {

	if (parent == undefined || parent == null)
		return;

	while (parent.firstChild)
		parent.removeChild (parent.firstChild);

}

$(document).ready(function()
{
	//Popup windows, just add popup class to any link (replaces the old target=_blank)
	$('a.popup').bind('click',function(){
		window.open(this.href);
		return false;
	});
});**/