function Form() { //ver 1.0
/*
Author: Vincent Germain
Usage : ['regexShort','regexLong','warning',optionnal]
-regexShort: Detect if the form object name contain a specific word
-regexLong: Filther the main regular expression
-warning: Call the error message in case user input fail verification (set in warningList)
-optionnal: Set to false if the input is optionnal

Specific:
-objList[0][1]: Exclude any other objList[i++][0]
*/

	//Constructor
	this.language = 'fr';
	this.warningTag = 'div';
	this.greenColorBox = '#E8F1E0';
	this.redColorBox = '#E8F1E0';
	this.ajax = false;
	//Initializing
	var warningList = new Array();
	var validType = new Array();
	warningList["fr"] = ["Ce champ n'est pas valide","Le numéro de téléphone n'est pas valide","Le numéro de fax n'est pas valide","Votre courriel est invalide","Le code postal n'est pas valide","Ce champ n'est pas valide","L'extension du fichier doit être .jpg","Ce nom d'utilisateur n'est pas valide","Ce lien n'est pas valide","Le message est invalide","Vous devez accepter les termes du contrat pour vous inscrire.","Les deux mots de passe diffèrent."];
	warningList["en"] = ["This field is not valid","The phone number is not valid","The fax number is not valid","The mail is not valid","The postal code is not valid","This field is not valid","The extension must be .jpg","This username is not valid","This link is not valid","Your message is invalid","You must accept the term of use","The password is different"];
	validType = ["text","textarea","checkbox","radio","password","file"];
	//Validate form
	Form.prototype.create = function(source) {
		for (var i=0;i<source.length;i++) if(validType.inArray(source[i].type) && source[i].form.className.search(/alert/i) == -1)  source[i].insertAdjacentHTML('afterEnd','<span class="spch-bub-inside error" id="war_'+source[i].name+'"></span>');
	}
	Form.prototype.validForm = function(source) {
		this.action = source.action;
		var increment = 0;
		var sendFlag = true;
		var warningDiv = document.getElementsByTagName(this.warningTag);
		var objList = [['generic','^.{2,200}$',warningList[this.language][increment++]],['phone','^(?:\\([2-9]\\d{2}\\)\\ ?|[2-9]\\d{2}(?:\\-?|\\ ?))[2-9]\\d{2}[- ]?\\d{4}$',warningList[this.language][increment++]],['fax','^(?:\\([2-9]\\d{2}\\)\\ ?|[2-9]\\d{2}(?:\\-?|\\ ?))[2-9]\\d{2}[- ]?\\d{4}$',warningList[this.language][increment++]],['mail','^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$',warningList[this.language][increment++]],['postal','^[ABCEGHJKLMNPRSTVXY]\\d[A-Z]\\ ?\\d[A-Z]\\d$',warningList[this.language][increment++]],['quant','^[0-9]{1,}$',warningList[this.language][increment++]],['photo','^(.*\\.(j|J)(p|P)(g|G))$',warningList[this.language][increment++]],['username','^[a-z0-9]{2,12}$',warningList[this.language][increment++]],['link','(http://|https://)([a-zA-Z0-9]+\\.[a-zA-Z0-9\\-]+|[a-zA-Z0-9\\-]+)\\.[a-zA-Z\\.]{2,6}(/[a-zA-Z0-9\\.\\?=/#%&\\+-]+|/|)',warningList[this.language][increment++]],['message','^.{2, }$',warningList[this.language][increment++]], ['check','^.{2, }$',warningList[this.language][increment++]], ['clone','^.{254,255}$',warningList[this.language][increment++]]]
		function queryResult(x,color,warning) {
			//source[x].style.background = color;
			//alert(source[x].form.className);
			//alert(warning);
			if (warning != '' && source[x].form.className.search(/alert/i) != -1) alert(warning);
			else if (warning != '' && document.getElementById('war_'+source[x].name)) document.getElementById('war_'+source[x].name).innerHTML = '<span class="point"></span><em>'+warning+'</em>';
			else document.getElementById('war_'+source[x].name).innerHTML = '';
			//else if (warning != '') alert(warning);
			if (warning != '') sendFlag = false;
		}
		for (var i=0;i<source.length;i++) {
			if(validType.inArray(source[i].type)) {
				for (var j=0;j<objList.length;j++) {
					var shortRegex = new RegExp(objList[j][0],'i');
					if (source[i].name != null && source[i].name.search(shortRegex) != -1) {
						if (source[i].name.search(/true/i) != -1 || ((source[i].type == 'checkbox' && source[i].checked == true) || (source[i].type != 'checkbox' && source[i].value != ''))) {
							var longRegex = new RegExp(objList[j][1],'i');
							if (source[i].value.search(longRegex) != -1 || (objList[j][0] == 'clone' && source[i].value == source[i+1].value && source[i].value != '') || (objList[j][0] == 'clone' && source[i-1].value == source[i].value && source[i].value != '') || (objList[j][0] == 'message' && source[i].value.length < 5000 && source[i].value != '') || (source[i].type == 'checkbox' && source[i].checked == true)) {
								queryResult(i,this.greenColorBox,'');
								if (objList[j][0] == 'clone') queryResult(i+1,this.greenColorBox,'');
							} else {
								queryResult(i,this.redColorBox,objList[j][2]);
								if (objList[j][0] == 'clone') queryResult(i+1,this.redColorBox,objList[j][2]);
							}
						} else queryResult(i,this.greenColorBox,'');
					}
				}
			}
		}
		if (sendFlag == true) {
			if (this.ajax == true) {
				callAjax(source,this.action);
				return false;
			} else return true;
		}
		return false;
	}
} // END classValidForm()

