// (C) 2007 - 2009 Serge Lamarche
// sergewebservice.ca
// All codes copyrights Serge Lamarche, any reproduction and 
// use strictly forbidden without written consent.
// Toute reproduction est interdite sans autorisation écrite
// Contact sergewebservice@yahoo.ca or sergelamarche@gmail.com 
// for help with your website. Reliable, inexpensive website service.
// Les effets javascripts sont disponibles à prix abordables. Merci. 

var map = new Object(); conserveimage = false; 

if (!nodetexte) var nodetexte = new Object(); 

function chargeimage(elementa) { if (!document.getElementById) return; 
if (!document.getElementById("ecran")) return; 
nilintervfonduench(); montre('ecran', true); //arrete fondu-enchainé et mets l'écran pour sur.
var lecran = document.getElementById("ecran"); 
if (!lecran.innerHTML||!document.documentElement.innerHTML) return; // bug sur opera 9.6 oblige d'enlever typeof().
if (conserveimage) { lecran.innerHTML=''; lecran.innerHTML = conserveimage; conserveimage = false; }; //remet si conservée.
transparence('img01', 0); montre('attend', true); //met en veilleuse un moment. 
nilintervdiapofondu(); montre('screen', false); //arrête diapo et prends note ci-dessous: 
var limg01 = document.getElementById("img01"); 
//laphotodsimg01 = limg01.src; //aussi: document.images["img01"].src;
laphotodsimg01 = limg01.getAttribute("href"); photodsimg01 = true; 
var nomphoto = elementa.getAttribute("href"); nomphoto = nomphoto.substring(48, nomphoto.length-4); 
var ledebordement = (window.getComputedStyle) ? window.getComputedStyle(lecran,null).overflow : lecran.currentStyle.overflow; 
if (nomphoto=="gch-runmap-gd") { lecran.style.overflow = "hidden"; lecran.style.height = "507px"; limg01.style.position = "absolute"; limg01.style.left = "-1980px"; limg01.style.top = "-1400px"; limg01.style.cursor = "move"; dragDrop.initElement(limg01); } else if (ledebordement=="hidden") { lecran.style.height = "auto"; lecran.style.overflow = "auto"; limg01.style.position = "relative"; limg01.style.left = "auto"; limg01.style.top = "auto"; limg01.style.cursor = "auto"; }; 
var imgfraiche = ".jpg"; 
if (nomphoto=="HMLhelipad") imgfraiche += "?"+Math.random(); 
changelegende(map[nomphoto].legende); 
//changelegende(photo[nomphoto].legende+" &mdash; by "+photo[nomphoto].proprio+" &mdash; "+photo[nomphoto].date); 
//var x=document.getElementById("img01").offsetHeight||document.getElementById("img01").style.pixelHeight; alert(x);
changephotosrc('img01', 'http://www.canadianheli-skiing.com/gallery-maps/'+nomphoto+imgfraiche); 
intervdefilepage = window.setInterval("defilepage(0)", 20); 
intervattendimage = window.setInterval("attendimage()", 500); return false; }


//Remplacer ' par &rsquo; dans les légendes:

map['bc-google'] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2008-00-00", 
"cote": 0, 
"legende": 'Google map of British Columbia', 
"affiche": '', 
"titre": ""
 }; 

map['hml-google'] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2008-00-00", 
"cote": 0, 
"legende": 'Google map of Heather Mountain Lodge', 
"affiche": '', 
"titre": ""
 }; 

map['gch-runmap'] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2008-00-00", 
"cote": 0, 
"legende": 'All our runs are in the Purcell and Selkirk ranges. <a href="http://www.canadianheli-skiing.com/gallery-maps/gch-runmap-gd.jpg" onclick="return chargeimage(this)">View full size (6MB - high quality)</a>', 
"affiche": '', 
"titre": ""
 }; 

map['gch-runmap-gd'] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2008-00-00", 
"cote": 0, 
"legende": 'All our runs are in the Purcell and Selkirk ranges. <a href="http://www.canadianheli-skiing.com/gallery-maps/gch-runmap.jpg" onclick="return chargeimage(this)">Return to smaller size</a>', 
"affiche": '', 
"titre": ""
 }; 

