

/* HELPER FUNCTIONS ***********************************************************/



function addLoadEvent(func) {

	var oldonload = window.onload;

	if (typeof window.onload != 'function') {

		window.onload = func;

	}

	else {

		window.onload = function() {

			oldonload();

			func();

		}

	}

}



function addEvent( obj, type, fn ) {

	if (obj.addEventListener) {

		obj.addEventListener( type, fn, false );

		EventCache.add(obj, type, fn);

	}

	else if (obj.attachEvent) {

		obj["e"+type+fn] = fn;

		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }

		obj.attachEvent( "on"+type, obj[type+fn] );

		EventCache.add(obj, type, fn);

	}

	else {

		obj["on"+type] = obj["e"+type+fn];

	}

}

	

var EventCache = function(){

	var listEvents = [];

	return {

		listEvents : listEvents,

		add : function(node, sEventName, fHandler){

			listEvents.push(arguments);

		},

		flush : function(){

			var i, item;

			for(i = listEvents.length - 1; i >= 0; i = i - 1){

				item = listEvents[i];

				if(item[0].removeEventListener){

					item[0].removeEventListener(item[1], item[2], item[3]);

				};

				if(item[1].substring(0, 2) != "on"){

					item[1] = "on" + item[1];

				};

				if(item[0].detachEvent){

					item[0].detachEvent(item[1], item[2]);

				};

				item[0][item[1]] = null;

			};

		}

	};

}();

/* END HELPER FUNCTIONS ***********************************************************/


var map_bretagne = new Image(321,336);
var map_basse = new Image(321,336);
var map_haute = new Image(321,336);
var map_picardie = new Image(321,336);
var map_nordpas = new Image(321,336);
var map_ilefrance = new Image(321,336);
var map_champagne = new Image(321,336);
var map_lorraine = new Image(321,336);
var map_alsace = new Image(321,336);
var map_paysloire = new Image(321,336);
var map_centre = new Image(321,336);
var map_bourgogne = new Image(321,336);
var map_franche = new Image(321,336);
var map_poitou = new Image(321,336);
var map_limousin = new Image(321,336);
var map_auvergne = new Image(321,336);
var map_rhone = new Image(321,336);
var map_aquitaine = new Image(321,336);
var map_midi = new Image(321,336);
var map_languedoc = new Image(321,336);
var map_provence = new Image(321,336);
var map_corse = new Image(321,336);

var guides_map_bretagne = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_bretagne.gif";
var guides_map_basse = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_basse.gif";
var guides_map_haute = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_haute.gif";
var guides_map_picardie = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_picardie.gif";
var guides_map_nordpas = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_nordpas.gif";
var guides_map_ilefrance = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_ilefrance.gif";
var guides_map_champagne = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_champagne.gif";
var guides_map_lorraine = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_lorraine.gif";
var guides_map_alsace = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_alsace.gif";
var guides_map_paysloire = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_paysloire.gif";
var guides_map_centre = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_centre.gif";
var guides_map_bourgogne = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_bourgogne.gif";
var guides_map_franche = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_franche.gif";
var guides_map_poitou = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_poitou.gif";
var guides_map_limousin = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_limousin.gif";
var guides_map_auvergne = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_auvergne.gif";
var guides_map_rhone = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_rhone.gif";
var guides_map_aquitaine = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_aquitaine.gif";
var guides_map_midi = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_midi.gif";
var guides_map_languedoc = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_languedoc.gif";
var guides_map_provence = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_provence.gif";
var guides_map_corse = new Image(321,336);
guides_map_bretagne.src = "/images/guides_map_corse.gif";