function initForms(x,y) {
	x = typeof(x) != 'undefined' ? x : 'validate';
	y = typeof(y) != 'undefined' ? y : 'en';
	var source = document.getElementsByClassName(x);
	form = new Array();
	for (var i=0;i<source.length;i++) {
		form[i] = new Form();
		form[i].create(source[i]);
		form[i].language = y;
		source[i].onsubmit = new Function("return form["+i+"].validForm(this);");
	}
}

function showAlert(x,a,y,z) {
		seeTrought();
		a = typeof(a) != 'undefined' ? a : '';
		x = typeof(x) != 'undefined' ? x : '';
		y = typeof(y) != 'undefined' ? y : 'alertContent';
		z = typeof(z) != 'undefined' ? z : 'alertBox';
		BrowserDetect.init();
		if (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7) document.getElementById(z).style.height = screen.height-170+'px';
		if (document.getElementById(z).style.visibility == 'hidden') {
			document.getElementById(z).style.visibility = 'visible';
			document.getElementById(y).style.visibility = 'visible';
			document.getElementById(z).style.filter = 'alpha(opacity=80)';
			document.getElementById(y).innerHTML = '<div id="realContent"><div>'+x+'</div><div id="messageClose">	<form method="post" action=""><input type="button" value="Fermer" class="btnSubmit" onclick="showAlert();" /></form></div></div>';	
		} else {
			document.getElementById(z).style.visibility = 'hidden';
			document.getElementById(y).style.visibility = 'hidden';
		}
}

function singleConfirm(target,regex,msg) {
	var shortRegex = new RegExp(regex,'i');
	if (document.getElementById(target).value.search(shortRegex) != -1) return true;
	else {
		alert(msg);
		return false;
	}
}

function confirmOperation(x,y,z) {
	z = typeof(z) != 'undefined' ? z : '';
	if (confirm(z) == false) return false;
	x.option.value = y;
	x.submit();
}

