/**************************************************
         Copyright Notice
**************************************************/

// the brightness array has 4 values for each record:
	 		 //daytime
			 //nighttime (non-reflective)
			 //nighttime (engineering grade reflective material)
			 //nighttime (prismatic grade reflective material)
var brightness = new Array(11);
brightness[0] = new Array(0,0,0,0); //no selection
brightness[1] = new Array(100,0,100,500); //white
brightness[2] = new Array(90,0,60,310); //yellow
brightness[3] = new Array(60,0,25,200); //orange
brightness[4] = new Array(51,0,15,75); //green
brightness[5] = new Array(30,0,20,100); //red
brightness[6] = new Array(21,0,-1,50); //purple
brightness[7] = new Array(11,0,10,35); //blue
brightness[8] = new Array(0,0,30,-1); //black
brightness[9] = new Array(270,0,-1,450); //fluorescent yellow
brightness[10] = new Array(180,0,-1,400); //fluorescent orange

var outlineContrastSetting = false;
var outlineReflectSetting = false;
var outlineContrast = 0;
var outlineReflect = 0;
var scoreDay = 0;
var scoreNight = 0; 
var scoreTotal = 0;

var colourStd = new Array(11);
var colourEng = new Array(8);
var colourPrism = new Array(10);
var colourBlank = new Array(2);
var colourSelect = new Array("colourBlank","colourStd","colourEng","colourPrism");

colourBlank[0] = new Array("0","Select Colour");
colourBlank[1] = new Array("0","Select Reflectivity First...");

colourStd[0] = new Array("0","Select Colour");
colourStd[1] = new Array("1","White");
colourStd[2] = new Array("2","Yellow");
colourStd[3] = new Array("3","Orange");
colourStd[4] = new Array("4","Green");
colourStd[5] = new Array("5","Red");
colourStd[6] = new Array("6","Purple");
colourStd[7] = new Array("7","Blue");
colourStd[8] = new Array("8","Black");
colourStd[9] = new Array("9","Fluorescent Yellow");
colourStd[10] = new Array("10","Fluorescent Orange");

colourEng[0] = new Array("0","Select Colour");
colourEng[1] = new Array("1","White");
colourEng[2] = new Array("2","Yellow");
colourEng[3] = new Array("3","Orange");
colourEng[4] = new Array("4","Green");
colourEng[5] = new Array("5","Red");
colourEng[6] = new Array("7","Blue");
colourEng[7] = new Array("8","Black");


colourPrism[0] = new Array("0","Select Colour");
colourPrism[1] = new Array("1","White");
colourPrism[2] = new Array("2","Yellow");
colourPrism[3] = new Array("3","Orange");
colourPrism[4] = new Array("4","Green");
colourPrism[5] = new Array("5","Red");
colourPrism[6] = new Array("6","Purple");
colourPrism[7] = new Array("7","Blue");
colourPrism[8] = new Array("9","Fluorescent Yellow");
colourPrism[9] = new Array("10","Fluorescent Orange");

function fillSecond()
{
 var srcName = frmEvconQuick.reflectSecond.value*1;
 var srcArray = eval(colourSelect[srcName]);
 with(frmEvconQuick.colourSecond)
 {
	srcArray[0][1] = "Select Second Vehicle Colour";
	options.length = 0;
	for(i=0; i<srcArray.length; i++)
	{
	 newOption = options.length;
	 options[newOption] = new Option(srcArray[i][1]);
	 options[newOption].value = srcArray[i][0];
	}
	options[0].selected = true;
 }
 scoreClear();
 document.refresh;
}

function fillThird()
{
 var srcName = frmEvconQuick.reflectThird.value*1;
 var srcArray = eval(colourSelect[srcName]);
 with(frmEvconQuick.colourThird)
 {
	srcArray[0][1] = "Select Third Vehicle Colour     ";
	options.length = 0;
	for(i=0; i<srcArray.length; i++)
	{
	 newOption = options.length;
	 options[newOption] = new Option(srcArray[i][1]);
	 options[newOption].value = srcArray[i][0];
	}
	options[0].selected = true;
 }
scoreClear();
 document.refresh;
}

function fillCover()
{
 var coverSecond = frmEvconQuick.coverSecond.value*1;
 var coverMax = Math.round((1-coverSecond)*100);
 var srcArray = new Array();
 var nextPct = 0;
 
 srcArray[0] = new Array("0","Select Coverage Area");
 srcArray[1] = new Array("0","0%");
 nextPct = 5;

 while(nextPct<=coverMax)
 {
	srcArray[srcArray.length] = new Array(nextPct/100,nextPct+"%");
	if(nextPct==5)
	{
	 nextPct=10;
	}else
	{
	 nextPct=nextPct + 10;
	}
 }
 if(coverMax==95)
 {
 	srcArray[srcArray.length] = new Array(.95,"95%");
 }
 
 with(frmEvconQuick.coverThird)
 {
	options.length = 0;
	for(i=0; i<srcArray.length; i++)
	{
	 newOption = options.length;
	 options[newOption] = new Option(srcArray[i][1]);
	 options[newOption].value = srcArray[i][0];
	}
	options[0].selected = true;
 }
 scoreClear();
 document.refresh;
}


function scoreClear()
{
	scoreDay=0;
	scoreNight=0;
	scoreTotal=0;
 with(frmEvconQuick)
 {
 	scoreDay.value="";
	scoreNight.value="";
	scoreTotal.value="";

 }
}

