function Calc(){
//===1GB capacity/units===
var HoursSurf_Daily_1GB=2;  //==2 hours==
var EmailsSend_Daily_1GB=2400;  //==2400 mails==
var EmailsReceive_Daily_1GB=2400;  //==2400 mails==
var PicsReceive_Weekly_1GB=120;   //==120 pics==
var MusicTracksDownload_Weekly_1GB=60;   //==60 trcks==
var MinutesVideoWatch_Wekly_1GB=100;   //==100 minutes==
var MoviesDownload_Monthly_1GB=1; //==1 movie==
var HoursRadioListen_Daily_1GB=1;  //==1 hour==

//===read vals===
var HoursSurf_Daily=Validate(document.CalcFrm.HoursSurf_Daily);
var EmailsSend_Daily=Validate(document.CalcFrm.EmailsSend_Daily);
var EmailsReceive_Daily=Validate(document.CalcFrm.EmailsReceive_Daily);
var PicsReceive_Weekly=Validate(document.CalcFrm.PicsReceive_Weekly);
var MusicTracksDownload_Weekly=Validate(document.CalcFrm.MusicTracksDownload_Weekly);
var MinutesVideoWatch_Wekly=Validate(document.CalcFrm.MinutesVideoWatch_Wekly);
var MoviesDownload_Monthly=Validate(document.CalcFrm.MoviesDownload_Monthly);
var HoursRadioListen_Daily=Validate(document.CalcFrm.HoursRadioListen_Daily);

//==calculate total usage===
var GB_Usage=0
GB_Usage=GB_Usage+((1/HoursSurf_Daily_1GB)*HoursSurf_Daily)
GB_Usage=GB_Usage+((1/EmailsSend_Daily_1GB)*EmailsSend_Daily)
GB_Usage=GB_Usage+((1/EmailsReceive_Daily_1GB)*EmailsReceive_Daily)
GB_Usage=GB_Usage+((1/PicsReceive_Weekly_1GB)*PicsReceive_Weekly)
GB_Usage=GB_Usage+((1/MusicTracksDownload_Weekly_1GB)*MusicTracksDownload_Weekly)
GB_Usage=GB_Usage+((1/MinutesVideoWatch_Wekly_1GB)*MinutesVideoWatch_Wekly)
GB_Usage=GB_Usage+((1/MoviesDownload_Monthly_1GB)*MoviesDownload_Monthly)
GB_Usage=GB_Usage+((1/HoursRadioListen_Daily_1GB)*HoursRadioListen_Daily)
document.all["totGB"].innerHTML=roundNumber(GB_Usage);
if(GB_Usage>0){
document.all["TR_totGB"].style.display="inline";
}else{
document.all["TR_totGB"].style.display="none";
}

//==get prices==
var Prices = new Array(8);

Prices[0] = new Array(3); 
Prices[0][0]= "Naims_PAYG";      //=ISP name=
Prices[0][1]= getNaims_PAYG("UPTO8MB",GB_Usage);  //=ISP price=
Prices[0][2]= "ThisISPinfo";   //=ISP info table id (in ISP_Packages.asp); It won't be displayd if it's empty=
Prices[0][3]= true;  //=true:display; false:don't display;=
	
Prices[1] = new Array(3);  
Prices[1][0]= "Naims_3GB";
Prices[1][1]= getNaims_3GB("UPTO8MB",GB_Usage);
Prices[1][2]= "Naims_3GB";
Prices[1][3]= true;  

Prices[2] = new Array(3);  
Prices[2][0]= "Naims_30GB";
Prices[2][1]= getNaims_30GB("UPTO8MB",GB_Usage);
Prices[2][2]= "Naims_30GB";
Prices[2][3]= true;  

Prices[3] = new Array(3); 
Prices[3][0]= "PlusNet Premier";
Prices[3][1]= getPlusNet_Premier("512kb",GB_Usage);
Prices[3][2]= "PlusNet_Premier";
Prices[3][3]= true;  

Prices[4] = new Array(3);  
Prices[4][0]= "Tiscali";
Prices[4][1]= getTiscali("512kb",GB_Usage);
Prices[4][2]= "Tiscali";
Prices[4][3]= true;  

Prices[5] = new Array(3);  
Prices[5][0]= "Demon";
Prices[5][1]= getDemon("512kb",GB_Usage);
Prices[5][2]= "Demon";
Prices[5][3]= true;  

Prices[6] = new Array(3);  
Prices[6][0]= "Wanadoo Std";
Prices[6][1]= getWanadoo_Std("512kb",GB_Usage);
Prices[6][2]= "Wanadoo_Std";
Prices[6][3]= true;  

Prices[7] = new Array(3);  
Prices[7][0]= "Wanadoo Active";
Prices[7][1]= getWanadoo_Active("512kb",GB_Usage);
Prices[7][2]= "Wanadoo_Active";
Prices[7][3]= true;  

Prices[8] = new Array(3);  
Prices[8][0]= "Wanadoo Heavy";
Prices[8][1]= getWanadoo_Heavy("512kb",GB_Usage);
Prices[8][2]= "Wanadoo_Heavy";
Prices[8][3]= true;  

//==sort prices==
myBubbleSort(Prices,Prices.length);

//==display prices==
var s1=""
   for (var i=0; i<=(Prices.length-1); i++){
	if (Prices[i][3]==true && Prices[i][0]!=""){  //==Only if ISP has name
			var display=false;
			if(isNaN(Prices[i][1])==true){ //==display if it's got string Ex:-account terminated...etc===
			 display=true;
			}else if(Prices[i][1]>This_ISP_Price){  //==display only if expensive than thisCompany/Naims_PAYG==
			 display=true;			
			}else if(Prices[i][0]==This_ISP_Name){  //==display only if expensive than thisCompany/Naims_PAYG==
			 display=true;			
			}

			if(display==true){
			//+++++++++
				s1=s1+"<div style='padding: 5px 0px 0px 0px; border-bottom: 1px solid #EBEBEB;'>";
				
				if(Prices[i][2]!=""){  
				s1=s1+"<a href='#' onmouseover=\"showISP('"+Prices[i][2]+"')\">";
				s1=s1+Prices[i][0];
				s1=s1+"</a>"
				}else{
				s1=s1+Prices[i][0];
				}
				
				s1=s1+": <span style='font-size: 8pt; font-family: Verdana; color:red; font-weight:bold;'>";
			 
				if(isNaN(Prices[i][1])==false){
				s1=s1+"£";
				}
				s1=s1+Prices[i][1];
				s1=s1+"</span></div>";
			//+++++++++
			}
	}	
}
document.all["Span2"].innerHTML=s1
}