function callAjax(variable,target,script,header,type) {
	if (typeof(type) == 'undefined' || type == '') type = 'POST';
	if (typeof(target) == 'undefined' || target == '') target = 'content';
	if (typeof(script) == 'undefined' || script == '') script = root+'query.php';
	if (typeof(vphp) == 'undefined' || vphp == '') vphp = 'vphp';
	if (typeof(header) == 'undefined' || header == '') header = 'application/x-www-form-urlencoded';
	if (document.getElementById(target)) x = document.getElementById(target);
	if (x) x.innerHTML = 'Please wait...'
	if (variable == '[object HTMLFormElement]') {
		list = new Array();
		var url = '';
		for (var i=0;i<variable.length;i++) {
			if (i < variable.length-1) opt = '&'; else opt = '';
			url += variable[i].id+'='+variable[i].value+opt;
		}
		variable = url;
	} else {
		variable = variable.replace(/amp;/gi, "");
		variable = unescape(variable);
	}
	var xmlhttp = false;
	/** Special IE only code ... */
	/*@cc_on
	  @if (@_jscript_version >= 5)
		  try {
			  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		  } catch (e) {
			  try {
				  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			  } catch (E) {
				  xmlhttp = false;
			  }
		 }
	  @else
		 xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	xmlhttp.open(type,script,true);
	xmlhttp.onreadystatechange = function () {
		if(xmlhttp.readyState == 4) {
			if (x) x.innerHTML = xmlhttp.responseText;
			var scripts = [];
			var script_sources = xmlhttp.responseText.split(/<script.*?>/);
			for (var i=1; i < script_sources.length; i++) scripts.push(script_sources[i].split(/<\/script>/)[0]);
           	for (var i=0; i<= scripts.length; i++) eval(scripts[i]);
			//showAlert('ok');
		}
	}
	xmlhttp.setRequestHeader('Content-Type',header);
	//xmlhttp.setRequestHeader('Content-Type','application/x-download');
	//xmlhttp.setRequestHeader("Content-Type","text/html; charset=utf-8");
	xmlhttp.send(variable);
	return false;
}
//Trust me, leave a space here

function Folder() {
	root = typeof(root) != 'undefined' ? root : '/';
	tray = typeof(tray) != 'undefined' ? tray : '';
	this.contain = 'content';
	this.height = 68;
	this.pass = false;
	this.type = 'fclose.png';
	this.path = '';
	this.level = 9;
	this.file = '';
	var x = document.getElementById(this.contain);
	this.href = '#';
	over = false
	Folder.prototype.display = function(name) {
		var dir = ''
		if (this.type == 'fclose.png') dir = ' class="dir"';
		name = typeof(name) != 'undefined' ? name : '';
		var y = document.createElement('div');
		
		y.innerHTML = '<div><p'+dir+'></p><span>'+name+'</span></div>';
		y.onclick = new Function( 'for(i=0;i<document.getElementById("'+this.contain+'").getElementsByTagName("div").length;i++) document.getElementById("'+this.contain+'").getElementsByTagName("div")[i].className="fclose"; this.className="fopen";' );
		y.getElementsByTagName('div')[0].onmousedown = new Function( 'this.style.opacity = 0.7; this.style.filter=\'alpha(opacity=70)\';' );
		y.getElementsByTagName('div')[0].onmouseup = new Function( 'for(i=0;i<document.getElementById(\''+this.contain+'\').getElementsByTagName(\'div\').length;i++) {document.getElementById(\''+this.contain+'\').getElementsByTagName(\'div\')[i].style.opacity = 1; document.getElementById(\''+this.contain+'\').getElementsByTagName(\'div\')[i].style.filter=\'alpha(opacity=100)\';}' );
		y.getElementsByTagName('p')[0].ondblclick = new Function( 'if (this.className == \'dir\') callAjax(\'lang='+langage+'&amp;dir='+this.path+'\',\'directory\',\''+root+'virtual/ajax.php\'); else if ("'+this.type+'" == "jpg.png" || "'+this.type+'" == "flv.png" || "'+this.type+'" == "mp3.png") dotb("","'+root+'virtual/'+this.path+this.file+'","'+this.type+'"); else window.open("'+root+'virtual/'+this.path+this.file+'","_blank");' );

		/*y.getElementsByTagName('p')[0].ondblclick = new Function( 'if (this.className == \'dir\') callAjax(\'lang='+langage+'&amp;dir='+this.path+'\',\'directory\',\''+root+'virtual/ajax.php\'); else if ("'+this.type+'" == "jpg.png") showAlert("<img src=\''+root+'virtual/'+this.path+this.file+'\'/>"); else window.open("'+root+'virtual/'+this.path+this.file+'","_blank");' );*/
		/*y.getElementsByTagName('p')[0].ondblclick = new Function( 'if (this.className == \'dir\') callAjax(\'lang='+langage+'&amp;dir='+this.path+'\',\'directory\',\''+root+'virtual/ajax.php\'); else callAjax(\'lang='+langage+'&amp;dir='+this.path+'\',\'directory\',\''+root+'virtual/'+this.path+this.file+'\',\'application/x-download\');' );*/
		y.getElementsByTagName('p')[0].onclick = new Function( 'for(i=0;i<document.getElementById(\''+this.contain+'\').getElementsByTagName(\'div\').length;i++) if (document.getElementById(\''+this.contain+'\').getElementsByTagName(\'div\')[i].getElementsByTagName(\'p\')[0].className == \'dir\') document.getElementById(\''+this.contain+'\').getElementsByTagName(\'div\')[i].getElementsByTagName(\'p\')[0].style.background=\'url('+root+'image/icon/fclose.png) top center no-repeat\'; if (this.className == \'dir\') this.style.background=\'url('+root+'image/icon/fopen.png) top center no-repeat\'; BrowserDetect.init(); if (BrowserDetect.browser == \'Explorer\') pngfix();' );
		y.style.height=this.height+'px';
		y.style.cursor='default';
		y.style.zIndex='998';
		y.onmouseover = new Function('over=true; this.style.zIndex="2000";');
		y.onmouseout = new Function('over=false; for(i=0;i<document.getElementById("'+this.contain+'").getElementsByTagName("div").length;i++) if (document.getElementById("'+this.contain+'").getElementsByTagName("div")[i] != this) document.getElementById("'+this.contain+'").getElementsByTagName("div")[i].style.zIndex="999";');
		y.className='fclose';

		y.getElementsByTagName("p")[0].style.background='url('+root+'image/icon/'+this.type+') top center no-repeat';
		x.appendChild(y);
		DragHandler.attach(y);
	}
	document.getElementsByTagName('html')[0].onclick = new Function( 'if (over==false) {for(i=0;i<document.getElementById("'+this.contain+'").getElementsByTagName("div").length;i++)  {if (document.getElementById("'+this.contain+'").getElementsByTagName(\'div\')[i].getElementsByTagName(\'p\')[0].className == "dir") { document.getElementById("'+this.contain+'").getElementsByTagName("div")[i].getElementsByTagName("p")[0].style.background="url('+root+'image/icon/fclose.png) top center no-repeat";}document.getElementById("'+this.contain+'").getElementsByTagName("div")[i].className="fclose";}}  BrowserDetect.init(); if (BrowserDetect.browser == \'Explorer\') pngfix();' );
}

