finType = 0;
    cooArr = new Array;
    typedArr = new Array;

    function getObj(f) {
        this.oForm = f;
        this.oUppht = 0;
        this.oFont = "";
        this.oUpPrice = "0.00";
        this.oLoPrice = "0.00";
        this.oLoSize = f.lc;
        this.oDepth = 0;
        this.oMount = 0;
        this.oStud = f.stud;
        this.oTempl = 0;
        this.oColor = "";
        this.oPhrase = "";
        this.oPgTotal = "0.00";
        this.oQty = f.qty;
        this.oPattern = "0.00";
        this.oTotal = f.pgTotal;
        this.oMatte = f.matteColor;
        this.di = document.images;
        return this, resetForm(), initmb(),doSize(1), doSize(2), doSize(3), doSize(4),  prep(), tot_cook(), doBgCols();
    };


    function data(x) {
        var ucpr;
        var siz = oUppht;
        siz = siz == -1 ? 0 : siz;
        this.dStr = dArr[getFont("font" + x)][siz];
        var daColor = oColor.substr(0, 4);
        ucpr = dStr[1];
      	var percent=100;
		if(/Anodized/.test(oColor)) percent+=45;
        if(daColor=="p" || daColor=="m" && oMatte.checked) percent+=15;
        percent +=(/Bottom Stud/.test(oMount))? 15 : (/Rail/.test(oMount))? 25 : 0;
        ucpr=ucpr*percent/100;
		oDepth = dStr[3] + "\"";
        oLoSize = dStr[4] == 0 ? "N/A" : dStr[4] + "\"";
        oUpPrice = fixP(ucpr);
        oLoPrice = dStr[4] == 0 ? "0.00" : fixP(ucpr * 90 / 100);
    };


  function analysis() {        
	oPgTotal  = '0.00';
 	var inPut      = oPhrase;
	var outPut     = '';
	var pStart       = 0;  if (oPhrase.selectionStart) {pStart=oPhrase.selectionStart;};
	var pEnd         = 0;  if (oPhrase.selectionEnd  ) {pEnd  =oPhrase.selectionEnd;};
 	var pLen       = oPhrase.length;

 	for(var i=0; i< pLen; i++) { var x = inPut.charAt(i);
		filtr(x);
 		if (rtn==false){
			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') : " ";
 		}else{
			outPut += x.match(/[a-z]/)? updatePrice(x.toUpperCase(), 'upper_case') : "";
		};
	};
	oPhrase = outPut;
	if (oPhrase.selectionStart)
	{
		oPhrase.selectionStart=pStart;
		oPhrase.selectionEnd=pEnd  ;
	};
};

