/** 
 * DEBUG DANS FIREBUG  
 * console.debug("debug");
 * console.info("info");
 * console.warn("warn");
 * console.error("error"); 
 */

/** Change la location en fonction de la valeur du select **/
function selectURL(obj) {
	
	if(obj != null) {
		var url = obj[obj.selectedIndex].value;
		
		if(url != '') 
			document.location.href = url;
	}
}

/** Ajouter aux favoris fixe **/
function favoris_fixe(url, text) {
		
	if ( navigator.appName != 'Microsoft Internet Explorer' ) {
		window.sidebar.addPanel(text, url, "");
	}
	else {
		window.external.AddFavorite(url, text);
	}
}

/** Ajouter aux favoris auto**/
function favoris() {
	
	var title = document.title;
	var url = window.location.href;
		
	if ( navigator.appName != 'Microsoft Internet Explorer' ) {
		window.sidebar.addPanel(title, url, "");
	}
	else {
		window.external.AddFavorite(url, title);
	}
}

/**
 * print
 * @param {Object} obj 
 */
function preview_print(url, titre) {
 	 	
 	Modalbox.show('<iframe allowtransparency="true" id="print_iframe" frameborder="0" class="iprint" src="' + url + '"></iframe>', {title: titre, width: 800, height: 600 }); 
 	return false;
}

/**
 * Autoresize iframe
 */
function autofitIframe(frameId) {
	
	var nav = navigator.appName;
	obj = parent.document.getElementById(frameId);
	
	if(nav == "Netscape") {
		obj.height=obj.contentDocument.height + 10;
	}
	else if(nav == "Microsoft Internet Explorer") {		
		obj.height = obj.contentWindow.document.body.scrollHeight + 20;
	}
			
	/*
	if (!window.opera && !document.mimeType && document.all && document.getElementById){
		hauteur = this.document.body.offsetHeight;
		parent.document.getElementById(frameId).style.height=hauteur+"px"
	}
	else if(document.getElementById) {
		hauteur = this.document.body.scrollHeight + 50;
		parent.document.getElementById(frameId).style.height=hauteur+"px"
	}
	*/

}

/** Change la location en fonction de la valeur du select **/
function toggle_box(id, size) {

	// 1000 car pour 1 secondes
	var dur = 1.0;
	if(size > 0) dur = size / 1000;
		
	if(id != null) {
		Effect.toggle(id, 'blind', {duration: dur});
	}
}

/** Cache un element **/
function toggle_hide(id) {
	$(id).hide();
}

/** Tooltips de preview **/
function preview_tooltips(id, titre, link) {

	new Tip(id, 'loading...', {	title: titre, 
								className: 'tooltips',				
								ajax: {
										url: link,
										options: {
  													onComplete: function(transport) {
  														// you could do something here after the ajax call is finished
  													}
										  		 }
									  }
							  });
}

/** Tooltips sur du texte **/
function text_tooltips(id, texte) {
	new Tip(id, texte, { className: 'textTooltips' });		
}

/** Initialisation de l'accordeon **/
function accordion_init(groupe, titre, contenu_b64) {
	
	// Décodage du texte
	var contenu = Base64.decode(contenu_b64);
				
	// Si la div n'existe pas la creer
	if ( $("vertical_container_" + groupe) == null ) {
		document.write('<div class="vertical_container" id="vertical_container_' + groupe + '"></div>');	
		
		// Ajouter l'evenement au chargement
		Event.observe(window, 'load', function(event) { 		
			var bottomAccordion = new accordion('vertical_container_' + groupe);
			
			bottomAccordion.activate($$('#vertical_container_' + groupe + ' .accordion_toggle')[0]);				
		}, false);
		
	}	
	
	if ( $("vertical_container_" + groupe) != null ) {
	
		// Creation et ajout du contenu
		var toggle = new Element('h6', { 'class': 'accordion_toggle' }).update(titre);
		var content = new Element('div', { 'class': 'accordion_content' }).update(contenu);
		
		$("vertical_container_" + groupe).appendChild(toggle);
		$("vertical_container_" + groupe).appendChild(content);
	}
			
}

/** Initialisation de protocheck **/
function protocheck_init() {

	// Ajouter l'evenement au chargement
	Event.observe(window, 'load', function(event) {
		new ProtoCheck();		
	}, false);	
}

/** Initialisation de customSelect **/
function customselect_init(includecssclass, excludecssclass) {

	// Ajouter l'evenement au chargement
	Event.observe(window, 'load', function(event) {
		new iniCustomSelect(includecssclass, excludecssclass);		
	}, false);	
}

