// JavaScript Document
//function gi(){};
//gi.test = 'toto';
//gi.alert_test = function(){
//	alert('test');
//}
var gi = {
	test : 'toto',
	alert_test : function(){
		alert(this.test);
	},
	// ajouter une balise script dans le head du document
	add_script_tag : function(gi_name, params){
		var gi_url;
		if(gi_name.match('http')){
			gi_url=  gi_name;
		}else{
			gi_url = gi_dossier_js+gi_name;
		}
		var gi_tmp=new Date();
		gi_tmp = '?tmp='+gi_tmp.getTime();
		var gi_script= document.createElement("script");
		gi_script.setAttribute('type','text/javascript');
		if(!this.empty(params)){
			gi_script.setAttribute('src',gi_url+params+gi_tmp);
		}else{
			gi_script.setAttribute('src',gi_url+gi_tmp);
		}
		var gi_head = document.getElementsByTagName("head")[0];
		gi_head.appendChild(gi_script);
	},
	// ajouter une balise link dans le head du document
	add_script_tag_css : function(gi_name){
		var gi_url;
		if(gi_name.match('http') || gi_name.match('\/inc\/css\/')){
			gi_url=  gi_name;
		}else{
			//			gi_url = gi_page_css+gi_name;
			gi_url = gi_dossier_css+gi_name;
		}
		var gi_tmp=new Date();
		gi_tmp = '?tmp='+gi_tmp.getTime();
		var gi_style= document.createElement("link");
		gi_style.setAttribute('type','text/css');
		gi_style.setAttribute('rel','stylesheet');
		gi_style.setAttribute('href',gi_url+gi_tmp);
		//	gi_style.setAttribute('title',gi_name);
		var gi_head = document.getElementsByTagName("head")[0];
		gi_head.appendChild(gi_style);
	},
	// Ã©quivalent de isset() en php
	isset : function(v){
		if(typeof(v)=='undefined' || v==null){
			return false;
		}
		return true;
	},
	// Ã©quivalent de empty() en php
	empty : function(v){
		if(!this.isset(v) || v==''){
			return true;
		}
		return false;
	},
	trim : function  (myString)
	{
		return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
	},
	// redirection de la page
	redirect : function(url){
		window.location = url;
	}
	,in_array : function (myValue,myArray) {
		function equals(a,b) { return (a === b); }
		for (var i in myArray) {
			if (equals(myArray[i],myValue)) return true;
		}
		return false;
	}
	,if_url:function(s) {
		var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
		return regexp.test(s);
	}
	,serialize:function( txt ) {
		switch(typeof(txt)){
			case 'string':
			return 's:'+txt.length+':"'+txt+'";';
			case 'number':
			if(txt>=0 && String(txt).indexOf('.') == -1 && txt < 65536) return 'i:'+txt+';';
			return 'd:'+txt+';';
			case 'boolean':
			return 'b:'+( (txt)?'1':'0' )+';';
			case 'object':
			var i=0,k,ret='';
			for(k in txt){
				//alert(isNaN(k));
				if(!isNaN(k)) k = Number(k);
				ret += this.serialize(k)+this.serialize(txt[k]);
				i++;
			}
			return 'a:'+i+':{'+ret+'}';
			default:
			return 'N;';
			alert('var undefined: '+typeof(txt));return undefined;
		}
	}
	,unserialize:function ( txt ) {
		var level=0,arrlen=new Array(),del=0,final=new Array(),key=new Array(),save=txt;
		while(1){
			switch(txt.substr(0,1)){
				case 'N':
				del = 2;
				ret = null;
				break;
				case 'b':
				del = txt.indexOf(';')+1;
				ret = (txt.substring(2,del-1) == '1')?true:false;
				break;
				case 'i':
				del = txt.indexOf(';')+1;
				ret = Number(txt.substring(2,del-1));
				break;
				case 'd':
				del = txt.indexOf(';')+1;
				ret = Number(txt.substring(2,del-1));
				break;
				case 's':
				del = txt.substr(2,txt.substr(2).indexOf(':'));
				ret = txt.substr( 1+txt.indexOf('"'),del);
				del = txt.indexOf('"')+ 1 + ret.length + 2;
				break;
				case 'a':
				del = txt.indexOf(':{')+2;
				ret = new Array();
				arrlen[level+1] = Number(txt.substring(txt.indexOf(':')+1, del-2))*2;
				break;
				case 'O':
				txt = txt.substr(2);
				var tmp = txt.indexOf(':"')+2;
				var nlen = Number(txt.substring(0, txt.indexOf(':')));
				name = txt.substring(tmp, tmp+nlen );
				//alert(name);
				txt = txt.substring(tmp+nlen+2);
				del = txt.indexOf(':{')+2;
				ret = new Object();
				arrlen[level+1] = Number(txt.substring(0, del-2))*2;
				break;
				case '}':
				txt = txt.substr(1);
				if(arrlen[level] != 0){alert('var missed : '+save); return undefined;};
				//alert(arrlen[level]);
				level--;
				continue;
				default:
				if(level==0) return final;
				alert('syntax invalid(1) : '+save+"\nat\n"+txt+"level is at "+level);
				return undefined;
			}
			if(arrlen[level]%2 == 0){
				if(typeof(ret) == 'object'){alert('array index object no accepted : '+save);return undefined;}
				if(ret == undefined){alert('syntax invalid(2) : '+save);return undefined;}
				key[level] = ret;
			} else {
				var ev = '';
				for(var i=1;i<=level;i++){
					if(typeof(key[i]) == 'number'){
						ev += '['+key[i]+']';
					}else{
						ev += '["'+key[i]+'"]';
					}
				}
				eval('final'+ev+'= ret;');
			}
			arrlen[level]--;//alert(arrlen[level]-1);
			if(typeof(ret) == 'object') level++;
			txt = txt.substr(del);
			continue;
		}
	}
}


