﻿/**
 *	TRIM, LTRIM i RTRIM
 *
 *	Si no es passa res com a segon paràmetre, es farà un trim dels seguents simbols:
 *		" " (ASCII 32 (0x20)), an ordinary space.
 *		"\t" (ASCII 9 (0x09)), a tab.
 *		"\n" (ASCII 10 (0x0A)), a new line (line feed).
 *		"\r" (ASCII 13 (0x0D)), a carriage return.
 *		"\0" (ASCII 0 (0x00)), the NUL-byte.
 *		"\x0B" (ASCII 11 (0x0B)), a vertical tab.
 */
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}



/*
 * Desescapa els simbols HTML
 */
function html_unescape(str)
{
	if (str.indexOf('&') == -1) return str;

	var html_enc = new Array('&amp;','&nbsp;','&lt;','&gt;','&quot;','&#039;','&euro;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;','&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&ouml;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;','&yacute;','&thorn;','&yuml;', '&lsquo;', '&rsquo;','&ldquo;', '&rdquo;','&mdash;','&ndash;','&lsaquo;','&rsaquo;','&trade;','&frac12;','&tilde;','&frac14;','&frac34;');
	var html_dec = new Array('&',' ','<','>','"','\\\'','€','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','‘','’','“','”','--','--','‹','›','™','½','˜','¼','¾');

	var n = html_dec.length;
	for (i=0; i<n; i++)
	{
		eval("str = str.replace(/"+html_enc[i]+"/g , '"+html_dec[i]+"');");
	}
	return str;
}


/*
 *	Escapa els simbols HTML
 */
function html_escape(str)
{
	var html_enc = new Array('&',' ','<','>','"','\\\'','€','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','‘','’','“','”','--','--','‹','›','™','½','˜','¼','¾');
	var html_dec = new Array('&amp;','&nbsp;','&lt;','&gt;','&quot;','&#039;','&euro;','&Agrave;','&Aacute;','&Acirc;','&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;','&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;','&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;','&otilde;','&ouml;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;','&yacute;','&thorn;','&yuml;', '&lsquo;', '&rsquo;','&ldquo;', '&rdquo;','&mdash;','&ndash;','&lsaquo;','&rsaquo;','&trade;','&frac12;','&tilde;','&frac14;','&frac34;');

	var n = html_dec.length;
	for (i=0; i<n; i++)
	{
		eval("str = str.replace(/"+html_enc[i]+"/g , '"+html_dec[i]+"');");
	}
	return str;
}


/**
 *	Elimina els tags HTML (<xxxx>)
 *
 *	@param txt(string): Text amb tags HTML
 *
 *	@return (string): Text sense tags HTML
 */
function cleanupHTML(texto)
{
	var ini = texto.indexOf("<");
	var fi = texto.indexOf(">");
	while(ini > -1 && fi > -1)
	{
		texto = texto.substr(0,ini)+" "+texto.substr(fi+1,texto.length);
		ini = texto.indexOf("<");
		fi = texto.indexOf(">");
	}
	return texto;
}


/**
 *	Elimina els tags HTML (<xxxx>)
 *
 *	@param txt(string): Text amb tags HTML
 *	@param iniTag(string): tag d'obertura (ex. <style>)
 *	@param fiTag(string): tag de tancament  (ex. </style>)
 *
 *	@return (string): Text els tags HTML ni el contingut que hi havia dintre
 */
function removeHtmlTagContent(txt, iniTag, fiTag)
{
	var ini = txt.indexOf(iniTag);
	var fi = txt.indexOf(fiTag);
	while(ini > -1 && fi > -1)
	{
		txt = txt.substr(0,ini)+" "+txt.substr(fi+fiTag.length,txt.length);
		ini = txt.indexOf(iniTag);
		fi = txt.indexOf(fiTag);
	}
	return txt;
}


/**
 *	Codifica caràcters especials (accents, ñ, ...) en codis hexadecimals per poderlos
 *	posar en un alert() de javascript
 */
