/**
* biblioth�que javaScript KMT 2
* Created nov 2006
*/





/**
* Navigateur
*/
var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
&& (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
&& (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));
var is_opera= (navigator.userAgent.indexOf("Opera" ) != -1);

var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);
var is_firefox = (myAgent.indexOf("firefox") != -1);

/**
* Admin access functions
*/

function showAdminPanel(){
	ajaxUpdaterRequest('adminPanelContainer','get','ajax=1&kmt_login=&view=showAdminPanel');
}

function showAdminControl(){
	$('adminSpacer').style.height='28px';
	$('adminPanelContainer').style.display='block';
	$('adminPanelContainer').style.height='24px';
	new Effect.SlideDown('adminTopBar');
}

/**
* multiple Onload event function
*/
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/**
* Pop up
*/
function openWindow(theURL,winName,features) {
	var fs=window.open(theURL, winName, features);
	fs.focus();
}



/**
* Ajax basic functions
*/
function handlerFunc(t) {
	return true;
}

function errFunc(t) {
	alert('Error ' + t.status + ' -- ' + t.statusText);
}

function ajaxSimpleRequest(requestParams,myMethod,HandlerFunc){
	myMethod=myMethod=='' ? 'get' : myMethod;
	new Ajax.Request(ajaxCallURI, {asynchronous:true,method:myMethod,parameters:requestParams, onSuccess:handlerFunc, onFailure:errFunc});
}

function ajaxUpdaterRequest(target,myMethod,viewParams,completeParam,synchro){
	$(target).innerHTML ='<div style="text-align:center;margin:20px"><img src="/icones/common/wait.gif" style="margin-bottom:15px;" alt="Chargement..."/><br/>Chargement...</div>';
	new Ajax.Updater(target,ajaxCallURI, {asynchronous:synchro,method:myMethod,evalScripts:true,onComplete:completeParam,parameters:viewParams});
}


 function radioCliked(Nom) {
 var r = false;
 var d = document.getElementsByName(Nom);
 for(var i=0; i<d.length; i++) {
   if(d[i].type=='radio' && d[i].checked) {
       r = d[i].value;
       break;
       }
    }
 return r;
 } 




/**
* Keyword
*/
function showKeyword(div,keyword_id){
	ajaxUpdaterRequest(div+'_text','get','ajax=1&keywords='+keyword_id+'&view=afficher_keyword_definition&divName='+div);
	$(div).style.display='block';
	$(div).style.margin='35px 0 0 120px';
}

function showKeywordList(div,kObj_id){
	ajaxUpdaterRequest(div+'_text','get','ajax=1&keywords=0&object_id='+kObj_id+'&view=afficher_keyword_list&divName='+div);
	$(div).style.display='block';
	$(div).style.margin='35px 0 0 120px';
}

/**
* fckEditor
*/
function createEditor(instance,width,height,toolbar){

	var oTextarea = $(instance) ;
	if ( !oTextarea )	oTextarea = document.getElementsByName(instance)[0] ;
	if ( oTextarea && oTextarea.tagName == 'TEXTAREA' )		{
		Width = !width ? 550 :width ;
		Height =!height ? 250 : height;
		var oFCKeditor = new FCKeditor(instance,Width,Height) ;
		//oFCKeditor.BasePath	= "/js/fckeditor/" ;
		oFCKeditor.ToolbarSet = !toolbar ? 'KMT' :toolbar ;
		oFCKeditor.ReplaceTextarea() ;
	}
}

/**
* Position tools
*/

// retourne la taille de la fen�tre
function windowSize(){
	var winWidth, winHeight, d=document;
	if (typeof window.innerWidth!='undefined') {
		winWidth = window.innerWidth;
		winHeight = window.innerHeight;
	} else {
		if (d.documentElement && typeof d.documentElement.clientWidth!='undefined' && d.documentElement.clientWidth!=0) {
			winWidth = d.documentElement.clientWidth;
			winHeight = d.documentElement.clientHeight;
		} else {
			if (d.body && typeof d.body.clientWidth!='undefined') {
				winWidth = d.body.clientWidth;
				winHeight = d.body.clientHeight;
			}
		}
	}
	return [winWidth, winHeight];
}

// retourne la taille du document
function documentSize(){
	var winWidth, winHeight, d=document;
	if (typeof window.innerWidth!='undefined') {
		winWidth = window.innerWidth+window.pageXOffset;
		winHeight = window.innerHeight+window.pageYOffset;
	} else {
		if (d.documentElement && typeof d.documentElement.scrollWidth!='undefined' && d.documentElement.scrollWidth!=0) {

			winWidth = d.documentElement.scrollWidth;
			winHeight = d.documentElement.scrollHeight;
		} else {
			if (d.body && typeof d.body.scrollWidth!='undefined') {
				winWidth = d.body.scrollWidth;
				winHeight = d.body.scrollHeight;
			}
		}
	}
	return [winWidth, winHeight];
}

