function PopupCentrer(page,largeur,hauteur,options)
{
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	window.open(page,"popup","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

Array.prototype.recherche = function(valeur) {
var i = 0;
while (i < this.length) {
if (this[i] == valeur) break;
  else i++;
}
if ((i == (this.length+1))) return false;
else return i;
}

Array.prototype.contient = function(valeur) {
  var chaine = "|" + this.join("|") + "|";
  if (chaine.indexOf("|"+valeur+"|") == -1) return false;
  else return true;
}

String.prototype.explode = function(separateur) {
	var last = -1;
	var resultat = new Array();
	while(this.indexOf(separateur,last+1)!=-1) {
		resultat.push(this.substring(last+1,this.indexOf(separateur,last+1)));
		last = this.indexOf(separateur,last+1);
	}
	if(this.length!=0)
		resultat.push(this.substring(last+1,this.length));

	return resultat;
}

function addToStart(fnc){
  if(!window.listStart) window.listStart = new Array();
  window.listStart.push(fnc);
}

function start(){
  var ls = window.listStart;

  if(ls){
    for(i=0; i<ls.length; i++){
      fnc = ls[i];
      if(typeof(fnc) == 'function'){
        fnc();
      } else {
        eval(fnc);
      }
    }
  }
}

window.onload = start;

function setCheckboxesRange(the_form, do_check, basename, min, max)
{
    for (var i = min; i < max; i++) {
        if (typeof(document.forms[the_form].elements[basename + i]) != 'undefined') {
            document.forms[the_form].elements[basename + i].checked = do_check;
        }
    }
    return true;
}

	function survoler(target) {
		if(target.className != 'marque')
		target.className='survol';
	}

	function surligner(target,init) {
		if(target.className != 'marque')
			target.className=init;
	}

	function setMarque(do_check, basename, min, max) {
		for (var i = min; i < max; i++) {
			target = window.document.getElementById(basename+i);
			if(do_check=='false') {
				if(i%2 == 1)
					target.className='surligne';
				else
					target.className='nonSurligne';
			}
			else
				target.className='marque';
		}
		return true;
	}

	function marquer(checkbox,basename,index) {
		target = window.document.getElementById(basename+index);
		if(!checkbox.checked) {
			target.className='survol';
		}
		else
		{
			target.className='marque';
		}
	}

var submitForm = Array();

function submit_once(theform,bouton)
{

/*	if(bouton)
		bouton.disabled=true;

	theform = window.document.forms[theform];

	if(submitForm[theform.name] == true)
	{
		return false;
	}
	else
	{
		submitForm[theform.name] = true;
		return true;
	}*/
		return true;

}

// Remplace toutes les occurences d'une chaine
function replaceAll(str, search, repl) {
	while (str.indexOf(search) != -1)
		str = str.replace(search, repl);
	return str;
}

function isNumeric(sText)
//vérifie si la chaine envoyée est de type numérique
{
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;

	for (i = 0; i < sText.length && IsNumber == true; i++)
	{
		Char = sText.charAt(i);
		if (ValidChars.indexOf(Char) == -1)
		{
			IsNumber = false;
		}
	}
	return IsNumber;
}

function Mef(amount)
{
	// http://www.web-source.net/web_development/currency_formatting.htm
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

function fullScreen(inOut)
{
	switch(inOut)	{
		case true:
			if($("#bandeauTitre").is(":visible"))
			{
				$("#lectureBadge").slideUp();
				$("#bandeauTitre").slideUp();
				$("#bandeauUtilisateur").slideUp();
				$("#barreOnglets").slideUp();
				//$("#barreIcones").slideUp();
				//$("#barreIconesEnd").slideUp();

				//$(".ongletRubrique").each(function(){$(this).slideUp();});

				jQuery.post("includer.php?inc=ajax/fullscreen",{inOut:1});
				$("#fullscreen").fadeOut("fast",function(){
					$("#fullscreen img").attr("src","http://"+window.location.hostname+"/public/images/DV4/fullscreen_on.png");
					$("#fullscreen").fadeIn("fast");
					$("#fullscreen img").attr("title","Passer en affichage normal");
				});
			}
			break;
		case false:
			if(!$("#bandeauTitre").is(":visible"))
			{
				$("#lectureBadge").slideDown();
				$("#bandeauTitre").slideDown();
				$("#bandeauUtilisateur").slideDown();
				$("#barreOnglets").slideDown();
				//$("#barreIcones").slideDown();
				//$("#barreIconesEnd").slideDown();

				//$(".ongletRubrique").each(function(){$(this).slideDown();});

				jQuery.post("includer.php?inc=ajax/fullscreen",{inOut:0});
				$("#fullscreen").fadeOut("fast",function(){
					$("#fullscreen img").attr("src","http://"+window.location.hostname+"/public/images/DV4/fullscreen_off.png");
					$("#fullscreen").fadeIn();
					$("#fullscreen img").attr("title","Passer en affichage plein écran");
				});
			}
			break;
		}
}

function getScrollY()
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' )
  {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  }
  else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
  {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  }
  else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
  {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfY;
}

function getScrollX()
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' )
  {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  }
  else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
  {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  }
  else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
  {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfX;
}


$(document).ready(function(){
	$("#fullscreen").click(function() {
		if($("#bandeauTitre").is(":visible"))
			fullScreen(true);
		else
			fullScreen(false);
	});



	$(".boxFiltreTab h2").click(function() {
		    if($(this).next().is(":visible"))
		    {
		    	jQuery.post("includer.php?inc=ajax/hideFiltre",{inOut:0, id:$(this).next().attr("id")});
		    	$(this).next().slideUp('fast');
		    }
			else
			{
				jQuery.post("includer.php?inc=ajax/hideFiltre",{inOut:1, id:$(this).next().attr("id")});

				$(this).next().fadeIn('slow');
			}
		});

});

/**
* Convertir des degrees en radians
*/
function DegToRad($x)
{	 return $x / 180 * Math.PI; }

/**
* Convertir des degrees en radians
*/
function RadToDeg($x)
{	 return $x / Math.PI * 180;
 }

 function serialize(j){
	if (j == null)
		return "null";

	// pour chaque type de données
	switch(typeof j){
		// si chaine de caractères, on échappe les caractères spéciaux et on entoure la chaine de ""
		case "string":{
			j=j.replace('"', '\"');
			j=j.replace("\n", "\\n");
			j=j.replace("\t", "\\t");
			j=j.replace("\b", "\\b");
			j=j.replace("\f", "\\f");
			j=j.replace("\r", "\\r");
			return '"' + j + '"';
		}
		// si nombre, on écrit simplement la valeur
		case "number":
			return j;
		case "object":{
			// si tableau, on sépare les éléments par des virgules et on entoure le tout par des crochets
			if (j instanceof Array){
				var result = "[";
				for(var i=0; i<j.length; i++){
					result += serialize(j[i]);
					if (i+1 < j.length)
						result += ",";
				}
				result += "]";
				return result;
			}else{
				// si objet, on sépare les champs par des virgules et on entoure le tout par des accolades
				var result = "{";
				var properties = [];
				var propertyCount = 0;
				for (var prop in j){
					properties[propertyCount] = prop;
					propertyCount ++;
				}

				for (var i=0; i<propertyCount; i++){
					result += properties[i] + ':' + serialize(j[properties[i]]);
					if (i+1 < propertyCount)
						result += ',';
				}

				result += "}";
				return result;
			}
		}
		// si booléen on affiche directement la valeur
		case "boolean":
			return (j)?'true':'false';
		// si objets non sérialisables ou indéfinis (fonction, undefined ...) on renvoie une chaine vide pour garantir l'intégrité de la chaine JSON générée
		default:
			return "";
	}
}

function serialize (mixed_value) {
    // http://kevin.vanzonneveld.net
    // +   original by: Arpad Ray (mailto:arpad@php.net)
    // +   improved by: Dino
    // +   bugfixed by: Andrej Pavlovic
    // +   bugfixed by: Garagoth
    // +      input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
    // +   bugfixed by: Russell Walker (http://www.nbill.co.uk/)
    // +   bugfixed by: Jamie Beck (http://www.terabit.ca/)
    // %          note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %          note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *     example 1: serialize(['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
    // *     example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
    // *     returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'

    var _getType = function (inp) {
        var type = typeof inp, match;
        var key;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            match = cons.match(/(\w+)\(/);
            if (match) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';

    switch (type) {
        case "function":
            val = "";
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            /*
            if (type == "object") {
                var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
                if (objname == undefined) {
                    return;
                }
                objname[1] = this.serialize(objname[1]);
                val = "O" + objname[1].substring(1, objname[1].length - 1);
            }
            */
            var count = 0;
            var vals = "";
            var okey;
            var key;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function") {
                    continue;
                }

                okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
                vals += this.serialize(okey) +
                        this.serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
        case "undefined": // Fall-through
        default: // if the JS object has a property which contains a null value, the string cannot be unserialized by PHP
            val = "N";
            break;
    }
    if (type != "object" && type != "array") {
        val += ";";
    }
    return val;
}

function trim (myString)
{
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
}

/**
 * Fonction permettant d'ouvrir une nouvelle page permettant un partage sur Facebook
 * @param $url
 * @param $title
 * @return
 */
function shareFacebook($url, $title)
{	window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent($url)+"&t="+encodeURIComponent($title));	}

/**
 * Fonction permettant d'ouvrir une nouvelle page permettant un partage sur delicious
 * @param $url
 * @param $title
 * @return
 */
function shareDelicious($url, $title)
{	window.open("http://del.icio.us/post?url="+encodeURIComponent($url)+"&title="+encodeURIComponent($title));	}

/**
 * Fonction permettant d'ouvrir une nouvelle page permettant un partage sur twitter
 * @param $url
 * @param $title
 * @return
 */
function shareTwitter($url, $title)
{	window.open("http://twitter.com/home?status=En train de lire "+encodeURIComponent($url));	}

/**
 * Fonction permettant d'ouvrir une nouvelle page permettant un partage sur Google Bookmark
 * @param $url
 * @param $title
 * @return
 */
function shareGoogleBookmark($url, $title)
{	window.open("http://www.google.com/bookmarks/mark?op=add&bkmk="+encodeURIComponent($url)+"&title="+encodeURIComponent($title));	}

/**
 * Fonction permettant d'ouvrir une nouvelle page permettant un partage sur Digg
 * @param $url
 * @param $title
 * @return
 */
function shareDigg($url, $title)
{	window.open("http://digg.com/submit?phase=2&url="+encodeURIComponent($url));	}


