/*******************************************************************************
 * Fonctions générique des sites de l'environnement Arbiter
 ******************************************************************************/

/* ************************************************************************** **
**      $(String)                                                             **
**      Description: Extension of getElementById method                       **
**      Arguments: String(required) - eg. 'myId'                              **
** ************************************************************************** */
function $() {
	var aElems = [];
	for (var i=0; i<arguments.length; i++) {
		var soElem = arguments[i];
		if (typeof soElem == 'string') soElem = document.getElementById(soElem);
		if (arguments.length == 1) return soElem;
		aElems.push(soElem);
	}
	return aElems;
}

/* ************************************************************************** **
**      $t(String,Object)                                                     **
**      Description: Reduction of getElementByTagName method                  **
**      Arguments: sTag(required) - String - eg. 'myTagName'                  **
**                 oObj(optional) - Object - eg. myHTMLElement                **
** ************************************************************************** */
function $t(sTag,oObj) {
	oObj = oObj || document;
	return oObj.getElementsByTagName(sTag);
}

/* ************************************************************************** **
**      $c(String,Object,String)                                              **
**      Description: GetElementsByClassName                                   **
**      Arguments: sClass(required) - String - eg. 'myClassName'              **
**                 oObj(optional) - Object - eg. myHTMLElement                **
**                 sTag(optional) - String - eg. 'myTagName'                  **
** ************************************************************************** */

//TODO : need redesign for opera browser, this one does not seems to work correctly.
function $c(sClass,oObj,sTag) {
	oObj = oObj || document;
	if (!oObj.length) { oObj = [oObj]; }
	var aElements = [];
	for(var i = 0; i<oObj.length; i++)
	{
		oEl = oObj[i];
		if(oEl.getElementsByTagName) {
			oObj.children = oEl.getElementsByTagName(sTag || '*');
			for (var j = 0; j<oObj.children.length; j++) {
				oObj.child = oObj.children[j];
				if(oObj.child.className&&(new RegExp('\\b'+sClass+'\\b').test(oObj.child.className))) {
					aElements.push(oObj.child);
				}
			}
		}
	}
	return aElements;
}

/**
 * Affiche le media player audio ou video FLVPlayer
 * @param {Integer} id		//l'id du fichier media
 * @param {String}  name  //le nom du fichier media
 * @param {String}  url   //l'url du fichier media
 * @param {Integer} type  //le type de media (2=video, 3=audio)
 */