/** Initialisation des onglets **/
function tabs_init(titre, shortname, contenu_b64) {
	
	// Décodage du texte
	var contenu = Base64.decode(contenu_b64);
									
	// Si la div n'existe pas la cr�er
	if ( $("tabSet") == null ) {
		document.write('<div class="tabs"><ul id="tabSet"></ul></div>');
		
		// Ajouter l'evenement au chargement
		Event.observe(window, 'load', function(event) {
			$$('div.noscript').each(Element.remove);
			var tabSet = new ProtoTabs('tabSet', {defaultPanel: shortname});				
		}, false);
		
	}
	
	if ( $("tabSet") != null ) {
	
		// Cr�ation et ajout du contenu
		var tab_li = new Element('li');
		var tab_a = new Element('a', { 'href': '#' + shortname });
		var content = new Element('span').update(titre);
		
		tab_li.appendChild(tab_a).appendChild(content);
		
		$("tabSet").appendChild(tab_li);
		
		document.write('<div id="' + shortname + '"class="panel">' + contenu + '</div>');		
	}		
}

/** Init generale **/
function global_init() {
	
	// Supprimer toutes les div noscript
	Event.observe(window, 'load', function(event) {
		$$('div.noscript').each(Element.remove);
	}, false);	
}

/**
 * Affiche l'url dans une modalbox
 * @param {string} url 
 * @param {int} largeur 
 */
function showModalbox(url, titre, largeur) {
 	
 	Modalbox.show('<iframe allowtransparency="true" frameborder="0" class="iprint" src="' + url + '"></iframe>', {title: titre, width: largeur });	
 	return false;
}

/**
 * Bouge un element dans un autre élément
 * @param {int} elemID 
 * @param {int} conteneurID 
 */
function move_to(elemID, conteneurID) {
	Event.observe(window, 'load', function(event) {
		var element = $(elemID);		
		$(conteneurID).insert({top: element});
	}, false);	
}

/**
 * Switch image onhover
 * @param {string} imgSrcHover 
 */
function switchImgOnOverTo(obj, imgSrcHover) {
	
	var imgSrc = obj.src;
	
	// Change l'image
	obj.src = imgSrcHover;
		
	// Ajout de l'�venement pour la sortie de la souris
	Event.observe(obj, 'mouseout', function(event) {		
		obj.src = imgSrc;
		obj.stopObserving('mouseout');
	}, false);
}

/**
 * Switch image onclick
 * @param {string} imgSrcHover 
 */
function switchImgOnMouseDownTo(obj, imgSrcClick) {
	
	var imgSrc = obj.src;
	
	// Change l'image
	obj.src = imgSrcClick;
		
	// Ajout de l'�venement pour la sortie de la souris
	Event.observe(obj, 'mouseup', function(event) {		
		obj.src = imgSrc;
		obj.stopObserving('mouseup');
	}, false);
}

/**
 * Initialise widget
 * @param {string} objWidget 
 */
function widgetInit(objWidget) {
	
	Sortable.create(objWidget, {
		onUpdate: function() {		
			new Ajax.Request("/module/preferences/widget_order_list", {
				method: "post",
				parameters: { Value: Sortable.sequence(objWidget).join(',') }
			});
		},
		
		handles:$$('#widget span.icons'),
		scroll: window
	});
	
	// Ajoute un evenement mouseover pour arreter la modif
	Event.observe($('widget'), 'mouseover', function(event) {				
		$$('#widget div.widgetSettings').each(function(elem) {
			elem.style.visibility = 'visible';
		});
	}, false);
	
	// Ajoute un evenement mouseout pour arreter la modif
	Event.observe($('widget'), 'mouseout', function(event) {			
	
		if (!$(objWidget).hasClassName('update')) {
			$$('#widget div.widgetSettings').each(function(elem){
				elem.style.visibility = 'hidden';
			});
		}
			
	}, false);
}

/**
 * Passe les widgets en mode modification
 * @param {object} link 
 * @param {string} objWidget 
 */
function widgetSettings(link, objWidget) {
		
	// Charge l'object widget
	var widget = $(objWidget);	
	
	// Passe en modification
	widget.toggleClassName('update');
		
	// Sauvegarde des paramètres du lien
	if (widget.hasClassName('update'))
		link.innerHTML = "Quitter";
	else
		link.innerHTML = "Modifier";
			
}


