/**
* 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){
	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});
}

/**
* 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))+"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();
	}
	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;
	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;
  }