// JavaScript Document

/*******************************************************************************/
/*******************************************************************************/
//
// Deux objets communs pour gérer 1) les formulaires et 2) les requetes ajax
//
/*******************************************************************************/
/*******************************************************************************/



/*******************************************************************************/
//
// Récupère les données d'un formulaire pour 
// les mettre dans une variable "data"
//
/*******************************************************************************/
function UmaForm(){
	
}

UmaForm.prototype.form_get_content = function(formName){
	
	if(!arguments.length){
		formName = 0;
	}
	
	var data ="";
	
	for(i=0; i < document.forms[formName].elements.length; i++){
		if(data != "") data += "&";
		if(document.forms[formName].elements[i].type == "radio"){
			if( document.forms[formName].elements[i].checked){
				data += document.forms[formName].elements[i].name +"="+escape(document.forms[formName].elements[i].value);
			}
		}else if(document.forms[formName].elements[i].type == "checkbox"){
			if( document.forms[formName].elements[i].checked){
				data += document.forms[formName].elements[i].name +"="+ escape(document.forms[formName].elements[i].value);
			}
		}else if(document.forms[formName].elements[i].type == "file"){
			alert("fichier");
		}else{
			myValue = document.forms[formName].elements[i].value;
				
			if( 
			   	document.forms[formName].elements[i].name == "page_description" ||
				document.forms[formName].elements[i].name == "page_description_lg1" ||
				document.forms[formName].elements[i].name == "page_chapeau" ||
				document.forms[formName].elements[i].name == "page_chapeau_lg1" ||
				document.forms[formName].elements[i].name == "page_resume" ||
				document.forms[formName].elements[i].name == "page_resume_lg1" 
			){
				myValue = myValue.replace(/\+/g,"%2B");
			}
			
			
			data += document.forms[formName].elements[i].name +"="+ escape(myValue);
		}
	}

	return data;
	
}

/**********************************************************/
//
// Place les données dans le formulaire à partir 
// des données xml "data"
//
/**********************************************************/
UmaForm.prototype.form_set_content = function(dataXML,formName){
	
	if(arguments.length < 2){
		formName = 0;
	}
	
	if(dataXML.firstChild.hasChildNodes()){
		thisXml = dataXML.firstChild;
	}else{
		thisXml = dataXML.childNodes[1];
	}
	
	for(i=0; i < thisXml.childNodes.length; i++){
		
		if(thisXml.childNodes[i].hasChildNodes()){
			
			// Rechercher l'élément du formulaire du même nom
			for(j=0; j < document.forms[formName].elements.length; j++){
			
				if(document.forms[formName].elements[j].name == thisXml.childNodes[i].nodeName){

					if(document.forms[formName].elements[j].type == "radio"){
						if(document.forms[formName].elements[j].value == unescape(thisXml.childNodes[i].childNodes[0].nodeValue)){
							document.forms[formName].elements[j].checked = true;
						}
					}else if(document.forms[formName].elements[j].type == "checkbox"){
						if(document.forms[formName].elements[j].value == unescape(thisXml.childNodes[i].childNodes[0].nodeValue)){
							document.forms[formName].elements[j].checked = true;
						}
					}else if(document.forms[formName].elements[j].type == "select-one"){
						for (var k = 0; k < document.forms[formName].elements[j].options.length; k++) {
							document.forms[formName].elements[j].options[k].selected = false;
							if(unescape(thisXml.childNodes[i].childNodes[0].nodeValue) == document.forms[formName].elements[j].options[k].value){
								document.forms[formName].elements[j].options[k].selected = true;
							}
						}

					}else{
						myTextXml = "";
						// Boucle pour les textes long (Mozzilla)
						for (var k = 0, racine; racine = thisXml.childNodes[i].childNodes[k]; k++) {
							myTextXml += unescape(racine.nodeValue);
						}
						document.forms[formName].elements[j].value = myTextXml;
					}
				}
				
			}
			
		}
			
	}
	
}




/*******************************************************************************/
//
// Objet global de connexion et récupération de données
//
// method 	: POST ou GET
// data 	: suite des données 
// url 		: adresse à appeler sur le serveur
// callback	: fonction à apeller au retour
//
/*******************************************************************************/

function UmaAjax(method, data, url, callback){
	
	this.method 	= method;
	this.data		= data;
	this.url		= _ROOT+url;
	this.callback	= callback;
	this.req 		= this.create();
	
	// Quoi faire du retour...
	this.req.onreadystatechange=this.return_value(this);
	
	// déclencher la requete
	this.request();
	
}

