﻿var isNav4, isNav6, isIE4;

/*
 * Browser version snooper; determines your browser
 * (Navigator 4, Navigator 6, or Internet Explorer 4/5)
 */
function setBrowser() {
	if (navigator.appVersion.charAt(0) == "4") {
		if (navigator.appName.indexOf("Explorer") >= 0) {isIE4 = true;}
		else {isNav4 = true;}
	}
	else if (navigator.appVersion.charAt(0) > "4") {isNav6 = true;}
}

/*
 *
 * Given a selector string, return a style object
 * by searching through stylesheets. Return null if
 * none found
 *
 */
function getStyleBySelector( selector ){
	if (!isNav6) { return null;}
	var sheetList = document.styleSheets;
	var ruleList;
	var i, j;

	/* look through stylesheets in reverse order that
	   they appear in the document */
	for (i=sheetList.length-1; i >= 0; i--) {
		ruleList = sheetList[i].cssRules;
		for (j=0; j<ruleList.length; j++) {
			if (ruleList[j].type == CSSRule.STYLE_RULE && ruleList[j].selectorText == selector) {
				return ruleList[j].style;
			}
		}
	}
	return null;
}

/*
 *
 * Given an id and a property (as strings), return
 * the given property of that id.  Navigator 6 will
 * first look for the property in a tag; if not found,
 * it will look through the stylesheet.
 *
 * Note: do not precede the id with a # -- it will be
 * appended when searching the stylesheets
 *
 */
function getIdProperty( id, property ) {
	if (isNav6) {
		var styleObject = document.getElementById( id );
		if (styleObject != null) {
			styleObject = styleObject.style;
			if (styleObject[property]) {
				return styleObject[property];
			}
		}
		styleObject = getStyleBySelector( "#" + id );
		return (styleObject != null) ? styleObject[property] : null;
	}
	else if (isNav4) { return document[id][property];}
	else { return document.all[id].style[property];}
}

/*
 *
 * Given an id and a property (as strings), set
 * the given property of that id to the value provided.
 *
 * The property is set directly on the tag, not in the
 * stylesheet.
 *
 */
function setIdProperty( id, property, value ) {
	if (isNav6) {
		var styleObject = document.getElementById( id );
		if (styleObject != null) {
			styleObject = styleObject.style;
			styleObject[property] = value;
		}
	}
	else if (isNav4) { document[id][property] = value; }
	else if (isIE4) { document.all[id].style[property] = value; }
}

/*
 *
 * Move a given id.	 If additive is true,
 * then move it by xValue dots horizontally and
 * yValue units vertically.	 If additive is
 * false, then move it to (xValue, yValue)
 *
 * Note: do not precede the id with a # -- it will be
 * appended when searching the stylesheets
 *
 * Note also: length units are preserved in Navigator 6
 * and Internet Explorer. That is, if left is 2cm and
 * top is 3cm, and you move to (4, 5), the left will
 * become 4cm and the top 5cm.
 *
 */
function generic_move( id, xValue, yValue, additive )
{
	var left = getIdProperty(id, "left");
	var top = getIdProperty(id, "top");
	var leftMatch, topMatch;

	if (isNav4) {
		leftMatch = new Array( 0, left, "");
		topMatch = new Array( 0, top, "");
	}
	else if (isNav6 || isIE4 ) {
		var splitexp = /([-0-9.]+)(\w+)/;
		leftMatch = splitexp.exec( left );
		topMatch = splitexp.exec( top );
		if (leftMatch == null || topMatch == null) {
			leftMatch = new Array(0, 0, "px");
			topMatch = new Array(0, 0, "px");
		}
	}
	left = ((additive) ? parseFloat( leftMatch[1] ) : 0) + xValue;
	top = ((additive) ? parseFloat( topMatch[1] ) : 0) + yValue;
	setIdProperty( id, "left", left + leftMatch[2] );
	setIdProperty( id, "top", top + topMatch[2] );
}

/*
 *
 * Move a given id to position (xValue, yValue)
 *
 */
function moveTo( id, x, y ) { generic_move( id, x, y, false ); }

/*
 *
 * Move a given id to (currentX + xValue, currentY + yValue)
 *
 */
function moveBy( id, x, y) { generic_move( id, x, y, true ); }

/*
 *
 * Function used when converting rgb format colors
 * from Navigator 6 to a hex format
 *
 */ 
function hex( n ) {
	var hexdigits = "0123456789abcdef";
	return ( hexdigits.charAt(n >> 4) + hexdigits.charAt(n & 0x0f) );
}

/*
 *
 * Retrieve background color for a given id.
 * The value returned will be in hex format (#rrggbb)
 *
 */ 
function getBackgroundColor( id ) {
	var color;

	if (isNav4) {
		color = document[id].bgColor;
	}
	else if (isNav6) {
		var parseExp = /rgb.(\d+),(\d+),(\d+)./;
		var rgbvals;
		color = getIdProperty( id, "backgroundColor" );
		if (color) {
			rgbvals = parseExp.exec( color );
			if (rgbvals) {
				color = "#" + hex( rgbvals[1] ) + hex( rgbvals[2] ) +
					hex( rgbvals[3] );
			}
		}
		return color;
	} else if (isIE4) {
		return document.all[id].backgroundColor;
	}
	return "";
}