map['HMLhelipad'] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2008-00-00", 
"cote": 0, 
"legende": 'Webcam image at the helipad of Heather Mountain Lodge. <a href="http://www.canadianheli-skiing.com/gallery-maps/HMLhelipad.jpg" onclick="return chargeimage(this)">Refresh</a>', 
"affiche": '', 
"titre": ""
 }; 



/* 
map[''] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2009-00-00", 
"cote": 0, 
"legende": '', 
"affiche": '', 
"titre": ""
 }; 
*/


nodetexte['forecasts'] = { 
"proprio": "Snow-forecast.com and Various Canadian government agencies", 
"sousgroupe": "aucun", 
"date": "Current", 
"cote": 0, 
"legende": "Forecasts", 
"affiche": '<p></p>', 
"textehtml": '<br /><p><a href="http://www.snow-forecast.com/resorts/GC-HeliSki/6day/top" target="_blank"><img width="144" height="40" border="0" alt="Snow Forecast" src="images-gen/logo-snowforecast_144px.gif" style="width: 144px; height: 40px; margin-right: 13px;" /></a> <strong><a href="http://www.snow-forecast.com/resorts/GC-HeliSki/6day/top" target="_blank">Snow Forecast for GCH</a> &mdash;</strong> (elevation 1006 to 3200&nbsp;m, 3,300 to 10,500&nbsp;ft)</p><br /><p><a href="http://www.weatheroffice.gc.ca/city/pages/bc-34_metric_e.html" target="_blank"><img width="144" height="34" border="0" alt="Environment Canada" src="images-gen/logo-envcan_144px.gif" style="float: left; width: 144px; height: 34px; margin-right: 13px;" /></a> <strong class="marge"><a href="http://www.weatheroffice.gc.ca/city/pages/bc-34_metric_e.html" target="_blank">Golden Forecast</a> &mdash;</strong> (elevation 786 m, 2581 ft)<br /><strong class="marge"><a href="http://www.weatheroffice.gc.ca/city/pages/bc-65_metric_e.html" target="_blank">Revelstoke Forecast</a> &mdash;</strong> (elevation 442 m, 1451 ft)</p><br /><p><a href="http://www.pc.gc.ca/apps/PSB/index_e.asp?oqAVA_PARK_ID=3" target="_blank"><img width="124" height="24" border="0" alt="Parcs Canada" src="images-gen/logo-parcscanada_144px.gif" style="width: 144px; height: 24px; margin-right: 10px;" /></a> <strong class="marge"><a href="http://www.pc.gc.ca/apps/PSB/index_e.asp?oqAVA_PARK_ID=3" target="_blank">Glacier National Park Report</a></strong></p><br />', 
"description": "", 
"titre": "Forecasts"
 }; 


nodetexte['snowforecastfeed'] = { 
"proprio": "Snow-forecast.com", 
"sousgroupe": "aucun", 
"date": "Current", 
"cote": 0, 
"legende": "Forecasts", 
"affiche": '<p></p>', 
"textehtml": '<iframe allowtransparency="true" height="250" width="530" align="left" src="http://www.snow-forecast.com/resorts/GC-HeliSki/feed1a" scrolling="no" frameborder="0"></iframe><p><a href="http://www.snow-forecast.com/resorts/GC-HeliSki/6day/top"><img width="130" height="37" border="0" alt="Snow Forecast" src="http://www.snow-forecast.com/images/logo_feed1a.gif" style="width: 130px; height: 37px;"/></a><br /><a href="http://www.snow-forecast.com/resorts/GC-HeliSki/6day/mid">Great Canadian HeliSki Snow Forecast</a> by&nbsp;<a href="http://www.snow-forecast.com">snow-forecast.com</a></p>', 
"description": "", 
"titre": "Forecasts"
 }; 


nodetexte['satellites'] = { 
"proprio": "Snow-forecast.com and Environment Canada", 
"sousgroupe": "aucun", 
"date": "Current", 
"cote": 0, 
"legende": "", 
"affiche": '<p></p>', 
"textehtml": '<p><strong><a href="http://snow-forecast.com/maps/bcol_dynamical.shtml" target="_blank">Snow-forecast Interactive Snowfall Maps</a></strong></p><p><strong class="marge"><a href="http://www.meteo.gc.ca/satellite/animateweb_e.html?imagetype=satellite&amp;imagename=goes_wcan_vvi_s_..................jpg&amp;nbimages=1&amp;clf=1" target="_blank">Environment Canada Satellite Loop</a> &mdash;</strong> (Goes-West) Western Canada IR+Visible Small includes all 110 images.</p>', 
"description": "", 
"titre": "Satellites"
 }; 

