/**
  * @author		Bruno Rovito 
  * @date		2007-07-25
  *
  * @projet		
  * 
  */



//=====================================================================
	// FONCTIONS: DOM et RACCOURCIS
//=====================================================================

/*------- CRÉER/AJOUTER ÉVÉNEMENT DOM -------*/
	/*  pour  ajouter des EVENT comme <body onLoad=""> sans devoir placer le code dans l'HTML  */
	// i.e. $addDomEvent(window, 'load', onLoadBody);
	function $addDomEvent(obj, evType, fn){ 
		 if (obj.addEventListener){ 
		   obj.addEventListener(evType, fn, false); 
		   return true; 
		 } else if (obj.attachEvent){ 
		   var r = obj.attachEvent("on"+evType, fn); 
		   return r; 
		 } else { 
		   return false; 
		 } 
		};
		
		
/*------- COOKIES -------*/
	function $setCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		} else {
			var expires = "";
		}
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	function $getCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	function DOM_deleteCookie(name) {
		DOM_setCookie(name,"",-1);
	}


/*------- RETOURNER ÉLÉMENT DOM -------*/
function $get(_element) {
 return document.getElementById(_element);
};




/*------- MODIFIER ÉLÉMENT DOM -------*/
/* utiliser pour changer le src d'un image, par exemple, ou le stlye d'un objet */
// exemple: $modifyProp('divId','className', 'myClass');
// exemple: $modifyProp('divId','style.display', 'block');
// exige la fonction $get()
function $modifyProp(objName,theProp,theValue) { //v6.0
	var obj = $get(objName);
	if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
	if (theValue === true || theValue === false)
		 eval("obj."+theProp+"="+theValue);
	else eval("obj."+theProp+"='"+theValue+"'");
	}
};
	
	
	
/*------- CRÉER ÉLÉMENT DOM -------*/	
/**
* $newHtmlTag
*
*@param 	_tag			nom du balise HTML à créer
*@param		_parentTag		nom de balise qui contiendrait _tag, si c'est pas voulu, il faut passer "" comme valeur
*@param		(falcutatif)	x nombre de attributs à lier en format string. i.e. "class=topDiv", "width=100" , etc
							les valeurs des attributs  de prend pas de guillmets ex. pas bonne : "class='topdiv'"
							*Note: onclick= , etc, ne fonctionnent pas parceque ils ne sont pas des attributs!
*/
function $newHtmlTag(_tag, _parentTag) {
 var newHtmlObject = document.createElement(_tag.toUpperCase());
 
 var args = $newHtmlTag.arguments;
 var key;
 var value;
 for (var i=0; i< args.length; i++) {
  if (args[i].toString().indexOf("=") != -1 && args[i].toString().indexOf("=") != 0 && args[i].toString().indexOf("=") != args[i].length) {
   key = args[i].slice(0, args[i].toString().indexOf("="));
   value = args[i].slice(args[i].toString().indexOf("=") + 1, args[i].length);
   switch(key) {
    case "class" :
     newHtmlObject.setAttribute("class", value);
     newHtmlObject.setAttribute("className", value);
     break;
    case "style" :
     var arrStyle = key.split(";");
     for (var i = 0; i < arrStyle.length; i++) {
      if (arrStyle[i] != "" && arrStyle[i].indexOf(":") != -1) {
       tmpStr = "newHtmlObject.style." + arrStyle[i].slice(0, arrStyle[i].indexOf(":")) + "='" + arrStyle[i].slice(arrStyle[i].indexOf(":") + 1, arrStyle[i].length) + "'";
       eval(tmpStr);
      }
     }
     break;
    default :
     eval("newHtmlObject." +key + " = '" + value + "'");
     break;
   }
   
  }
 }
 if (_parentTag) _parentTag.appendChild(newHtmlObject);
 return newHtmlObject;
};




/*------- CRÉER ÉLÉMENT TEXTE DOM -------*/
/**
* $newHtmlText
* conçue pour "travailler" avec newHtmlTag
*@param 	_txt			text à afficher dans un appel appendChild de l'élément créer avec newHtmlTag
*/
function $newHtmlText(_txt) {
 return document.createTextNode(_txt);
}


/*------- LIRE/ÉCRIRE HASH et HREF-------*/
function $setHash(_s){
	window.document.location.hash =  _s;
}
function  $getHash(){
	// includes the #
	return window.document.location.hash;
}
function $setPageUrl(_s){
	window.document.location.href = _s;
}
function  $getPageUrl(){
	return window.document.location.href;
}


function $getPopUp(_sUrl,_sNom,_nLargeur,_nHauteur,_sScrollBars,_sParametres){
	window.open(_sUrl,_sNom,"width="+_nLargeur+",height="+_nHauteur+",scrollbars="+_sScrollBars+","+_sParametres);	
}


/*------- EMBED FLASH -------*/

/**
* $embedSwf
* 
*@param 	_sDivId			div id  pour faire innerHTML
*@param		_sSwfSource		fichier de source .swf
*@param		_sFlashVars		variables à passer au  .swf
*@param		_sSwfId			id/nom donné au  .swf
*@param		_nWidth			largeur du .swf
*@param		_nHeight		hauteur du .swf
*/
function $embedSwf(_sDivId, _sSwfSource, _sFlashVars, _sSwfId, _nWidth, _nHeight, _sSwfWmode){
		var _sSwf = (_sSwfSource==null) ? "" : _sSwfSource;
		var _sVars = (_sFlashVars==null) ? "" : _sFlashVars;
		var _sId = (_sSwfId==null)? "PlayerCamera" : _sSwfId;
		var _nW = (_nWidth==null)? 200 : _nWidth;
		var _nH = (_nHeight==null)? 150 : _nHeight;
		var _sWmode = (_sSwfWmode==null) ? "opaque" : _sSwfWmode;
		var _sEmbedHtml = "";
		
		if (_sSwfSource != ""){
			if (AC_FL_GetContent == 0) {
				alert('This page requires AC_RunActiveContent.js. In Flash, run Apply Active Content Update in the Commands menu to copy AC_RunActiveContent.js to the HTML output folder.');
				} else {
					/* Safari bug fix: must write someting to innerHTML and then "+=" the other content ;See following innerHTML assignment*/
					_sEmbedHtml +=  "<span style='display:none'>Radio-Canada.ca</span>"; 
					_sEmbedHtml +=  AC_FL_GetContent(
						'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
						'width', _nW,
						'height', _nH,
						'src', _sSwf,
						'movie', _sSwf,
						'quality', 'high',
						'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
						'align', 'middle',
						'play', 'true',
						'loop', 'true',
						'scale', 'showall',
						'wmode', _sWmode,
						'devicefont', 'false',
						'id', _sId,
						'bgcolor', '#000000',
						'name', _sId,
						'menu', 'true',
						'allowScriptAccess','always',
						'salign', '',
						'FlashVars',  _sVars
						); //end AC code
					
					if (_sDivId!=null){
						$get(_sDivId).innerHTML = _sEmbedHtml;
					}else{
						return _sEmbedHtml;
					}
				}
		}
	};
	
	
//=====================================================================
	// MISC
//=====================================================================

/*------- WEB TRENDS -------*/
	//- ClicTrack 
	function $setClicTrack(strAction, strContenu, strCategorie) {
		ClicTrack('dcsuri','vide.html','clic_action',strAction,'clic_contenu',strContenu,'WT.ti','','WT.clic', strCategorie);
	}
	
	function $setStatsToProfils(_titrepage, _descpage){
		//alert(_descpage);
		//alert($getHash());
		statsToProfils(
					"titrepage","Zone-Inter - " + _titrepage, 
					"descriptiondansurl", $getHash()
						);
		
	};
	
	function $callClicTrack(strA, strB) { /* utilisée par docs générés par GHTML */
		ClicTrack('dcsuri',strB,'clic_action',strB,'clic_contenu',strB,'WT.ti',strB,'WT.clic',strA);
	}

	
	
	
//=====================================================================
	// WINDOWS MEDIA PLAYER
