﻿    //Guarda o recupera las formulas de las cookies
    
    var formulasAnteriores = new Array();
	var cont = 0; 
	
	function serializaFormula(miFor) {
		str = "[=[" + miFor.nombre + "][";
            for(n=0;n<miFor.listaIngredientes.length;n++)
            {
                str += miFor.listaIngredientes[n].id + "," + miFor.listaIngredientes[n].peso + "," + miFor.listaIngredientes[n].sap + ",";
            }
        str += "][" + miFor.sobreEngrasado + "," + miFor.concentracion + "," + miFor.tipoAlcali + "][" + miFor.notas.replace(/\n/g,"¼") + "]=]";
		return str;
	}


    function guardaCookie(){
        miFormula.nombre = NombreFormula();    
         if(miFormula.nombre != null && miFormula.nombre != ""){
			chorizo = serializaFormula(miFormula);
			setCookie(miFormula.nombre,chorizo,3653); 
			borra();
		}
    }
	

    function leeCookie(){
		var nombres = new Array();
		num = 0; cont = 0;
		todo = unescape(document.cookie);
		inicio = 0; fin=0;
		while (fin<todo.length && inicio!=2){
			inicio = todo.indexOf ("[=[",fin)+3;
			if (inicio!=2) {
			fin = todo.indexOf ("]",inicio);
			nombres[num] = todo.substring(inicio,fin);
			fin = todo.indexOf ("]=]",fin);
			num++;}
		}
		for (nf=0;nf<nombres.length;nf++){
			leeFormula(nombres[nf]);
			}
	}
	
	function leeFormula(nomFormula){
		
        //Lee las formulas anteriores
        str = getCookie(nomFormula); 
       inicio=0;fin=str.length-1
       //Busca el nombre de la formula
			inicio +=3;
            fin = str.indexOf("]",inicio);
            nombre = str.substring(inicio, fin);
            
            //Busca la relación de ingredientes
            inicio = fin+2;
            fin = str.indexOf("]",inicio);
            valores = str.substring(inicio, fin-1);
            ingred = valores.split(",")
            
			//Busca los atributos de la fórmula
            inicio = fin+2;
            fin = str.indexOf("]",inicio);
            datos = str.substring(inicio, fin);
			atributos = datos.split(",");
            
			//Busca los comentarios
            inicio = fin+2;
            fin = str.indexOf("]=]",inicio);
            comentarios = str.substring(inicio, fin).replace(/¼/g,"\n");
			
			//alert ("nombre: " + nombre + "\nvalores: " + valores + "\ndatos: " + datos + "\ncomentarios: " + comentarios);
			
			fin +=3;
			inicio = fin;
			
			//Calcula en número de inredientes en función del número de parámetros
            numIngred = ingred.length / 3
            
			
            //Crea una fórmula a partir de los últimos parámetros
            formulasAnteriores[cont] = new Formula(atributos[0],atributos[1],atributos[2], comentarios)
            formulasAnteriores[cont].nombre = nombre
            
            //Crea los ingredientes 
            for(ni=0; ni<numIngred; ni++){
                nuevoIngr = new Ingrediente(ingred[ni*3],ingred[ni*3+1],ingred[ni*3+2])
                // Y los añade a la fórmula
                addIngr(formulasAnteriores[cont], ni, nuevoIngr)}
				
            cont++; 
			
    }
	
    function importa(){
        //Lee la formulas del recuadro inferior
        str = txChivato.value;
        
        inicio=0;fin=str.length-1
        //Busca el nombre de la formula
        fin = str.indexOf("=",inicio)
        nombre = str.substring(inicio, fin);
        
        //Busca la relación de ingredientes
        inicio = fin+1;
        fin = str.indexOf(";",inicio);
        if(fin==-1){fin=str.length;}
        valores = str.substring(inicio, fin);
        ingred = valores.split("¬")
        
        //Calcula en número de inredientes en función del número de parámetros
        numIngred =(ingred.length - 4) / 3
        num = numIngred * 3
        
        //Crea una fórmula a partir de los últimos parámetros
        impFormula = new Formula(ingred[num], ingred[num+1], ingred[num+2], ingred[num+3].replace(/__/g,"\n"))
        impFormula.nombre = nombre
        
        //Crea los ingredientes a partir de los otros parámetros tomados de tres en tres
        for(ni=0; ni<numIngred; ni++){
            nuevoIngr = new Ingrediente(ingred[ni*3],ingred[ni*3+1],ingred[ni*3+2])
            // Y los añade a la fórmula
            addIngr(impFormula, ni, nuevoIngr)}
    
        cambiaFormula(impFormula)
    }

    function exporta(){
        var str=""
        nombre = NombreFormula();    
        if(nombre=="null"){
            return false}
        else{
            str = nombre + "="
            }

        for(n=0;n<miFormula.listaIngredientes.length;n++)
        {
            if(miFormula.listaIngredientes[n].id != 0){
            str += miFormula.listaIngredientes[n].id + "¬" + miFormula.listaIngredientes[n].peso + "¬" + miFormula.listaIngredientes[n].sap + "¬"}
        }
        str += miFormula.sobreEngrasado + "¬" + miFormula.concentracion + "¬" + miFormula.tipoAlcali + "¬" + miFormula.notas
        
       txChivato.value=str
    }
	
    function cookiesAllowed() {
		setCookie('checkCookie', 'test', 1);
		if (getCookie('checkCookie')) {
			deleteCookie('checkCookie');
			return true;
		}
		return false;
    }

    function setCookie(name,value,expires, options) {
		if (options===undefined) { options = {}; }
		if ( expires ) {
			var expires_date = new Date();
			expires_date.setDate(expires_date.getDate() + expires)
		}
		document.cookie = name+'='+escape( value ) +
		(( expires ) ? ';expires='+expires_date.toGMTString() : '' ) +
		(( options.path ) ? ';path=' + options.path : '' ) +
		(( options.domain ) ? ';domain=' + options.domain : '' ) +
		(( options.secure ) ? ';secure' : '' );
    }

    function getCookie( name ) {
		var start = document.cookie.indexOf( name + "=" );
		var len = start + name.length + 1;
		if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
			return null;
		}
		if ( start == -1 ) return null;
		var end = document.cookie.indexOf( ';', len );
		if ( end == -1 ) end = document.cookie.length;
		return unescape( document.cookie.substring( len, end ) );
    }

    function deleteCookie( name, path, domain ) {
		if ( getCookie( name ) ) document.cookie = name + '=' +
		(( path ) ? ';path=' + path : '') +
		(( domain ) ? ';domain=' + domain : '' ) +
		';expires=Thu, 01-Jan-1970 00:00:01 GMT';
    } 
	
    function clone(myObj)
    {
	    chiva("clone")
	    if(typeof(myObj) != 'object') return myObj;
	    if(myObj == null) return myObj;
        chiva("Es object")
	    var myNewObj = new Object();

	    for(var i in myObj)
		    myNewObj[i] = clone(myObj[i]);
            chiva(i)
	    return myNewObj;
    }