function showMediaFile(id, name, url, type){
	
	//avant on cache les DIVS des bannieres flash pour économiser un peu de ressources aux plus fragiles des Processeurs
	document.getElementById("banner_top").style.display = "none";
	document.getElementById("banner_right").style.display = "none";
	document.getElementById("flash_promo").style.display = "none";
	
	var div_placement = document.getElementById("product_middle");
	var container = document.getElementById("container_media_file_box");
	var box_name = 'media_file_box';
	var div = $(box_name);
	
	container.style.display = 'none';

	//récupération des dimensions de la div en fonction de son type	
	switch (type){
		//video
		case 2 :
		{
				 width = 320;
				 height = 240;
				 position = "absolute";
				 player = "/mediaplayer/lecteur-video" ;
				 container.className = "media_player_video" ;
				 var myDrag = new Draggable('container_media_file_box');
				 
				 //suppression de la div conteneur du flash si deja existante.
				 if(div){		
				  	var noeud=container.childNodes[1];  //le premier child etant le span: Drag Me, et le 2eme le bouton close
				  	disparu = container.removeChild(noeud);
				 }
				 
				 //création de la div qui contient le flash :
			   container.innerHTML = "<div id=\"video_title_bar\"><a onclick=\"javascript:closeMediaFile("+type+");\" class=\"close_video\"></a></div>"
				 container.innerHTML += "<div id=\""+box_name+"\"></div>"
				 
				 break; //video
		}
		//audio
		case 3 : 
		{    width = 575;
				 height = 25;
				 position = "static" ;
				 container.className = "media_player_audio" ;
				 player = (browser.isSafari)
				 					? "/mediaplayer/lecteur-audio-simple"  //loading bar not supported by safari
									: "/mediaplayer/lecteur-audio"
					
				 //suppression de la div conteneur du flash si deja existante.
				 if(div){		
				  	var noeud=container.childNodes[1];  //le premier child etant le span: Drag Me, et le 2eme le bouton close
				  	disparu = container.removeChild(noeud);
				 }
				 
				 //création de la div qui contient le flash :
			   container.innerHTML = "<div id=\""+box_name+"\"></div>"
				 container.innerHTML += "<a onclick=\"javascript:closeMediaFile("+type+");\" class=\"close_audio\"></a>"
				 
				 break; //audio
		}
	}
	
	//écriture du text affichée si Player Flash non-installé
	var div = $(box_name);
	div.innerHTML += '<a href="http://www.adobe.com/fr/products/flashplayer/" target="_blank" title="Get Flash Player">Vous avez besoin de Flash Player - Cliquez ici</a>';
	div.style.lineHeight = height +"px";
	
	/*modification des styles */
	//container.style.display = 'block';
	//alert(div_placement.offsetWidth);
	margin_left = (div_placement.offsetWidth - width) / 2;
	margin_top = 30;
	container_dimensions = findPos(div_placement);
	container.style.left = parseInt(container_dimensions[0] + margin_left) + "px";
	container.style.top = parseInt(container_dimensions[1] + margin_top) + "px";
	container.style.width = width + "px";
	container.style.height = height + "px";
	container.style.position = position ;
	//container.style.display = "block";
	
	//Effect.Appear('container_media_file_box', { duration: 2.0 });
	//si le fade est trop gourmand en mémoire, commentez la ligne du fade
	//et decommentez la ligne du dessous
	//container.style.display = "block" ;
	if(browser.isSafari)
		container.style.display = "block" ;
	else
		Effect.Appear('container_media_file_box', { duration: 2.0 });
	

	//récriture de la div 
	if(browser.isOpera){
		div.innerHTML = "<object width=\""+width+"\" height=\""+height+"\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\">";
		div.innerHTML += "<param value=\""+player+"\" name=\"movie\"/>";
		div.innerHTML += "<param value=\"high\" name=\"quality\"/>";
		div.innerHTML += "<param value=\"transparent\" name=\"wmode\"/>";
		div.innerHTML += "<param name=\"menu\" value=\"false\">";
		div.innerHTML += "<param name=\"FlashVars\" value=\"movie_url="+url+"&movie_name="+name+"\">";
		div.innerHTML += "<embed src=\""+player+"\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" height=\""+height+"\" width=\""+width+"\" FlashVars=\"movie_name="+name+"&movie_url="+url+"\">";
		div.innerHTML += "</object>";
	}
	else{
		var fo = new SWFObject(player, "embed_media_player", width, height, "8", "#fff", false);
		fo.addParam("wmode","opaque");
		fo.addVariable("movie_name", name);
		fo.addVariable("movie_url", url);
		fo.write(box_name);
		fo = null;
	}
}

function closeMediaFile(type){
	//Effect.Fade('container_media_file_box',{afterFinish:function(){removeMediaPlayer(type)}});
	//si le fade est trop gourmand en ressource, commentez le fade et decommentez la ligne
	//ci-dessous
	//removeMediaPlayer();
	if(browser.isSafari)
		removeMediaPlayer(type);
	else
		Effect.Fade('container_media_file_box',{afterFinish:function(){
																removeMediaPlayer(type);
																//on réaffiche les bannieres flash qu'on avait cachées pour économiser un peu de ressources aux plus fragiles des Processeurs
																document.getElementById("banner_top").style.display = "block";
																document.getElementById("banner_right").style.display = "block";
																document.getElementById("flash_promo").style.display = "block";
																}});
		
}

function removeMediaPlayer(type)
{
	var container = $("container_media_file_box");
	var div = $("media_file_box");
	var index=(type==2)?1:0; //node a recuperer
	container.style.display = 'none';

	//suppression de la div conteneur du flash si deja existante.
	if(div){		
		var noeud=container.childNodes[index];  //le premier child etant le span: Drag Me, et le 2eme le bouton close
		disparu = container.removeChild(noeud);
	}
}

/* retourne reel position IE ou FF*/
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];
}


/* ************************************************************************** **
**      Page CONTACT : focus blur sur chaques champs         **
** ************************************************************************** */
 
 function FocusMe(obj){
 	obj.style.border = "1px solid #898888";
 }
  function BlurMe(obj){
	obj.style.border = "1px solid #BCBCBC";
 }
 
