// JavaScript Document

var labels     = new Array();
var serv       = new Array(); //services array
var lbl_prof   = new Array(); //profile array label
var prof_data  = new Array();
var html_data  = new Array();

//language options
var lang_en  = 1;
var lang_nor = 2;
var lang_pt  = 3; //for test purpose

//currencies
var NOK  = 1; //Coroa Norueguesa
var EURO = 2;
var USD  = 3;
var RS   = 4;

var currency = EURO; //sets the current currency

var curr_lang = lang_en; //sets the current language of calculator



//fills the labels language
labels[lang_en]  = new Array("Profile", "Component", "Memory (RAM)", "CPU", "Storage", "Service Agreement",
							 "# Components", " MB (256MB - 8192MB)", " Cores (0,2 - 8 Cores)", " GB (10GB - 250GB)", 
							 " Description", " Total per Month: ","USD");
 
labels[lang_nor] = new Array("Profil", "Komponent", "Minne (RAM)", "CPU", "Lagring", "Driftsavtale", 
							 "# Komponenter", " MB (256MB - 8192MB)", " Kjerner (0,2 - 8 kjerner)", " GB (10GB - 250GB)",
							 " Beskrivelse", " Totalt per mÃ¥ned: ", "NOK");

labels[lang_pt]  = new Array("Perfil", "Componente", "Memória (RAM)", "Processador", "Armazenamento", "Contrato de Serviço",
							 "No. de Componentes", " MB (256MB - 8192MB)", " Núcleos (0,2 - 8 Núcleos)", " GB (10GB - 250GB)", 
							 " Descrição", " Total Mensal: ", "R$");


//setting services agreement
serv[lang_en] = new Array( new Array("No Service agreement","1"), new Array("Developer service agreement (9-16)","2"),
						   new Array("Basic service agreement (6-23)","3"), new Array("Enterprise service agreement (24/7)","4") );		

serv[lang_nor] = new Array( new Array("Ingen driftsavtale","1"), new Array("Driftsavtale - Utvikling (9-16)","2"),
						   new Array("Driftsavtale - Basis (6-23)","3"), new Array("Driftsavtale - Enterprise (24/7)","4") );

serv[lang_pt] = new Array( new Array("Sem acordo de Serviço","1"), new Array("Servico de Desenvolvedor (9-16)","2"),
						   new Array("Serviço de Desenvolvedor (6-23)","3"), new Array("Serviço de Empreendimento (24/7)","4") );	

//sets profile labels
lbl_prof[lang_en] = new Array("Custom", "Database server - Developer", "Database server - Small", "Database server - Medium", "Database server - Large",
							  "Webserver - Developer", "Webserver - Small", "Webserver - Medium", "Webserver - Large",
							  "Applications Server - Developer", "Applications Server - Small", "Applications Server - Medium", "Applications Server - Large");

lbl_prof[lang_nor] = new Array("Tilpasset", "Databaseserver - Utvikling", "Databaseserver - Liten", "Databaseserver - Medium", "Databaseserver - Stor",
							  "Webserver - Utvikling", "Webserver - Liten", "Webserver - Medium", "Webserver - Stor",
							  "Applikasjonsserver - Utvikling", "Applikasjonsserver - Liten", "Applikasjonsserver - Medium", "Applikasjonsserver - Stor");

lbl_prof[lang_pt] = new Array("Personalizado", "Serv. de BD para Desenv.", "Servidor de BD Pequeno", "Servidor de DB Médio", "Servidor de DB para Armaz.",
							  "Servidor WEB Desnvolvedor", "Servidor WEB Pequeno", "Servidor WEB Médio", "Servidor WEB para Armaz.",
							  "Servidor de App. Desenvolvedor", "Servidor de App. Pequeno", "Servidor de App. Médio", "Servidor de App. Armaz.");



//set profile data
prof_data[0] = new Array("Custom","0","0","0");

prof_data[1] = new Array("Developer database server","0.2","256","10");
prof_data[2] = new Array("Liten database server","0.5","512","10");
prof_data[3] = new Array("Medium database server","1","1024","20");
prof_data[4] = new Array("Stor database server","2","3024","50");


prof_data[5] = new Array("Developer webserver","0.2","256","10");
prof_data[6] = new Array("Liten webserver","0.3","512","10");
prof_data[7] = new Array("Medium webserver","0.7","1024","20");
prof_data[8] = new Array("Stor webserver","1","2048","50");

prof_data[9] = new Array("Developer app. server","0.2","512","10");
prof_data[10] = new Array("Liten app. server","0.5","1024","10");
prof_data[11] = new Array("Medium app. server","1","3096","20");
prof_data[12] = new Array("Stor app. server","4","8192","50");



//component prices
var val_mem  = 0; //indexes values to take price matrix
var val_cpu  = 1;
var val_stor = 2;

var comp_price = new Array();
//values converted from: http://www.valoronline.com.br/CMACurrencyConverter.aspx

comp_price[NOK]  = new Array(350,400,100); // 256 MB  0,1 core  10 GB
comp_price[EURO] = new Array(43.53,49.75,12.43);
comp_price[USD] = new Array(66.58,76.09,19.02);
comp_price[RS] = new Array(119.76,136.87,34.21);


//sets service values
var serv_val = new Array();
/*
  indexes values: 
    1-No Service agreement					2- Developer service agreement (9 - 16)
	3-Developer service agreement (6 - 23)	4- Enterprise service agreement (24/7)
*/

serv_val[NOK]  = new Array(0, 1000, 2000, 5000);
serv_val[EURO] = new Array(0, 124.39, 248.79, 621.98);
serv_val[USD]  = new Array(0, 190.23, 380.46, 951.16);
serv_val[RS]   = new Array(0, 342.18, 684.37, 1710.93);


