// ------------------------------------------------------------------------
//  Script realizado por:
//             Carles Martínez Rius (c) '2006
// 		infoARROBAcalaix.net
//  No se permite la copia, distribución o modificación de
//  este código sin la obtención de un documento de conformidad
//  firmado por el autor. Posteriormente al citado procedimiento legal
//  será necesario indicar la fuente, y el autor del citado código en cada
//  código en el que sea utilizado.
// ------------------------------------------------------------------------

function findPosX(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
		curleft += obj.offsetLeft;
		if(!obj.offsetParent)
			break;
		obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
		curtop += obj.offsetTop;
		if(!obj.offsetParent)
			break;
		obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

function PosObj(obj, X, Y) {
	obj.style.left = X + "px";
	obj.style.top = Y + "px";
}
function TamObj(obj, W, H) {
	obj.style.height = H + "px";
	obj.style.width = W + "px";
}
function GetObjHeight(obj) {
	return parseInt(obj.style.height);
}
function GetObjWidth(obj) {
	return parseInt(obj.style.width);
}

var quadreON=false;
var pquadre;
var qposX, qposY, qsizeW, qsizeH;
var qstepX, qstepY, qstepW, qstepH;
var dialogON=false;
var cdialog_opacity, cdialog_step, cdialog_limit, cdialog, cdialog_width, cdialog_height;
var nomprod, idprod, preuprod;

function CarritoAdd(tableName, nomproducte, preu, idproducto) {
	var i=0;
	var j=0;
	var obj;
	
	if ( res==-1 ) {
		obj = document.getElementById(tableName);
	} else {
		eval("obj = document.all." + tableName);
	} //IF_ELSE
	
	if ((quadreON==true)||(dialogON==true)) { return; }

	//Troba la possició de la taula on està el producte
	qposX = findPosX(obj); qposY = findPosY(obj);

	//Estableix el nom del producte i l'ID per al quadre de diàleg i la comanda
	nomprod = nomproducte;
	idprod = idproducto;
	preuprod = preu;

	Dialog_Open();
} //end_function

function QuadreMinimitza() {

	quadreON = true;
	if ( res==-1 ) {
		pquadre = document.getElementById("DIVpquadre");
	} else {
		pquadre = document.all.DIVpquadre;
	} //IF_ELSE
	
	//posiciona el quadre...
	PosObj(pquadre, qposX, qposY);
	pquadre.style.visibility = "visible";
	
	//Calcula increments i passos
	qstepX = qposX/20; qstepY = qposY/20;
	qsizeW = 536; qsizeH = 33;
	TamObj(pquadre, qsizeW, qsizeH);
	qstepW = qsizeW/20; qstepH = qsizeH/20;
	
	//Minimitza quadre...
	QuadreMinimitza_Animacio();
}
function QuadreMinimitza_Animacio() {
		//Calcula la nova possició
		qposX = qposX - qstepX; qposY = qposY - qstepY;
		PosObj(pquadre, qposX, qposY);
		//Calcula el nou tamany
		qsizeW = qsizeW - qstepW; qsizeH = qsizeH - qstepH;
		TamObj(pquadre, qsizeW, qsizeH);
		if ( (qposX>0) && (qposY>0) && (qsizeW>0) && (qsizeH>0) ) {
			setTimeout("QuadreMinimitza_Animacio()", 40);
		} else {
			pquadre.style.visibility = "hidden";
			quadreON = false;
		} //IF
} //end_function

function Dialog_Hidden()
{
	cdialog.style.visibility = "hidden";
} //end_function

function Dialog_Appear()
{
	cdialog_opacity += cdialog_step;
	if (cdialog_opacity < cdialog_limit) {
		if (res==-1) {
			cdialog.style.opacity = cdialog_opacity;
		} else {
			cdialog.filters.alpha.opacity = cdialog_opacity;
		} //IF_ELSE
		setTimeout("Dialog_Appear()",50);
	} else {
		if (res==-1) {
			cdialog.style.opacity = 1;
		} else {
			cdialog.filters.alpha.opacity = 100;
		}
		document.frmdialog.cdialog_unidades.focus();
	} //IF_ELSE
} //end_function

function Dialog_Open()
{
	var cdialog_text;
	var fd;

	//Activa el flag del quadre
	dialogON = true;
	
	//Configura el quadre de diàleg
	if ( res==-1 ) {
		cdialog = document.getElementById("DIVcdialog"); //Localitza l'objecte del quadre de diàleg
		cdialog_text = document.getElementById("DIVcdialog_text");
	} else {
		cdialog = document.all.DIVcdialog; //Localitza l'objecte del quadre de diàleg
		cdialog_text = document.all.DIVcdialog_text;
	} //IF_ELSE

	cdialog_width = 300;
	cdialog_height = 180;

	//Set position of the dialog: center screen
	if ( res==-1 ) {
		cdialog_limit = 1;
		cdialog_opacity = 0; //opacitat inicial
		cdialog.style.opacity = cdialog_opacity;
		cdialog_step = 0.2; //passos de transparència
		cdialog.style.width = cdialog_width + "px";
		cdialog.style.height = cdialog_height + "px";
		cdialog.style.left = (window.pageXOffset + window.innerWidth/2 - cdialog_width/2)*1 + "px";
		cdialog.style.top = (window.pageYOffset + window.innerHeight/2 - cdialog_height/2)*1 + "px";
	} else {
		cdialog_limit = 100;
		cdialog_opacity = 0; //opacitat inicial
		cdialog.filters.alpha.opacity = cdialog_opacity;
		cdialog_step = 20; //passos de transparència
		cdialog.style.width = cdialog_width;
		cdialog.style.height = cdialog_height;
		cdialog.style.pixelLeft = (document.body.scrollTop + document.body.clientWidth/2 - cdialog_width/2)*1;
		cdialog.style.pixelTop = (document.body.scrollLeft + document.body.clientHeight/2 - cdialog_height/2)*1;
	} //IF_ELSE

	//Estableix el nom del producte
	cdialog_text.innerHTML = "Indique el número de unidades que desea añadir del producto <i>" + nomprod + "</i>:";

	//Restableix els controls del formulari
	fd = document.frmdialog;
	fd.cdialog_unidades.disabled = false;
	fd.btnOK.disabled = false;
	fd.btnCancel.disabled = false;
	fd.btnOK.value = "Aceptar";

	//mostra el quadre de diàleg
	cdialog.style.visibility = "visible";
	
	//Posa el valor per defecte al formulari del quadre de diàleg
	fd.cdialog_unidades.value = "1";
	
	//Coloca el reultat inicial del cost
	RecalculaTotal(1);
	
	//Mostra la transició del quadre
	Dialog_Appear();
} //end_function

function Dialog_Close()
{
	cdialog.style.visibility = "hidden";
	dialogON = false;
} //end_function

function Dialog_OK()
{
	var fd = document.frmdialog;
	var aux = fd.cdialog_unidades.value;
	if (aux.length==0) {
		alert("Por favor, indique el número de unidades que desea incluir.");
		fd.cdialog_unidades.focus();
		return;
	} //IF
	//Desactiva botons i el textbox del formulari
	fd.cdialog_unidades.disabled = true;
	fd.btnOK.disabled = true;
	fd.btnCancel.disabled = true;
	fd.btnOK.value = "Enviando...";
	//Crida a procediment AJAX
	Ajax_Open("carritolib.php?accio=prodadd&modid=" + idprod + "&ud=" + aux);
} //end_function

function RecalculaTotal(valor) {
	var aux = "";
	var obj;
	var resultado = preuprod*valor;
	if ( res==-1 ) {
		obj = document.getElementById("DIVcdialog_total");
	} else {
		obj = document.all.DIVcdialog_total;
	} //IF_ELSE
	if ( isNaN(valor) ) {
		aux = "x " + preuprod + "&euro; = 0 &euro;";
	} else {
		aux = "x " + preuprod + "&euro; = " + resultado + "&euro;";
	} //IF
	obj.innerHTML = aux;
} //end_function

//--------- AJAX ---------------------------------
var pagina_requerida;
function Ajax_Open (url)
{
	if (window.XMLHttpRequest)
	{
		// Si es Mozilla, Safari etc
		pagina_requerida = new XMLHttpRequest ();
	} else if (window.ActiveXObject) {
		// pero si es IE
		try {
			pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
		} catch (e) {
			// en caso que sea una versión antigua
			try {
				pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
			} catch (e) {
				alert("Atención! Su navegador no soporta AJAX. Por favor, actualízelo a una versión más nueva.");
			}
		} //try_catch
	} else {
		return false;
	} //IF_ELSEIF_ELSE

	pagina_requerida.onreadystatechange = function ()
	{
		// función de respuesta
		Ajax_End();
	} //end_function
	pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send
	pagina_requerida.send (null);
}

function Ajax_End() {
	//falta detenir d'alguna manera la lectura de ajax per a que no aparega l'error varies vegades...
	try {
		if (pagina_requerida.readyState == 4)
		{
			if ( pagina_requerida.status == 200 ) {
				alert(pagina_requerida.responseText);
				QuadreMinimitza();
				Dialog_Close();
			} else if (pagina_requerida.status == 404) {
				alert("Destino de datos incorrecto");
				Dialog_Close();
			} else if (pagina_requerida.status!= 404 && pagina_requerida.status!= 200) {
				alert("Error " + pagina_requerida.status + "! Por favor, inténtelo de nuevo.");
				Dialog_Close();
			} //if_elseif
		}  //if_elseif
	} catch (e) { }
} //end_function
