/************************************************************************************
@ Author : Nicolas Castelli
@ Mail : nicolas.castelli2@gmail.com
@ Date of creation : 2008-01-01
@ Filename : prototype.js
@ Use : Javascript Bibliothèque de fonctions générales
************************************************************************************/

/************************************************************************/
/***********************  | VARIABLES GLOBALES|  ************************/
/************************************************************************/

//Variable gloable pour préciser si on teste en local ou pas
var localVersion = 0;
//Variable globale pour débuggage
var debug = 0;

/************************************************************************/
/***********************  | FONCTIONS GLOBALES|  ************************/
/************************************************************************/

//Pour simplifier l'appel à la fonction  getElementById()
function $(id) { return document.getElementById(id); }

//Pour simplifier l'appel de validation d'un formulaire et l'envoi des donnees saisies
function submitForm(id) { $(id).submit(); }

//Fonction trouvée sur : http://forum.topflood.com/flood-site/getparent-javascript-3842.html
//Pour récupérer la première balise "parentTagName" d'un élément
function getParent(element, parentTagName)
{
 if ( !element )
 	return null;
 else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
 	return element;
 else
 	return getParent(element.parentNode, parentTagName);
}

//Effectue la comparaison suivante : "value" est-il "operator" par rapport à "compValue" ?
//"Operator" pouvant être "=; >; <; >=; <="
function doComparison(value, operator, compValue)
{
	var z = 0;
	var val = parseInt(compValue);
	//Si value n'est pas un nombre, on le rend égal à 0
	if(isNaN(value))
		value = 0;
	switch(operator) {
		case "&gt;=":
		 if (value >= val)
		 	return true;
		break;
		case "&lt;=":
		 if (value <= val)
		 	return true;
		break;
		case "=":
		 if (value == val)
		 	return true;
		break;
		case "&gt;":
		 if (value > val)
		 	return true;
		break;
		case "&lt;":
		 if (value < val)
		 	return true;
		break;
		case ">=":
		 if (value >= val)
		 	return true;
		break;
		case "<=":
		 if (value <= val)
		 	return true;
		break;
		case ">":
		 if (value > val)
		 	return true;
		break;
		case "<":
		 if (value < val)
		 	return true;
		break;
		default:
			return false;
		break;
	}
}

//Pour inverser un tableau
function invertArray(arr)  {
	var newArr = new Array();
	//On recopie en inversant
	for(var i=0; i< arr.length; i++)
	{
		newArr[i] = arr[arr.length-1-i];
	}
	//On ecrase le tableau de base
	for(var i=0; i<newArr.length; i++)
	{
		arr[i] = newArr[i];
	}
}

//Pour supprimer un élément d'un tableau
function deleteFromArray(arr, indice) {
	for(var i = indice; i < arr.length-1; i++)
	{
		arr[i] = arr[i+1];
	}
	arr.pop();
}


//Insère une nouvelle option, à la suite des autres, à une combo-box
var insertOption = function(id, elmtVal) {
	  var elSel = $(id);
	  if (elSel.selectedIndex >= 0)
	  {
	    var elOptNew = document.createElement('option');
	    elOptNew.text = elmtVal;
	    elOptNew.value = elmtVal;
	    elOptNew.label = elmtVal;
	    var elOptOld = elSel.options[elSel.selectedIndex+1];
	    try {
	      elSel.add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
	    }
	    catch(ex) {
	      elSel.add(elOptNew, elSel.selectedIndex); // IE only
	    }
	  }
}

//Pour lancer la sauvegarde du deck
function launchSave()
{
	var deckName = $("saveBoxDeckName").value;
	//Si un nom de deck a été saisi, on valide
	if(deckName && deckName != "")
	{
		$("hdDeckName").value = deckName;
		submitForm('formDeck');
	}
}

//Pour lancer l'export du deck
function launchExport()
{
	var items = new Array('exportMTGO', 'exportApp', 'exportMWS', 'exportOCTGN');
	var item = "";
	//Valeur de l'indice sélectionné
	var iItem = -1;
	for(var i=0; i < items.length; i++)
	{
		item = $(items[i]);
		if(item.checked)
		{
			iItem = i;
			break;
		}
	}
	//Si un item a été sélectionné, on valide
	if(iItem >= 0)
	{
		$("hdDeckExportFormat").value = $(items[iItem]).value;
		submitForm('formDeck');
	}
}

/******************************  | COOKIE |  ***************************/
/* La fonction readCookie retourne la valeur du cookie demandé, en utilisant la
fonction getCookieVal.
Si ce cookie n'existe pas, la fonction retourne la valeur null. */

//Lit le cookie "nom"
function readCookie(cookieName)
{
	var arg = cookieName + "=";
	var aLen = arg.length;
	var cLen = document.cookie.length;
	var i = 0;
	while (i < cLen)
	{
		var j = i + aLen;
		if ( document.cookie.substring(i, j) == arg )
			return getCookieVal(j);
		i = document.cookie.indexOf(" ",i)+1;
		if (i == 0)
			break;
	}
	return null;
}

//Retourne le contenu d'un cookie
function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}


/************************************************************************/
/****************************  | TRASH |  *******************************/
/************************************************************************/

