// Modifie balise title pour annoncer nouveau message
var message_default = document.title;
var message_new = "nouveau message :: ";
var anim = null;
var anim_started = false;

function startAnim_title() {	
	message_new = message_new.substring(1, message_new.length) + message_new.substring(0, 1);
	document.title = message_new;	
	anim = setTimeout("startAnim_title()", 300);
}
function stopAnim_title() {	
	clearTimeout(anim);
	anim_started = false;
	document.title = message_default;
}

// Shake	-> ex : shake(1);
function shake(n) {
	if (parent.moveBy) {
		for (i = 30; i > 0; i--) {
			for (j = n; j > 0; j--) {
			
				parent.moveBy(i,0);
				parent.moveBy(0,-i);
				parent.moveBy(-i,0);
				parent.moveBy(0,i);
				parent.moveBy(i,0);
				parent.moveBy(0,-i);
				parent.moveBy(-i,0);
				parent.moveBy(0,i);
				parent.moveBy(i,0);
				parent.moveBy(0,-i);
				parent.moveBy(-i,0);
				parent.moveBy(0,i);
			}
		}
	}
}

// Test URL
function isURLValid(url){
	
	var url_match = /https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?/;
	
	if (url_match.test(url)) { 
		return true;
	}
	else {
		return false;
	}
}

// Browser Detection
// cf http://www.quirksmode.org/js/detect.html
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
// Usage :
//BrowserDetect.init();
//document.write(BrowserDetect.browser + ' ' + BrowserDetect.version + ' on ' + BrowserDetect.OS);

// Fonction auto-resize window (cf: http://www.quirksmode.org/js/doctypes.html et http://www.quirksmode.org/viewport/compatibility.html et http://www.devparadise.com/technoweb/code/jscript/a457.php)
function redimPopUp(){

	var browser = navigator.appName;
	//alert(browser);
	 
	// Detection Navigateur + Redimmensionnement
	if (browser == "Microsoft Internet Explorer") {
		//alert('IE');
		var bodyLargeur = document.body.scrollWidth;
		var bodyHauteur = document.body.scrollHeight;	
		window.resizeTo((bodyLargeur+10), (bodyHauteur+80));
		
	} else if(browser == "Netscape") {
		//alert('Netscape');
		var bodyLargeur = document.body.offsetWidth;
		var bodyHauteur = document.body.offsetHeight;	
		window.resizeTo(bodyLargeur+10, (bodyHauteur+60));
		
	} else if (browser == "Opera") {
		//alert('Opera');
		var bodyLargeur = document.body.offsetWidth;
		var bodyHauteur = document.body.offsetHeight;	
		window.resizeTo(bodyLargeur+10, (bodyHauteur+70));
	
	} else return; 
	//alert('bodyLargeur de la fenêtre = '+bodyLargeur+'\n'+'bodyHauteur de la fenêtre = '+bodyHauteur+'\n'+'Navigateur = '+browser);
}

// Fonction auto-resize relance
function redimPopUpTime() {
	//alert('You\'re using ' + BrowserDetect.browser + ' ' + BrowserDetect.version + ' on ' + BrowserDetect.OS + '!');
	setTimeout("redimPopUp()", 1000);
}

// Fonction resize d'origine	
function resizeWindow(width,height) {
	var browser = navigator.appName;
	if (window.innerWidth){		// FF	
		var inner_x = window.innerWidth;
		var inner_y = window.innerHeight;
		var outer_x = window.outerWidth;
		var outer_y = window.outerHeight;
		var width = width + 0;
		var height = height + 10;
	}
	else {
		with(document.body){	// IE
			var inner_x = clientWidth;
			var inner_y = clientHeight;
			var outer_x = scrollWidth;
			var outer_y = scrollHeight;
			var width = width + 20;
			var height = height + 0;
		}
	}
	/*
	var width = width + 10;
	var height = height + 75;
	*/
	
	//alert(browser + " : " + inner_x + " - " + inner_y + " : " + outer_x + " - " + outer_y);
	window.resizeTo(width, height);	
}