/*
 *
 * Return a division's document
 * 
 */
function getDocument( divName ) {
	var doc;
	if (isNav4) {
		doc = window.document[divName].document;
	}
	else if (isNav6) {
		doc = document;
	}
	else if (isIE4) {
		doc = document;
	}
	return doc;
}

/*
*************************************
// Teste la présence d’un ID
// Renvoi un ID
************************************ */
function isIdExist(id){
	if (isNav6)
		{ 	var obj = document.getElementById(id); }
	else if (isNav4)
		{ 	var obj = document[id]; }
    else
		{ 	var obj = document.all[id]; }
	return (obj != undefined);
}

/* ************************************
// Récuperation d’un objet par son ID
// Renvoi un objet
************************************ */
function getElementById(id) {
 if (isNav6) {
 		var obj = document.getElementById(id);
 	} else if (isNav4) {
		var obj = document[id];
	} else if (isIE4) {
		var obj = document.all[id];
	}
	return obj;
}

/* ************************************
// Affectation d'une fonction à un événement d'objet
************************************ */
function addEventToId(id, evt, func) {
	try {
		if (isIdExist(id)) {
			var oldhandler = getElementById(id)[evt];
			if(typeof getElementById(id)[evt] != 'function'){getElementById(id)[evt] = func;}
			else{getElementById(id)[evt] = function(){oldhandler();func();}}
		}
	} catch(e) { return; }
}

function twAjustePopUp() {
 if (document.images[0].complete) {
   window.resizeTo(document.images[0].width+10,document.images[0].height+40);
   window.focus();
  } else { setTimeout('twAjustePopUp()',1000); }
}

function twPopupImage_old(img, titre, auteur) {
  oFenetre = window.open('','Image','width=400,height=400,toolbar=no,scrollbars=no,resizable=no');
 oFenetre.document.write("<html><head><title>"+titre+"</title></head>");
 oFenetre.document.write("<script type=\"text/javascript\">function twAjustePopUp() { if (document.images[0].complete) { window.resizeTo(document.images[0].width+10,document.images[0].height+40); window.focus();} else { setTimeout('twAjustePopUp()',1000) } }</"+"script>");
 oFenetre.document.write("<body onload='twAjustePopUp()' onblur='window.close()' onclick='window.close()' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
 oFenetre.document.write("<table width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><tr><td valign='middle' align='center'>");
 oFenetre.document.write("<img src='"+img+"' border='0' alt='"+auteur+"' title='"+auteur+"'>");
 oFenetre.document.write("</td></tr></table></body></html>");
 oFenetre.document.close();
} 	




function twPopupImage(divName, width, height, urlImgFull, urlImgMini, titreOeuvre, dateOeuvre, nomAuteur, dateAuteur, technique, dimensions) {
	oFenetre = window.open('','Image','width=1020,height=707,toolbar=no,scrollbars=no,resizable=no');
    oFenetre.document.write("<html><head><title>"+Image+"</title></head>");    
    
    var monFlash = new SWFObject("/flash/visualiseur/visualiseur.swf", "monfilm", width, height, "8", "#ffffff");
	monFlash.addParam("quality", "best");
	monFlash.addParam("wmode", "opaque");
	monFlash.addParam("salign", "t");

	// Variables spcifiques au visualisateur dimages
	monFlash.addVariable("img_full", urlImgFull);
	monFlash.addVariable("img_mini", urlImgMini);
	monFlash.addVariable("nomoeuvre", titreOeuvre);
	monFlash.addVariable("dateoeuvre", dateOeuvre);
	monFlash.addVariable("nomauteur", nomAuteur);
	monFlash.addVariable("dateauteur", dateAuteur);
	monFlash.addVariable("technique", technique);
	monFlash.addVariable("dimensions", dimensions);
	// Fin variables

	monFlash.write(divName);
}


function twPopupQtvr(qtvr, titre) {
 oFenetre = window.open('','Qtvr','width=900,height=700,toolbar=no,scrollbars=no,resizable=no');
 oFenetre.document.write("<html><head><title>"+titre+"</title></head>");
 oFenetre.document.write("<body  leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
 oFenetre.document.write("<table width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><tr><td valign='middle' align='center'>");
 oFenetre.document.write("<embed src=\"/qtvr/" + qtvr + "\" pan=\"\"  width=\"900\"  height=\"700\" type=\"video/quicktime\"/>");
 oFenetre.document.write("</td></tr></table><center>Cliquez-glissez dans l'image pour observer les lieux<br/><br/><a href='window.close()'>Fermer</a></center></body></html>");
 oFenetre.document.close();
} 	

function writeQtvr(document, url){
    if(url.length>0){
    
    document.write("<a href=\"javascript:twPopupQtvr(\'" + url + "\', \'Vue Panoramique\')\">voir cette salle en panoramique </a>");
    
    
    }
}