nodetexte['webcams'] = { 
"proprio": "GCH, KHMR, BC", 
"sousgroupe": "aucun", 
"date": "Current", 
"cote": 0, 
"legende": "", 
"affiche": '<p></p>', 
"textehtml": '<div class="gauche"><a href="http://www.canadianheli-skiing.com/gallery-maps/HMLhelipad.jpg" onclick="return chargeimage(this)"><img src="http://www.canadianheli-skiing.com/gallery-maps/HMLhelipad.jpg" width="320" height="240" /></a><p><strong class="marge"><a href="http://www.canadianheli-skiing.com/gallery-maps/HMLhelipad.jpg" target="_blank" onclick="return chargeimage(this)">GCH Webcam</a></strong> at Heather Mountain Lodge</p></div><div class="droite"><a href="http://www.kickinghorseresort.com/mountain/information/webcam-eagleeye.aspx" target="_blank"><img src="http://www.kickinghorseresort.com/KHMRSiteAssets/_ftp/eagleeyecam.jpg" width="352" height="240" /></a><p><strong><a href="http://www.kickinghorseresort.com/mountain/information/webcam-eagleeye.aspx" target="_blank">Kicking Horse Mountain Resort Webcam</a> &mdash;</strong> <br />(elevation 2392m, 7850 ft)</p></div><div class="gauche"><p><strong class="marge"><a href="http://images.drivebc.ca/bchighwaycam/pub/html/www/101.html" target="_blank">Rogers Pass Webcam</a> &mdash;</strong> Glacier National Park relative information. (elevation 1322m, 4337 ft)</p></div>', 
"description": "", 
"titre": "Webcams"
 }; 

nodetexte['historicdata'] = { 
"proprio": "Environment Canada", 
"sousgroupe": "aucun", 
"date": "", 
"cote": 0, 
"legende": "", 
"affiche": '<p></p>', 
"textehtml": '<p><strong><a href="http://climate.weatheroffice.ec.gc.ca/climate_normals/results_e.html?Province=ALL&amp;StationName=&amp;SearchType=BeginsWith&amp;LocateBy=Province&amp;Proximity=25&amp;ProximityFrom=City&amp;StationNumber=&amp;IDType=MSC&amp;CityName=&amp;ParkName=&amp;LatitudeDegrees=&amp;LatitudeMinutes=&amp;LongitudeDegrees=&amp;LongitudeMinutes=&amp;NormalsClass=A&amp;SelNormals=&amp;StnId=1363&amp;start=1&amp;end=13&amp;autofwd=1" target="_blank">Rogers Pass</a> &mdash;</strong> (elevation 1322m, 4337 ft) <img width="144" height="34" border="0" alt="Environment Canada" src="images-gen/logo-envcan_144px.gif" style="width: 144px; height: 34px;"/></p><p><strong class="marge"><a href="http://climate.weatheroffice.ec.gc.ca/climate_normals/results_e.html?Province=ALL&amp;StationName=fidelity&amp;SearchType=Contains&amp;LocateBy=Province&amp;Proximity=25&amp;ProximityFrom=City&amp;StationNumber=&amp;IDType=MSC&amp;CityName=&amp;ParkName=&amp;LatitudeDegrees=&amp;LatitudeMinutes=&amp;LongitudeDegrees=&amp;LongitudeMinutes=&amp;NormalsClass=A&amp;SelNormals=&amp;StnId=1345&amp;&amp;autofwd=1" target="_blank">Mt. Fidelity</a> &mdash;</strong> (elevation 1874m, 6148 ft)</p>', 
"description": "", 
"titre": "Historic data"
 }; 



/* 
nodetexte[''] = { 
"proprio": "", 
"sousgroupe": "aucun", 
"date": "2009-01-01", 
"cote": 0, 
"legende": "", 
"affiche": '<p></p>', 
"textehtml": '<div class="droite"><img src="gallery-textes/.jpg" width="210" height="210" align="middle" border="0" alt="" /><p></p></div><p></p>', 
"description": "", 
"titre": ""
 }; 
*/