//var gi = new gi_js();
if(gi.empty(gi_dossier_js)){
	var gi_dossier_js 	= 	'/inc/js/';
}
if(gi.empty(gi_dossier_css)){
	var gi_dossier_css 	= 	'/inc/css/';
}
if(gi.empty(gi_page_js)){
	var gi_page_js 	= 	'/v/pages/css/';
}
if(gi.empty(gi_page_css)){
	var gi_page_css 	= 	'/v/pages/css/';
}
$(document).ready(function() {

});



function gi_url(url){
	window.location.href=url;
}
//permet d'inclure un fichier js Ã  la volÃ©e
var gi_included_files_js = new Array();
function gi_include_js(file){
	if(gi.empty(gi_included_files_js[file])==true){
		gi_included_files_js[file] = true;
		//		gi_add_script_tag(file);
		gi.add_script_tag(file);
	}
}
//permet d'inclure un fichier css Ã  la volÃ©e
var gi_included_files_css = new Array();
function gi_include_css(file){
	if(gi.empty(gi_included_files_css[file])==true){
		gi_included_files_css[file] = true;
		//		gi_add_script_tag_css(file);
		gi.add_script_tag_css(file);
	}
}



// remplace les "'" par des "\'"
function gi_formate_quote(value, elem_replace, replace_with) {
	var elem = new RegExp(elem_replace, "g");
	value = value.replace(elem, replace_with);
	return value;
}


// permet d'ajouter plusieurs methode au window.onload
// s'utilise de la maniere suivante
//addLoadEvent(get_response);
//addLoadEvent(get_lang(param1,param2));
function gi_addLoadEvent(gi_func) {
	var gi_oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = gi_func;
	}
	else {
		window.onload = function() {
			gi_oldonload();
			gi_func();
		}
	}
}
// ajouter une balise script dans le head du document
function gi_add_script_tag(gi_url, params){
	gi_url = gi_dossier_js+gi_url;
	var gi_tmp=new Date();
	gi_tmp = '?tmp='+gi_tmp.getTime();
	var gi_script= document.createElement("script");
	gi_script.setAttribute('type','text/javascript');
	if(!gi.empty(params)){
		gi_script.setAttribute('src',gi_url+params+gi_tmp);
	}else{
		gi_script.setAttribute('src',gi_url+gi_tmp);
	}
	var gi_head = document.getElementsByTagName("head")[0];
	gi_head.appendChild(gi_script);
}
// ajouter une balise link dans le head du document
function gi_add_script_tag_css(gi_name){
	gi_url = gi_dossier_css+gi_name;
	var gi_tmp=new Date();
	gi_tmp = '?gi_time='+gi_tmp.getTime()+'&';
	var gi_style= document.createElement("link");
	gi_style.setAttribute('type','text/css');
	gi_style.setAttribute('rel','stylesheet');
	gi_style.setAttribute('href',gi_url+gi_tmp);
	gi_style.setAttribute('title',gi_name);
	var gi_head = document.getElementsByTagName("head")[0];
	gi_head.appendChild(gi_style);
}