//==vars to set==
var This_ISP_Name="Naims_PAYG"  //==name of ISP;==
var This_ISP_Price="14.99"  //==512kb==

function Validate(obj){
	var tmp1;
	tmp1=parseFloat(obj.value);
	if(isNaN(tmp1)==true) {
	tmp1=0;
	}
	if(tmp1<0) {
	tmp1=0;
	}
	
	//==some specific validations==
	if(obj.name=="HoursSurf_Daily" && tmp1>24){
	tmp1=24;
	obj.value=tmp1;
	}
	if(obj.name=="HoursRadioListen_Daily" && tmp1>24){
	tmp1=24;
	obj.value=tmp1;
	}
	if(obj.name=="MinutesVideoWatch_Wekly" && tmp1>10080){
	tmp1=10080;
	obj.value=tmp1;
	}
	//=============================
return tmp1;
}

function OrganiseValue(obj){
obj.value=Validate(obj);
}

function roundNumber(num1) {
	var rlength = 2; // The number of decimal places to round to
	var newnumber = Math.round(num1*Math.pow(10,rlength))/Math.pow(10,rlength);
return newnumber;
}

function myBubbleSort(arrayName,length) {
    for (var i=0; i<(length-1); i++)
        for (var j=i+1; j<length; j++)
            if (arrayName[j][1] < arrayName[i][1]) {
                var dummy0 = arrayName[i][0];
                var dummy1 = arrayName[i][1];				
                var dummy2 = arrayName[i][2];								
                var dummy3 = arrayName[i][3];												
                arrayName[i][0] = arrayName[j][0];
                arrayName[i][1] = arrayName[j][1];				
                arrayName[i][2] = arrayName[j][2];								
                arrayName[i][3] = arrayName[j][3];												
                arrayName[j][0] = dummy0;
                arrayName[j][1] = dummy1;
                arrayName[j][2] = dummy2;								
                arrayName[j][3] = dummy3;												
            }
}