//fonctions pour trainer la carte gracieuseté de (C) PPK 2009 au quirksmode.org:
//Following codes authored by PPK (C) 2009 at quirksmode.org:
//Codes were modified to apply to the map:
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}

dragDrop = {
	//keyHTML: '<a href="#" class="keyLink">#</a>',
	//keySpeed: 10, // pixels per keypress event
	initialMouseX: undefined,
	initialMouseY: undefined,
	startX: undefined,
	startY: undefined,
	dXKeys: undefined,
	dYKeys: undefined,
	draggedObject: undefined,
	initElement: function (element) {
		//if (typeof element == 'string')
		//	element = document.getElementById(element);
		element.onmousedown = dragDrop.startDragMouse; return false; 
		element.innerHTML += dragDrop.keyHTML;
		var links = element.getElementsByTagName('a');
		var lastLink = links[links.length-1];
		lastLink.relatedElement = element;
		lastLink.onclick = dragDrop.startDragKeys;
	},
	startDragMouse: function (e) {
		dragDrop.startDrag(this);
		var evt = e || window.event;
		dragDrop.initialMouseX = evt.clientX;
		dragDrop.initialMouseY = evt.clientY;
		addEventSimple(document,'mousemove',dragDrop.dragMouse);
		addEventSimple(document,'mouseup',dragDrop.releaseElement);
		return false;
	},
	startDragKeys: function () { 
		dragDrop.startDrag(this.relatedElement); return false; 
		dragDrop.dXKeys = dragDrop.dYKeys = 0;
		addEventSimple(document,'keydown',dragDrop.dragKeys);
		addEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		this.blur();
		return false;
	},
	startDrag: function (obj) {
		if (dragDrop.draggedObject)
			dragDrop.releaseElement();
		dragDrop.startX = obj.offsetLeft;
		dragDrop.startY = obj.offsetTop;
		dragDrop.draggedObject = obj;
		//obj.className += 'dragged';
	},
	dragMouse: function (e) {
		var evt = e || window.event;
		var dX = evt.clientX - dragDrop.initialMouseX;
		var dY = evt.clientY - dragDrop.initialMouseY;
		dragDrop.setPosition(dX,dY);
		return false;
	},
	dragKeys: function(e) { return false; 
		var evt = e || window.event;
		var key = evt.keyCode;
		switch (key) {
			case 37:	// left
			case 63234:
				dragDrop.dXKeys -= dragDrop.keySpeed;
				break;
			case 38:	// up
			case 63232:
				dragDrop.dYKeys -= dragDrop.keySpeed;
				break;
			case 39:	// right
			case 63235:
				dragDrop.dXKeys += dragDrop.keySpeed;
				break;
			case 40:	// down
			case 63233:
				dragDrop.dYKeys += dragDrop.keySpeed;
				break;
			case 13: 	// enter
			case 27: 	// escape
				dragDrop.releaseElement();
				return false;
			default:
				return true;
		}
		dragDrop.setPosition(dragDrop.dXKeys,dragDrop.dYKeys);
		if (evt.preventDefault)
			evt.preventDefault();
		return false;
	},
	setPosition: function (dx,dy) {
		dragDrop.draggedObject.style.left = dragDrop.startX + dx + 'px';
		dragDrop.draggedObject.style.top = dragDrop.startY + dy + 'px';
	},
	switchKeyEvents: function () {
		// for Opera and Safari 1.3
		removeEventSimple(document,'keydown',dragDrop.dragKeys);
		removeEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		addEventSimple(document,'keypress',dragDrop.dragKeys);
	},
	releaseElement: function() {
		removeEventSimple(document,'mousemove',dragDrop.dragMouse);
		removeEventSimple(document,'mouseup',dragDrop.releaseElement);
		//removeEventSimple(document,'keypress',dragDrop.dragKeys);
		//removeEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		//removeEventSimple(document,'keydown',dragDrop.dragKeys);
		dragDrop.draggedObject.className = dragDrop.draggedObject.className.replace(/dragged/,'');
		dragDrop.draggedObject = null;
	}
}