function setupImageMap()
{
	var parentNode = document.getElementById('chateauxcontent');
	
	//create image
	var imagemap = "<img src='/images/france_map.gif' alt='France map' name='francemap' usemap='#francemap' id='francemap' />";

	//create title
	var title = document.createElement("strong");
	title.className = "map_header";
	title.setAttribute("class", "map_header");
	var title_text = document.createTextNode('Click the map for a list of chateaux in a region');
	title.appendChild(title_text);

	//create list of chateaux
	var firstdiv = document.createElement('div');
	firstdiv.setAttribute('id', 'homeform');

	var seconddiv = document.createElement('div');
	seconddiv.setAttribute('id', 'chateauxlist');
	seconddiv.className = "guideslist";
	seconddiv.setAttribute("class", "guideslist");

	var thirddiv = document.createElement('div');
	thirddiv.setAttribute('id', 'innerguideslist');
	thirddiv.className = "innerguideslist";
	thirddiv.setAttribute("class", "innerguideslist");

	var listtitle = document.createElement("strong");
	listtitle.className = "guidesheading";
	listtitle.setAttribute("class", "guidesheading");
	var list_title_text = document.createTextNode('French Chateaux');
	listtitle.appendChild(list_title_text);

	thirddiv.appendChild(listtitle);
	seconddiv.appendChild(thirddiv);
	firstdiv.appendChild(seconddiv);
	
	parentNode.appendChild(title);
	//parentNode.appendChild(imagemap);
	parentNode.innerHTML += imagemap;
	parentNode.appendChild(firstdiv);

	var areas = getElementsByClassName('image_area', 'area');
	for (var x=0; x<areas.length; x++)
	{
		areas[x].onmouseover = function()
		{
			this.style.cursor = "pointer";
			document.getElementById('francemap').src = "/images/map_" + this.id + ".gif";
		}
		areas[x].onmouseout = function()
		{	
			addHoverOff();
		}
		areas[x].onclick = function()
		{
			toggleList(this.id);
		}
	}

}

function addHoverOff()
{
	document.getElementById('francemap').src = "/images/france_map.gif";
}

function toggleList(region)
{
	var arr = chateaux_array[region + "_names"];
	var hrefs = chateaux_array[region + "_urls"];
	var rTitle = chateaux_array[region + "_region"];		

	click_img = 'guides_map_' + region + '.gif';
		
	createTownList(arr, hrefs, rTitle, click_img);
	
}

function createTownList(arr, hrefs, rTitle, click_img)
{
	var parent = document.getElementById('innerguideslist');
	var eList = document.createElement("ul");
	eList.setAttribute("id", "townslist");
	if (arr)
	{
		for (var i=0; i<arr.length; i++)
		{
			var eItem = document.createElement("li");
		
			var eLink = document.createElement("a");
			eLink.setAttribute("href", hrefs[i]);
			eLink.innerHTML = arr[i];
		
			eItem.appendChild(eLink);
		
			eList.appendChild(eItem);

			var eHeading = document.createElement("h5");
			eHeading.innerHTML = "French Chateaux in the " + rTitle + " region";
		
		}
	
		removeChildrenFromNode(parent);
		parent.appendChild(eHeading);
		parent.appendChild(eList);

		document.getElementById('francemap').src = '/images/' + click_img;
	}

}

function removeChildrenFromNode(node) 
{
	var len = node.childNodes.length;
	while (node.hasChildNodes())
	{
		node.removeChild(node.firstChild);
	}
}

function setupImageMapList()
{
	var parent = document.getElementById('innerguideslist');
	
	var eHeading = document.createElement("strong");
	eHeading.innerHTML = "French Chateaux";
	
	var ePara = document.createElement("p");
	ePara.innerHTML = "Select one of the regions on the map to the left to see a list of Chateaux in that area.";
	
	removeChildrenFromNode(parent);
	parent.appendChild(eHeading);
	parent.appendChild(ePara);
}
function getElementsByClassName(classname,tag) {
 if(!tag) tag = "*";
 var anchs =  document.getElementsByTagName(tag);
 var total_anchs = anchs.length;
 var regexp = new RegExp('\\b' + classname + '\\b');
 var class_items = new Array()
 
 for(var i=0;i<total_anchs;i++) { //Go thru all the links seaching for the class name
  var this_item = anchs[i];
  if(regexp.test(this_item.className)) {
   class_items.push(this_item);
  }
 }
 return class_items;
}
addEvent(window,'unload',EventCache.flush);

addEvent(window,'load', setupImageMap);

addEvent(window,'load', setupImageMapList);

