var totalLicences = new Array(25) ; //5 per produt
var totalUpgrade = new Array(25) ; //same as totalLicences - used to make more easy the calculation of upgrade
var unitPrice = new Array(25) ; //5 per produt
var maintenancePercent = new Array(5) ; //1 per product
var travelFee = new Array(5) ; //1 per product

initArray(totalLicences) ;
initArray(totalUpgrade) ;
initArray(unitPrice) ;
initArray(maintenancePercent) ;
initArray(travelFee) ;

function initArray(theArray)
{
	for(i=0; i<theArray.length; i++)
		theArray[i] = 0 ;
}

function addLicence(productID, maintenanceID, trainingID)
{
    ++totalLicences[productID] ;
    updateDisplayForProduct(productID) ;
		updateTotalForProduct(productID,maintenanceID,trainingID) ;
}
function removeLicence(productID, maintenanceID, isUpgrade)
{
    if(totalLicences[productID] <=0)
        return ;
        
    --totalLicences[productID] ;
    updateDisplayForProduct(productID) ;
	if(isUpgrade == true)
		updateTotalForUpgrade(productID) ;
	else
		updateTotalForProduct(productID,maintenanceID, -1) ;   
}
function updateDisplayForProduct(productID)
{
    var v = document.getElementById('licence_product_'+productID) ;
    if(!v)
        return ;
    v.innerHTML = totalLicences[productID] ;
}
function updateTotalForProduct(productID, maintenanceID, trainingID)
{
    var v = document.getElementById('total_product_'+productID) ;
    if(!v)
        return ;
    v.innerHTML = (formatCurrency(totalLicences[productID] * unitPrice[productID])) + ' ' + currency ;
	if (totalLicences[productID] == 0 && maintenanceID != -1)
	{
		var cb = document.getElementById("cb_" + maintenanceID) ;
		if (cb)
		{
			totalLicences[maintenanceID] = 0 ;
        	unitPrice[maintenanceID] = 0 ;
			cb.checked = false ;
        	var v = document.getElementById('total_product_'+maintenanceID) ;
        	v.innerHTML = '0 ' + currency ;
		}
	}
	if(totalLicences[productID] != 0 && maintenanceID != -1)
		updateMaintenanceTotal(maintenanceID, productID) ;
    updateGlobalTotal() ;

	//04.05.10 ChL Check de la combo Training 
	if(totalLicences[productID] > 0 && trainingID != -1) {
		var cb = document.getElementById("cb_" + trainingID) ;
		if (cb.checked == false)
			cb.click() ;
		}
}
function updateTotalForUpgrade(upgradeID)
{
	var v = document.getElementById('total_product_'+upgradeID) ;
    if(!v)
        return ;
	var v2 = document.getElementById('sel_'+upgradeID) ;
	if(!v2)
		return ;		
	var from = v2.value ;
	var curYear = new Date().getFullYear();
	
	totalUpgrade[upgradeID] = (unitPrice[upgradeID] * (curYear - from) * 8 / 100) * totalLicences[upgradeID] ;
	
	v.innerHTML = formatCurrency(totalUpgrade[upgradeID]) + ' ' + currency ;
	updateGlobalTotal() ;
}

function updateGlobalTotal()
{
	var h_cms = document.getElementById('commissions') ;
	var h_sbt = document.getElementById('subtotal') ;
	var v = document.getElementById('total_global') ;
  var amount = document.getElementById('total_global_hidden') ;

	if(!v)
  	return ;

  var t = 0 ;
    
  for(i=0; i<totalLicences.length; i++)
	{
		if (i != 15 && i != 16 && i != 17 && i != 18 && i != 19) //These cases are "Upgrade" options, refer to /include/product.php
        	t += totalLicences[i] * unitPrice[i] ;
		t += totalUpgrade[i] ;
	}
    
	h_sbt.innerHTML = formatCurrency(t) ;
	var cms = Math.round(t * 0.026) ; //Commissions of Telekurs
	h_cms.innerHTML = formatCurrency(cms) ;
	t += cms ;

	//02.12.10 ChL Ajout de la TVA si pays = Suisse
	var country = document.getElementById("purchase-country") ;
	if (country.value == "0")
	{
		var vat = t*0.08 ;
		t += vat ;
	}
	else
	{
		var vat = 0 ;
	}

	document.getElementById("vat").innerHTML = formatCurrency(vat) ;
	v.innerHTML = formatCurrency(t) ;
	amount.innerHTML = t ; //this hidden field contains the non formatted amount, this value will be used for Datatrans.
}