// --- Objet WINDOW

var newWin = null;

function closeWin(){
	if (newWin != null){
		if(!newWin.closed)			
			newWin.close();
	}
}

function popDisplay(popUrl, popName, popWidth, popHeight, popTop, popLeft, popFeatures){

	closeWin();

	switch (popTop){	
		case 'center' : popTop = (screen.height - popHeight) / 2;
		break;
		case 'top' : popTop = 0;
		break;
		case 'bottom' : popTop = screen.height - popHeight;
		break;
	}
	
	switch (popLeft){	
		case 'center' : popLeft = (screen.width - popWidth) / 2;
		break;
		case 'left' : popLeft = 0;
		break;
		case 'right' : popLeft = screen.width - popWidth;
		break;
	}
	
	// Default
	if (popFeatures == ""){
		popFeatures = "toolbar=no, location=no, statut=no, menubar=no, directories=no, scrollbars=yes, resizable=yes, copyhistory=yes";
	}
	//document.write(popName);
	newWin = window.open(popUrl, popName, "top=" + popTop + ",left=" + popLeft + ",width=" + popWidth + ",height=" + popHeight + "," + popFeatures);
	newWin.focus();
}

function popResize(popWidth, popHeight){
	if (newWin != null){
		newWin.resizeTo(popWidth, popHeight);
		newWin.focus();
	}
}

function popWrite(divId, content){
	if (newWin != null){
		newWin.document.getElementById(divId).innerHTML = content;
		newWin.focus();
	}
}

function popClose(){
	if (newWin != null){
		newWin.close();
	}
}

// --- Objet DATE
function displayTime(divId){
	
	var myDate = new Date();
	var hour = myDate.getHours();
	var minut = myDate.getMinutes();
	var second = myDate.getSeconds();
	
	if (second < 10) second = "0" + second;
	if (minut < 10) minut = "0" + minut; 
	if (hour < 10) hour = "0" + hour;
	
	document.getElementById(divId).innerHTML = hour + ":" + minut + ":" +  second;
	
	setTimeout("displayTime('" + divId + "')", 1000);
}

function displayDay(divId){
	
	var myDate = new Date();
		
	var day = myDate.getDate();
	var weekday = myDate.getDay();
	var month = myDate.getMonth();
	//var year = myDate.getYear();
	var year = myDate.getFullYear();	// sinon pas compatible FF
			
	if(day < 10) day = "0" + day;
	
	var day_fr = "";
	var month_fr = "";
	
	switch(weekday){
		case 0 : day_fr = "Dimanche";
		break;
		case 1 : day_fr = "Lundi";
		break;
		case 2 : day_fr = "Mardi";
		break;
		case 3 : day_fr = "Mercredi";
		break;
		case 4 : day_fr = "Jeudi";
		break;
		case 5 : day_fr = "Vendredi";
		break;
		case 6 : day_fr = "Samedi";
		break; 
	}
	
	month++;	// Car sinon commence à 0
	
	switch(month){
		case 1 : month_fr = "Janvier";
		break;		
		case 2 : month_fr = "Fécrier";
		break;
		case 3 : month_fr = "Mars";
		break;
		case 4 : month_fr = "Avril";
		break;
		case 5 : month_fr = "Mai";
		break;
		case 6 : month_fr = "Juin";
		break;
		case 7 : month_fr = "Juillet";
		break;
		case 8 : month_fr = "Août";
		break;
		case 9 : month_fr = "Septembre";
		break;
		case 10 : month_fr = "Octobre";
		break;
		case 11 : month_fr = "Novembre";
		break;
		case 12 : month_fr = "Décembre";
		break; 
	}
	
	document.getElementById(divId).innerHTML = day_fr + " " + day + " " + month_fr + " " +  year + " - ";
}

// --- Type Objet
function isArray(object){
    return (object instanceof Array);
}

function isObject(object){
    return (object instanceof Object);
}

// --- Divers

