//IMPRESSION

/* imprimer la page ou le popup interne */
function impression(){
	var impr = '<a href="javascript:void(0);" onclick="return imprimer();">';
	impr += '<img src="'+imgprint+'" alt="" width="16" height="16" /> ';
	impr += "<span> Imprimer l'itin&eacute;raire</span></a>";
	document.write(impr);
}
function imprimer(){
	window.print();
	return false;
}
//afficher un élément
function afficherElementById(idElmt){
	if(document.getElementById(idElmt)!= null && document.getElementById(idElmt) !=''){
		document.getElementById(idElmt).style.visibility='visible';
		document.getElementById(idElmt).style.display='block';
	}
}
//cacher un élément
function cacherElementById(idElmt){
	if(document.getElementById(idElmt)!= null && document.getElementById(idElmt) !=''){
		document.getElementById(idElmt).style.visibility='hidden';
		document.getElementById(idElmt).style.display='none';
	}
}
//Selectionne la ville enfonction du code postal saisie
//Si une seule ville de dispo elle est selectionne
function getCommuneHtml(idInputCp, idSelectCommune, idLabelCp, idLabelCom, idSpanErrCp, idSpanErrCom)
{	
	//document.getElementById(idInputCp).onkeyup = function(e)
	{
		if(document.getElementById(idInputCp)!=null && document.getElementById(idInputCp).value.length == 5) {
			var listVilles;
			var idcontext = document.getElementById("idcontext").value;
			var url = idcontext+"/FormWizard?ACTION=getVilles2&codePostal="+document.getElementById(idInputCp).value;
			var request = new Ajax.Request(url,{method: 'get',asynchronous: false});  			
		  	listVilles = eval(request.transport.responseText);
		  	while (document.getElementById(idSelectCommune).options.length>0)
		  		document.getElementById(idSelectCommune).options[0] = null;
		  	if (listVilles.size() == 0){
		  		//cp
		  		ajouteCssClassErreurByIdElement(idLabelCp,'erreur_champ');
		  		ajouteCssClassErreurByIdElement(idInputCp,'bhcene_error');
		  		document.getElementById(idSpanErrCp).style.visibility='visible';
		  		document.getElementById(idSpanErrCp).innerHTML='V&eacute;rifier le format';

				//commune
		  		document.getElementById(idSelectCommune).options[0]=new Option('','');	
		  		ajouteCssClassErreurByIdElement(idSelectCommune,'bhcene_error');
		  		ajouteCssClassErreurByIdElement(idLabelCom,'erreur_champ');
		  		document.getElementById(idSpanErrCom).style.visibility='visible';
		  		
		  		if(document.getElementById(idInputCp+'_err') != null)
		  			document.getElementById(idInputCp+'_err').value='1';
		  	}else{
		  		//cp
		  		supprimeCssClassErreurByIdElement(idLabelCp,'erreur_champ');
		  		supprimeCssClassErreurByIdElement(idInputCp,'bhcene_error');
		  		document.getElementById(idSpanErrCp).style.visibility='hidden';
		  		document.getElementById(idSpanErrCp).innerHTML='Champ obligatoire';
		  		
		  		//commune
		  		supprimeCssClassErreurByIdElement(idSelectCommune,'bhcene_error');
		  		supprimeCssClassErreurByIdElement(idLabelCom,'erreur_champ');
		  		document.getElementById(idSpanErrCom).style.visibility='hidden';

				
				if(document.getElementById(idInputCp+'_err') != null)
		  			document.getElementById(idInputCp+'_err').value='0';
		  		
		  		
		  		var j = 0;
		  		
		  		if(listVilles.size() > 2 ){
		  			document.getElementById(idSelectCommune).options[j]=new Option('- Choisissez -','');j++;
		  		}
		  		for(var i=0; i<listVilles.size(); i++) {
		  			document.getElementById(idSelectCommune).options[j]=new Option(listVilles[i],listVilles[i]);
		  			j++;
		  		}
		  	}
		  	if(idInputCp=='devis_cp' && document.getElementById('devis_garage')!=null){
		  		document.getElementById('devis_garage').value=document.getElementById(idInputCp).value;
		  		getCommuneRefresh('devis_garage', 'devis_commune2','idlastComGar', 'labelCPdevis_garage', 'labeldevis_commune2', 'erreurdevis_garage', 'erreurdevis_commune2');
		  	}		
		} 
	} 
}