function calcEVCON()
{
 if(validEVCON()==false)
 {
 	alert("At least the first vehicle colour must be set.");
 }else
 {
// daytime brightness values always use element 0
 var day = 0;

// nighttime values use elements 1, 2, or 3 depending on
// the type of reflectivity available
 var nightSecond = frmEvconQuick.reflectSecond.value*1;
 var nightThird = frmEvconQuick.reflectThird.value*1; 
 var colour1 = frmEvconQuick.colourBody.value*1;
 var colour2 = frmEvconQuick.colourSecond.value*1;
 var colour3 = frmEvconQuick.colourThird.value*1;
 var coverSecond = frmEvconQuick.coverSecond.value*1;
 var coverThird = frmEvconQuick.coverThird.value*1;
 var coverFirst = 1-(coverSecond+coverThird); 
 
 
 
 
var brightDay1=brightness[colour1][day];
var brightDay2=brightness[colour2][day];
var brightDay3=brightness[colour3][day];
var brightNight2=brightness[colour2][nightSecond];
var brightNight3=brightness[colour3][nightThird];


var contrast = indexContrast(coverFirst,coverSecond,coverThird,colour1,colour2,brightDay1,brightDay2,brightDay3);
var reflect = indexReflect(brightNight2,brightNight3);
var target = indexTarget(contrast,coverSecond,coverThird);

 scoreDay=Math.round(((brightDay1*coverFirst+brightDay2*coverSecond+brightDay3*coverThird)*2)+contrast+target);
 
 if(brightNight2!=0 || brightNight3!=0)
 {
  scoreNight=Math.round((brightNight2*coverSecond+brightNight3*coverThird)+reflect+target);
 }
 
 scoreTotal = scoreDay + scoreNight;

 //frmEvconQuick.scoreDay.value=padL("".concat(scoreDay),"".concat(scoreTotal).length);
 //frmEvconQuick.scoreNight.value=padL("".concat(scoreNight),"".concat(scoreTotal).length);
 //frmEvconQuick.scoreTotal.value=padL("".concat(scoreTotal),"".concat(scoreTotal).length);
 frmEvconQuick.scoreDay.value=scoreDay;
 frmEvconQuick.scoreNight.value=scoreNight;
 frmEvconQuick.scoreTotal.value=scoreTotal;
} // end if for validity check
}

function validEVCON()
{
 scoreClear();
 with(frmEvconQuick)
 {
 	var vals = "";
	vals = colourBody.value;
	//vals = vals.concat(colourBody.value + colourSecond.value + colourThird.value);
	//vals = vals.concat(reflectSecond.value + reflectThird.value);
	//vals = vals.concat(coverSecond.value + coverThird.value);
	if(vals.search("-",vals)==-1)
	{
	 return(true);
	}else
	{
	 return(false);
	}
 }
}

function setContrast()
{
 outlineContrastSetting = !outlineContrastSetting;
 scoreClear();
}

function setReflect()
{
 outlineReflectSetting = !outlineReflectSetting;
 scoreClear();
}

function resetContrastReflect(cov1,cov2,cov3,col2,col3)
{
 outlineContrastSetting=false;
 outlineReflectSetting=false;
}

function indexContrast(cov1,cov2,cov3,col2,col3,bright1,bright2,bright3)
{
var contrastIndex = 0;

var contrastA = 0;
var contrastB = 0;


if(cov1==1 || cov2==1 || cov3==1 || (col2==0 && col2==0))
{
 contrastIndex=0;
}else
{
 contrastA=Math.max(cov1,Math.max(cov2,cov3));
 if(contrastA==cov1)
 {
 
 	contrastA=bright1;
  contrastB=Math.max(cov2,cov3);
	if(contrastB==cov2)
	{
	 contrastB=bright2;
	}else
	{
	 contrastB=bright3;
	}
 }else
 {
 	if(contrastA==cov2)
	{
	 contrastA=bright2;
	 contrastB=Math.max(cov1,cov3);
	 if(contrastB==cov1)
	 {
	 	contrastB=bright1;
	 }else
	 {
	 	contrastB=bright3;
	 }
	}else
	{
	 contrastA=bright3;
	 contrastB=Math.max(cov1,cov2);
	 if(contrastB==cov1)
	 {
	 	contrastB=bright1;
	 }else
	 {
	 	contrastB=bright2;
	 }
	}
 }
  contrastIndex=Math.round(Math.abs(contrastA-contrastB));
 if(contrastIndex!=0)
 {
 	// the outline is either contrasted or not
 	outlineContrast = 0;
 	if(outlineContrastSetting==true)
 	{
 	 outlineContrast = 25;
 	}
 	contrastIndex=contrastIndex+outlineContrast;
 }
}
return(contrastIndex);
}

function indexReflect(bright2,bright3)
{
 var reflectIndex = 0;
 var reflectA = 0;
 var reflectB = 0;
 reflectIndex=Math.round((Math.max(bright2,bright3)/10));
 if(reflectIndex!=0)
 {
  // the outline is either reflective or not
  outlineReflect = 0;
  if(outlineReflectSetting==true)
  {
 	 outlineReflect = 25;
  }
  reflectIndex=reflectIndex+outlineReflect
 }
 return(reflectIndex);
}

function indexTarget(cont,cov2,cov3)
{
 var targetIndex = 0;

 if(cont!=0)
 {
  targetIndex=(cov2+cov3)/.025;
 }
 return(targetIndex);
}

function padL(val,len)
{
 var rtn = val;
 if(val.length<len)
 {
 	rtn = stringBuild("_",len-val.length).concat(val);
 }
	return(rtn);
}

function stringBuild(character,count)
{
 var str = "";

 for(i=0;i<count;i++)
 {
 	str=str.concat(character);
 }
 return(str);
}