// centre un objet dans la fen�tre
function putOnCenter(obj,parentObj,yRetrait,xRetrait){
	if(!parentObj){
		myWindowSize=windowSize();
		windowXmiddle=myWindowSize[0]/2;
		windowYmiddle=myWindowSize[1]/2;
	} else {
		myWindowSize=Element.getDimensions(parentObj);
		windowXmiddle=myWindowSize.width/2;
		windowYmiddle=myWindowSize.height/2;
	}
	elementDimensions = Element.getDimensions(obj);
	eWidth = elementDimensions.width;
	eHeight = elementDimensions.height;
	//alert(eWidth+" "+eHeight);
	obj.style.left=(windowXmiddle-(eWidth/2)+xRetrait)+"px";
	obj.style.top=(windowYmiddle-((eHeight/2)+yRetrait))+"px";
	return true;
}

// centre un objet dans la fen�tre et le fait disparaitre au bout du time out
function putOnCenterAndHide(objName,parentDiv,timeOut,yRetrait){

	putOnCenter($(objName),$(parentDiv),yRetrait);
	$(objName).style.visibility='visible';
	string="Effect.Fade('"+objName+"');";
	setTimeout(string, timeOut);
}



function showBox(box,handler,appear){
	if(appear!='undefined') {Effect.Appear(box);} else {box.style.display='block';}
	if(handler!='') new Draggable(box,{scroll:window,handle:handler});
	return;
}

function hideBox(box,fade){
	boxObj=$(box);
	if (fade!='undefined') {Effect.Fade(boxObj);} else { boxObj.style.display='none';}
}

// input tools
function clearInput(obj){
	obj.value="";
}

function toggleBox(div){
	myDiv=$(div);
	if(myDiv.style.display=='block') {
		myDiv.style.display='none';
		
	} else {
		myDiv.style.display='block';
		
	}
}

function hideDelayed(objName,timeOut){
	$(objName).style.visibility='visible';
	string="Effect.Fade('"+objName+"');";
	setTimeout(string, timeOut);
}

// renvoi la position d'un objet
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

// affichage de la date
function afficher_date(){
	navvers = navigator.appVersion.substring(0,1);
	if (navvers > 3)
	navok = true;
	else
	navok = false;

	today = new Date;
	jour = today.getDay();
	numero = today.getDate();
	if (numero<10)
	numero = "0"+numero;
	mois = today.getMonth();
	if (navok)
	annee = today.getFullYear();
	else
	annee = today.getYear();
	TabJour = new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
	TabMois = new Array("janvier","f�vrier","mars","avril","mai","juin","juillet","aout","septembre","octobre","novembre","d�cembre");
	return messageDate = TabJour[jour] + " " + numero + " " + TabMois[mois] + " " + annee;
}


format=function(valeur,decimal,separateur) {
	// formate un chiffre avec 'decimal' chiffres apr�s la virgule et un separateur
	var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ;
	var val=Math.floor(Math.abs(valeur));
	if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal>0) {
		var decim="";
		for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
	return val_format;
}


/***************** Google maps ******************/
function googlemaps_load(latitude,longitude) {
	if (GBrowserIsCompatible()) {
		var map = new GMap2($("googlemap"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GScaleControl());

		/* GEvent.addListener(map, "moveend", function() {
		var center = map.getCenter();
		document.getElementById("message").innerHTML = center.toString();
		});*/


		map.setCenter(new GLatLng(latitude,longitude), 14);
	}
}


function checkCookie() {
	setCookie("CookieTest", "OK", 1);
	var v = getCookie("CookieTest");
	setCookie("CookieTest", "");
	return (v == "OK");
}	// checkCookie() end

function getCookie(inName) {
	var search = inName + "="
	if (document.cookie.length > 0) {
		var offset = document.cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			var end = document.cookie.indexOf(";", offset);
			if (end == -1)
			end = document.cookie.length;
			return unescape(document.cookie.substring(offset, end));
		}
	}
}	// getCookie(inName) end

function setCookie(inName, inVal, inTime, inPeriodInSecond) {
	if (!inPeriodInSecond) inPeriodInSecond = 86400;
	if (!inTime && (document.location.href.indexOf("localhost") > -1 ||	document.location.href.indexOf("127.0.0.1") > -1)) {
		inTime = 6;			// on IIS localhost non expiring cookies don't seem to work?
		inPeriodInSecond = 3600;	// so lets have 6 hours instead
	}
	var expire = "";
	if (inTime) {
		var today = new Date();
		today.setTime(today.getTime() + (inTime * inPeriodInSecond * 1000));
		expire = ";expires=" + today.toGMTString();
	}
	//alert(expire);
	document.cookie = inName + "=" + escape(inVal) + expire + ";path=/;";
}	// setCookie(inName, inVal, inDays) end



/************ Lien dynamique par droplist **************/
function goTo(selectObj){

	mySite = selectObj.options[selectObj.selectedIndex].value;
	//alert(mySite);
	document.location.href=mySite;
}

/********** cookies **************/
function getCookieVal(offset){
	var endstr=document.cookie.indexOf (';', offset);
	if (endstr==-1) endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function LireCookie(nom){
	var arg=nom+'=';
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen)
	{
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
		i=document.cookie.indexOf(' ',i)+1;
		if (i==0) break;

	}
	return null;
}