// Creation d'un objet de connexion
/*******************************************************************************/
UmaAjax.prototype.create = function(){
	if(window.XMLHttpRequest) {
		// Firefox et autres
		var xhr = new XMLHttpRequest(); 
	}else if(window.ActiveXObject){ 
		// Internet Explorer 
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}else{ 
		// XMLHttpRequest non supporté par le navigateur 
	   	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   	xhr = false; 
	}
	
	return xhr;
}

// Objet de retour
/*******************************************************************************/
UmaAjax.prototype.return_value = function(ajax){			

	function funcRef(){ 
		if (ajax.req.readyState ==4 && ajax.req.status == 200){ 
			// Masquer le loader s'il existe
			if(document.getElementById('loader_datas')){
				document.getElementById('loader_datas').style.display='none';
			}
			// Renvoi des données
			ajax.callback(ajax.req); 
		} 
	}
	
	return funcRef;
	
}

// Envoi d'une requete
/*******************************************************************************/
UmaAjax.prototype.request = function(){
	
	// Afficher le loader s'il existe
	if(document.getElementById('loader_datas')){
		document.getElementById('loader_datas').style.display='block';
	}
	
	this.req.open(this.method,this.url,true);
	// Ajouter les données en méthode POST
	send_data = null;
	if(this.method == "POST"){
		send_data = this.data;
		this.req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	}
	this.req.send(send_data);
}

// Abandonne une requete
/*******************************************************************************/
UmaAjax.prototype.abort = function(){
	
	this.req.abort();

}


/*******************************************************************************/
//
// Fonction de positionnement d'objet utilisé par tous les Umascripts
//
/*******************************************************************************/


// Récupère la valeur de la hauteur de la fenêtre courante
/**********************************************************/
function getHeight() {
  var myHeight = 0;
  if( typeof( window.innerHeight ) == 'number' ) {
    //Non-IE
    myHeight = window.innerHeight;
  } else if(document.documentElement && document.documentElement.clientHeight) {
    //IE 6+ in 'standards compliant mode'
    myHeight = document.documentElement.clientHeight;
  }
  return myHeight;
}


// Récupère la valeur de scroll vertical
/**********************************************************/
function getScrollX() {
  var scrOfX = 0;
  if( document.body && document.body.scrollLeft) {
    //DOM compliant
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfX;
}

// Récupère la valeur de scroll vertical
/**********************************************************/
function getScrollY() {
  var scrOfY = 0;
  if( document.body && document.body.scrollTop) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
  }
  return scrOfY;
}

// trouver la position en Y de l'objet
/****************************************************************************************/
function yPos(obj){
	var top = obj.offsetTop/1;
	while((obj = obj.offsetParent) != null){
		if(obj.tagName!='HTML')top += obj.offsetTop;
	}			
	if(document.all)top = top/1 + 13; else top = top/1 + 4;		
	return top;
}
	
// Trouver la position en X de l'objet
/****************************************************************************************/
function xPos(obj){
	var left = obj.offsetLeft/1 + 1;
	while((obj = obj.offsetParent) != null){
		if(obj.tagName!='HTML')left += obj.offsetLeft;
	}
		
	if(document.all)left = left/1 - 2;
	return left;
}

var Mouse_X; 
var Mouse_Y;
function mouseXY(e){
	 var DocRef;
	if( e){
		Mouse_X = e.pageX;
		Mouse_Y = e.pageY;
	}else{
		Mouse_X = event.clientX;
		Mouse_Y = event.clientY;
		if( document.documentElement && document.documentElement.clientWidth){ 
			 DocRef = document.documentElement;
		}else{
		 	DocRef = document.body;
		}
		Mouse_X += DocRef.scrollLeft;
		Mouse_Y += DocRef.scrollTop;
	}
}

function openFrame(w, h){
	
	//document.getElementById(activ_frame).style.visibility = "hidden";
	document.getElementById('blacky').style.display = "block";
	document.getElementById('editor_datas').style.display = "block";
	document.getElementById('editor_datas').style.width = w+"px";
	document.getElementById('editor_datas').style.marginLeft = -w/2+"px";
	document.getElementById('editor_datas').style.height = h+"px";
	document.getElementById('editor_datas').style.top = (20+getScrollY())+"px";
	document.getElementById('editor_datas').style.zIndex = 500;
	
}

function closeFrame(){

	document.getElementById('blacky').style.display = "none";
	document.getElementById('editor_datas').style.display = "none";
	document.getElementById('editor_datas').style.height = "400px";
	
}



/*******************************************************************************/
//
// FIN
//
/*******************************************************************************/