function updateMaintenanceTotal(maintenanceID, productID)
{
    var cb = document.getElementById("cb_" + maintenanceID) ;
    if(cb)
    {
		if (totalLicences[productID] != 0)
		{
        	if(cb.checked)
        	{
            	var v = document.getElementById("sel_" + maintenanceID) ;
				var years=1;
				if(v.selectedIndex==1)
					years=3;
				else
					if(v.selectedIndex==2)
						years=5;
				
				if (maintenanceID != 14) //if it's not calisto treatment
            		v = maintenancePercent[v.selectedIndex] ;
				else //Calisto treatment has 8% constant maintenance fee
					v = 8 ;
            	var t = unitPrice[productID] * totalLicences[productID] * years * v / 100;
            	totalLicences[maintenanceID] = t ;
            	unitPrice[maintenanceID] = 1;
            	v = document.getElementById('total_product_'+maintenanceID) ;
            	v.innerHTML = formatCurrency(t) + ' ' + currency ;
        	}
        	else
        	{
            	totalLicences[maintenanceID] = 0 ;
            	unitPrice[maintenanceID] = 0 ;
            	var v = document.getElementById('total_product_'+maintenanceID) ;
            	v.innerHTML = '0 ' + currency ;
        	}
		}
		else
		{
			alert('Please buy software license first...') ;
			cb.checked = false ;
		}
        
        updateGlobalTotal() ;
     }
}
function updateTrainingTotal(trainingID, baseTrainingPrice, trainingLengthInDays)
{
    var cb = document.getElementById("cb_" + trainingID) ;
    if(cb)
    {
        if(cb.checked)
        {
            var v = document.getElementById("sel_" + trainingID) ;
            var t = travelFee[v.selectedIndex] * trainingLengthInDays ;
            t += baseTrainingPrice;
            totalLicences[trainingID] = 1 ;
            unitPrice[trainingID] = t;
            v = document.getElementById('total_product_'+trainingID) ;
            v.innerHTML = formatCurrency(t) + ' ' + currency ;
        }
        else
        {
            totalLicences[trainingID] = 0 ;
            unitPrice[trainingID] = 0 ;
            var v = document.getElementById('total_product_'+trainingID) ;
            v.innerHTML = '0 ' + currency ;
        }
        updateGlobalTotal() ;
    }
}
function formatCurrency(number)
{
    var pack = Math.floor(Math.floor(number).toString().length / 3) ;
    if(Math.floor(number).toString().length % 3 == 0)
        --pack ;
    
    number = Math.floor(number).toString() ;
    
    for(i=0; i<pack; i++)
        number = number.substring(0,number.length-(4*i+3)) + "'" + number.substring(number.length-(4*i+3)) ;
      
    return number;
}
function viewHideDiv(id)
{
    var v = document.getElementById(id) ;
	//var selects = document.getElementsByTagName("SELECT") ;
	
    if(v)
        if(v.style.display == '')
		{
            v.style.display = 'none' ;
			/*for(var i = 0 ; i <selects.length;i++)
				selects[i].style.display = "" ;*/
		}
        else
		{
            v.style.display = '' ;
			/*for(var i = 0 ; i <selects.length;i++)  //Hide all SELECT tags for DIV (famous conflict between 2 tags in IE6)
				selects[i].style.display = "none" ;*/
		}
}
function serializeData()
{
    var s ;
    var first = true ;
    
    s = '' ;
    for(i=0; i<totalLicences.length; i++)
    {
        if(first)
            first = false ;
        else
            s += "," ;
        s += totalLicences[i] ;
    }

    var v = document.getElementById('h_totalLicences') ;
    v.value = s ;
    
    s = '' ;
    first = true ;
    for(i=0; i<unitPrice.length; i++)
    {
        if(first)
            first = false ;
        else
            s += "," ;
        s += unitPrice[i] ;
    }

    v = document.getElementById('h_unitPrices') ;
    v.value = s ;
	
		s = '' ;
    first = true ;
    for(i=0; i<totalUpgrade.length; i++)
    {
        if(first)
            first = false ;
        else
            s += "," ;
        s += totalUpgrade[i] ;
    }

		//02.12.10 ChL Ajout de la TVA si pays = Suisse
		var country = document.getElementById("purchase-country") ;
		if (country.value == "0")
		{
			var vat = s*0.08
			s += vat ;
		}
		

    v = document.getElementById('h_totalUpgrade') ;
    v.value = s ;
	
	//Affecter le param¨¨tre cach¨¦ du formulaire 'h_amount' pour le passer apr¨¨s ¨¤ datatrans.
	var t = document.getElementById('total_global_hidden') ;
	var hp = document.getElementById('h_amount') ;
	var total = parseInt(t.innerHTML) ;
	hp.value = total * 100 ;
    
	if (total == 0)
	{
		alert("Please choose at least one product...") ;
		return false ;
	}
	
    return true ;
}

function fmsubmit()
{
	var frm = document.forms.fmdt;
	frm.submit(); 	
}
