//DVR Calculator

var dvrID=0;
var calcID=0;
var hdSize=120;
var camCount=1;

var qualMin=4;
var qualMax=7;

var description=new Array()
description[0]="Falcon 16 Channel High Res Digital Video Recorder";
description[1]="Falcon 9 Channel High Res Digital Video Recorder";
description[2]="Single Channel DVR with Removable Hard Drive";
description[3]="4 Channel High Resolution Digital Video Recorder";
description[4]="High Resolution Compact Digital Video Recorder";
description[5]="High Performance PC Based Digital Video Recorder";
description[6]="High Performance PC Based Digital Video Recorder";
description[7]="16 Channel Digital Video Recorder";
description[8]="Falcon 9 Channel High Resolution Digital Video Recorder";
description[9]="Falcon 16 Channel High Resolution Digital Video Recorder";

var imglocation=new Array()
imglocation[0]="/img/products/thumbnail/fa-dvr16.gif";
imglocation[1]="/img/products/thumbnail/fa-dvr9.gif";
imglocation[2]="/img/products/thumbnail/fa1.gif";
imglocation[3]="/img/products/thumbnail/fa4.gif";
imglocation[4]="/img/products/thumbnail/fa1-c80.gif";
imglocation[5]="/img/products/thumbnail/fa4516.gif";
imglocation[6]="/img/products/thumbnail/fa6016.gif";
imglocation[7]="/img/products/thumbnail/pc16.gif";
imglocation[8]="/img/products/thumbnail/xd9.gif";
imglocation[9]="/img/products/thumbnail/xd16.gif";

var aryQualimg=new Array()
aryQualimg[0]="/img/qual_low.gif";
aryQualimg[1]="/img/qual_std.gif";
aryQualimg[2]="/img/qual_hi.gif";
aryQualimg[3]="/img/qual_vhi.gif";

var aryCalcimg=new Array()
aryCalcimg[0]="/img/lblHDSize.gif";
aryCalcimg[1]="/img/lblHDTics.gif";
aryCalcimg[2]="/img/lblRecDays.gif";
aryCalcimg[3]="/img/lblRecDaystics.gif";


var aryC80Qualimg=new Array(3)
for (i=0; i <3; i++)
	aryC80Qualimg[i]=new Array(3)
aryC80Qualimg[0][0]="/img/qual_c80NL.gif";
aryC80Qualimg[0][1]="/img/qual_c80NM.gif";
aryC80Qualimg[0][2]="/img/qual_c80NH.gif";
aryC80Qualimg[1][0]="/img/qual_c80HL.gif";
aryC80Qualimg[1][1]="/img/qual_c80HM.gif";
aryC80Qualimg[1][2]="/img/qual_c80HH.gif";


var aryQualityA=new Array()
aryQualityA[0]="Low";
aryQualityA[1]="Medium";
aryQualityA[2]="High";
aryQualityA[3]="Very High";

var aryQualityB=new Array()
aryQualityB[0]="Low";
aryQualityB[1]="Standard";
aryQualityB[2]="High";
aryQualityB[3]="Very High";

var aryQualMin=new Array()
aryQualMin[0]=3;
aryQualMin[1]=4;
aryQualMin[2]=7;
aryQualMin[3]=16;

var aryQualMax=new Array()
aryQualMax[0]=4;
aryQualMax[1]=7;
aryQualMax[2]=16;
aryQualMax[3]=32;

var aryQualC80Min=new Array(3)
for (i=0; i <3; i++)
	aryQualC80Min[i]=new Array(3)
aryQualC80Min[0][0]=5;
aryQualC80Min[0][1]=7;
aryQualC80Min[0][2]=10;
aryQualC80Min[1][0]=10;
aryQualC80Min[1][1]=14;
aryQualC80Min[1][2]=20;

var aryQualC80Max=new Array()
for (i=0; i <3; i++)
	aryQualC80Max[i]=new Array(3)
aryQualC80Max[0][0]=10;
aryQualC80Max[0][1]=14;
aryQualC80Max[0][2]=20;
aryQualC80Max[1][0]=20;
aryQualC80Max[1][1]=27;
aryQualC80Max[1][2]=40;

