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.oColor = "";
        this.oFin = "0.00";
        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;
        this.fIdx = 0;
        return this, resetForm(), initmb(), doSize(1), doSize(2), doSize(3), doSize(4), prep(), tot_cook(), doBgCols();
    };


    function data(x) {
        doSize(x);
        var ucpr;
        var siz = oUppht;
        siz = siz == -1 ? 0 : siz;
        this.dStr = dArr[getFont("font" + x)][siz];
        var daColor = oColor.substr(0, 4);
        oDepth = dStr[2] + "\"";
        oLoSize = dStr[3] == 0 ? "N/A" : dStr[3] + "\"";
        ucpr = dStr[1]*105/100;
        ucpr = (/No Mounts/.test(oMount))? ucpr * 95 / 100 : ucpr;
		oMatte.disabled = (daColor.substr(0,1) == "p")?  false :(oMatte.checked = false, true);
		var percent = 100;
		if(daColor.substr(0,1)=="p" || daColor.substr(0,1)=="m") percent +=30; //painted
		if(oMatte.checked) percent +=30;
        oUpPrice = fixP(ucpr*percent/100); 
	   	oLoPrice= (dStr[3] ==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);
		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 = 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, tLen = 0, daHeight = 0, daLen = 0, addon = 0, ptn = 0;
        var Qty = parseFloat(oQty.value);
        var pt = "";
        var mnt = 0;
        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;
                oForm[fObj].value.toLowerCase().replace(/\s/g, "");
                oUppht = oForm[sObj].selectedIndex;
                oColor = oForm[cObj].value
                mnt = oForm[mObj].value;
                oMount = oForm[mObj].value;
                data(i);
                analysis();
                oForm[pObj].value = oPhrase;
                sLen += parseInt(oForm[pObj].value.replace(/\s/g, "").length);
                oForm[sObj].selectedIndex = oUppht == -1 ? 0 : oUppht;
                oForm[mObj].value = mnt;
				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].value.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);
                tLen = sLen;
            } 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= (/Stud|Combination|Combo/.test(oForm[mObj].value))? 1 : 0;
	//		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;
        };
    };

	answer1=false; answer2=false;
    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!");
		var rc="";
		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(oForm[cObj].value.substr(0, 1) == "C") return alert("Please select Color on line "+i); 
					if(/Choose/.test(oForm[mObj].value)) return alert("Please Select Mount on line "+i);
					 if(/No Mounts/.test(oForm[mObj].value)){ 
					 		if(answer1==false) answer1 = confirm("This type of letter is hollow in the back\n\nThe NO HARDWARE option is for sign professionals\nwho have their own hardware.\n\nMounts and mounting patterns cannot be ordered later without\nreturning the letters to the factory.\n\nContinue adding to Basket?");
						if (answer1){continue;}else{return};
					};
					if((/No Pattern/.test(oForm[tpObj].value)) && (/Studs|Combination/.test(oForm[mObj].value))){ 
					 		if(answer2==false) answer2 = confirm("Did you forget to order a Mounting Pattern on line "+i+" ?\n\nMounting Patterns show you where to drill for the stud and combination type mount.\n\nMounting Patterns cannot be ordered later without returning the letters to the factory.\n\nContinue adding to Basket?");
						if (answer2){continue;}else{return};
					};
			};
		};
		if (rc) return alert(rc);
        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, mObj = "mount" + i;
            var stObj = "stud" + i, spObj = "spacer" + i, tpObj = "template" + i;
            bkObj = "brick" + 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			~  Gemini Formed Plastic" + 
					"|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].value + 
					"|sLen			~ " + oForm[stObj][oForm[stObj].selectedIndex].text + 
					"|Mortar Gap    ~ " + oForm[bkObj].value + 
					"|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) - 450 + "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 -394 + "px";
			doMounts(line);
		}else if(myObj=='color_picker_div') {
			createPigmentedList();
			createPaintedList();
			createLedList();
			g_id(myObj).style.left = getLeftPos(inputObj) - 840 + "px";
			g_id(myObj).style.top = getTopPos(inputObj) + inputObj.offsetHeight + 2 + "px";
		}else{
			createPatternList(line);
			g_id(myObj).style.left = getLeftPos(inputObj) -258 + "px";
        	g_id(myObj).style.top = getTopPos(inputObj) + inputObj.offsetHeight -266 + "px";
		};
		closePickers(myObj);
		g_id(myObj).style.display="block";
		

};


//colors


