
 function getObj(f) {
 	this.oForm    = f;
	this.oUppht   = f.upperheight;
	this.oFont    = f.font;
	this.oUpPrice = f.price1;
	this.oLoPrice = f.price2;
	this.oLoSize  = f.lc;
	this.oDepth   = f.depth;
	this.oPhrase  = f.phrase;
	this.oPgTotal = f.sTotal;
	this.oTotal   = f.pgTotal;
	this.oMold    = f.mold;
	this.oFin     = f.finish;
	this.oTempl   = f.template; 
	this.oFace    = f.face;
	this.di       = document.images;

	return (this, resetForm(), doSwatch(), data(), doSize());
};


function data() {            //complete rewrite

 	var  depth, ucpr1,ucpr2,ucpr3,ucpr4,ucpr5,ucpr6,ucpr7,lcpr1;
	var siz = oUppht.selectedIndex; siz =(siz == -1)? 0 : siz;
	var x=(oFace.selectedIndex ==0)? 0 : 1;
	this.dStr  = dArr[x][siz];
	if(oForm.material.selectedIndex==0 && oFace.selectedIndex==0){//Flat face aluminum
		ucpr1=(oFin.selectedIndex<3)? dStr[2] : (oFin.selectedIndex==3)? dStr[2]*130/100 : dStr[2]*145/100;
	}else if(oForm.material.selectedIndex==0 && oFace.selectedIndex>0){ //round or bevel face aluminum
		ucpr1=(oFin.selectedIndex<3)? dStr[2] : (oFin.selectedIndex==3)? dStr[2]*130/100 : dStr[2]*145/100;
	}else if(oForm.material.selectedIndex>0 && oFace.selectedIndex==0){ //Flat face bronze
		ucpr1=(oFin.selectedIndex<2)? dStr[3] : (oFin.selectedIndex<4)? dStr[3]*115/100 :dStr[3]*130/100;
	}else{ //round or bevel face bronze
		ucpr1=(oFin.selectedIndex<2)? dStr[3] : (oFin.selectedIndex<4)? dStr[3]*115/100 :dStr[3]*130/100;
	};
	oUpPrice.value = fixP(ucpr1);
	oLoPrice.value = fixP(ucpr1*90/100);
	oDepth.value   = dStr[1];
	oDepth.value +='"';
	oForm.faceImg.src=oFace[oFace.selectedIndex].value;
	analysis();
 };


  function analysis() {        
	oPgTotal.value  = '0.00';	
 	var inPut      = oPhrase.value;
 	var outPut     = '';
 	var pStart       = 0;  if (oPhrase.selectionStart) {pStart=oPhrase.selectionStart;};
	var pEnd         = 0;  if (oPhrase.selectionEnd  ) {pEnd  =oPhrase.selectionEnd;};
	var pLen       = oPhrase.value.length;
 	oPhrase.value  = '';
	
 	for(var i=0; i< pLen; i++) { var x = inPut.charAt(i);
		outPut +=
 			x.match(/[A-Z]/)? updatePrice(x, 'upper_case') :
			x.match(/[0-9]/)? updatePrice(x, 'nums') :
 			x.match(/[\-\.,~']/)?  updatePrice(x, 'sm_punc') : 		
			x.match(/[\/&\!@#$%\(\)?<>\+\*\\]/)?  updatePrice(x, 'lg_punc') :
			x.match(/[;:="]/)?  updatePrice(x, 'colo_chars') :
 			x.match(/[a-z]/)? updatePrice(x, 'lower_case') : " ";
 
	};
	oPhrase.value = outPut;
	if (oPhrase.selectionStart)
	{
		oPhrase.selectionStart=pStart;
		oPhrase.selectionEnd=pEnd  ;
	};
	oTotal.value = fixP(parseFloat(oPgTotal.value));
	if(oTempl.checked) template();
 };
 

 function updatePrice(x, kind) {  

 	var subT =oPgTotal.value-0;
 	var upcP =oUpPrice.value-0;
 	var locP =oLoPrice.value-0;

 	oPgTotal.value =
 		(kind =='upper_case')? fixP(subT +upcP) :
		(kind =='nums')?  fixP(subT +upcP):
		(kind =='sm_punc')? fixP(subT +(upcP-0)/3) :
		(kind =='lg_punc')? fixP(subT +(upcP-0)) :
		(kind =='colo_chars')? fixP(subT +((upcP-0)/3)*2) :
		(kind =='extra_chars')?  fixP(subT +upcP):
		(kind =='lower_case' && locP == 0)?
		(x=x.toUpperCase(),fixP(subT +upcP)) : fixP(subT + locP);
	
	return x;        //to oPhrase.value
 };


function template(){
		var tLtrs = oPhrase.value.replace(/\s/g, "").length;
		oTotal.value = fixP((parseFloat(oTotal.value) + (4.25 * tLtrs)));
};



                                        //dyn size
 function doSize() {
	
	var x = (oFace.selectedIndex >0)? 1 : 0;
		var daLen = dArr[x].length;
		for (var j =(oUppht.options.length -1); j >0; j--) { oUppht.options[j] = null; };
			for(var k=0; k< daLen; k++) {
			oUppht.options[k] = new Option(dArr[x][k][0]+'"', dArr[x][k][0]);
			};
		oUppht.selectedIndex=0;
		
 };


 function doMaterial() {
	var x = (oFace.options.selectedIndex >0)? 1 : 0;
		var daLen = pArr[x].length;
		for (var j =(oFin.options.length -1); j >0; j--) { oFin.options[j] = null; };
			for(var k=0; k< daLen; k++) {
			oFin.options[k] = new Option(pArr[x][k][0]);
		}
	oFin.selectedIndex=0;
};


function doSwatch(x) {

c =new Array();
	if (oForm.material.selectedIndex==0){
		c[0]   = '0000 | 000000 | Choose Aluminum Finish';
		c[1]   = '1333 | B2B6B9 | 1333 Satin Aluminum';
		c[2]   = '0000 | 000000 | 0000 Painted any standard Baked Enamel Color';
		c[3]   = '4555 | 628469 | 4555 Nouveau Patina';
		c[4]   = '3222 | C8C5C0 | 3222 Clear Anodized';
		c[5]   = '3258 | D1A460 | 3258 Gold Anodized';
		c[6]   = '4312 | 60534B | 4312 Medium Bronze Anodized';
		c[7]   = '4313 | 4F4A46 | 4313 Dark Bronze Anodized';
		c[8]   = '3204 | 363A3D | 3204 Black Anodized';
	}else{ 
		c[0]   = '0000 | 000000 | Choose Bronze Finish';
		c[1]   = '1444 | BF9D8A | 1444 Satin Bronze';
		c[2]   = '6555 | 7F503E | 6555 Oxidized Bronze';
		c[3]   = '5444 | 5C5451 | 5444 Dark Oxidized';
		c[4]   = '1144 | CEA182 | 1144 Polished Bronze';
		c[5]   = '8555 | 59827E | 8555 Patina-Traditional';
		c[6]   = '8560 | 96B49A | 8560 Patina-Bright Verde';
		c[7]   = '8777 | 3B98A0 | 8777 Patina-Turquoise';
};
		var cData =c[0].split(' | ');
		var cHex= cData[1];
		cHex=cHex.replace(/^\s+/g, '').replace(/\s+$/g, '');
   		var cLen = c.length;
		var cObj='color';
		var list="012345789ABCDEF";
		var fgCol=0;
		//var oldSel=(line>0)? oForm[cObj+line][oForm[cObj+line].selectedIndex].text : null ;		
		
		for (var j =(oFin.options.length -1); j >0; j--) { oFin.options[j] = null; };
		
		for(var i=0; i< cLen; i++) {
			cArr =c[i].split(' | ');
			fgCol = list.indexOf(cArr[1].substr(0,1) )+list.indexOf(cArr[1].substr(2,1) )+list.indexOf(cArr[1].substr(4,1));
			oFin.options[i] = new Option(cArr[2], cArr[1]);oFin.options[i].style.background = '#'+cArr[1];oFin.options[i].style.width="180px";
			oFin.options[i].style.color =( fgCol>24)? '#000000' : '#FFFFFF';
			//if(oldSel ==cArr[2]) j=i;
		};	
};


function Pr(){
	
	//flat faced
	var pt='<table bgcolor="#666666" ALIGN="center" cellspacing="1" cellpadding="5">' ;
	pt+='<tr><td bgcolor="#ffffff" class="fb" colspan="8"><div align="center">Flat Faced</div></td></tr>';
	pt+='<tr><td bgcolor="#ffffff" class="fb" colspan="2"><div align="center"></div></td>';
	pt+='<td bgcolor="#ffffff" class="fb" colspan="3"><div align="center">Aluminum</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb" colspan="3"><div align="center">Bronze</div></td></tr>';
	pt+='<tr><td bgcolor="#ffffff" class="fb"><div align="center">Size</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Depth</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Satin or Painted</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Nouveau Patina</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Anodized</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Satin</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Oxidized</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Polish or Patina</div></td>';
	pt+='</tr>';
	for(j=0;j<dArr[0].length;j++){ //for each row
		pt+='<tr align="center"><td bgcolor= "#FFFF99" >'+dArr[0][j][0]+'</td>';
		pt+='<td bgcolor= "#FFFF99" >'+dArr[0][j][1]+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[0][j][2])+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[0][j][2]*130/100)+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[0][j][2]*145/100)+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[0][j][3])+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[0][j][3]*115/100)+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[0][j][3]*130/100)+'</td>';
	pt+='</tr>';
	};
	pt+='</table>' ;// close the table
		
	pt+='<p></p>';	
	
	//bevel or round faced
	pt+='<table bgcolor="#666666" ALIGN="center" cellspacing="1" cellpadding="5">' ;
	pt+='<tr><td bgcolor="#ffffff" class="fb" colspan="8"><div align="center">Bevel or Round Faced</div></td></tr>';
	pt+='<tr><td bgcolor="#ffffff" class="fb" colspan="2"><div align="center"></div></td>';
	pt+='<td bgcolor="#ffffff" class="fb" colspan="3"><div align="center">Aluminum</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb" colspan="3"><div align="center">Bronze</div></td></tr>';
	pt+='<tr><td bgcolor="#ffffff" class="fb"><div align="center">Size</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Depth</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Satin or Painted</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Nouveau Patina</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Anodized</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Satin</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Oxidized</div></td>';
	pt+='<td bgcolor="#ffffff" class="fb"><div align="center">Polish or Patina</div></td>';
	pt+='</tr>';
	for(j=0;j<dArr[1].length;j++){ //for each row
		pt+='<tr align="center"><td bgcolor= "#FFFF99" >'+dArr[1][j][0]+'</td>';
		pt+='<td bgcolor= "#FFFF99" >'+dArr[1][j][1]+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[1][j][2])+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[1][j][2]*130/100)+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[1][j][2]*145/100)+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[1][j][3])+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[1][j][3]*115/100)+'</td>';
		pt+='<td bgcolor= "#FFFF99" >$'+fixP(dArr[1][j][3]*130/100)+'</td>';
	pt+='</tr>';
	};
	pt+='</table>' ;// close the table




document.getElementById("priceTable").innerHTML=pt;
};