var aryIPS=new Array()
aryIPS[0]=60;
aryIPS[1]=60;
aryIPS[2]=30;
aryIPS[3]=120;
aryIPS[4]=30;
aryIPS[5]=120;
aryIPS[6]=480;
aryIPS[7]=120;
aryIPS[8]=120;
aryIPS[9]=120;

var HDSize=new Array()
HDSize[0]=80;
HDSize[1]=120;
HDSize[2]=240;
HDSize[3]=250;
HDSize[4]=500;


function DVRID_Change(){

var elList = document.getElementById("DVRID");

	dvrID = parseInt(elList.value);
	var lsObj = document.getElementById("C80res");
	if(dvrID==4) {
		lsObj.style.visibility = "visible";
		var firstList = document.getElementById("QualList");
		firstList.className = "searchInput1";
	} else {
		lsObj.style.visibility = "hidden";
		var firstList = document.getElementById("QualList");
		firstList.className = "searchInput";
	}
		
	var imgDesc = document.getElementById("dvrDesc");
	imgDesc.innerText = description[dvrID];
	var imgLoc = document.getElementById("dvrImg");
	imgLoc.src = imglocation[dvrID];
	FillCameraList();
	CamCount_Change();
	FillQualityList();
	Quality_Change();
	FillHDList();
	HardDrive_Change();
	Calculate();
}

function CamCount_Change(){
var sldSetting;

var elList = document.getElementById("CamList");
camCount = parseInt(elList.value);
IPSsldr.setMinimum(1);
var sldrMax = (Math.round(aryIPS[dvrID]/camCount) > 30) ? 30:Math.round(aryIPS[dvrID]/camCount);
IPSsldr.setMaximum(sldrMax);
sldSetting = IPSsldr.getValue();
IPSsldr.setValue((sldSetting>sldrMax) ? sldrMax:sldSetting);

Calculate();
}

function HardDrive_Change(){
var idx;
var obSlider;

var elList = document.getElementById("HDList");
hdSize = parseInt(elList.value);
switch (hdSize){
   		case 80:
			idx=50;
			break;
		case 120:
			idx=75;
			break;
		case 240:
			idx=150;
			break;
		case 250:
			idx=156;
			break;
		case 500:
			idx=312;
	} //end switch



	if(calcID==0) {
		obSlider = document.getElementById("CalcsldrVal");
		obSlider.width = idx; //(Calcsldr.getValue()*10)+27;
		obSlider.innerText = hdSize + "GB"
	}
Calculate();

}

function Quality_Change(){
var qual=0;
var qual2=0;
var elList = document.getElementById("QualList");
qual = parseInt(elList.value);
elList = document.getElementById("C80Res");
qual2 = parseInt(elList.value);

var imgQual = document.getElementById("qualImg");

if(dvrID==4) {
	imgQual.src = aryC80Qualimg[qual2][qual];
	qualMin=aryQualC80Min[qual2][qual];
	qualMax=aryQualC80Max[qual2][qual];
}
else{
	imgQual.src = aryQualimg[qual];
	qualMin=aryQualMin[qual];
	qualMax=aryQualMax[qual];
}


Calculate();

}

function CalculationType_Change(){
	var txtInner;
	var txObj,lsObj;
	var slCalc = document.getElementById("CalcSelect");
	calcID = parseInt(slCalc.value);
	
	var imgTop = document.getElementById("CalcImgTop");
	var imgBtm = document.getElementById("CalcImgBtm");
	txObj = document.getElementById("lblHDTM");
	if(calcID==0){
		imgTop.src = aryCalcimg[0];
		imgBtm.src = aryCalcimg[1];
		txObj.innerText = "Select Hard Drive Size";
		txObj=document.getElementById("CalcTableHdr");
		txObj.innerText = "Record Time";
		txObj=document.getElementById("Max1");
		txObj.innerText = "Maximum:";
		lsObj = document.getElementById("slider-2");
		lsObj.style.visibility = "hidden";
		lsObj = document.getElementById("HDList");
		lsObj.style.visibility = "visible";
		lsObj = document.getElementById("Ave1");
		lsObj.style.visibility = "visible";
		lsObj=document.getElementById("Min1");
		lsObj.style.visibility = "visible";
		
		HardDrive_Change();
		}
	else{	
		imgTop.src = aryCalcimg[2];
		imgBtm.src = aryCalcimg[3];
		txObj.innerText = "Select Record Days";
		txObj = document.getElementById("CalcTableHdr");
		txObj.innerText = "Hard Drive Size";
		txObj = document.getElementById("Max1");
		txObj.innerText = "Size";
		
		lsObj = document.getElementById("HDList");
		lsObj.style.visibility = "hidden";
		lsObj = document.getElementById("slider-2");
		lsObj.style.visibility = "visible";
		lsObj = document.getElementById("Ave1");
		lsObj.style.visibility = "hidden";
		lsObj = document.getElementById("Min1");
		lsObj.style.visibility = "hidden";
		
		
		SliderCalc_Change();
	}
	Calculate();
}