var stopCheckMouseOut = false;

function checkMouseOut(targetId, event, callback) {
	if (stopCheckMouseOut) return;
	if (!event) var event = window.event;
	var elementDepart = (window.event) ? event.srcElement : event.target;
	var elementArrivee = (event.relatedTarget) ? event.relatedTarget : event.toElement;
	if (elementArrivee!=null && targetId == elementArrivee.id) {
		return;
	}
	var childs = $(targetId).descendants();
	for (var i=0;i<childs.length;i++) {
		if (childs[i] == elementArrivee) {
			return;
		}
	}
	callback();
}

/* Ajout de l'event MouseWheel pour prototype */
Object.extend(Event, {
	wheel:function (event){
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) {
			delta = event.wheelDelta/120; 
			if (window.opera) delta = -delta;
		} else if (event.detail) { delta = -event.detail/3;	}
		return Math.round(delta); //Safari Round
	}
});

function getPos(event, c) {
	var p = c == 'X' ? 'Left' : 'Top';
	return event['page' + c] || (event['client' + c] + (document.documentElement['scroll' + p] || document.body['scroll' + p])) || 0;
};

var tailleScrollAffiche = 125;
var scrollStep = 15;

/* ScrollBar Colonne de service */
function gfrScrollable(pIdListe) {

	this.init = false;
	this.mIdListe = pIdListe;
	this.scrollPosition = 0;
	this.tailleScroll = 0;
	this.scrollable;
	this.scrollBar;
	this.mHauteurConteneurScrollBar = 0;
	this.mTailleScrollBarStep = 0;
	
	this.doInit = function() {
		this.scrollPosition = 0;
		if (! this.init) {
			var listeElements = $(this.mIdListe).select('div[class="roll_conseil_liste"]')[0];
			if (listeElements != undefined && listeElements.getHeight() > tailleScrollAffiche) {
				this.scrollable = listeElements;
				this.tailleScroll = listeElements.getHeight() - tailleScrollAffiche;
				var lConteneurScroll = new Element('div',{'class':'conteneurScroll'});
				Element.insert(listeElements, {before : lConteneurScroll});
				listeElements.remove();
				Element.insert(lConteneurScroll, {top : listeElements});
				var lConteneurScrollBar = new Element('div',{'class':'conteneurScrollBar'});
				var lScrollBar = new Element('div',{'class':'scrollBar'});
				this.scrollBar = lScrollBar;
				
				Element.insert(lConteneurScroll, {bottom : lConteneurScrollBar});
				Element.insert(lConteneurScrollBar, {top : lScrollBar});
				
				this.mHauteurConteneurScrollBar = lConteneurScrollBar.getHeight();
				var maxMargin = this.mHauteurConteneurScrollBar - 25;
			
				var _this = this;
				function handleScroll(e) {
					if (Event.wheel(e) > 0)
						_this.scrollUp();
					else
						_this.scrollDown();
				}
				
				var _dragElement;
				var startMouseMovePosition = 0;
				var startScrollBarMarginTop = 0;
				var nbScrollSteps = Math.ceil(this.tailleScroll / scrollStep);
				this.mTailleScrollBarStep = (this.mHauteurConteneurScrollBar - 25)/nbScrollSteps;
				
				var mouseMoveScrollBar = function(event) {
					var newMarginTop = startScrollBarMarginTop + getPos(event, 'Y') - startMouseMovePosition;
					if (newMarginTop<0) {
						newMarginTop = 0;
					} else if (newMarginTop > maxMargin) {
						newMarginTop = maxMargin;
					}
					
					_this.scrollPosition = (newMarginTop / _this.mTailleScrollBarStep) * scrollStep;
					_this.afficherScroll(true);
					
					lScrollBar.setStyle({'marginTop':newMarginTop+'px'});
				};
				var mouseDownScrollBar = function(event) {
					stopCheckMouseOut = true;
					document.body.focus();
			        document.onselectstart = function () { return false; };
			        _dragElement = event.target != null ? event.target : event.srcElement;
			        _dragElement.ondragstart = function() { return false; };
			        Event.observe(document, "mousemove", mouseMoveScrollBar);
					Event.observe(document, "mouseup", mouseUpScrollBar);
					startMouseMovePosition = getPos(event, 'Y');
					startScrollBarMarginTop = parseInt(lScrollBar.getStyle('marginTop'));
					return false;
				};
				var mouseUpScrollBar = function(event) {
					document.onselectstart = null;
					_dragElement.ondragstart = null;
					Event.stopObserving(document, "mousemove", mouseMoveScrollBar);
					Event.stopObserving(document, "mouseup", mouseUpScrollBar);
					stopCheckMouseOut = false;
				};
				Event.observe(lScrollBar, "mousedown", mouseDownScrollBar);
				Event.observe(lConteneurScroll, "mousewheel", handleScroll, false);
				Event.observe(lConteneurScroll, "DOMMouseScroll", handleScroll, false); // Firefox
			}
			this.init = true;
		}
		this.afficherScroll();
	}
	this.scrollDown = function() {
		if (this.scrollPosition <this.tailleScroll) {
			this.scrollPosition = this.scrollPosition + scrollStep;
			if (this.scrollPosition > this.tailleScroll) this.scrollPosition = this.tailleScroll;
			this.afficherScroll();
		}
	}
	this.scrollUp = function() {
		if (this.scrollPosition >0) {
			this.scrollPosition = this.scrollPosition - scrollStep;
			if (this.scrollPosition < 0) this.scrollPosition = 0;
			this.afficherScroll();
		}
	}
	this.afficherScroll = function(pNePasBougerScrollBar) {
		if (this.scrollable != undefined) {
			this.scrollable.setStyle({'marginTop':-this.scrollPosition+'px'});
			if (pNePasBougerScrollBar) return;
			this.scrollBar.setStyle({'marginTop':(this.mTailleScrollBarStep * Math.ceil(this.scrollPosition / scrollStep)) +'px'});
		}
	}
}