//Browser detection
//BrowserDetect.browser
//BrowserDetect.version
//BrowserDetect.OS

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"
		}
	]

};

function Clickheretoprint(x) {
 x = typeof(x) != 'undefined' ? x : 'printer';
 var disp_setting="toolbar=yes,location=no,directories=yes,menubar=yes,";
     disp_setting+="scrollbars=yes,width=1024, height=768, left=100, top=25";
 var content_vlue = document.getElementById(x).innerHTML;

 var docprint=window.open("","",disp_setting);
  docprint.document.open();
  docprint.document.write('<html><head><title>Poker League</title>');
  docprint.document.write('<link rel="stylesheet" href="/'+root+'css/print.css"/></head><body onLoad="self.print()"><left>');
  docprint.document.write(content_vlue);           
  docprint.document.write('<p class="close"><a href="javascript:window.close();">Close window</p></left></body></html>');
  docprint.document.close();
  docprint.focus();
}

function tooltip (clas,msg) {
	//ie fix
	//var border = RUZEE.ShadedBorder.create({ corner:8, shadow:0,  border:2 });
	if (msg != undefined) alert(msg);
	clas = typeof(clas) != 'undefined' ? clas : 'active';
	var tips = document.getElementsByClassName(clas);
	for (i=0;i<tips.length;i++) {
		tips[i].innerHTML = '<span>'+tips[i].innerHTML+'<div class="rounded">'+tips[i].title+'</div></span>';
		tips[i].title = '';
		tips[i].getElementsByTagName('span')[0].onmouseover = new Function( 'showing(this.getElementsByTagName("div")[0]);' );
		tips[i].getElementsByTagName('span')[0].onmouseout = new Function( 'this.getElementsByTagName("div")[0].style.display="none"' );
		//border.render('round_'+i);
		var cur = tips[i].getElementsByTagName("*");
		if (clas == 'active') for (j=0;j<cur.length;j++) cur[j].style.cursor = 'pointer';
		else for (j=0;j<cur.length;j++) cur[j].style.cursor = 'help';
	}
	//Rounded('rounded', 6, 6);


	//applyRound (document.getElementById('toto'));
}