//=====================================================================
//** embedConsole --> requère /audio-video/index.js
function embedConsole(_sUrl, _sDiv, _nPlayerWidth, _nScreenHeight, _isAutoStart) {
		var _isStart = (_isAutoStart!=undefined && _isAutoStart!=null) ? _isAutoStart : true;
		var _sTeaserImg = (!_isStart) ? "" : "";
	  srcAV_write( 
				{
					urlMedia : _sUrl, //String du ou des médias à jouer. Peut en contenir plusieurs, séparer par des virgule
					data : false, //Est-ce que le block Data en dessous du clip est présent?
					autoStart : _isStart, //Est-ce que le clip part au chargement de la page?
					urlTeaser : _sTeaserImg // Si autoStart est à False, mettre ici le path d'un image qui sera présent avant que le clip commence. C'est image ne doit pas contenir de bouton play, il sera ajouter automatiquement par la console
				}
			);
};
	

	
	//** embedMediaPlayer --> requère /audio-video/lib/js/browserDetect.js
	//** voir: /audio-video/lib/js/_classConsole.js
	function embedMediaPlayer(_sUrl, _sDiv, _nPlayerWidth, _nScreenHeight, _isAutoStart, _isShowControls) {
		
		var _nPlayerHeight = (_isShowControls || _isShowControls==null) ? (_nScreenHeight+45) : _nScreenHeight;
		
		$id(_sDiv).innerHTML = "";
		
		//if (browserDetect.OS == "Mac" && !av.needFFM) {
		if (browserDetect.OS == "Mac") {
			$id(_sDiv).innerHTML = AC_AX_GetContent(
				'id','player',
				'name', 'player', 
				'type','video/quicktime',
				'classid','clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
				'codeBase', 'http://www.apple.com/qtactivex/qtplugin.cab',
				'style','width:'+_nPlayerWidth+'px; height:'+_nPlayerHeight+'px',
				'width', _nPlayerWidth,
				'height', _nPlayerHeight,
				'SRC', _sUrl, 
				'controller', 'true', 
				'bgcolor', 'black', 
				'scale', 'noscale', 
				'EnableJavaScript', 'true', 
				'volume', '9'	
			);
		//} else if (browserDetect.OS == "Windows" && !av.needActiveX) {
		} else if (browserDetect.OS == "Windows") {
			$id(_sDiv).innerHTML = AC_AX_GetContent(
				'id','player',
				'name', 'player',
				'type','application/x-mplayer2',
				'classid','CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6',
				'codeBase', 'Version=7,0,0,1954',
				'STANDBY', 'Chargement du média...',
				'pluginspage', 'http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/',
				'style','width:'+_nPlayerWidth+'px; height:'+_nPlayerHeight+'px',
				'width', _nPlayerWidth,
				'height', _nPlayerHeight,
				'url', _sUrl,
				'SRC', _sUrl,
				'ShowControls', '1',
				'ShowStatusBar', '0', 
				'autostart',_isAutoStart,
				'uimode',((_isShowControls || _isShowControls==null)?"full":"none"), 
				'scale', 'noscale', 
				'volume', '9'
			);
		} else {
			
			$id(_sDiv).innerHTML	=	''
											+	'<OBJECT'
											+ 		' ID="playerr"'
											+ 		' height="'+_nPlayerHeight+'"'
											+ 		' codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"'
											+ 		' classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"'
											+ 		' STANDBY="Chargement du média..."'
											+ 		' TYPE="application/x-oleobject"'
											+ 	'>'
											+ '	<PARAM name="height" value="'+_nPlayerHeight+'">'
											+ '	<PARAM name="autoStart" value="'+_isAutoStart+'">'
											+ '	<PARAM name="stretchToFit" value="0">'
											+ '	<PARAM name="ShowControls" value="1">'
											+ '	<PARAM name="scale" value="noscale">'
											+ '	<PARAM name="uiMode" value="none">'
											+ '	<PARAM name="URL" value="' + _sUrl + '">'
											+ '	<PARAM name="volume" value="9">'
											+ '	<EMBED'
											+ '		 type="application/x-mplayer2"'
											+ '		 pluginspage="http://www.microsoft.com/windows/mediaplayer/en/default.asp"'
											+ '		 src="' + _sUrl + '"'
											+ '		 name="player"'
											+ '		 id="player"'
											+ '		 height="' + _nPlayerHeight + '"'
											+ '		 AutoStart="'+ ((_isAutoStart)?1:0)+'"'
											+ '		 ShowControls="1"'
											+ '		 ShowStatusBar="1"'
											+ '		 stretchtofit="0"'
											+ '		 wmode="transparent"'
											+ '		 scale="noscale"',
											+ '		 uimode="'+((_isShowControls || _isShowControls==null)?"full":"none")+'"',
											+ '	>'
											+ '	</EMBED>'
											+ '	</OBJECT>';
									
		}

	};
	
	
	
	
/*--------------- BUBBLE SORT Array of Objects OR Array of Arrays-------------------------*/
/**
exemple : array of arrays : 
var c = new Array(["Apples",2], ["Strawberries",4], ["Oranges",16],["Grapes",6]);
$bubbleSortObjectArray(false,c,0);
document.write (c[1][0] + c[2][0] + c[3][0] + etc);
*/
/**
var o = function( _sName, _nId){
	this.sName = _sName;
	this.nId = _nId;
	};
var d = new Array(new o("jim",6), new o("adele",3), new o("bruno",8));
$bubbleSortObjectArray(false,d,"nId");
document.write (c[1].nId + c[2].nId + c[3].nId + etc);
*/
function $bubbleSortObjectArray(isReturn, _array,_sortField) {
    for (var i=0; i<(_array.length-1); i++){
        for (var j=i+1; j<_array.length; j++){
            if (_array[j][_sortField] < _array[i][_sortField]) {
                var dummy = _array[i];
                _array[i] = _array[j];
                _array[j] = dummy;
            }
		}
	}
	
	if (isReturn){
		return _array;
	}
};

function loadPub(){
	if (typeof(oSelectedMarker)!='undefined' && typeof(oSelectedMarker.sTopoPays)!='undefined')
	new Element("meta",{ "name":"src.pays", "content":oSelectedMarker.sTopoPays}).inject(document.head);
	//var _pub=$("5313/82247-2639-1");
	//if (typeof(_pub)!='undefined') _pub.style.display="none";
	oSrc.loadPub();
};
 