/** Passe l'element le li et le a correspondant en class="in" **/
function menuClassIn(jsonIDs, prefix) {
	
	var arrayIDs = jsonIDs.evalJSON();
	
	var elem = "";
	arrayIDs.each(function(id) {
  		
		elem = $(prefix + id);
		
		if (elem != null) {
			elem.toggleClassName('in');
			
			var ancestors = elem.ancestors();
						
			if (ancestors != null && ancestors.length > 0) ancestors[0].toggleClassName('in');
			//elem.parentNode.toggleClassName('in');  // BUG SOUS IE7 ???!! MAIS POURQUOI DONC ?!
		}
		
	});
	
	delete elem; 

}

/** 
 * Function ajax pour compter le nombre de sous élément du noeud courant.
 */
function ajaxCountChilds_init(selector){

	Event.observe(window, 'load', function(event) {
		
		arraySelector = selector.evalJSON();
		arraySelector.each(function(selector) {
		
			var spanList = $$(selector + ' span.countChilds');
			
			spanList.each(function(span) {
				
				// Status Chargement en cours
				span.toggleClassName('loading');
				span.toggle();
				
				// Id du noeud
				var maReg = new RegExp( "[0-9]+", "g" ) ;
				var nodeid = span.id.match( maReg );
				
				if (nodeid != null && nodeid.length == 1) {
									
					var url = "/module/countchilds/" + nodeid[0];
												
					new Ajax.Request(url,
					{
						method:'get',
						
						onSuccess: function(transport) {
							var response = transport.responseText;
							span.toggleClassName('loading');
							if (response != "") span.insert('(' + response + ')');
						}
						
					});
	
				}
						
			});
		});	
	}, false);	

}

/** 
 * Justifier le menu haut
 */
function justifyMenu() {
	
	Event.observe(window, 'load', function(event){

		// Récup du menu et de sa taille
		var menu = $('menu');
		var largMenu = menu.getWidth();
		
		// Récup du ul
		var menuul;
		menu.select('ul.menuniv1').each(function(elem){
			menuul = elem;
		});
				
		// Largeur total des éléments
		var largElem = 0;
		var nbElem = 0;
		menuul.childElements().each(function(menuli){
			largElem += menuli.getWidth();
			nbElem++;
		});
		
		var diff = largMenu - largElem;
				
		// Si la liste des éléments est plus petite que la taille du menu
		if (diff > 0) {
		
			var offset = Math.round(diff / nbElem);
			var reste = diff % nbElem;
			
			var count = 1;
			menuul.childElements().each(function(menuli){
				var elemWidth = menuli.getWidth();
				
				if (count == nbElem) 
					menuli.setStyle({
						padding: '0px ' + Math.round(offset / 2) + 'px 0px ' + (offset - Math.round(offset / 2) + reste) + 'px'
					});
				else 
					menuli.setStyle({
						padding: '0px ' + Math.round(offset / 2) + 'px 0px ' + (offset - Math.round(offset / 2)) + 'px'
					});
				
				count++;
			});
		}
		
		// Si elle est plus grande on va réduire les éléments contenu des espaces
		else {
			
			// Compte le nombre d'éléments avec espace
			var pattern=/ /i;
			//var nbElemSpace = 0;
			var elemWithSpace = new Array();
			var elemWithNoSpace = new Array();
			 
			menu.select('ul.menuniv1 > li > a').each(function(menulia){				
				var str = menulia.innerHTML;
				if (str.match(pattern)) {
					elemWithSpace.push(menulia.getOffsetParent('li'));
				}
				else 
					elemWithNoSpace.push(menulia);
			});	
			
			nbElemSpace = elemWithSpace.length;
			
			// Division du trop par le nombre d'éléments
			var offset = Math.round(Math.abs(diff) / nbElemSpace);
			var reste = diff % nbElemSpace;
			
			var count = 1; var maxHeight = 0;
			elemWithSpace.each(function(menuli){
							
				var elemWidth = menuli.getWidth();
				
				if (count == nbElemSpace) {				
					menuli.setStyle({ width: elemWidth - (Math.round(offset) - reste) + 'px' });
				}
				else { 				
					menuli.setStyle({ width: elemWidth - Math.round(offset) + 'px' });
				}
				
				if (menuli.getHeight() > maxHeight) maxHeight = menuli.getHeight();
							
				count++;
			});
						
			elemWithNoSpace.each(function(menulia) {
				
				var hauteurElem = menulia.getHeight() - parseInt(menulia.getStyle('padding-top')) - parseInt(menulia.getStyle('padding-bottom'));
				
				var offset = Math.round((maxHeight - hauteurElem) / 2);
				var reste = (maxHeight - hauteurElem) % 2;
		
				menulia.setStyle({ paddingTop: offset + 'px', paddingBottom: (offset - reste) + 'px' });
			});
		
		}
		
	}, false);
}