function showing(tips,off,ofy) {
	//alert(tips.className);
	var offX = 26;
	var offY = -14;
 	off = typeof(off) != 'undefined' ? off : 0;
 	ofy = typeof(ofy) != 'undefined' ? ofy : 0;
	tips.style.display = 'block';
	function mouseY(evt) {if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;}
	function mouseX(evt) {if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;}
	function follow(evt) {if (document.getElementById) {var obj = tips.style; obj.visibility = 'visible';
	obj.left = (parseInt(mouseX(evt))+offX) - off +'px';
	if (off == 0) obj.top = (parseInt(mouseY(evt))+offY) - ofy + 'px'; else obj.top = offY + ofy + 'px';}}
	document.onmousemove = follow;
}

function fade(y,z) {
	y = typeof(y) != 'undefined' ? y : 'alertContent';
	z = typeof(z) != 'undefined' ? z : 'alertBox';
		if (document.getElementById(z).style.visibility == 'hidden') {
			document.getElementById(z).style.visibility = 'visible';
			document.getElementById(y).style.visibility = 'visible';
			document.getElementById(z).style.filter = 'alpha(opacity=80)';;
			//document.getElementById(y).innerHTML = '<div id="realContent"><div>'+x+'</div><div id="messageClose"><form method="post" id="alertForm" action=""><input type="submit" value="[-X-]" /></form></div></div>';	
		} else {
			document.getElementById(z).style.visibility = 'hidden';
			document.getElementById(y).style.visibility = 'hidden';
		}
}

function resize_iframe() {
	var height=window.innerWidth;//Firefox
	if (document.body.clientHeight) {
		height=document.body.clientHeight;//IE
	}
	//resize the iframe according to the size of the
	//window (all these should be on the same line)
	document.getElementById("framed").style.height=parseInt(height-document.getElementById("framed").offsetTop-8)+"px";
}

function generateInput (x,y,z,name,target) {
	target = typeof(target) != 'undefined' ? target : 'target';
	var val;
	var list = new Array();
	var html = '';
	var num = name.length;
	for (j=0;j<num;j++) list[j] = new Array();
	if (document.getElementById(target)) {
		if (x.value < 1) document.getElementById(target).style.display = 'none';
		else document.getElementById(target).style.display = 'block';
		for (i=0;i<x.value;i++) {
			for (j=0;j<num;j++) {
				if (document.getElementById(y+j+'_'+i)) list[j].push(document.getElementById(y+j+'_'+i).value);
			}
		}
		document.getElementById(target).innerHTML = '';
	} else if (x.value > 0) {
		html = '<div class="target" id="'+target+'"><div class="generatedInp"><label></label>';
		for (j=0;j<num;j++) html += '<p>'+name[j]+'</p> ';
		html += '</div></div>'
		x.insertAdjacentHTML('afterEnd',html);
	}
	html = '';
	for (i=0;i<x.value;i++) {
		html += '<p class="generatedInp"><label>'+(i+1)+'.</label> ';
		for (j=0;j<num;j++) {
			if (list[j][i] != undefined) val = list[j][i];
			else val = '';
			html += '<input name="'+y+j+'_'+i+'" type="'+z+'" id="'+y+j+'_'+i+'" value="'+val+'" />';
		}
		html += '</p>';
	}
	if (document.getElementById(target)) document.getElementById(target).innerHTML += html;
}

function toDesc(x,y,z,w) {
	tinyMCE.get(z).setContent(document.getElementById(x+y+'_'+w).value);
}