function showISP(ISP){
hideAllISP();										
document.all[ISP].style.display="inline";

document.all["ISP_Package"].style.display="inline";	//==parent table==		
}

function hideAllISP(){

	document.all["Naims_PAYG"].style.display="none";		
	document.all["Naims_3GB"].style.display="none";		
	document.all["Naims_30GB"].style.display="none";		
	document.all["PlusNet_Premier"].style.display="none";		
	document.all["Tiscali"].style.display="none";		
	document.all["Demon"].style.display="none";		
	document.all["Wanadoo_Std"].style.display="none";		
	document.all["Wanadoo_Active"].style.display="none";		
	document.all["Wanadoo_Heavy"].style.display="none";		

	document.all["ISP_Package"].style.display="none";	//==parent table==		
	
}

//===members for ISP prices========
function getNaims(speed,usage){  //==This_ISP==
	var FinalBill=0;
switch (speed) { 
   case "512kb" : 
	  FinalBill=This_ISP_Price;   //==512kb monthly price==
      break; 
   case "1mb" : 
      break; 
   case "2mb" : 
      break; 
} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getNaims_3GB(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=17.99;  //==512kb monthly price==
			  FinalBill=FinalBill+Price;
			  if(usage >= 6){
				  FinalBill=FinalBill+12;	  
			  }else if(usage >= 3){
				  FinalBill=FinalBill+8;	  	  
			  } else if(usage >= 1){
				  FinalBill=FinalBill+4;	  	  
			  }
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getNaims_30GB(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=14.99; //==512kb monthly price==
			  var usageLimit=1  //==in GB==
			  FinalBill=FinalBill+Price;
			  
			  //==charging £1.75 for each extra 1GB==
			  if(usage > usageLimit){  
				  FinalBill=FinalBill+((usage-usageLimit)*1.75);	  
			  }
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getPlusNet_Premier(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=21.99; //==512kb monthly price==
			  var usageLimit=30  //==GB==
			  FinalBill=FinalBill+Price;
			  //==charging £1.75 for each extra 1GB==
			  if(usage > usageLimit){  
				  FinalBill=FinalBill+((usage-usageLimit)*1.75);	  
			  }
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getDemon(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=19.99; //==512kb monthly price==
			  //==no cap==
			  FinalBill=FinalBill+Price;
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getWanadoo_Std(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=17.99; //==512kb monthly price==
			  var usageLimit=2  //==GB==
			  FinalBill=FinalBill+Price;
			  //==moving user automatically to Active type from Std if he exceeds usageLimit==
			  if(usage > usageLimit){  
				  FinalBill=22.99;  //==22.99 is 512bb price of Active User option==  
			  }
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getWanadoo_Active(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=22.99; //==512kb monthly price==
			  var usageLimit=6  //==GB==
			  FinalBill=FinalBill+Price;
			  //==moving user automatically to Heavy type from Active if he exceeds usageLimit==
			  if(usage > usageLimit){  
				  FinalBill=27.99;  //==22.99 is 512bb price of Heavy User option==  
			  }
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
function getWanadoo_Heavy(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=27.99; //==512kb monthly price==
			  var usageLimit=30  //==GB==
			  FinalBill=FinalBill+Price;
			  //==user acc is terminated if he exceeds usageLimit==
			  if(usage > usageLimit){  
				  FinalBill="Account Terminated";  //==22.99 is 512bb price of Heavy User option==  
				  return FinalBill;
			  }else{
				  return roundNumber(FinalBill);	
			  }			  
			  
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
}
//++++++++++++++++++++++++++++
function getTiscali(speed,usage){
	var FinalBill=0;
	switch (speed) {
	   case "512kb" : 
		   	  var Price=17.99; //==512kb monthly price==
			  var usageLimit=30  //==GB==
			  FinalBill=FinalBill+Price;
			  //==charging £1.50 for each extra 1GB==
			  if(usage > usageLimit){  
				  FinalBill=FinalBill+((usage-usageLimit)*1.50);	  
			  }
	      break; 
	   case "1mb" : 
	      break; 
	   case "2mb" : 
	      break; 
	} 
return roundNumber(FinalBill);	
}
//++++++++++++++++++++++++++++