// Fonction servant à l'impression d'un bloc
function printItem(titre, contenu, css_print_url, test_mode){
	
	// Définit la zone à imprimer
	var zoneId = document.getElementById(contenu).innerHTML;
	var Headers = '';
	var Footers = '';
	
	Headers += '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\" >\n';
  	Headers += '<html xmlns=\"http://www.w3.org/1999/xhtml\">\n';
  	Headers += '<head>\n';
  	Headers += '<title>' + titre + '</title>\n';
	Headers += '<link rel=\"stylesheet\" href=\"' + css_print_url + '\" type=\"text/css\" media=\"screen,print\" />\n';
	Headers += '</head>\n';		
	
	if (test_mode) {
		Headers += '<body>\n';
	}
	else {
		Headers += '<body onload="window.print(); window.close()">\n';
	}
	
	Headers += '<div id="' + contenu + '">\n';
		
	Footers += '</div>\n';
	Footers += '<script type=\"text/javascript\">\n';	// Cache les divs inutiles		
  	//Footers += 'document.getElementById("actionIcons").style.display = "none"\n';
	//Footers += 'document.getElementById("interestBtn").style.display = "none"\n';
	Footers += '</script>\n';
	Footers += '</body></html>\n';
	
	// Ouvre une nouvelle fenetre
	var f = window.open("", "ZoneImpr", "height=500, width=660, toolbar=no, menubar=no, scrollbars=yes, resizable=yes, status=no, location=no, left=10, top=10");
	
	// Définit le Style de la page
	f.document.body.style.color = '#000000';
	f.document.body.style.backgroundColor = '#FFFFFF';
	f.document.body.style.padding = "5px";
	
	// Ajoute les Données	
	f.document.title = titre;
	f.document.write ("" + Headers + zoneId + Footers);
	
  	// Imprime et ferme la fenetre    
	f.document.close();
	
	return;
}

// Màj l'URL en ajoutant un param issue de la combobox
function updateUrl(targetURL, param, optValue){
	
	var myURL;	
	if (targetURL.indexOf("?") > 0){	// paramètres déjà passés
		myURL = targetURL + "&" + param + "=" + optValue;
	}
	else {
		myURL = targetURL + "?" + param + "=" + optValue;
	}		
	document.location.href = myURL;
}

// Check variables passées par GET
function checkURLvalue(param,value){
	
	var getString = location.search.substring(1);
	
	if (getString != ""){
		//alert(getString);	
		var getdata = [];
		var nameValue = getString.split("&");
		for (var i=0; i<nameValue.length; i++) {
			var data = nameValue[i].split("=");
			getdata[data[0]] = data[1];
		}
		
		var dataResults = "";
		for (var el in getdata){
			dataResults += el + ": " + getdata[el] + "\n";
		}
		//alert(dataResults); // Affiche tous les parametres passés par get
		//alert(getdata[param]);
		
		if (getdata[param] == value){
			//return getdata[param];
			return true;
		}
		else {
			return false;	
		}
	}
}

function urlencode(str) {
//	str = escape(str);
//	str = str.replace('+', '%2B');
//	str = str.replace('%20', '+');
//	str = str.replace('*', '%2A');
//	str = str.replace('/', '%2F');
//	str = str.replace('@', '%40');
//	return str;
	
	return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');	
}

function urldecode(str) {
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

// Implemente la fonction inArray
/*
 Array.prototype.inArray = function(p_val) {
 	for(var i = 0, l = this.length; i < l; i++) {
	 	if(this[i] == p_val) {
	 		rowid = i;
		 	return true;
	 	}
	 }
 	return false;
 }
 */

function inArray (needle, haystack, argStrict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // +   input by: Billy
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true
    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false

    var key = '', strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }
    return false;
}

// Exemples
// var tab = new Array('cicl','citw','cipo','cigo','sela','seve','seav','sepr','sepa','sesh','suko','suto','sura','sulc');
// var tagsList = new Array('aa','bb');
// var test = 'aa';
 //alert(tab.inArray(test));
 //alert(inArray(test,tab));