function EcrireCookie(nom, valeur){
	var argv=EcrireCookie.arguments;
	var argc=EcrireCookie.arguments.length;

	var expires=(argc > 2) ? argv[2] : null;
	var path=(argc > 3) ? argv[3] : null;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	document.cookie=nom+'='+escape(valeur)+
	((expires==null) ? '' : ('; expires='+expires.toGMTString()))+
	((path==null) ? '' : ('; path='+path))+
	((domain==null) ? '' : ('; domain='+domain))+
	((secure==true) ? '; secure' : '');
}

// mise a jour de la derni�re date de visite
function setlastVisit(){
	today = new Date();
	expire = new Date();
	expire.setTime(expire.getTime() + ( 180*24*60*60*1000));
	EcrireCookie('lastVisit',today.getTime(),expire,'/');
	return;
}

setlastVisit();

/**************** Pub **********/

var pubArray=new Array();

// commandes de rechargement des bandeaux pub
function changeAdds(){
	for(i=0;i<pubArray.length;i++){
		ajaxUpdaterRequest('adds_'+pubArray[i],'get','ajax=1&adds='+pubArray[i]+'&view=get_afficher_adds_code');
	}
}

// commandes de modification du premier bandeaux pub de la page en fonction de la video
function specialAdds(NewAddId){
	if(NewAddId!=''){
		ajaxUpdaterRequest('adds_'+pubArray[0],'get','ajax=1&adds='+NewAddId+'&view=get_afficher_adds_code');
	}
}

/**************** Taille de police ************/
function updateFontSize(A,div) {
	B=$(div);

	oldSize=B.style.fontSize;
	if(oldSize==""){
		oldSize="100%"}
		pos=oldSize.indexOf("%");
		oldSize=oldSize.substring(0,pos)*1;
		A=A*1;
		if(((oldSize>80)&&(A<-1))||((oldSize<200)&&(A>1))){
			A=oldSize+A
		}else{
			A=oldSize}

			B.style.fontSize=A+"%"

}

/***************** Move object ***************/
function moveObject( obj, e ) {

	var tempX = 0;
	var tempY = 0;
	var offset = 5;
	var objHolder = obj;

	// step 2
	obj = $( obj );
	if (obj==null) return;

	// step 3
	if (document.all) {

		tempX = event.clientX + document.documentElement.scrollLeft;
		tempY = event.clientY + document.documentElement.scrollTop;
	} else {
		tempX = e.pageX;
		tempY = e.pageY;
	}

	// step 4
	if (tempX < 0){tempX = 0}
	if (tempY < 0){tempY = 0}

	// step 5
	obj.style.top  = (tempY + offset) + 'px';
	obj.style.left = (tempX + offset) + 'px';
	return;
}


/********* menu accordeon ************/

// accordeon

function menu_accordion(el) {

	if (Element.hasClassName(el.parentNode.id+'-body','visible')){
		return;
	}
	var eldown = el.parentNode.id+'-body';
	var apanels = document.getElementsByClassName('menu_panel_body',el.parentNode.parentNode);
	for (var i=0;i<apanels.length;i++){
		if (Element.hasClassName(apanels[i].parentNode.id+'-body','visible'))
		var elup = apanels[i].parentNode.id+'-body';
	}
	new Effect.Parallel([ new Effect.SlideUp(elup), new Effect.SlideDown(eldown) ], {duration: 0.5});
	Element.removeClassName(elup,'visible');
	Element.addClassName(eldown,'visible');
}

/*********** d�filant HTML ****/


// D�filement 4 directions multiple
function Defilant(id, pos_init, pos_min, pos_max, delta, direction) {
	this.id          = id;
	this.element     = document.getElementById(id);
	this.pos_init    = pos_init;
	this.pos_min     = pos_min;
	this.pos_max     = pos_max;
	this.pos_current = pos_init;
	this.delta       = delta;
	this.direction   = direction;
}


Defilant.prototype.defile = function() {
	if (!this.element) {
		this.element = document.getElementById(this.id);
	}
	if (this.element) {
		if(this.direction == 'vertical'){
			if(this.pos_current < (this.pos_min - this.element.offsetHeight) ){
				this.pos_current = this.pos_init;
			} else if (this.pos_current > this.pos_max ) {
				this.pos_current = this.pos_init - this.element.offsetHeight;
			} else {
				this.pos_current += this.delta;
			}
			this.element.style.top = this.pos_current+"px";
		} else if(this.direction == 'horizontal') {
			if(this.pos_current < (this.pos_min - this.element.offsetWidth) ){
				this.pos_current = this.pos_init;
			} else if (this.pos_current > this.pos_max ) {
				this.pos_current = this.pos_init - this.element.offsetWidth;
			} else {
				this.pos_current += this.delta;
			}
			this.element.style.left = this.pos_current+"px";
		}
	}
}

function switch_image(id,newimage){
	$(id).src=newimage;
}