function createPigmentedList(){
        if(g_id('pigmentedList').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/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'+c[0].substr(1,4)+'" src="'+mImg+'" onmouseover="this.style.cursor=\'pointer\';  g_id(\'cSwatch\').src=\''+oImg+'\'" onclick="colorSelect(\''+c[0]+'\',\''+c[1]+'\')" /><br /><span class="s" style="align:center">'+c[2]+'</span></td>';
		};
        myList += '</tr></table>';
		g_id('pigmentedList').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 createLedList(){
        if(g_id('ledList').innerHTML.length>0) return;
        var myList = '<table border="0" bgColor="#D7D2CD" width="578"><tr>';
        for (i = 0; i < colors[2].length; i++) {
            var c=colors[2][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'+c[0].substr(1,4)+'" src="'+mImg+'" onmouseover="this.style.cursor=\'pointer\'; g_id(\'ledSwatch\').src=\''+oImg+'\'" onclick="colorSelect(\''+c[0]+'\',\''+c[1]+'\')" /><br /><span class="s" style="align:center">'+c[2]+'</span></td>';
		};
        myList += '</tr></table>';
		g_id('ledList').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/formed/" + 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/formed/" + 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/formed/" + 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/formed/" + 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/formed/" + 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/formed/" + 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('plain','pad','stud','combo','comboall','adjustable','flange','wire','bracket');
mountLabels = new Array('No Mounts','Pad Mount','Stud Mount','Combination Mount','Combo All Mount','Adjustable Pad Mount','Flange Mount','Wire Mount','Bracket 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/formed/" + 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, mObj='mount'+line, bkObj='brick'+line, tpObj='template'+line; 
		oForm[stObj].disabled=(/(Stud|Combination|Combo)/.test(oForm[mObj].value))? false : (oForm[stObj].selectedIndex=0,true); 
		oForm[bkObj].disabled=(/(Stud|Combo)/.test(oForm[mObj].value))? (oForm[bkObj].value='0',false) : (oForm[bkObj].value='N/A',true); 
		if(/(Pounce|Stud)/.test(oForm[tpObj].value)){
			oForm[tpObj].value= (/(Pounce)/.test(oForm[tpObj].value) && /(Stud|Combination|Combo)/.test(oForm[mObj].value))? 'Stud Pattern' : 'Pounce Pattern';
		};
		prep();
};

function doMounts(line){
	var o=g_id('mountchoices1');if(!o) return;
	var sObj='upperheight'+line, mObj = 'mount'+line, fObj = 'font'+line;
	var siz= oForm[sObj][oForm[sObj].selectedIndex].value;
	var fon=oForm[fObj].value;
	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/formed/'+mountNames[i]+'_d.jpg';
		var Img='__mounts/tiles/formed/'+mountNames[i]+'.jpg';
		if(i<2){
			//plain or pad mount
			g_id(myid).src=Img;
			nArr[i]=true;
		}else if(i<5){
			//'stud','combo','comboall'
			if(siz==2){
				if(fon==='Helvetica' || fon==='Helvetica Medium Italic' || fon==='Standard Block'){ 
					g_id(myid).src= greyImg; nArr[i]==false;
				}else{
					g_id(myid).src= Img; nArr[i]==true;
				};
			}else{
				g_id(myid).src= Img; nArr[i]==true;
			};
		}else if(i<7){
			//flange - adjustable pad
			g_id(myid).src=(siz > 5)? (nArr[i]=true,Img) : (nArr[i]=false,greyImg);
		}else{
			//wire/bracket
			g_id(myid).src=(siz > 9)? (nArr[i]=true,Img) : (/Bevel|Sculptured/.test(fon)==false && siz > 5 && siz < 10 )? (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 6 inch tall" : "Only Available on letters at least 9 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;
	};
}


//pattern

function createPatternList(line){
        g_id('patternList').innerHTML ="";
		var mObj = 'mount'+line;
		patternNames = (/(Stud|Combination|Combo)/.test(oForm[mObj].value))? new Array('yuk','stud','tape'): new Array('yuk','pounce','tape');
		patternLabels = (/(Stud|Combination|Combo)/.test(oForm[mObj].value))? new Array('No Pattern','Stud Pattern','Free Spacing Tape') : new Array('No Pattern','Pounce Pattern','Free Spacing Tape');
		var myList = '<table border="0" bgColor="#D7D2CD"><tr>';
        for (i = 0; i < patternNames.length; i++) {
            mImg = "__mounts/patterns/" + patternNames[i] + ".jpg";
			lName = patternNames[i];
		if(i==5) myList +='</tr><tr>';
		var myid="patternchoices"+i;
		myList += '<td><img id="'+myid+'" src="'+mImg+'" width="170" height="120" onmouseover="this.style.cursor=(this.src.indexOf(\'_d.jpg\')==-1)? \'pointer\' : \'default\'; pattInfo(\''+patternLabels[i]+'\','+i+')" onclick="if(this.src.indexOf(\'_d.jpg\')==-1) patternSelect(\''+patternLabels[i]+'\')" /></td>';
		};
        myList += '</tr></table>';
		g_id('patternList').innerHTML = myList;
};

function patternSelect(patt){
		var myObj=g_id('template_picker_div').elem;
		g_id(myObj).value = patt;
		g_id('template_picker_div').style.display="none";
		var line=g_id('template_picker_div').linenum;
		prep();
};

function pattInfo(id,idx){
	idx = (/(Pounce)/.test(id))? 1 : (/(Stud)/.test(id))? 2 : (/(Free)/.test(id))? 3 : idx;
	g_id("patterninfo").innerHTML = pattinfo[idx];
}


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>Molded plastic colors are either pigmented, which is the color of the material itself, or spray painted with architectural quality paints from PPG/Matthews. Pigmented colors are very glossy and very durable. 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. LED colors are specially formulated for use with LED lighting and are UL approved. LED Colors allow light through the face, which will light up the entire letter. Select a color by clicking on it. 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 Molded and 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 vacuum formed plastic and 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>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 the default value.</p></div><div class='bottom'></div>";
			g_id("sprytooltip13").innerHTML="<div class='content'><p>Stud for brick applys only to letters with stud/combo type mounts on brick and mortar walls. To avoid you having to drill into the actual brick or block, the factory aligns the stud mounts in equal lines that should fall on the mortar gaps between the bricks. </p><img src='__images/brick.jpg' ><p>You need to supply the center to center measurement vertically, center of mortar gap on top to center of mortar gap below.</p></div></img></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 sprytooltip13 = new Spry.Widget.Tooltip("sprytooltip13","#ttBrick", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
	var sprytooltip14 = new Spry.Widget.Tooltip("sprytooltip14","#ttPattern", {useEffect:"blind", showDelay:250, hideDelay:500, followMouse:true});
};