function FillCameraList(){
	var lstCam = document.getElementById("CamList");
	var nMaxCam = 0;
	switch (dvrID){
   		case 0:
			nMaxCam=16;
			break;
		case 1:
			nMaxCam=9;
			break;
		case 2:
			nMaxCam=1;
			break;
		case 3:
			nMaxCam=4;
			break;
		case 4:
			nMaxCam=1;
			break;
		case 5:
		case 6:
		case 7:
			nMaxCam=16;
			break;
		case 8:
			nMaxCam=9;
			break;
		case 9:
			nMaxCam=16;	
	} //end switch
   // remove clear the listbox
   while (lstCam.options.length!=0) 
      lstCam.options.remove(0);
   //  fill it !
   for (var m=1; m<=nMaxCam; m++) 
   {
    	var oOption = document.createElement("OPTION");
    	oOption.text=m;
       	oOption.value=m;
		if(m==1)
			oOption.selected = 1;
       	lstCam.options.add(oOption)
   }
   return true;

}

function FillQualityList(){
	var lstQual = document.getElementById("QualList");
	var	nMaxQual = 0;
	var nAB = 'A';
	switch (dvrID){
   		case 0:
			nAB='B';
			nMaxQual=4;
			break;
		case 1:
			nAB='B';
			nMaxQual=4;
			break;
		case 2:
			nAB='B';
			nMaxQual=4;
			break;
		case 3:
			nAB='B';
			nMaxQual=4;
			break;
		case 4:
			nAB='A';
			nMaxQual=3;
			break;
		case 5:
			nAB='A';
			nMaxQual=4;
			break;
		case 6:
			nAB='A';
			nMaxQual=4;
			break;
		case 7:
			nAB='A';
			nMaxQual=4;
		case 8:
			nAB='B';
			nMaxQual=4;
		case 9:
			nAB='B';
			nMaxQual=4;
		
	} //end switch
   // remove clear the listbox
   while (lstQual.options.length!=0) 
      lstQual.options.remove(0);
   //  fill it !
   for (var m=0; m<nMaxQual; m++) 
   {
    	var oOption = document.createElement("OPTION");
    	if (nAB=='A'){
			oOption.text=aryQualityA[m];
       		oOption.value=m;
		}
		else{
			oOption.text=aryQualityB[m];
       		oOption.value=m;
		}
		if(m==1)
			oOption.selected = 1;
       	lstQual.options.add(oOption)
   }
   return true;

}

function FillHDList(){
	var lstQual = document.getElementById("HDList");
	
	// remove clear the listbox
  	while (lstQual.options.length!=0) 
    lstQual.options.remove(0);
	
	switch (dvrID){
   		case 0:
		case 1:
			for (var m=0; m<5; m++) {
    			var oOption = document.createElement("OPTION");
    			oOption.text=HDSize[m];
       			oOption.value=HDSize[m];
			if(m==1)
				oOption.selected = 1;
       		lstQual.options.add(oOption)
   }
			break;
		case 2:
		case 3:
		case 7:
			var oOption = document.createElement("OPTION");
    		oOption.text=HDSize[1];
    		oOption.value=HDSize[1];
			oOption.selected = 1;
       		lstQual.options.add(oOption)
			break;
		case 4:
			var oOption = document.createElement("OPTION");
    		oOption.text=HDSize[0];
    		oOption.value=HDSize[0];
			oOption.selected = 1;
       		lstQual.options.add(oOption)
			break;
		case 5:
		case 6:
			var oOption = document.createElement("OPTION");
    		oOption.text=HDSize[3];
    		oOption.value=HDSize[3];
			oOption.selected = 1;
       		lstQual.options.add(oOption)
			break;
		case 8:
		case 9:
			for (var m=3; m<5; m++) {
    			var oOption = document.createElement("OPTION");
    			oOption.text=HDSize[m];
       			oOption.value=HDSize[m];
			if(m==1)
				oOption.selected = 1;
       		lstQual.options.add(oOption)
   			}
			
		
	} //end switch
  
}

