function convert(sValue,sDataType)
{
	switch(sDataType)
	{
	case "int":
		return parseInt(sValue,10);
	case "preu":
		if(sValue=='gratis')
		{
			sValue=0;
		}
		if(sValue=='?')
		{
			sValue=Infinity;
		}
		return parseFloat(sValue);
	case "float":
		return parseFloat(sValue);
	case "date":
		return new Date(Date.parse(sValue));
	default:
		return sValue.toString();
	}
}
function cambiar_color_over(celda){
		celda.style.backgroundColor="#F96C00"
}
function cambiar_color_out(celda){
	celda.style.backgroundColor="#FF8800"
}
function canviar_dia_mes(sData)
{
	var dia="";
	var mes="";
	var any="";
	var i=0;
	for (x=0;x<sData.length;x++)
	{
		
		if(sData.charAt(x)=='/')
		{
			i++;
		}
		else
		{
			switch (i)
			{
				case 0:
					
					dia=dia+sData.charAt(x);
					break;
				case 1:
					mes=mes+sData.charAt(x);
					break;
				case 2:
					any=any+sData.charAt(x);
					break;
			}	
		}
	}
	return dia+"/"+mes+"/"+any;
}
function generateCompareTRs(icol,sDataType)
{
	return function comparteTRs(oTR1,oTR2)
	{
		if(sDataType=='date')
		{	
			var vValue1=convert(canviar_dia_mes(oTR1.cells[icol].firstChild.nodeValue),sDataType);
			var vValue2=convert(canviar_dia_mes(oTR2.cells[icol].firstChild.nodeValue),sDataType);
			
		}
		else
		{
			var vValue1=convert(oTR1.cells[icol].firstChild.nodeValue,sDataType);
			var vValue2=convert(oTR2.cells[icol].firstChild.nodeValue,sDataType);
		}
		if (sDataType=='date')
		{	
			if (vValue1.getTime()>vValue2.getTime())
			{
				return -1;
			}
			else if(vValue1.getTime()<vValue2.getTime())
			{
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else
		{
			if (vValue1>vValue2)
			{
				return -1;
			}
			else if(vValue1<vValue2)
			{
				return 1;
			}
			else
			{
				return 0;
			}
		}
	};
}
function simbols_up_down(casella)
{
	var texth=casella.innerHTML;
	if(casella.innerHTML.indexOf(' <img src="/img/downarrow.jpg">')==-1)	//No te up
	{
		if (casella.innerHTML.indexOf('  <img src="/img/uparrow.jpg">')==-1)
		{
			casella.innerHTML=texth+' <img src="/img/downarrow.jpg">';
		}
		else
		{
			casella.innerHTML=texth.substr(0,casella.innerHTML.indexOf('  <img src="/img/uparrow.jpg">'))+' <img src="/img/downarrow.jpg">';
		}
	}
	else
	{
		if(casella.innerHTML.indexOf('  <img src="/img/uparrow.jpg">')==-1)	//te up pero no down 
		{
			casella.innerHTML=texth.substr(0,casella.innerHTML.indexOf(' <img src="/img/downarrow.jpg">'))+'  <img src="/img/uparrow.jpg">';
		}
	}
}
function netejar_simbols(headers)
{
	var texth;
	for (var x=0;x<headers.length;x++)
	{	texth=headers[x].innerHTML;
		if(headers[x].innerHTML.indexOf(' <img src="/img/downarrow.jpg">')!=-1)
		{
			headers[x].innerHTML=texth.substr(0,headers[x].innerHTML.indexOf(' <img src="/img/downarrow.jpg">'));
		}
		if(headers[x].innerHTML.indexOf(' <img src="/img/uparrow.jpg">')!=-1)
		{
			headers[x].innerHTML=texth.substr(0,headers[x].innerHTML.indexOf(' <img src="/img/uparrow.jpg">'));
		}
	}
}
function sorTable(sTableId,iCol,sDataType)
{
	var oTable=document.getElementById(sTableId);
	var oTBody=oTable.tBodies[0];
	var headers=oTable.getElementsByTagName('th');
	var texth=headers[iCol].innerHTML;	
	simbols_up_down(headers[iCol]);
	var colDataRows =oTBody.rows;
	var aTRs=new Array;	
	
	for (var i=0;i<colDataRows.length;i++)
	{
		
		aTRs[i]=colDataRows[i];
	}
	if(oTable.sortCol==null)
	{
		aTRs.sort(generateCompareTRs(iCol,sDataType));
	}
	if (oTable.sortCol==iCol)
	{
		aTRs.reverse();
	}
	else
	{
		
		netejar_simbols(headers);
		simbols_up_down(headers[iCol]);
		aTRs.sort(generateCompareTRs(iCol,sDataType));
	}	
	var oFragment=document.createDocumentFragment();
	for (var i=0; i<aTRs.length;i++)
	{
		oFragment.appendChild(aTRs[i]);
	}
	oTBody.appendChild(oFragment);
	oTable.sortCol=iCol;
}