function codHex(str)
{
	var spetial_chars = new Array('¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '®', '¯', '°', '±', '²', '³', '´', 'µ', '•', '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ');
	var hex_encoding  = new Array('xA1', 'xA2', 'xA3', 'xA4', 'xA5', 'xA6', 'xA7', 'xA8', 'xA9', 'xAA', 'xAB', 'xAE', 'xAF', 'xB0', 'xB1', 'xB2', 'xB3', 'xB4', 'xB5', 'xB7', 'xB8', 'xB9', 'xBA', 'xBB', 'xBC', 'xBD', 'xBE', 'xBF', 'xC0', 'xC1', 'xC2', 'xC3', 'xC4', 'xC5', 'xC6', 'xC7', 'xC8', 'xC9', 'xCA', 'xCB', 'xCC', 'xCD', 'xCE', 'xCF', 'xD0', 'xD1', 'xD2', 'xD3', 'xD4', 'xD5', 'xD6', 'xD7', 'xD8', 'xD9', 'xDA', 'xDB', 'xDC', 'xDD', 'xDE', 'xDF', 'xE0', 'xE1', 'xE2', 'xE3', 'xE4', 'xE5', 'xE6', 'xE7', 'xE8', 'xE9', 'xEA', 'xEB', 'xEC', 'xED', 'xEE', 'xEF', 'xF0', 'xF1', 'xF2', 'xF3', 'xF4', 'xF5', 'xF6', 'xF7', 'xF8', 'xF9', 'xFA', 'xFB', 'xFC', 'xFD', 'xFE', 'xFF');

	var n = spetial_chars.length;
	for (i=0; i<n; i++)
	{
		eval("str = str.replace(/"+spetial_chars[i]+"/g , '\\"+hex_encoding[i]+"');");
	}
	return str;
}



// Fa un alert decodificant tags html i canviant simbols per codificació hexadecimal
function alertSafe(str)
{
	alert(codHex(html_unescape(str)));
}

// Fa un prompt decodificant tags html i canviant simbols per codificació hexadecimal
function promptSafe(str, str2)
{
	if(typeof(str2) == "undefined") str2 = "";
	var ret = prompt(codHex(html_unescape(str)), codHex(html_unescape(str2)));
	return ret;
}

// Fa un confirm decodificant tags html i canviant simbols per codificació hexadecimal
function confirmSafe(str, str2)
{
	var ret = confirm(codHex(html_unescape(str)));
	return ret;
}

/**
 *	Converteix un número a un string amb el número de decimals i el separador desitjat
 *	Per defecte hi haurà dos decimals i el separador serà un punt
 *
 *	@param num (int / float) Número que volem amb format
 *	@param decimals (int) Número de decimals que es volem (per defecte 2)
 *	@param separador (string) Separaror dels decimals (per defecte .)
 */
function float2str(num, decimals, separador)
{
	if (decimals == undefined) decimals = 2;
	if (separador == undefined) separador = ".";

	var n = parseFloat(num);	// Ens assegurem de tenir un número

	n = n.toFixed(decimals);	// posem el número de decimals que volem, reomplint amb zeros a la dreta si es necessari

	sn = n+'';	// convertim el número a string

	sn = sn.replace(/\./, separador);	// Reemplacem el punt pel separador de decimals que volem

	return sn;
}



//************************************************
//**	DATES
//************************************************

/**
 *	Adapta una data segons l'idioma
 *
 *	@param $data (string): data amb el format yyyy-mm-dd
 *	@param $idioma (string): idioma
 */
function adaptaData(_data, idioma){
	var sdata = _data;
	// Retornem sempre el format dd-mm-yyyy
	//if (idioma == "ES"){
		arrTmp = _data.split(" ");
		sdata = "";
		for(var i=0; i<arrTmp.length; i++)
		{
			arr = arrTmp[i].split("-");
			if (arr.length != 3) {
				sdata += arrTmp[i]+" ";
				continue;
			}
			arrTmp[i] = arr[2]+"-"+arr[1]+"-"+arr[0];
			sdata += arrTmp[i]+" ";
		}
		sdata = trim(sdata);
	//}

	return sdata;
}


function writeCurrency(amount)
{
	var strAmount = amount;

	if(CURRENCY == "EUR") 		strAmount = amount+"&nbsp;&euro;";
	else if(CURRENCY == "GBP") 	strAmount = "&pound;&nbsp;"+amount;
	else if(CURRENCY == "USD") 	strAmount = "&#36;&nbsp;"+amount;
	else if(CURRENCY == "JPY") 	strAmount = amount+"&nbsp;&yen;";

	return strAmount;
}
