// JavaScript Document
// En el que definimos funciones para establecer, recuperar y borrar cookies.

/**
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [diasParaExpirar]  dias para que la cookie expire
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
 */
function setCookie(name, value, diasParaExpirar, path, domain, secure)
{	
	//expires lo vamos a calcular sumando a la fecha de hoy, los diasParaExpirar que vengan como parametro
	if(diasParaExpirar) {
		today = new Date();
		fechaExpiracion = new Date(today.getTime() + diasParaExpirar * 24 * 60 * 60 * 1000);
	}
	
    document.cookie= name + "=" + escape(value) +
        ((diasParaExpirar) ? "; expires=" + fechaExpiracion.toUTCString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

/**
 * Deletes the specified cookie.
 *
 * name      name of the cookie
 * [path]    path of the cookie (must be same as path used to create cookie)
 * [domain]  domain of the cookie (must be same as domain used to create cookie)
 */
function deleteCookie(name, path, domain)
{
    if (getCookie(name))
    {
        document.cookie = name + "=" + 
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}


/*

* Devuelve el valor de la variable especificada de la queryString, o undefined si no tiene valor o no existe la variable.
*
* variable	nombre de la variable que queremos recoger
*/

function getQueryVariable(variable) {
	//obtengo la query
	var queryString = window.location.search;
	//quito la interrogacion de la queryString
	queryString = queryString.substr(1);
	//ahora, divido la queryString en cada uno de los pares variable=valor que tenga
	var paresVariableValor = queryString.split("&");
	//ahora, por cada para variable=valor, extraigo la variable por un lado, y el valor por otro y los almaceno en una array
	var variables = new Array();
	for (i=0;i<paresVariableValor.length;i++) {
		tmp = paresVariableValor[i].split("=");
		//el array tmp incluira dos valores. El 0 sera la variable y el 1 el valor
		variables[tmp[0]] = tmp[1];
	}
	//ahora tengo una array asociativa con las variables de la query. solo tengo que devolver el valor que se corresponda al indice pasado como parametro de la funcion
	return (variables[variable]);
}

/* -------------------------------------------------------------------------------------------------------
-------------------------- FUNCIONES CREADAS PARA LOS FORMULARIOS DE PRODUCTOS Y CONTACTENOS --------------
---------------------------------------------------------------------------------------------------------- */

//busca en las cookies por las variables nombre, email, telefono y si estan, las muestra en los campos del formulario correspondientes
function cookiesToForm(){
	//si existe la cookie nombre, y ademas hay un campo nombre en el documento
	//pues mostramos el valor de la cookie en ese campo del formulario
	if(getCookie('nombre') && document.forms[0].nombre){
		document.forms[0].nombre.value = getCookie('nombre');
	}
	//hacemos lo mismo con el campo email
	if(getCookie('email') && document.forms[0].email){
		document.forms[0].email.value = getCookie('email');
	}
	//y con el campo telefono
	if(getCookie('telefono') && document.forms[0].telefono){
		document.forms[0].telefono.value = getCookie('telefono');
	}
	//y con los demas
	if(getCookie('poblacion') && document.forms[0].poblacion){
		document.forms[0].poblacion.value = getCookie('poblacion');
	}

	if(getCookie('provincia') && document.forms[0].provincia){
		document.forms[0].provincia.value = getCookie('provincia');
	}
	
	if(getCookie('pais') && document.forms[0].pais){
		document.forms[0].pais.value = getCookie('pais');
	}
}


//funcion que coge el nombre, email, telefono introducidos por el usuario en el form,
//y los guarda como cookies
function formToCookies(){
	//como esta funcion sera llamada despues de la validacion del formulario,
	//no hay que hacer ninguna comprobacion, porque se entiende que los datos son validos
	
	//establecemos el nombre, con el valor del campo, que expire a los 30 dias, y que el path sea la raiz,
	//para que la cookie sea visible en todo el site
	setCookie('nombre',document.forms[0].nombre.value, '30', '/');
	setCookie('email',document.forms[0].email.value, '30', '/');
	setCookie('telefono',document.forms[0].telefono.value, '30', '/');
	//estos datos solo estan en el formulario contactenos, asi que los aņado a las cookies solo si existen
	if(document.forms[0].poblacion) setCookie('poblacion',document.forms[0].poblacion.value, '30', '/');
	if(document.forms[0].provincia) setCookie('provincia',document.forms[0].provincia.value, '30', '/');
	if(document.forms[0].pais) setCookie('pais',document.forms[0].pais.value, '30', '/');
	
}


/* ---------------------------------------------------------------------------
-------------------------- FUNCIONES CREADAS PARA PRESUPUESTOS --------------
------------------------------------------------------------------------------ */

//busca en las cookies por las variables poblacion, provincia y pais, y si estan las aņade al formulario.
//el nombre, el email y el telefono no lo aņadimos automaticamente al form de presupuestos, ya que podria haber un error
//al sobreescribirse los datos del usuario pasados como parametro GET desde el correo, por unos nuevos valores que el usuario
//hubiera introducido posteriormente a los que se introdujeron cuando se envio el correo de presupuesto.
function cookiesToFormSoloDireccion(){
	//por eso, hacemos lo siguiente: los datos nombre, email y telefono solo los cogemos de las cookies si no hay una
	//variable equivalente en la query. Para comprobar esto, utilizamos la funcion getQueryVariable() definida mas arriba por mi
	
	//si existe la cookie nombre y el campo de form nombre y (la variable nombre no existe o es igual a cadena vacia)
	//entonces, asignamos el valor de la cookie al campo del form.
	if(getCookie('nombre') && document.forms[0].nombre && (!getQueryVariable('nombre') || getQueryVariable('nombre') == "")){
		document.forms[0].nombre.value = getCookie('nombre');
	}
	//hacemos lo mismo con el campo email
	if(getCookie('email') && document.forms[0].email && (!getQueryVariable('email') || getQueryVariable('email') == "")){
		document.forms[0].email.value = getCookie('email');
	}
	//y con el campo telefono
	if(getCookie('telefono') && document.forms[0].telefono && (!getQueryVariable('telefono') || getQueryVariable('telefono') == "")){
		document.forms[0].telefono.value = getCookie('telefono');
	}
	
	
	//si existe la cookie poblacion, y ademas hay un campo poblacion en el documento
	//pues mostramos el valor de la cookie en ese campo del formulario. Hacemos lo mismo con las otros dos campos
	if(getCookie('poblacion') && document.forms[0].poblacion){
		document.forms[0].poblacion.value = getCookie('poblacion');
	}

	if(getCookie('provincia') && document.forms[0].provincia){
		document.forms[0].provincia.value = getCookie('provincia');
	}
	
	if(getCookie('pais') && document.forms[0].pais){
		document.forms[0].pais.value = getCookie('pais');
	}
}