// vÃ©rifie si la valeur donnÃ© est une adresse email
function is_email(strSaisie) {
	var verif = /^[^@]+@(([\w\-]+\.){1,4}[a-zA-Z]{2,4}|(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5]))$/
	return (verif.test(strSaisie)); // return true ou false
}

/*
Utile pour le block login
*/
function display_login_form(speed){
	var style = $('#v_b_login_form').css('display');
	if(style=='none'){
		$('#v_b_login_form').slideDown(speed);
		$('#v_b_login_form_table #pseudo').focus();
	}
}
function hidden_login_form(speed){
	var style = $('#v_b_login_form').css('display');
	if(style!='none'){
		$('#v_b_login_form').slideUp(speed);
	}
}

function debugJS() {

	/**
	*	tabulation
	*/
	this.tabul			= '    ';

	/**
	* fonctions
	*/
	this.dumpJS			= dumpJS;


	/**
	*	@desc	decompose rÃƒÂ©cursivement un element
	*	@param	mixed	elt		element a decomposer
	*	@param	int		max		nombre maxi de recurances
	*	@param	string	S_tab	suivi des tabulations
	*	@param	int		rec		suivi de reccuression
	*/
	function dumpJS(elt, max, S_tab, rec) {
		if (max == undefined) {
			max = 2;

		}
		rec++;
		var S_result	= '';
		if (elt == 'undefined') {
			return "undefined";

		}
		switch (typeof elt) {
			case 'object' :
			S_result	+= "object {\n";
			if (rec < max) {
				for (myI in elt) {
					try {
						S_result += S_tab + this.tabul + '[' + myI + '] => '
						S_result += this.dumpJS(elt[myI], max, S_tab + this.tabul, rec);

					} catch (e) {
						S_result += S_tab + this.tabul + '[' + myI + '] => ' + "** ERROR **\n";

					}

				}

			} else {
				S_result += S_tab + this.tabul + "** MAX RECURSION **\n";

			}
			S_result	+= S_tab + "}\n";
			break;

			case 'string' :
			S_result	+= typeof elt + ' "' + elt + "\"\n";
			break;

			default :
			S_result	+= typeof elt + '(' + elt + ")\n";
			break;

		}
		return S_result;

	}

}

___O_debugJS	= new debugJS();
/**
*	@desc	decompose rÃƒÂ©cursivement un element et affiche une alerte
*	@param	mixed	elt		element a decomposer
*	@param	int		max		nombre maxi de recurances
*/
function alert_r(elt, max) {
	alert(___O_debugJS.dumpJS(elt, max, "", 0));

}

/**
*	@desc	decompose rÃƒÂ©cursivement un element et affiche dans le body
*	@param	mixed	elt		element a decomposer
*	@param	int		max		nombre maxi de recurances
*/
function document_r(elt, max) {
	document.write('<pre>');
	document.write(___O_debugJS.dumpJS(elt, max, "", 0));
	document.write('</pre>');

}


/**
*	@desc	decompose rÃƒÂ©cursivement un element et affiche une nouvelle fenetre
*	@param	mixed	elt		element a decomposer
*	@param	int		max		nombre maxi de recurances
*/
function window_r(elt, max) {
	win = window.open('', 'format','width=400,height=300,left=50,top=50,status,menubar,scrollbars,resizable');
	win.document.write('<pre>' + ___O_debugJS.dumpJS(elt, max, "", 0) + '</pre>');
	win.focus();

}

/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */