/**
 * @author pmedina
 */
var aloja_js = new Array();
var cupo_js = new Array();


var numberFormat = new NumberFormat(0);
numberFormat.setPlaces(2);
//numberFormat.setCurrencyValue('&euro;');
numberFormat.setCurrency(true);

function setCurrencyValue(moneda) {
    numberFormat.setCurrencyValue(moneda);
}

function setCurrencyDecimals(decimals) {
    numberFormat.setPlaces(decimals);
}

function addAllotjament (allotjamentIndex, preuInicial) {
    aloja_js[allotjamentIndex] = {};
    aloja_js[allotjamentIndex].habitacions = new Array();
    aloja_js[allotjamentIndex].preu = preuInicial;
    cupo_js[allotjamentIndex] = new Array();
}

function addHabitacio (allotjamentIndex, habNumero, preuInicial) {
    aloja_js[allotjamentIndex].habitacions[habNumero] = {};
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions = new Array();
    aloja_js[allotjamentIndex].habitacions[habNumero].preu = preuInicial;
	
}

function addOpcio (allotjamentIndex, habNumero, opcioId, preuInicial, cupo) {
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId] = {};
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].regims = new Array();
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].numRegims = 0;
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].preu = preuInicial;
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].cupo = cupo; 

    //Los cupos se guardan por identificador de habitación    
    cupo_js[allotjamentIndex][opcioId] = cupo; //opcioId es un identificador de habitación
}

function addRegim (allotjamentIndex, habNumero, opcioId, regimId, nom, preu) {
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].regims[regimId] = {};
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].regims[regimId].nom = nom;
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].regims[regimId].preu = preu;
    aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].numRegims++;
}


function selectOpcio (allotjamentIndex, habNumero) {

    celdaRegimen = document.getElementById ('celdaRegimen_' + allotjamentIndex + '_' + habNumero);
    habitacioEl  = document.getElementById ('alojamiento_' + allotjamentIndex + '_' + habNumero);
    
    opcioId = habitacioEl.options[habitacioEl.selectedIndex].value;
    var regims = aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].regims;
    var numRegims = aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].numRegims;

    // Actualitzam els regims, depenent si hi haura 1 o mes regims

    // Creem de nou tot el node "celdaRegimen"
    removeChildren(celdaRegimen);
    // Depenent del numero de regims
    if (numRegims == 1) {
        // Si nomes te un regim, cream INPUT
        // DIV
        var node1 = document.createElement('div');
        node1.className = 'cajaSingleRegimen';
        // INPUT
        var node2 = document.createElement('input');
        node2.type = 'text';
        node2.readOnly = 'true';
        for (var regimId in regims) {
            node2.value = regims[regimId].nom;
        }
        // INPUT
        var node3 = document.createElement('input');
        node3.id = 'regimen_' + allotjamentIndex + '_' + habNumero;
        node3.type = 'hidden';
        node3.name = 'regimen_' + habNumero;
        for (var regimId in regims) {
            node3.value = regimId;
        }
        // INPUT
        var node4 = document.createElement('input');
        node4.id = 'regimenText_' + allotjamentIndex + '_' + habNumero;
        node4.type = 'hidden';
        node4.name = 'regimenText_' + habNumero;
        for (var regimId in regims) {
            node4.value = regims[regimId].nom;
        }
        // INPUT
        var node5 = document.createElement('input');
        node5.id = 'regimenNom_' + allotjamentIndex + '_' + habNumero;
        node5.type = 'hidden';
        node5.name = 'regimenNom_' + habNumero;
        node5.value = '';
        // Enllacem tots els nodes
        node1.appendChild(node2);
        celdaRegimen.appendChild(node1);
        celdaRegimen.appendChild(node3);
        celdaRegimen.appendChild(node4);
        celdaRegimen.appendChild(node5);
    } else {
        // Si te mes d'un regim, cream SELECT
        // SELECT
        var node1 = document.createElement('select');
        node1.id = 'regimen_' + allotjamentIndex + '_' + habNumero;
        node1.name = 'regimen_' + habNumero;
        node1.className = 'comboRegimen';
        node1.onchange = function() {
            selectRegim(allotjamentIndex);
        };
        var i = 0;
        for (var regimId in regims) {
            node1.options[i++] = new Option(regims[regimId].nom, regimId);
        }
        // INPUT
        var node2 = document.createElement('input');
        node2.id = 'regimenNom_' + allotjamentIndex + '_' + habNumero;
        node2.type = 'hidden';
        node2.name = 'regimenNom_' + habNumero;
        node2.value = '';
        // Enllacem tots els nodes
        celdaRegimen.appendChild(node1);
        celdaRegimen.appendChild(node2);
    }

    // Recalculam els preus
    selectRegim (allotjamentIndex);
}


function setPreuOpcio (allotjamentIndex, habNumero, nouPreu) {
    //actualitzam la visualització
    var preuHabitacioEl = document.getElementById ( 'precio_' + allotjamentIndex + '_' + habNumero );
    numberFormat.setNumber(nouPreu);
    removeChildren(preuHabitacioEl);
	var p = document.createElement('div');
	p.innerHTML=numberFormat.toFormatted();	
	preuHabitacioEl.appendChild(p);
	// COnversor
	var sIdNodo = 'precio_' + allotjamentIndex + '_' + habNumero;
	conversorMultidivisa.actualizaNodoPrecio( sIdNodo, nouPreu);
}

function setPreuAllotjament (allotjamentIndex, nouPreu) {
    //actualitzam el camp input amb el nou preu de les opcions seleccionades
    var inputAllotjamentEl = document.getElementById ( 'precioInput_' + allotjamentIndex );
    inputAllotjamentEl.value = nouPreu;
 
    //actualitzam la visualització
    var preuAllotjamentEl = document.getElementById ( 'precio_' + allotjamentIndex );
    numberFormat.setNumber(nouPreu);
    removeChildren(preuAllotjamentEl);
	var p=document.createElement('div');
	p.innerHTML=numberFormat.toFormatted();	
	preuAllotjamentEl.appendChild(p);
	
    // conversor (actualizamos el precio total del nodo)
	var sIdNodoPrecioTotal = 'precioInput_' + allotjamentIndex;
	conversorMultidivisa.actualizaNodoPrecio( 'precio_'+allotjamentIndex, nouPreu);
	
	
/*  eliminamos la comision de la pagina de resultados
    if (percentatgeComissio > 0) {
        //Hem d'actualitzar la comissió d'agència
        var comissioEl = document.getElementById ( 'comision_' + allotjamentIndex );
        var comissio = ((nouPreu) * (percentatgeComissio / 100) );
        numberFormat.setNumber(comissio);
        removeChildren(comissioEl);
    	p=document.createElement('div');
    	p.innerHTML=numberFormat.toFormatted();	
    	comissioEl.appendChild(p);
    }

*/
    
}

function removeChildren( obj ){
		
	if( obj.hasChildNodes() ){
		for( var i=0; i<obj.childNodes.length; i++){
			removeChildren( obj.childNodes[i] );
		}				
		while( obj.hasChildNodes() ){
			obj.removeChild( obj.firstChild );
		}
	}
}


function selectRegim (allotjamentIndex) {

    //recalculam tots els preus
    var habitacions = aloja_js[allotjamentIndex].habitacions;
    var preu = 0.0;
    for (var habNumero in habitacions) {

        habitacioEl = document.getElementById ( 'alojamiento_' + allotjamentIndex + '_' + habNumero );
        regimEl     = document.getElementById ( 'regimen_' + allotjamentIndex + '_' + habNumero );

        // Si "habitacioEl" es SELECT, agafam .selectedIndex.value, sino el el .value
        if (habitacioEl.nodeName == "SELECT")
            opcioId = habitacioEl.options[habitacioEl.selectedIndex].value;
        else
            opcioId = habitacioEl.value;
        // Si "regimEl" es SELECT, agafam .selectedIndex.value, sino el el .value
        if (regimEl.nodeName == "SELECT")
            regimId = regimEl.options[regimEl.selectedIndex].value;
        else
            regimId = regimEl.value;

        preuHab = aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].preu + 
                  aloja_js[allotjamentIndex].habitacions[habNumero].opcions[opcioId].regims[regimId].preu;

        setPreuOpcio(allotjamentIndex, habNumero, preuHab);
        preu += preuHab;
    }
	
	
    setPreuAllotjament(allotjamentIndex, preu);
	
	

}