var idIframeMenu = 'iframeMenu';

function protectWithIframe(element) {
	if (! Prototype.Browser.IE) {
		return hideIframes();
	}
	var el = $(element);
	var lIframe = $(idIframeMenu);
	if (! lIframe) {
		lIframe = $(document.createElement("iframe"));
		lIframe.id = idIframeMenu;
		lIframe.src = 'javascript:false;';
		$(lIframe).setOpacity(0);
		var lBody = document.getElementsByTagName('body')[0];
		Element.insert(lBody,{'top':lIframe});
		with (lIframe.style){
			position = "absolute";
			zIndex = "1";
			display = "none";
			frameborder = "0";
		}
	}
	var dim = el.getDimensions();
	lIframe.setStyle({'top':(el.offsetTop + 34)+'px','left':el.offsetLeft+'px','height':(el.offsetHeight+50)+'px','width':el.offsetWidth+'px', 'display':''});
}

function unprotectWithIframe(zone) {
	if (! Prototype.Browser.IE) {
		return showIframes();
	}
	checkMouseOut(zone, null, function(){
		var lIframe = $(idIframeMenu);
		if (lIframe) {
			lIframe.style.display = 'none';
		}
	});
}

function hideIframes() {
	$$('iframe').each(function(e) {
		e.setStyle({'visibility':'hidden'});
	});
}

function showIframes() {
	$$('iframe').each(function(e) {
		e.setStyle({'visibility':'visible'});
	});
}

function isIE8() {
	return navigator.userAgent.match('MSIE 8\.0') || (navigator.userAgent.match('compatible; MSIE 7\.0') && navigator.userAgent.match('Trident/4\.0'));
}