function jsClose(obj)
{
	o = document.getElementById(obj) ;
	o.style.display = "none";
}

/*******************************************************************************
 * Page Artist
 ******************************************************************************/

 //charge le bloc de description complète de l'artiste dans sa page
 function switchArtistDescription(span,id_artist)
 {
 	var simpleAjax = new SimpleAjax() ;
	
	//récupération du paragraphe
	paragraphe = span.parentNode ;
	
	//chargement
	span.innerHTML = "<img src=\"/img/arbiter/default/ajax-loader1.gif\"/>" ;
	
	simpleAjax.setVar("id_artist",id_artist) ;
	simpleAjax.requestFile = "/index.php?action=ajaxSwitchArtistDescription" ;
	simpleAjax.method = "post" ;
	simpleAjax.onLoading = function(){null} ;
	simpleAjax.onCompletion = function () {
		if (simpleAjax.responseText!="")
		{
			paragraphe.innerHTML = simpleAjax.responseText ;
		}else
		{
			alert("The request made a Booboo") ;
		} 
	}
	simpleAjax.run();
 }
 
 /* fonction pour la dialogue flash / JS pour le jukebox flash*/
function getMovieName(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
   }
   else {
       return document[movieName]
   }
}

function callExternalInterface(url) {
	getMovieName("player").callvideo(url); 
}
 

/* fonction de switch entre l'affichage des vidéos et des sons dans le menu lastFiles*/
function ShowMe(cat,video, sound){
	document.getElementById("cat"+video).style.display = "none";
	document.getElementById("cat"+sound).style.display = "none";
	document.getElementById("cat"+cat).style.display = "block";
	document.getElementById("links_show").style.background = "url('/img/bg_switch_media_"+cat+".gif') no-repeat";
	document.getElementById("link"+video).style.color = "black";
	document.getElementById("link"+sound).style.color = "black";
	document.getElementById("link"+cat).style.color = "red";
}

function DirectViewMe(id){
	if (typeof(getMovieName("player").callvideo) == 'function'){
		clearInterval(timer);
		document.getElementById(id).onclick();
	}
		
}

function TopMe(obj){
	divs = $c("now_playing");
	for (i=0;i<divs.length;i++){
		divs[i].className = "";
	}
	document.getElementById(obj).className = "now_playing";
}

/*******************************************************************************
 * Tools Bar arbiter index.php
 ******************************************************************************/
function showToolsContent(content_type)
{
  //récupération des éléments nécessaires
  var tools_main_content = $("tools_main_content") ;
  var media_tab = $("media_tab") ;
  var reseller_tab = $("reseller_tab") ;
  var contact_tab = $("contact_tab") ;
  var tools_content = $("tools_content") ;
  var simpleAjax = new SimpleAjax() ;
  
  //disparition du carrousel
  hideCarrousel() ;
   
  //setting du style du bouton sélectionné
  switch(content_type){
    case "media" : 
    {
     //onglets
     media_tab.className = "media_selected" ;
     reseller_tab.className = "reseller_out" ;
     contact_tab.className = "contact_out" ;
     //blur du lien
     $t("a",media_tab)[0].blur() ;
     //boutons fermer
     $t("a",media_tab)[1].style.display="block" ;
     $t("a",reseller_tab)[1].style.display="none" ;
     $t("a",contact_tab)[1].style.display="none" ;
     //contenu
     tools_content.innerHTML = $("form_media_box").innerHTML ;
     tools_content.className = "form_media_box" ;
     break ;
    }
    case "reseller" :
    {
      media_tab.className = "media_out" ;
      reseller_tab.className = "reseller_selected" ;
      contact_tab.className = "contact_out" ;
      //blur du lien
      $t("a",reseller_tab)[0].blur() ;
      //boutons fermer
      $t("a",media_tab)[1].style.display="none" ;
      $t("a",reseller_tab)[1].style.display="block" ;
      $t("a",contact_tab)[1].style.display="none" ;
      //contenu
      tools_content.innerHTML = $("form_reseller_box").innerHTML ;
      tools_content.className = "form_reseller_box" ;
      break ;
    }
    case "contact" :
    {
      media_tab.className = "media_out" ;
      reseller_tab.className = "reseller_out" ;
      contact_tab.className = "contact_selected" ;
      //blur du lien
      $t("a",contact_tab)[0].blur() ;
      //boutons fermer
      $t("a",media_tab)[1].style.display="none" ;
      $t("a",reseller_tab)[1].style.display="none" ;
      $t("a",contact_tab)[1].style.display="block" ;
      //contenu
      tools_content.innerHTML = $("form_contact_box").innerHTML ;
      tools_content.className = "form_contact_box" ;
      break ;
    }
  }
  
  
  //visualisation de la boite
  //container principal (évite l'affichage de la scrollbar verticale
  //lors de l'affiche de la boite principale)
  //tools_main_content_container.style.height = "350px" ;
  
  //effect slide
  //if(tools_main_content.style.height == "" || tools_main_content.style.height == "50px")
    //new Effect.MoveBy(tools_main_content, -300, 0 ) ;
  
  //settings finaux de la boite principale
  with(tools_main_content.style)
  {
    height = "335px" ;
    //marginBottom = "-300px" ;
  }
  
  return false ;
}