//sets html text_boxes
html_data[2] = "<input name='txtMem' type='text' class='txt-table-black' id='txtMem' onkeyup='valInt(this); checkRangeMem(this);calcMemUnits();' size='5' maxlength='4'/>";
html_data[3] = "<input name='txtCPU' type='text' class='txt-table-black' id='txtCPU' onkeyup='valFloat(this);checkRangeCPU(this); calcCPUUnits();' size='5' maxlength='3' />";
html_data[4] = "<input name='txtStor' type='text' class='txt-table-black' id='txtStor' onkeyup='valInt(this);checkRangeStorage(this);calcStorageUnits();' size='5' maxlength='3'/>";

var num_label = 11;

function renderLayout()
{
	var oTable = document.getElementById("table_calc");
	var oRows  = oTable.getElementsByTagName("TR");
	var oCells = oRows[1].getElementsByTagName("TD");
	prefix = "";
	str = "";
	
	for (var i=0; i < oRows.length; i++)
	{
		if ( i <= 5)
		{
	   	   oRows[i].cells[0].innerHTML = labels[curr_lang][i];
		   
		   //starts line 2 to line 4 filling cel 2
		   if (i >= 1 && i <= 4)
		    {
			   if ( i == 1 )
			   {
			      oRows[i].cells[1].innerHTML = labels[curr_lang][i+5];
                              oRows[i].cells[2].innerHTML = labels[curr_lang][10]; //description label
			   }
			   else
			     oRows[i].cells[1].innerHTML = html_data[i] + labels[curr_lang][i+5];
			}
		 }
	}
	
	
	//set combo agreement
	document.getElementById("div_combo_agree").innerHTML = getAgreementCombo();
	
	//set combo profile
	document.getElementById("div_combo_prof").innerHTML = getProfileCombo();
	
	//set total label
	document.getElementById("div_label_total").innerHTML = labels[curr_lang][11];
		
	if (currency == EURO)
         prefix = "EURO";
   
        if (currency == RS)
           prefix = "R$";

        if (currency == USD)
           prefix = "USD $";
   
        if (currency == NOK)
           prefix = "NOK";
	   
	 //set total value
	document.getElementById("div_val_total").innerHTML = prefix + " 0";

	
	var cmb = document.getElementById("cmb_profile");
	
	document.getElementById("prof").innerHTML = cmb[cmb.selectedIndex].text;
	document.getElementById("txtMem").value = mem = parseInt(prof_data[cmb.selectedIndex][2]);
	document.getElementById("txtCPU").value = cpu = parseFloat(prof_data[cmb.selectedIndex][1]);
	document.getElementById("txtStor").value = storage = parseInt(prof_data[cmb.selectedIndex][3]);
	
	//sets value of agreement
	cmb = document.getElementById("cmb_agree");
	val_agree = parseFloat(serv_val[currency][cmb.selectedIndex]);
        document.getElementById("serv").innerHTML = cmb[cmb.selectedIndex].text;
	
	//perform a value checking
	calcCPUUnits();
	calcMemUnits();
	calcStorageUnits();
	
}


//mounts a combo box of agreement data
function getProfileCombo()
{
  var html = "";
  
  html += "<select name='cmb_profile' id='cmb_profile' class='txt-table-black' onchange='getDataComboProf(this);'>";
  
  for ( var i=0; i < lbl_prof[curr_lang].length; i++)
     {  
        if ( i == 0) //select 1st item
	        html += "<option selected='selected'>" + lbl_prof[curr_lang][i] + "</option>";
	    else
		    html += "<option>" + lbl_prof[curr_lang][i] + "</option>";
	 }
  
  html += "</select>";
  
  return html;
}

//mounts a combo box of agreement data
function getAgreementCombo()
{
  var html = "";
  
  html += "<select name='cmb_agreement' id='cmb_agree' class='txt-table-black' onchange='getDataComboAgree(this);'>";
  for ( var i=0; i < serv[curr_lang].length; i++)
     {  
        if ( i == 0) //select 1st item
	        html += "<option value='" + serv[curr_lang][i][1] +"' selected='selected'>" + serv[curr_lang][i][0] + "</option>";
	    else
                html += "<option value='" + serv[curr_lang][i][1] +"'>" + serv[curr_lang][i][0] + "</option>";
	 }
  html += "</select>";
  
  return html;
}


function setLang(cmb)
{
   var val = cmb.value;
   
   curr_lang = val;
   renderLayout();
}



function setCurrency(cmb)
{
   var val = cmb[cmb.selectedIndex].value;
   
   currency = val;
   calcTotalPerMonth(); //calculate and refreshes total
}


function getReport()
{

   var text = "";
   
   text += labels[curr_lang][0] + ": " +  document.getElementById("prof").innerHTML + "\n\n";
   
   text += labels[curr_lang][2] + " ["+ document.getElementById("txtMem").value +" MB]: " +  document.getElementById("mem").innerHTML + "\n";
   text += labels[curr_lang][3] + " ["+document.getElementById("txtCPU").value+"]: " +  document.getElementById("core").innerHTML  + "\n";
   text += labels[curr_lang][4] + " ["+document.getElementById("txtStor").value+" GB]: " +  document.getElementById("stor").innerHTML  + "\n";
   text += labels[curr_lang][5] + ": " +  document.getElementById("serv").innerHTML  + "\n";

   text += "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --\n";
   text += "      "+labels[curr_lang][11]+document.getElementById("div_val_total").innerHTML
   
   //document.getElementById("text_body").value = text;
   document.getElementById("note_description").value = text;
   document.getElementById("note_title").value = "LPAR data";
   return text;
}