function updatePrice(x, kind) {    

 	var subT =oPgTotal-0;
 	var upcP =oUpPrice-0;
 	var locP =oLoPrice-0;


 	oPgTotal =
 		(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 =='lower_case' && locP == 0)?
		(x=x.toUpperCase(),fixP(subT +upcP)) : fixP(subT + locP);
	return x;        //to oPhrase.value
 };

    function prep() {
        var myGt = 0, sLen = 0, daHeight = 0, daLen = 0, addon = 0, ptn = 0;
        var Qty = parseFloat(oQty.value);
        var pt = "";
        oPhrase = "";
        oPattern = "0.00";
        for (i = 1; i < 5; i++) {
            pObj = "line" + i, sObj = "upperheight" + i, fObj = "font" + i, cObj = "color" + i, mObj = "mount" + i, tObj = "template" + i;
            if (oForm[pObj].value.replace(/\s/g, "").length > 0) {
                oForm.align.disabled = i > 1 ? false : true;
				if (i > 1 && i < 5) g_id('L' + i).style.display = "";
				if (i > 1 && i < 5) g_id("mnts" + i).style.display = "";
				if (i > 0 && i < 4) g_id("I" + i).style.display = "";
                oPhrase = oForm[pObj].value;
                oFont = oForm[fObj].value;
                oUppht = oForm[sObj].selectedIndex;
                oColor = oForm[cObj].value;
                oMount = oForm[mObj].value;
                oTempl = oForm[tObj].selectedIndex;
                data(i);
                analysis();
                oForm[pObj].value = oPhrase;
                sLen += oForm[pObj].value.replace(/\s/g, "").length;
				g_id('LH' + i).innerHTML = oLoSize;
				g_id('LD' + i).innerHTML = oDepth
				g_id('UC' + i).innerHTML = fixP(oUpPrice);
				g_id('LC' + i).innerHTML = oLoPrice != "N/A" ? oLoPrice : "N/A";
				g_id('LT' + i).innerHTML = fixP(oPgTotal);
				if (g_id('LH' + i).innerHTML != "N/A" && typedArr[i] != null) {
					oForm[pObj].value = typedArr[i];
				};
                pt = oForm[tObj][oForm[tObj].selectedIndex].text.substr(0, 2);
                if (pt == "St" || pt == "Po") {
                    daHeight = oForm[sObj][oForm[sObj].selectedIndex].value;
                    daLen = oForm[pObj].value.replace(/\s/g, "").length;
                    addon = 2.25;
                    ptn += addon * daLen;
                    g_id("PP"+i).innerHTML = "$" + fixP(addon * daLen);
                    oPattern = fixP(addon * daLen);
                } else {
                    g_id("PP"+i).innerHTML = "0.00";
                    oPattern = "0.00";
                };
				g_id('TP'+i).innerHTML = "$" + fixP(parseFloat(oPgTotal) + parseFloat(oPattern));
                myGt += parseFloat(oPgTotal);
            } else {
				if (i < 4) {
					oForm["line" + (i + 1)].value = "";
					g_id("I" + i).style.display = "none";
				};
				if (i > 1 && i < 5) g_id('L' + i).style.display = "none";
				if (i > 1 && i < 5) g_id("mnts" + i).style.display = "none";
				typedArr[i] = null;
            };
        };
		g_id('ptn').innerHTML= oPattern =  fixP(ptn*Qty);
		g_id("bl").innerHTML = "$" + fixP(myGt + ptn);
		g_id('tLtrs').innerHTML = sLen * Qty;
		g_id('tfl').innerHTML = oPgTotal = fixP(myGt * Qty);
		g_id('pgTotal').innerHTML = fixP(parseFloat(oPgTotal) + parseFloat(oPattern));
    };




    function doAbility(lObj, x) {
        var fObj = "font" + x;
        var sObj = "upperheight" + x;
        var cObj = "color" + x;
        if (lObj.value.replace(/\s/g, "").length == 0) {
            if (x > 1) {
                for (i = x; i < 5; i++) {
                    oForm[fObj].disabled = true;
                    oForm[sObj].disabled = true;
                    oForm[cObj].disabled = true;
                };
            };
        } else {
            oForm[fObj].disabled = false;
            oForm[sObj].disabled = false;
            oForm[cObj].disabled = false;
        };
    };




	// dyn Template
	function dyTemp(x) {
		var mObj='mount'+x, tObj='template'+x;
		var mnt=oForm[mObj].value;
		z= (/Flush|Jamb|Spacer|Corrugated|Flat/.test(oForm[mObj].value))? 0 : 1;
			var daLen = pArr[z].length;
			for (var j =(oForm[tObj].options.length -1); j >0; j--) { oForm[tObj].options[j] = null; };
			for(var k=0; k< daLen; k++) {
				oForm[tObj].options[k] = new Option(pArr[z][k][0], pArr[z][k][1]);
			};
	};




    function getFont(fObj) {
        fon = oForm[fObj].alt;
        return fon;
    };



    function doSize(x) {
        if (oUppht == -1) {
            oUppht = 0;
        };
        var fObj = "font" + x;
        hObj = "upperheight" + x;
		var oldVal = oForm[hObj][oForm[hObj].selectedIndex].value;
        for (j = oForm[hObj].options.length - 1; j > 0; j--) {
            oForm[hObj].options[j] = null;
        };
        
		var daLen = dArr[getFont(fObj)].length;
        for (k = 0; k < daLen; k++) {
            oForm[hObj].options[k] = new Option(dArr[fon][k][0] + "\"", dArr[fon][k][0]);
			if(dArr[fon][k][0] == oldVal)  oForm[hObj].selectedIndex =k;  
        };
    };


    function addTo() {
        prep();
        var qVal = oForm.qty.value;
	if(oForm.line1.value.replace(/\s/g, "").length == 0) return alert("No letters have been entered in Line 1!");
	for (i = 1; i < 5; i++) {
		var pObj = "line" + i, mObj = "mount" + i, cObj = "color" + i, tpObj = "template" + i;
		if (oForm[pObj].value.replace(/\s/g, "").length > 0) {
				if(/Choose/.test(oForm[cObj].value)) return alert("Please select Color on line "+i); 
				if(/Choose/.test(oForm[mObj].value)) return alert("Please Select Mount on line "+i);
		};
	};
        var cookStr = "", lTotal = 0, lookahead = "", cnt = 1;
        var daColor = null;
        for (i = 1; i < 5; i++) {
            cnt++;
            var pObj = "line" + i, sObj = "upperheight" + i, fObj = "font" + i, tObj = "gt" + i, cObj = "color" + i, laObj = "line" + cnt;
            var mObj = "mount" + i, stObj = "stud" + i, spObj = "spacer" + i, tpObj = "template" + i;
            lookahead = cnt == 5 || oForm[laObj].value.length == 0 ? doChars(g_id("oImg").src) : pObj;
            if (oForm[pObj].value.replace(/\s/g, "").length > 0) {
                var daColor = doMatte(oForm[cObj].value);
                lTotal = parseFloat(g_id('TP'+i).innerHTML.substr(1));
                
				cookStr = 
					"Type   		~ Cast Aluminum Letters" + 
					"|Letters  		~ " + doChars(oForm[pObj].value) + 
					"|Font          ~ " + oForm[fObj].value + 
					"|Height        ~ " + oForm[sObj][oForm[sObj].selectedIndex].text + 
					"|Color         ~ " + daColor + 
					"|Mount         ~ " + oForm[mObj].value + 
					"|Ptn		    ~ " + oForm[tpObj][oForm[tpObj].selectedIndex].text + 
					"|sLen   		~ " + oForm[stObj][oForm[stObj].selectedIndex].text + 
					"|Spacer Length	~ " + (oForm[spObj].disabled == false ? oForm[spObj][oForm[spObj].selectedIndex].text : "") + 
					"|Image         ~ " + lookahead + 
					"|Qty      		~ " + parseFloat(qVal) + 
					"|Price         ~ " + fixP(lTotal * qVal);
					
                cookStr = cookStr.replace(/\s+\~\s/g, "~");
                cookStr = cookStr.replace(/\s+\|\s/g, "|");
                cookStr = cookStr.replace(/["]/g, "#Y");
                cookStr = cookStr.replace(/[']/g, "#Z");
                toCook("item_", cookStr);
            };
        };
        location.href = "s_viewCart.htm";
    };


    function doMatte(daColor) {
        if (oMatte.checked) {
            if (daColor.substr(0, 1) == "c") {
                daColor = daColor.substr(0, 5) + " Matte " + daColor.substr(5);
            } else {
                daColor = daColor.substr(0, 4) + " Matte " + daColor.substr(5);
            };
        } else {
            return daColor;
        };
        return daColor;
    };

oForm=document.forms['itemsform'];
function showPicker(inputObj, formField, line){
	    var myObj=formField.substr(0,formField.length-1)+'_picker_div';
		g_id(myObj).linenum=line;		
		g_id(myObj).elem=formField;
		if(myObj=='font_picker_div') {
			createFontList();
			g_id(myObj).style.left = getLeftPos(inputObj) - 500 + "px";
        	g_id(myObj).style.top = getTopPos(inputObj) + inputObj.offsetHeight + 2 + "px";
		}else if(myObj=='mount_picker_div') {
			createMountList();
			g_id(myObj).style.left = getLeftPos(inputObj) -138 + "px";
        	g_id(myObj).style.top = getTopPos(inputObj) + inputObj.offsetHeight -391 + "px";
			doMounts(line);
		}else{
			createMetalList();
			createPaintedList();
			g_id(myObj).style.left = getLeftPos(inputObj) - 450 + "px";
			g_id(myObj).style.top = getTopPos(inputObj) + inputObj.offsetHeight + 2 + "px";
		};
		closePickers(myObj);
		g_id(myObj).style.display="block";
		

};


//colors


function createMetalList(){
        if(g_id('metalList').innerHTML.length>0) return;
        var myList = '<table border="0" bgColor="#D7D2CD"><tr>';
        for (i = 0; i < colors[0].length; i++) {
            var c=colors[0][i].split('/');
			var mImg = "__colors/tiles/metal/" + c[0].substr(0,4) + ".jpg";
			var oImg = "__colors/tiles/metal/hi_res/big_swatch/" + c[0].substr(0,4) + ".jpg";
			if(i%4 ==0) myList +='</tr><tr>';
			myList += '<td><img id="c'+c[0].substr(1,4)+'" src="'+mImg+'" onmouseover="this.style.cursor=\'pointer\'; g_id(\'cSwatch\').src=\''+oImg+'\'" onclick="colorSelect(\''+c[0]+'\',\''+c[1]+'\')" /></td>';
		};
        myList += '</tr></table>';
		g_id('metalList').innerHTML = myList;
};

function createPaintedList(){
        if(g_id('paintedList').innerHTML.length>0) return;
		var myList = '<table border="0" bgColor="#D7D2CD"><tr>';
        for (i = 0; i < colors[1].length; i++) {
			var c=colors[1][i].split('/');
			var mImg = "__colors/tiles/painted/" + c[0].substr(1,4) + ".jpg";
			var oImg = "__colors/tiles/painted/swatch/" + c[0].substr(1,4) + ".jpg";
			if(i%9 ==0) myList +='</tr><tr>';
			myList += '<td align="center"><img id="'+c[0].substr(0,5)+'" src="'+mImg+'" onmouseover="this.style.cursor=\'pointer\'; g_id(\'pSwatch\').src=\''+oImg+'\'" onclick="colorSelect(\''+c[0]+'\',\''+c[1]+'\')" /><br /><span class="s" style="align:center">'+c[2]+'</span></td>';
		};
        
		myList += '</tr></table>';
		g_id('paintedList').innerHTML = myList;
};


function colorSelect(color,hex){
		var myObj=g_id('color_picker_div').elem;
		g_id(myObj).value = color; g_id(myObj).alt = hex.substr(1);
		g_id('color_picker_div').style.display="none";
		oMatte.disabled=(color.substr(0,1)=='p')? false : (oMatte.checked=false,true);
		prep();
		if(oForm.autoupdate.checked) oForm.update.click();
};


function sizeDisplay(fntIdx){
	var noLc = 'No lowercase letters available in this font';
	var lcMsg='',ucMsg='Uppercase available in: ';
	var daLen = dArr[fntIdx].length;
	for (var i=0;i<daLen;i++){
			ucMsg+=dArr[fntIdx][i][0]+'" ';
			if (dArr[fntIdx][i][3] !=0){
				lcMsg+=dArr[fntIdx][i][0]+'" ';
			};	
	};
	var rc=(lcMsg.length >0)? ucMsg+'<br>'+'Lowercase available in: '+lcMsg : ucMsg+'<br>'+noLc;
	g_id('showsize').innerHTML=rc;
 };

//fonts
fontNames = new Array;
prArr= new Array();
function createFontList(){
        if(g_id('fontList').innerHTML.length>0) return;
		if(prArr.length==0){
			fArr = F.split("/"); faLen=fArr.length;
		}else{
			faLen=prArr.length;
		};
        var lName = "label";
        var daFon = "";
        var myList = '<table border="0" width="100%" bgColor="#ffffff">';
		for (i = 0; i < faLen; i++) {
            if(prArr.length==0){
				fNames = fArr[i].split("~");
				fontNames[i] = fNames[0];
				var fIdx =i;
				g_id('statusbar').innerHTML="Showing all fonts";
			}else{
				fNames =fArr[prArr[i]].split('~');
				fontNames[prArr[i]]=fNames[0];
				var fIdx =prArr[i];
			};
            daFon = /(Round)/.test(fNames[1]) ? fNames[1].replace(/(Round)/g, "rf") : /(Bevel)/.test(fNames[1]) ? fontNames[1].replace(/(Bevel)/g, "bf") : fNames[1];
            daFon = "fontimages/cast/aluminum/" + daFon.replace(/\s/g, "") + ".png";
			lName = (prArr.length==0)? fNames[1] : 'label'+prArr[i];
            myList += '<tr><td id='+lName+' style="height:26px" onmouseover="this.style.cursor=\'pointer\'; sizeDisplay(\''+fIdx+'\')" onclick="fontSelect(\''+fNames[0]+'\',\''+fIdx+'\')">';
            myList += '<img src="'+daFon+'" onmouseover="this.style.borderStyle=\'solid\'; this.style.borderWidth=\'thin\'" onmouseout="this.style.border=\'none\'" ></img></td></tr>';
        };
        myList += '</table>';
		g_id('fontList').innerHTML = myList;
		
};

function fontSelect(myfont,fonIdx){
		var line=g_id('font_picker_div').linenum;
		var myObj=g_id('font_picker_div').elem;
		g_id(myObj).value = myfont; g_id(myObj).alt = fonIdx;
        g_id('font_picker_div').style.display="none";
		doSize(line);
		prep();
		if(oForm.autoupdate.checked) oForm.update.click();
};
function fontsort(siz){
	if(document.sortform.method[0].checked || document.sortform.method[1].checked){
		// sort the array by requested size
		var daLen=dArr.length;
		var cnt=0;
		var priceArray= new Array();
		var indexArray= new Array();
		for(i=0;i<daLen;i++){
			for(j=0;j<dArr[i].length;j++){
				if(dArr[i][j][0]==siz){
					priceArray[cnt]=dArr[i][j][1];
					indexArray[cnt]=i;
					cnt++;
					break;
				};
			};
		};
		// sort the pared down array by price
		for(i=0;i<indexArray.length;i++){ //Hold the first element
			for(var j=i+1;j<indexArray.length;j++){ //Hold the next element from the first element
				if(Number(priceArray[i]) > Number(priceArray[j])){	//comparing first and next element
					tempValue0 = indexArray[j];	
					indexArray[j] = indexArray[i];
					indexArray[i] = tempValue0;
					tempValue1 = priceArray[j];	
					priceArray[j] = priceArray[i];
					priceArray[i] = tempValue1;
				}
			}
		};
		prArr=indexArray;
		if(document.sortform.method[0].checked){
			g_id('statusbar').innerHTML='Showing fonts with '+siz+' inch sizes - sort = PRICE: lowest first';
		}else{
			prArr.reverse();
			g_id('statusbar').innerHTML='Showing fonts with '+siz+' inch sizes - sort = PRICE: highest first';
		};
		g_id('fontList').innerHTML="";
		createFontList();
		var sObj='upperheight'+ g_id('font_picker_div').linenum;
		for(i=0;i<oForm[sObj].options.length;i++){
			if(oForm[sObj].options[i].value ==siz){
				oForm[sObj].selectedIndex=i;
			};
		};
		TabbedPanels3.showPanel(0);
		prArr= new Array(); // reset the array
	}else{
		fArr = F.split("/"); 
		faLen=fArr.length;
		var myList = '<table border="0" width="100%" bgColor="#ffffff">';
		for (i = 0; i < faLen; i++) {
			fNames = fArr[i].split("~");
			fontNames[i] = fNames[1];
			for(j=0;j<dArr[i].length;j++){
				if(dArr[i][j][0]==siz){
				   daFon = /(Round)/.test(fNames[1]) ? fNames[1].replace(/(Round)/g, "rf") : /(Bevel)/.test(fNames[1]) ? fontNames[1].replace(/(Bevel)/g, "bf") : fNames[1];
				   daFon = "fontimages/cast/aluminum/" + daFon.replace(/\s/g, "") + ".png";
				   lName = (prArr.length==0)? fNames[1] : 'label'+idx[1];
				   myList += '<tr><td id='+lName+' style="height:26px" onmouseover="this.style.cursor=\'pointer\'; sizeDisplay(\''+i+'\')" onclick="fontSelect(\''+fNames[0]+'\',\''+i+'\')">';
				   myList += '<img src="'+daFon+'" onmouseover="this.style.borderStyle=\'solid\'; this.style.borderWidth=\'thin\'" onmouseout="this.style.border=\'none\'" ></img></td></tr>';
				};
			};
		 };
		myList += '</table>';
		g_id('fontList').innerHTML = myList;
		TabbedPanels3.showPanel(0);
		g_id('statusbar').innerHTML='Showing fonts with '+siz+' inch sizes - sort = Listed Alphabetically';
		prArr= new Array(); // reset the array
	};
};

function fontSortByType(arg){
	var arg=document.sortform.fonttype.selectedIndex;
	g_id('fontList').innerHTML=="";
	var lName = "label";
	var daFon = "";
	var myList = '<table border="0" width="100%" bgColor="#ffffff">';
	var fArr = F.split("/"); 
	var faLen=fArr.length;
	for (i = 0; i < faLen; i++) {
		fNames = fArr[i].split("~");
		if(arg==0){
			if(/(Round|Bevel)/.test(fNames[0]) == false){
				daFon = /(Round)/.test(fNames[1]) ? fNames[1].replace(/(Round)/g, "rf") : /(Bevel)/.test(fNames[1]) ? fontNames[1].replace(/(Bevel)/g, "bf") : fNames[1];
				daFon = "fontimages/cast/aluminum/" + daFon.replace(/\s/g, "") + ".png";
				lName = fNames[1];
				myList += '<tr><td id='+lName+' style="height:26px" onmouseover="this.style.cursor=\'pointer\';sizeDisplay(\''+i+'\')" onclick="fontSelect(\''+fNames[0]+'\',\''+i+'\')">';
				myList += '<img src="'+daFon+'" onmouseover="this.style.borderStyle=\'solid\'; this.style.borderWidth=\'thin\'" onmouseout="this.style.border=\'none\'" ></img></td></tr>';
			};
		}else if(arg==1){
			if(/(Round)/.test(fNames[0])){
				daFon = /(Round)/.test(fNames[1]) ? fNames[1].replace(/(Round)/g, "rf") : /(Bevel)/.test(fNames[1]) ? fontNames[1].replace(/(Bevel)/g, "bf") : fNames[1];
				daFon = "fontimages/cast/aluminum/" + daFon.replace(/\s/g, "") + ".png";
				lName = fNames[1];
				myList += '<tr><td id='+lName+' style="height:26px" onmouseover="this.style.cursor=\'pointer\';sizeDisplay(\''+i+'\')" onclick="fontSelect(\''+fNames[0]+'\',\''+i+'\')">';
				myList += '<img src="'+daFon+'" onmouseover="this.style.borderStyle=\'solid\'; this.style.borderWidth=\'thin\'" onmouseout="this.style.border=\'none\'" ></img></td></tr>';
			};
		}else if(arg==2){
			if(/(Bevel)/.test(fNames[0])){	
				daFon = /(Round)/.test(fNames[1]) ? fNames[1].replace(/(Round)/g, "rf") : /(Bevel)/.test(fNames[1]) ? fontNames[1].replace(/(Bevel)/g, "bf") : fNames[1];
				daFon = "fontimages/cast/aluminum/" + daFon.replace(/\s/g, "") + ".png";
				lName = fNames[1];
				myList += '<tr><td id='+lName+' style="height:26px" onmouseover="this.style.cursor=\'pointer\';sizeDisplay(\''+i+'\')" onclick="fontSelect(\''+fNames[0]+'\',\''+i+'\')">';
				myList += '<img src="'+daFon+'" onmouseover="this.style.borderStyle=\'solid\'; this.style.borderWidth=\'thin\'" onmouseout="this.style.border=\'none\'" ></img></td></tr>';
			};
		}else{
			if(Fltr.indexOf(fNames[1])==-1){	
				daFon = /(Round)/.test(fNames[1]) ? fNames[1].replace(/(Round)/g, "rf") : /(Bevel)/.test(fNames[1]) ? fontNames[1].replace(/(Bevel)/g, "bf") : fNames[1];
				daFon = "fontimages/cast/aluminum/" + daFon.replace(/\s/g, "") + ".png";
				lName = fNames[1];
				myList += '<tr><td id='+lName+' style="height:26px" onmouseover="this.style.cursor=\'pointer\';sizeDisplay(\''+i+'\')" onclick="fontSelect(\''+fNames[0]+'\',\''+i+'\')">';
				myList += '<img src="'+daFon+'" onmouseover="this.style.borderStyle=\'solid\'; this.style.borderWidth=\'thin\'" onmouseout="this.style.border=\'none\'" ></img></td></tr>';
			};
		};
	};
	myList += '</table>';
	g_id('fontList').innerHTML = myList;
	g_id('statusbar').innerHTML=(arg==0)? "Showing all Flat Face fonts" :(arg==1)? "Showing all Round Face fonts" : (arg==2)? "Showing all Bevel Face fonts" : "Showing fonts that have lower case letters";
	TabbedPanels3.showPanel(0);
};



//mounts
mountNames = new Array('flush','jamnut','spacer','corrugated','flatmetal','bottomstud','bottomrail','rail');
mountLabels = new Array('Flush Stud Mount','Projected Jamb Nut','Projected Spacer Mount','Corrugated Metal Mount','Flat Metal Mount','Bottom Stud Mount','Bottom Rail Mount','Rail Mount');
function createMountList(){
        if(g_id('mountList').innerHTML.length>0) return;
		var myList = '<table border="0" bgColor="#D7D2CD"><tr>';
        for (i = 0; i < mountNames.length; i++) {
            mImg = "__mounts/tiles/cast/" + mountNames[i] + ".jpg";
			lName = mountNames[i];
		if(i==5) myList +='</tr><tr>';
		var myid="mountchoices"+i;
		myList += '<td><img id="'+myid+'" src="'+mImg+'" width="120" height="120" onmouseover="this.style.cursor=(this.src.indexOf(\'_d.jpg\')==-1)? \'pointer\' : \'default\'; showLabel(this.id,'+i+')" onclick="if(this.src.indexOf(\'_d.jpg\')==-1) mountSelect(\''+mountLabels[i]+'\')" /></td>';
		};
        myList += '</tr></table>';
		g_id('mountList').innerHTML = myList;
};

function mountSelect(mount){
		var myObj=g_id('mount_picker_div').elem;
		g_id(myObj).value = mount;
		g_id('mount_picker_div').style.display="none";
		var line=g_id('mount_picker_div').linenum;
		var stObj='stud'+line, spObj='spacer'+line, mObj='mount'+line;
		oForm[stObj].disabled=(/Flush|Jamb|Spacer|Corrugated|Flat|Bottom Stud/.test(oForm[mObj].value))? false : (oForm[stObj].selectedIndex=0,true); 
		oForm[spObj].disabled=(/Spacer|Bottom Stud/.test(oForm[mObj].value))? false : (oForm[spObj].selectedIndex=0,true); 
		dyTemp(line);
		prep();
};

function doMounts(line){
	var o=g_id('mountchoices1');if(!o) return;
	var sObj='upperheight'+line, dObj = "LD"+line, mObj = 'mount'+line;;
	var siz= oForm[sObj][oForm[sObj].selectedIndex].value;
	var dep= parseFloat(g_id(dObj).innerHTML.replace(/"/g,''));
	var oldval = oForm[mObj].value;
	var nArr= new Array();
	for(var i=0;i<mountNames.length;i++){
		var myid='mountchoices'+i;
		var greyImg='__mounts/tiles/cast/'+mountNames[i]+'_d.jpg';
		var Img='__mounts/tiles/cast/'+mountNames[i]+'.jpg';
		if(i<5){
			//standard mounts
			g_id(myid).src= Img;
			nArr[i]=true;
		}else if(i<7){
			//bottom stud
			g_id(myid).src=(dep > .25 && siz>3)? (nArr[i]=true,Img) : (nArr[i]=false,greyImg);
		}else{
			//rails
			g_id(myid).src=(siz > 3)? (nArr[i]=true,Img) : (nArr[i]=false,greyImg);
		};
		if(oldval==mountLabels[i]) var itm = i;
	};
	// try to keep users chosen mount
	oForm[mObj].value = (nArr[itm]==true)? oldval : "Choose Mount";
};

function doStandoff(x){
		var stObj='stud'+x;
		var stud=oForm[stObj].value;
		if(!/Wire/.test(oForm[stObj].value)){ 
			var stArr=('Factory Std.',1,2,3,4,5,6);
		}else{
			var stArr=('Flush',.5,1,1.5,2);
		};
		var daLen = stArr.length;
		for (var j =(oForm[stObj].options.length -1); j >0; j--) { oForm[stObj].options[j] = null; };
		for(var k=0; k< daLen; k++) {
			oForm[stObj].options[k] = new Option(stArr[k]+'"', stArr[k]);
		};
};

function showLabel(id,idx){
	var naTxt = (idx>4 && idx <7)? "Only Available on letters at least 3/8 deep and 4 inch tall" : "Only Available on letters at least 4 inch tall";
	var bImg = g_id(id).src;
	if(bImg.indexOf('_d.jpg') == -1) { 
		g_id("mountinfo").innerHTML = mount[idx];
	}else{
		g_id("mountinfo").innerHTML = naTxt;
	};
}

function pr() {
	var mtrl=0;
	var fArr = new Array;
	var fFont = new Array;
	var fImg = "fontimages/smallfonts/antiqueolivemedium.gif";
	varx = 0;
	fArr = F.split("/");
	var pt = "<table bgcolor=\"#666666\" ALIGN=\"center\" cellspacing=\"1\" cellpadding=\"5\" >";
		pt += "<tr ><td  bgcolor= \"#FFFF99\" align=\"center\" colspan=\"" + dArr.length + 1 + "\" class=\"silverBG\"><span class=\"fBBB\">Base prices shown are for Satin Aluminum</span></td></tr>";
	for (j = 0; j < fArr.length; j++) {
		fFont = fArr[j].split("~");
		fImg = "fontimages/smallfonts/" + fFont[1].replace(/\s/g, "") + ".gif";
		var z = fFont[0].split("(");
		var caps = z[0].match(/[a-z]/) ? "(Lower case available in selected sizes)" : "(No lower case available)";
		pt += "<tr><td bgcolor= \"#FFFF99\" colspan=\"" + dArr[j].length + 1 + "\"><div align=\"left\"><span class=\"fbb\"><img src=\"" + fImg + "\" border=\"0\">             " + caps + "</span></div></td></tr><tr>";
		pt += "<td bgcolor=\"#ffffff\" class=\"f\"><div align=\"center\">Size</div></td>";
		
		for (i = 0; i < dArr[j].length; i++) {
			pt += "<td bgcolor=\"#ffffff\" class=\"s\"><div align=\"center\">" + dArr[j][i][0] + "&quot</div></td>";
		};
		pt += "</tr><tr>";
		pt += "<td bgcolor=\"#ffffff\"><div align=\"center\">Uppercase<br>Price</div></td>";
		for (i = 0; i < dArr[j].length; i++) {
			pt += "<td bgcolor=\"#ffffff\"><div align=\"center\" class=\"s\" >$" + fixP(dArr[j][i][1]) + "</div></td>";
		};
		pt += "</tr>";
	};
	pt += "</table>";
	document.getElementById("priceTable").innerHTML = pt;
};

function zoomer(img,alt){
	$('box').innerHTML="<div id='mTxt'><img src="+img+" class=\"zoom\" onclick=\"hm('box')\"/><br /><center>"+alt+"</center></div>";
	sm('box',316,330);
};


function loadTooltips(){
			g_id("sprytooltip1").innerHTML="<div class='content'><p>To get started, type in the letters, numbers and punctuation, exactly as you want it to read when you make your sign. For multiple line signs, there are 3 other lines that will become available. What you type is what you will get. If lower case letters typed and the size is too small or lower case is not available in the chosen font, those letters will automatically convert to upper case and should convert back again when you change the height or size to something that has availability. What you type here will display in the area below with correct real world dimensions when you leave the text box.</p></div><div class='bottom'></div>";
			g_id("sprytooltip2").innerHTML="<div class='content'><p>Molded and Cast letters come in set sizes. This is because they are created from molds in fixed sizes. The only way to get a different size in a given font is for custom molds to be made which adds a 2 or 3 times the cost. Every font set has its own sizes and for each font you choose, the size box here will be repopulated. Only one size can be on one line so if you want large capitals followed by small capitals, you would have to use 2 lines.</p></div><div class='bottom'></div>";
			g_id("sprytooltip4").innerHTML="<div class='content'><p>Cast metal finishes for aluminum will be either a satin face with bead blasted returns, or in the case of round and bevel faced styles, totally bead blasted. Aluminum can be anodized which is a chemical process that hardens the top layer of the aluminum and can impart a coloring such as gold or bronze. Anodized finishes do not require further protection from clear coats to be used outdoors. Alternatly, baked enamel paints can be applied at no extra charge. There are many colors available and painted colors have superior UV protection and will not fade, peel or crack no matter what the climate. Metallic colors have metal flakes in the paint and cannot be made matte.Custom color matching for PPG, Sherwin-Williams and Pantone can be done at $30 per color plus the standard 30% per letter paint fee.</p></div><div class='bottom'></div>";
			g_id("sprytooltip5").innerHTML="<div class='content'><p>The Matte checkbox will only be available when a painted finish is chosen. It is also not available when a metallic color is chosen. Matte paint modifiers add 30% to an order.</p></div><div class='bottom'></div>";
			g_id("sprytooltip6").innerHTML="<div class='content'><p>With Cast Letters, only the fonts shown in the sizes listed are available for the price shown. All fonts are priced differently to each other which is why we provide a sort function so that you can list the fonts in order of price on a given size. Custom fonts can be done in cast metal but they cost 2 to 3 times more than a standard font. See the menu for estimators to price custom fonts and logos. Lastly and importantly, the font chosen will control the width of a given line of text. For shorter lengths choose a condensed type font.</p></div><div class='bottom'></div>";
			g_id("sprytooltip7").innerHTML="<div class='content'><p>Aligns the display output below either left, right or center justified. TIP: You can also indent display view text by using spaces before the text to move the line text to the right. </p></div><div class='bottom'></div>";
			g_id("sprytooltip8").innerHTML="<div class='content'><p>The backgrounds allow you to see how your chosen letter color might look against a chosen background color. This is helpful for determining the correct color letter to apply to your wall color. No backgrounds are included with actual order. We do not make finished signs. All letters are individual unless specified otherwise.</p></div><div class='bottom'></div>";
			g_id("sprytooltip10").innerHTML="<div class='content'><p>Which mounting hardware best suits your project requires an understanding of the various mounts available for different types of letters. If you are not sure what kind of mounts to get, we strongly recommend reviewing our installation page with helpful videos explaining many of the mounting methods and their uses. A link to the page can be found on the site menu.</p></div><div class='bottom'></div>";
			g_id("sprytooltip11").innerHTML="<div class='content'><p>Standard stud length is the same as no preference. The factory will decide what lengths to include based on the type of letter, its height and depth. Unless you have a specific need for a specific length, this setting can be left at standard.</p></div><div class='bottom'></div>";
			g_id("sprytooltip12").innerHTML="<div class='content'><p>Stand off is where you want your letters to stand slightly away from the mounting surface for effect. Spacers are pre cut hollow tubes the slip over studs to provide a space between the letter and wall. On Vacuum Formed and Injection Molded letters, a combination all mount replaces the sleeve type mount with adjustable pads that can provide multiple depths by screwing the pad in or out along its stud.</p></div><div class='bottom'></div>";
			g_id("sprytooltip14").innerHTML="<div class='content'><p>A mounting pattern is a full size drawing of the letters you order, laid out with proper spacing and alignment. A pattern is critical for stud type mounts and shows you where to drill for the studs. NOTE: Gemini products require multiple patterns for multiple sets of letters. Without it, you will not get a good result and spend much time and frustration. For other types of mounts, a full size pounce pattern with inked letters that are perforated on their outlines, allows you to rub chalk through leaving an impression on the wall.</p></div><div class='bottom'></div>";

	var sprytooltip1 = new Spry.Widget.Tooltip("sprytooltip1","#ttLetters", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip2 = new Spry.Widget.Tooltip("sprytooltip2","#ttHeight", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip4 = new Spry.Widget.Tooltip("sprytooltip4","#ttColor", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip5 = new Spry.Widget.Tooltip("sprytooltip5","#ttMatte", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip6 = new Spry.Widget.Tooltip("sprytooltip6","#ttFont", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip7 = new Spry.Widget.Tooltip("sprytooltip7","#ttAlign", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip8 = new Spry.Widget.Tooltip("sprytooltip8","#ttBackground", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip10 = new Spry.Widget.Tooltip("sprytooltip10","#ttMounts", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip11 = new Spry.Widget.Tooltip("sprytooltip11","#ttStud", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip12 = new Spry.Widget.Tooltip("sprytooltip12","#ttStandoff", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip14 = new Spry.Widget.Tooltip("sprytooltip14","#ttPattern", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
};