function closeToolsBar()
{
  var tools_main_content = $("tools_main_content") ;
  
  tools_main_content.style.height="35px" ;
  
  //setting des éléments dans leur état normal
  var lis = $t("li",$("tools_menu_bar")) ;
  for(var i=0,j=lis.length;i<j;i++)
  {
    expression = /^(.*)_(tab)$/ ;
    expression.exec(lis[i].id) ;
    lis[i].className = RegExp.$1 + "_out" ; //classe par défaut
    
    //bouton fermer
    $t("a",lis[i])[1].style.display="none" ;
  }
  
  //affichage du carrousel
  showCarrousel() ;
}

function submitContactForm()
{
  var simpleAjax = new SimpleAjax() ;
  var form_serialized = Form.serialize("form_box") ;
  var mesg_box = $("form_contact_error_box") ;
  
  simpleAjax.setVar("data",form_serialized) ;
  simpleAjax.requestFile = "/php/ajaxSubmitContactForm.php" ;
	simpleAjax.method = "post" ;
	simpleAjax.onLoading = function(){
    mesg_box.innerHTML = "" ;
    mesg_box.className = "form_contact_error_box_loading" ;
  } ;
	simpleAjax.onCompletion = function () {
		if (simpleAjax.responseStatus[0]== 200)
		{
      if(navigator.userAgent.indexOf("MSIE")!= -1)
      {
         var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
         xml_doc.async="false";
         xml_doc.loadXML(simpleAjax.responseText);
         var code_node = xml_doc.getElementsByTagName("code").item(0) ;
			   var message_node = xml_doc.getElementsByTagName("message").item(0) ;
			   var code = parseInt(code_node.firstChild.data) ;
         var message = message_node.firstChild.data ;
          
      }else
      {
         var xml_doc = simpleAjax.responseXML ;
         var code_node = xml_doc.getElementsByTagName("code").item(0) ;
			   var message_node = xml_doc.getElementsByTagName("message").item(0) ;
			   var code = parseInt(code_node.firstChild.data) ;
         var message = message_node.firstChild.nextSibling.data ;
      }
      
      //une fois les éléments récupérés du XML
      //on affiche les éléments
      mesg_box.removeAttribute("class") ;
      if(code === 0)
      {
        //affichage du message d'erreur
        mesg_box.innerHTML = message ;
      }else
      {
        //reset des champs
        $("company").value = "" ;
        $("name").value = "" ;
        $("surname").value = "" ;
        $("phone").value = "" ;
        $("fax").value = "" ;
        $("email").value = "" ;
        $("comment").value = "" ;
        
        //affichage du message OK
        mesg_box.innerHTML = message ;
      }
      
		}else
		{
			alert("The request made a Booboo") ;
		}
    
  }
	simpleAjax.run();
  return false ;
}

function hideCarrousel()
{
  //le carrousel est caché
  $("carrousel").style.display = "none" ;
  
  //le titre de la page apparaît
  var arbiter_title = $("arbiter_index_title")
  with (arbiter_title.style)
  {
    display = "block" ;
    position = "absolute";
    left = "0" ;
    bottom = "540px" ;
  }
}

function showCarrousel()
{
  //le carrousel est affiché
  $("carrousel").style.display = "block" ;
  //le titre de la page disparaît
  var arbiter_title = $("arbiter_index_title")
  with (arbiter_title.style)
  {
    display = "none" ;
    position = "static";
  }
}