function CalculateRecordTime(){
	var ips,ihd,hrsMin,hrsMax,hrsAve,secs,ipspc;
	var daysMin,daysMax,daysAve,lblday,lblhr;
	
	ipspc=IPSsldr.getValue();				//img per second per camera
	ips=(ipspc*camCount)>aryIPS[dvrID] ? aryIPS[dvrID]:ipspc*camCount;
	ihd=hdSize*Math.pow(10,6);						//HD size in KB		
	secs=ihd/(ips*qualMin);				//
	hrsMin=secs/3600;
	secs=ihd/(ips*qualMax);				//
	hrsMax=secs/3600;
	hrsAve=(hrsMax+hrsMin)/2;
	daysMin=Math.floor(hrsMin/24);
	hrsMin=Math.round(((hrsMin/24)-daysMin)*24);
	daysMax=Math.floor(hrsMax/24);
	hrsMax=Math.round(((hrsMax/24)-daysMax)*24);
	daysAve=Math.floor(hrsAve/24);
	hrsAve=Math.round(((hrsAve/24)-daysAve)*24);
	lblday=(daysMin==1)?"day":"days";
	lblhr=(hrsMin==1)?"hour":"hours";
	var olbl =  document.getElementById("lblRecTimeMin");
	olbl.innerText = daysMin+" " + lblday +", "+hrsMin + " " +lblhr;
	lblday=(daysMax==1)?"day":"days";
	lblhr=(hrsMax==1)?"hour":"hours";
	var olbl =  document.getElementById("lblRecTimeMax");
	olbl.innerText = daysMax+" " + lblday +", "+hrsMax + " " +lblhr;
	lblday=(daysAve==1)?"day":"days";
	lblhr=(hrsAve==1)?"hour":"hours";
	var olbl =  document.getElementById("lblRecTimeAve");
	olbl.innerText = daysAve+" " + lblday +", "+hrsAve + " " +lblhr;
	
}

function CalculateHDSize(){
	var ips,ipspc,ihd,secs,fsize;//,hrsMin,hrsMax,hrsAve,secs,ipspc;
	var daysMin,daysMax,daysAve,lblday,lblhr;
	//var  
	
	secs=Calcsldr.getValue()*86400;
	ipspc=IPSsldr.getValue();				//img per second per camera
	ips=(ipspc*camCount)>aryIPS[dvrID] ? aryIPS[dvrID]:ipspc*camCount;
	fsize=qualMin;
	ihd=ips*fsize*secs;
	var olbl =  document.getElementById("lblRecTimeMin");
	olbl.innerText = Math.ceil(ihd/Math.pow(10,6)) +" GB";
}

function Calculate(){
	var calcType=0;
	var obInput =  document.getElementById("CalcSelect");
	calcType=obInput.value;
	if (calcType==0)
		CalculateRecordTime();
	else		
		CalculateHDSize();
}

function SliderIPS_Change(){
	var obSlider;
	obSlider = document.getElementById("sldrVal");
	obSlider.width = (IPSsldr.getValue()*10)+27;
	obSlider.innerText = IPSsldr.getValue() + "-ips";
	Calculate();
}

function SliderCalc_Change(){
	var obSlider, sDesc;
	if(calcID==1) {
		obSlider = document.getElementById("CalcsldrVal");
		obSlider.width = (Calcsldr.getValue()*(300/45))+27;
		sDesc=(Calcsldr.getValue()==1) ? " day":" days";
		obSlider.innerText = Calcsldr.getValue() + sDesc;
		Calculate();
	}
}

