//===================================================//
// xbutton.js - Javascript Layered Button System     //
//                                                   //
// By: Peter Liebert                                 //
// Created: May 25, 2002                             //
//                                                   //
// Last Modified: June 06, 2006                      //
//                                                   //
// xButtons is used to create layered buttons        //
// which allow graphic elements to be swapped behind //
// text				                                 //
//                                                   //
// Modified October 26, 2006 for Superior Court      //
//===================================================//
//
//

// User changable defaults
// CHANGE WITH CARE! No checking is done on these values!
pdef_fcolr = "#000000";		// Default font color
pdef_fsize = "12pt";		// Default font size
pdef_fname = "Arial";		// Default font family
pdef_falgn = "center";		// Default font alignment ("left","center","right")
pdef_fattr = "";		// Default font attributes ("B"-bold, "I"-italics, "U"-underline)
pdef_foffx = 0;			// Default font offset in x direction
pdef_foffy = 0;			// Default font offset in y direction
pdef_dirhv = "v";		// Default direction for auto buttons ("v"-vertical, "h"-horizontal);
pdef_space = 0;			// Default button spacing for auto buttons
pdef_plurl = 1;			// For plural items (i.e. end in "s", e.g. "fcolrs"), number of layers affected -1.
pdef_butup = 1;			// Activate Button up (0=no, 1=yes)
pdef_cursr = "pointer";		// Default cursor
pdef_frame = "main";
//pdef_cursr = "url(nh_hand.cur)";

// Separator for arguments. If you use "=" in the text of your buttons, change this to something
//    else, like ":", or "|" (and then, of course, seperate fields and values with the new seperator)
arg_sep_char = "=";

button_name_root = "xb";	// Prefix for "DIV" names



// ==================================================//
// ======= DO NOT MODIFY BELOW THIS LINE ============//
// ==================================================//

// Set session defaults
def_fcolr = pdef_fcolr;
def_fsize = pdef_fsize;
def_fname = pdef_fname;
def_falgn = pdef_falgn;
def_fattr = pdef_fattr;
def_foffx = pdef_foffx;
def_foffy = pdef_foffy;
def_dirhv = pdef_dirhv;
def_space = pdef_space;
def_plurl = pdef_plurl;
def_butup = pdef_butup;
def_cursr = pdef_cursr;
def_frame = pdef_frame;
but_nextx = 0;
but_nexty = 0;

// Valid HTML color names
valid_colors = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow"
valid_colors += "|beige|forestgreen|darkgreen|lightgreen|darkblue|powderblue|dimgray|lightgrey|darkgray|slategray"
valid_colors += "|gold|goldenrod|ivory|pink|deeppink|hotpink|orange|orangered|darkorange|tan|sienna"

valid_cursors = "auto|default|crosshair|pointer|help|move|text|wait|n-resize|ne-resize|e-resize|"
valid_cursors += "se-resize|s-resize|sw-resize|w-resize|nw-resize"

//ns4 = is_nav4up; //(document.layers)? true:false
//ie4 = is_ie4up; //(document.all)? true:false
//ns4 = (document.layers)? true:false
//ie4 = (document.all)? true:false

//argsep = eval("/\\s*"+arg_sep_char+"\\s*/");
//argsep = eval("/[\\s|\\r]*"+arg_sep_char+"[\\s|\\r]*/");
argsep = eval("/[\\f\\n\\r\\t\\v ]*=[\\f\\n\\r\\t\\v ]*/");
div_names = "|";


/*=================================================================================================================================================*/
// court_button
// Added to simplify addition of the Superior Internet buttons
function court_button(btexts, status, url) {
      make_button("width=120","height=24", "image0=/button_up.gif","image1=/button_dn.gif","btexts=" + btexts, "status=" + status, "url=" + url, "frame=main");
      document.write("<img src='trans.gif' height='3'>");
}

function court_button2(btexts, status, url) {
      make_button("width=120","height=24", "image0=/button_up.gif","image1=/button_dn.gif","btexts=" + btexts, "status=" + status, "url=" + url, "frame=_top");
      document.write("<img src='trans.gif' height='3'>");
}

/*==================================================================================================================================================*/


// genname() Generate button's name (button_root + 4 digit number) and store to prevent duplicate
function genname () {

	var num,butname;

	do {
		num = 1000+Math.floor(Math.random() * 8999);
		butname = button_name_root + num
	} while (div_names.match(butname)==butname)

	div_names += butname + "|";
	return (butname);
}

// show() - Show layer if it exists
function show(id) {
	if (document.getElementById && document.getElementById(id))
		document.getElementById(id).style.visibility = "visible";
	else if (document.layers && document.layers[id])
		document.layers[id].visibility = "show";
	else if (document.all && document.all[id])
		document.all[id].style.visibility = "visible";

}

// hide() - hide layer if it exists
function hide(id) {
	if (document.getElementById && document.getElementById(id))
		document.getElementById(id).style.visibility = "hidden";
	else if (document.layers && document.layers[id])
		document.layers[id].visibility = "hide";
	else if (document.all && document.all[id])
		document.all[id].style.visibility = "hidden";
}


function init_layer_state(num) {

	if (document.getElementById) {
		hidelayer = "visibility:hidden";
		showlayer = "visibility:visible";
	} else if (document.all) {
		hidelayer = "visibility:hidden";
		showlayer = "visibility:visible";
	} else if (document.layers) {
		hidelayer = "visibility:hide";
		showlayer = "visibility:show";
	}
	if (num==0) return showlayer;
	else return hidelayer;
}


// swap() - Swap button layers
function swap(btn,state,statmsg) {
	switch (state) {
		case 0 :
			show(btn + "-C0"); show(btn + "-G0"); show(btn + "-T0"); show(btn + "-B0");
			hide(btn + "-C1"); hide(btn + "-G1"); hide(btn + "-T1"); hide(btn + "-B1");
			hide(btn + "-C2"); hide(btn + "-G2"); hide(btn + "-T2"); hide(btn + "-B2");
		break;
		case 1 :
			if (isLayer(btn+"-C1") || isLayer(btn+"-G1") || isLayer(btn+"-T1") || isLayer(btn+"-B1")) {
				show(btn + "-C1"); show(btn + "-G1"); show(btn + "-T1"); show(btn + "-B1");
				hide(btn + "-C0"); hide(btn + "-G0"); hide(btn + "-T0"); hide(btn + "-B0");
				hide(btn + "-C2"); hide(btn + "-G2"); hide(btn + "-T2"); hide(btn + "-B2");
			}
		break;
		case 2 :
			if (isLayer(btn+"-C2") || isLayer(btn+"-G2") || isLayer(btn+"-T2") || isLayer(btn+"-B2")) {
				show(btn + "-C2"); show(btn + "-G2"); show(btn + "-T2"); show(btn + "-B2");
				hide(btn + "-C0"); hide(btn + "-G0"); hide(btn + "-T0"); hide(btn + "-B0");
				hide(btn + "-C1"); hide(btn + "-G1"); hide(btn + "-T1"); hide(btn + "-B1");
			}
		break;
	}
	window.status=statmsg;
}

// isNull() - Is argument null?
function isNull(str) {
	if ((str==undefined) || (str == null) || (str=="")) { return true; }
	return false;
}

// isNotNull() - Is argument not null?
function isNotNull(str) {
	return !isNull(str);
}

// isLayer() - Is argument a layer?
function isLayer(name) {
	if (document.getElementById) {
		return (document.getElementById(name));
	} else if (document.all) {
		return (document.all[name]);
	} else if (document.layers) {
		return (document.layers[name]);
	}
}

// isColor() - Determine if argument is valid color
function isColor(colstr) {
	if (isNull(colstr)) { return false; }

	var regstr  = "/^#([0-9a-f]{2}){3}$"
	regstr += "|^("+valid_colors+")$/i"
	var regexp = eval(regstr);
	return regexp.test(colstr);
}

// isFontSize() - Determine if argument is valid size
function isFontSize(sizstr) {
	if (isNull(sizstr)) { return false; }

	var regstr  = "/^[0-9]{1,4}$"
	regstr += "|^[0-9]{1,3}\.?[0-9]{0,2}[px|pt]$"
	regstr += "/i"
	var regexp = eval(regstr);
	return regexp.test(sizstr);
}

// isFontAttr() - Determine if argument is valid Attribute
function isFontattr(atrstr) {
	if (isNull(atrstr)) { return false; }

	var regstr = "/^[BIUS]{1,4}$/i"
	var regexp = eval(regstr);
	return regexp.test(atrstr);
}

// isFontAlign() - Determine if argument is alignment
function isFontattr(alnstr) {
	if (isNull(alnstr)) { return false; }

	var regstr = "/^[LCR]{1,4}$/i"
	var regexp = eval(regstr);
	return regexp.test(alnstr);
}

// isCursor() - Determine if argument is valid cursor
function isCursor(curstr) {
return true;
	if (isNull(curstr)) { return false; }

	var regstr  = "/^(" + valid_cursors + "){0,}"  
//|(url\(*\)){0,}$/i"
	var regexp = eval(regstr);
	return regexp.test(curstr);
}


// isNotNumber() - Is argument not a number?
function isNotNumber(num) {
	return ((argvalue==undefined) || (argvalue=="") || isNaN(argvalue))
}

// isNumber() - Is argument a number?
function isNumber(num) {
	return !((argvalue==undefined) || (argvalue=="") || isNaN(argvalue))
}


// disp_error() - display argument error
function disp_error(field,value,ftype) {
	var valstr=String(value);
	var msg  = "The argument \""+field+"\" has an incorrect value of \""+value+"\".\n\n"
	    msg += "This element's value should be a "+ftype+"."
	switch (ftype) {
		case "color":
			msg += "\n\nValid colors are:\n"
			msg += "\t#rrggbb - Where rr gg bb are 3 hex-pairs for red, green and blue"
			msg += "(e.g. #ff0000 = red)\n\n"
			msg += "\tOr one of the following color names:\n\t"
			var mycols=valid_colors.split("|");
			for (i=0; i<mycols.length; i++) { msg += "  " + mycols[i]; if (!((i+1)%10)) { msg+="\n\t"; } }
		break;
		case "cursor":
			msg += "\n\nValid cursor names are:\n\t"

			var mycurs=valid_cursors.split("|");
			for (i=0; i<mycurs.length; i++) { msg += "  " + mycurs[i]; if (!((i+1)%10)) { msg+="\n\t"; } }
		break;
	}
	alert(msg);
}

// trans_align() - translate alignment
function trans_align(code) {
	switch (code.toLowerCase()) {
		case "r" : return "right"; break;
		case "l" : return "left"; break;
		default  : return "center"; break;
	}
}

// trans_attrib() - translate font attributes
function trans_attrib(codes) {
	var attrstr="";
	var chr;
	for (var i=0; i<codes.length; i++) {
		chr = codes.charAt(i);
		switch (chr.toLowerCase()) {
			case "b" : attrstr += "font-weight:bold;"; break;
			case "s" : attrstr += "font-variant:small-caps;"; break;
			case "i" : attrstr += "font-style:italic;"; break;
			case "u" : attrstr += "text-decoration:underline;"; break;
		}
	}
	return attrstr;
}

// trans_iattrib() - translate image attributes
function trans_iattrib(codes) {
	var attrstr="";
	var chr;

	for (var i=0; i<codes.length; i++) {
		chr = codes.charAt(i);
		switch (chr.toLowerCase()) {
			case "i" : attrstr += "filter:invert();"; break;
			case "g" : attrstr += "filter:gray();"; break;
		}
	}
	return attrstr;
}

// trim() - Trim spaces
function trim(value) {

	while(value.charAt(0)==' ')
		value=value.substring(1,value.length);
	while(value.charAt(value.length)==' ')
		value=value.substring(0,value.length-1);
	return value;
}


// set_def() - Set default values
function set_def() {

	if (!arguments.length) {
		def_fcolr = pdef_fcolr;
		def_fsize = pdef_fsize;
		def_fname = pdef_fname;
		def_falgn = pdef_falgn;
		def_fattr = pdef_fattr;
		def_foffx = pdef_foffx;
		def_foffy = pdef_foffy;
		def_dirhv = pdef_dirhv;
		def_space = pdef_space;
		def_plurl = pdef_plurl;
		def_cursr = pdef_cursr;
		def_frame = pdef_frame;
		return;
	}

	var argstr= new Array();

	if ((arguments.length==1) && (arguments[0].match(/;/))) {
		args = arguments[0].split(";");
		for (var k=0; k<args.length; k++) {
			argstr[k] = trim(args[k]);
		}
	} else argstr=arguments;

	for (var j=0; j<argstr.length; j++) {
		args = argstr[j].split(argsep);
		argname = trim(args[0]); argvalue = trim(args[1]);

		switch (argname) {
			case "defposxy" : getDefXY(argvalue); break;
			case "fdefname" : def_fname = argvalue; break;
			case "fdefsize" :
				if (!isFontSize(argvalue)) { disp_error(argname,argvalue,"font size"); }
				else { def_fsize = argvalue; }
			break;
			case "fdefcolr" :
				if (!isColor(argvalue)) { disp_error(argname,argvalue,"color"); }
				else { def_fcolr = argvalue; }
			break;
			case "fdefalgn" :
				if (!argvalue.match(/^[lcr]$/i)) {
					disp_error(argname,argvalue,"alignment code [l,c,r]");
				} else { def_falgn = trans_align(argvalue); }
			break;
			case "fdefattr" :
				if (!argvalue.match(/^[bisu]{1,4}$/i)) {
					disp_error(argname,argvalue,"font attribute code [b,i,s,u]");
				} else { def_fattr = trans_attrib(argvalue); }
			break;
			case "fdefoffx" :
				if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
				else { def_foffx = Number(argvalue); }
			break;
			case "fdefoffy" :
				if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
				else { def_foffy = Number(argvalue); }
			break;
			case "defdirhv" :
				if (!argvalue.match(/^[hv]$/i)) { disp_error(argname,argvalue,"number"); }
				else { def_dirhv = argvalue; }
			break;
			case "defspace" :
				if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
				else { def_space = Number(argvalue); }
			break;
			case "defplurl" :
				if ((argvalue!="1") && (argvalue!="2")) {
					 disp_error(argname,argvalue,"number (1 or 2)");
				} else { def_plurl = argvalue; }
			break;
			case "defframe" : def_frame = argvalue; break;
			case "defcursr" :
				def_cursr = argvalue;
				re = "/^("+valid_cursors+")$/i"
				if (!argvalue.match(eval(re))) {
					disp_error(argname,argvalue,"cursor");
				} else { def_cursr = argvalue; }
			break;
			default :
				errstr = "ERROR!\n\nUnknown default \"" + argname
				errstr += "\" with a value of \"" + argvalue +"\".\n";
				alert(errstr);
		}
	}
}


// make_button() - Create button layers
function make_button() {

	var coordx=-1, coordy=-1;	// Position coords
	var coffsx=0, coffsy=0;		// Position offset
	var width, height;		// Button dimensions
	var status,url,frame;		// Status text, destination URL, and dest frame
	var image = ["","",""];		// Background Images
	var iattr = ["","",""];		// Image attributes
	var color = ["","",""];		// Background colors (if no images)
	var cattr = ["","",""];
	var btext = ["","",""];		// Button text
	var fname = ["","",""];		// Font name
	var fsize = ["","",""];		// Font sizes     [nn + px, pt, cm, in, mm, pc]
	var fcolr = ["","",""];		// Font color     [name, rgb(xxx,yyy,zzz), #aabbcc]
	var falgn = ["","",""];		// Font alignment [left, center, right]
	var fvspc = ["","",""];		// Font vertical space
	var foffsx="", foffsy="";	// Text offset
	var fattr = ["","",""];		// Font attr      [B, I, S, U]
	var fglow = ["","",""];		// Font glow effect (IE only)
	var fdrop = ["","",""];		// Font dropshadow effect (IE only)
	var bordr = ["","",""];
	var bordw = ["","",""];
	var cursr;
	var exp="";
	var q="\""
	var argstr= new Array();

	if (arguments.length==1) {
		args = arguments[0].split(";")
		for (var k=0; k<args.length; k++) {
			argstr[k] = trim(args[k]);
		}
	} else argstr=arguments;

	for (var j=0; j<argstr.length; j++) {
		args = argstr[j].split(argsep)
		argname = trim(args[0]); argvalue = trim(args[1]);
		if (argname.match(/[a-zA-Z]{5}([012]|(_|-)[nop])$/i)) {
			switch (argname.charAt(argname.length-1)) {
				case "0": case "n": layer=0; break;
				case "1": case "o": layer=1; break;
				case "2": case "p": layer=2; break;
			}
			argname=argname.substr(0,5);
		}

	   switch (argname) {

		case "coords" :
			if (!argvalue.match(/^\(([0-9]{1,4}|auto),([0-9]{1,4}|auto)\)$/i)) {
				disp_error(argname,argvalue,"column/row value: (number|auto,number|auto)");
			} else {
				arg = argvalue.substring(1,argvalue.length-1);
				args = arg.split(",")
				coordx = Number(args[0]); coordy = Number(args[1]);
			}
		break;
		case "coordx" :
			if ((argvalue!="auto") && isNotNumber(argvalue)) {
				disp_error(argname,argvalue,"number (or 'auto')"); }
			else { coordx = Number(argvalue); }
		break;
		case "coordy" :
			if ((argvalue!="auto") && isNotNumber(argvalue)) {
				disp_error(argname,argvalue,"number (or 'auto')"); }
			else { coordy = Number(argvalue); }
		break;
		case "coffsx" :
			if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
			else { coffsx = Number(argvalue); }
		break;
		case "coffsy" :
			if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
			else { coffsy = Number(argvalue); }
		break;
		case "sizexy" :
			if (!argvalue.match(/^\([0-9]{1,4},[0-9]{1,4}\)$/i)) {
				disp_error(argname,argvalue,"dimension in pixels (width,height)");
			} else {
				arg = argvalue.substring(1,argvalue.length-1);
				args = arg.split(",")
				width = Number(args[0]); height = Number(args[1]);
		}
		break;
		case "width" :
			if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
			else { width = argvalue; }
		break;
		case "height" :
			if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
			else { height = argvalue; }
		break;

		case "foffsx" :
			if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
			else { foffsx = Number(argvalue); }
		break;
		case "foffsy" :
			if (isNotNumber(argvalue)) { disp_error(argname,argvalue,"number"); }
			else { foffsy = Number(argvalue); }
		break;
		case "status" : status = argvalue; break;
		case "url" : url = argvalue; break;
		case "frame" : frame = argvalue; break;

		case "images": for (var i=0; i<=def_plurl; i++) {image[i]=argvalue;} break;
		case "image" : image[layer]=argvalue; break;
		case "iattrs":
		case "iattr" :
			if (!argvalue.match(/^[ig]$/i)) {
				disp_error(argname,argvalue,"single image attribute code [i,g]");
			} else {
				if (argname=="iattrs") {
					for (var i=0; i<=def_plurl; i++) { iattr[i]=trans_iattrib(argvalue); }
				} else { iattr[layer]=trans_iattrib(argvalue); }
			}
		break;
		case "colors" :
		case "color" :
                        if (argvalue.match(/^g\(#([0-9a-f]{2}){3},#([0-9a-f]{2}){3}\)$/i)) {
				if (navigator.userAgent.indexOf('MSIE')>0) {
					var valstr = "filter:progid:DXImageTransform.Microsoft."
					valstr += "gradient(gradientType=0,startColorStr='#"+argvalue.substr(3,6)
					valstr += "',endColorStr='#"+argvalue.substr(11,6)+");";
					if (argname=="colors") {
						for (var i=0; i<=def_plurl; i++) { cattr[i] = valstr; }
					} else { cattr[layer] = valstr; }
				} else {
					if (argname=="colors") {
						for (var i=0; i<=def_plurl; i++) { color[i] = argvalue.substr(2,7); }
					} else { color[layer] = argvalue.substr(2,7); }
				}
			} else if (isColor(argvalue)) {
				if (argname=="colors") {
					for (var i=0; i<=def_plurl; i++) { color[i] = argvalue; }
				} else { color[layer] = argvalue; }
			} else { disp_error(argname,argvalue,"color"); }
		break;
		case "btexts": for (var i=0; i<=def_plurl; i++) { btext[i]=argvalue; }; break;
		case "btext" : btext[layer] = argvalue; break;
		case "fnames": for (var i=0; i<=def_plurl; i++) { fname[i]=argvalue; }; break;
		case "fname" : fname[layer] = argvalue; break;
		case "fsizes":
		case "fsize" :
			if (!isFontSize(argvalue)) { disp_error(argname,argvalue,"font size"); }
			if (argname=="fsizes") { for (var i=0; i<=def_plurl; i++) { fsize[i] = argvalue; }
			} else { fsize[layer] = argvalue; }
		break;
		case "fcolrs":
		case "fcolr" :
			if (!isColor(argvalue)) { disp_error(argname,argvalue,"color"); }
			if (argname=="fcolrs") { for (var i=0; i<=def_plurl; i++) { fcolr[i] = argvalue; }
			} else { fcolr[layer] = argvalue; }
		break;
		case "fvspcs" :
		case "fvspc" :
			if (!argvalue.match(/^[0-9]{0,3}\.?[0-9]{0,3}$/i)) { disp_error(argname,argvalue,"number"); }
			if (argname=="fvspcs") {
				for (var i=0; i<=def_plurl; i++) { fattr[i] += "line-height:"+argvalue+";"; }
			} else { fattr[layer] += "line-height:"+argvalue+";"; }
		break;
		case "falgns" :
		case "falgn" :
			if (!argvalue.match(/^[lcr]$/i)) { disp_error(argname,argvalue,"alignment code [l,c,r]"); }
			if (argname=="falgns") { for (var i=0; i<=def_plurl; i++) { falgn[i] = trans_align(argvalue); }
			} else { falgn[layer] = trans_align(argvalue); }
		break;
		case "fattrs" :
		case "fattr" :
			if (!argvalue.match(/^[bisu]{1,4}$/i)) {
				disp_error(argname,argvalue,"font attribute code [b,i,s,u]"); }
			if (argname=="fattrs") { for (var i=0; i<=def_plurl; i++) { fattr[i] += trans_attrib(argvalue); }
			} else { fattr[layer] += trans_attrib(argvalue); }
		break;
		case "bordrs":
		break;
		case "bordr" :
			re = /^\((dotted|dashed|solid|double|groove|ridge|inset|outset),#[0-9a-f]{6},[0-9]{1,2}\)$/i;
			if (argvalue.match(re)) {
				var btemp = argvalue.substring(1,argvalue.length-1);
				var bargs = btemp.split(",");
				bordr[layer] = "border-style:"+bargs[0]+"; border-color:"+bargs[1]+
					"; border-width:"+bargs[2]+"px;";
				bordw[layer] = bargs[2];
			} else { disp_error(argname,argvalue,"Border definition: (border type,color,width)"); }
		break;
		case "cursor" :
			if (!isCursor(argvalue)) { disp_error(argname,argvalue,"cursor"); }
			cursr = argvalue; break;
		case "fglows" :
		case "fglow" :
			if (!isColor(argvalue)) { disp_error(argname,argvalue,"color"); }
			if (argname=="fglows") {
				for (var i=0; i<=def_plurl; i++) {
					fattr[i] += "filter:glow(Color="+argvalue+",Strength=5);"; }
			} else { fattr[layer] += "filter:glow(Color="+argvalue+",Strength=5);"; }
		break;
		case "fshdws" :
		case "fshdw" :
			var regstr = "/^\\((("+valid_colors+")|(#[0-9a-fA-F]{6})),[0-9]{1,3}\\)$/i"
			var regexp = eval(regstr);

			if (!regexp.test(argvalue)) {
				disp_error(argname,argvalue,"Shadow parameter: (Color,Strength)");
			} else {
				arg = argvalue.substring(1,argvalue.length-1);
				args = arg.split(",")
				if (argname=="fshdws") {
					for (var i=0; i<=def_plurl; i++) {
						fattr[i] += "filter:shadow(Color="+args[0]+",Direction=135,"
						fattr[i] += "Strength="+args[1]+");";
					}
				} else {
					fattr[layer]+=
						"filter:shadow(Color="+args[0]+",Direction=135,Strength="+args[1]+");";
				}
			}
		break;
		default :
			alert("ERROR!\n\nUnknown element \""+argname+"\" with a value of \"" + argvalue + "\".\n");

	   }
	}

	// require width and height!
	if (isNull(width) || isNull(height)) {
		alert("ERROR!\n\nHeight and/or Width cannot be null!");
		return;
	}
	// Assign default values if Null
	if (coordx<0) { coordx=but_nextx; }
	if (coordy<0) { coordy=but_nexty; }
	for (var i=0; i<=2; i++) {
		if (isNull(fname[i])) { fname[i]=def_fname; }
		if (isNull(falgn[i])) { falgn[i]=def_falgn; }
		if (isNull(fsize[i])) { fsize[i]=def_fsize; }
		if (isNull(fcolr[i])) { fcolr[i]=def_fcolr; }
		if (isNull(fattr[i])) { fattr[i]=def_fattr; }
	}
	if (isNull(foffsx)) foffsx=def_foffx;
	if (isNull(foffsy)) foffsy=def_foffy;
	if (isNull(status)) status=" ";
	if (isNull(url)) url="#";

	name = genname ();

        exp="<DIV ID='"+name+"' style=\"position:relative;width:"+width+"px;height:"+height+"px;background-color:white;\">"

	// "<name>-C0/C1/C2" - Color layers
	for (var i=0; i<=2; i++) {
		if (isNotNull(color[i]) || isNotNull(cattr[i])) {
			exp +=  "\n<DIV ID='"+name+"-C"+i+"' "
			exp += "style=\"position:absolute;"
			exp += "top:"+coordy+"px;left:"+coordx+"px;width:"+width+"px;height:"+height+"px;"
			exp += "background-color:"+color[i]+"; "+cattr[i]+"; "+init_layer_state(i)+"\">"
			exp += "</DIV>"
		}
	}

	// "<name>-G0/G1/G2" - Graphics layers
	for (var i=0; i<=2; i++) {
		if (isNotNull(image[i])) {
			exp +=  "\n<DIV ID='"+name+"-G"+i+"' "
			exp += "style=\"position:absolute;"
//			exp += "top:"+coordy+"px;left:"+coordx+"px;width:"+width+"px;height:"+height+"px;"
			exp += "top:0px;left:0;width:"+width+"px;height:"+height+"px;"
			exp += "background-image:URL('"+image[i]+"'); layer-background-image:URL('"+image[i]+"');"
			exp += iattr[i]+"; "+init_layer_state(i)+"; "
			exp += " \">"
			exp += "</DIV>"
		}
	}

	// "<name>-B0/B1/B2" - border layer 0 - Normal state
	for (var i=0; i<=2; i++) {
		if (isNotNull(bordr[i])) {
			var min = (height.value>width.value)?width:height
			if (((min-(bordw[i]*2))-10)<bordw[i]) {bordw[i]=min/2-10; }
			exp +=  "\n<DIV ID='"+name+"-B"+i+"' "
			exp += "style=\"position:absolute;top:"+coordy+"px;left:"+coordx+"px"
			exp += ";width:"+(width-(bordw[i]*2))+"px;height:"+(height-(bordw[i]*2))+"px;"
			exp += bordr[i]+"border-width:"+bordw[i]+"px; "+init_layer_state(i)+" \">";
			exp += "<img src='trans.gif' width="+(width-(bordw[i]*2))
			exp += " height="+(height-(bordw[i]*2))+" border=0>"
			exp += "</DIV>"
		}
	}

	// "<name>-T0/T1/T2" - Text layers
	for (var i=0; i<=2; i++) {
		if (isNotNull(btext[i])) {
			exp += "\n<DIV ID='"+name+"-T"+i+"' "
//			exp += "style=\"position:absolute;top:"+Number(coordy+foffsy)+"px;left:"+Number(coordx+foffsx)+"px;"
			exp += "style=\"position:absolute;top:0px;left:0px;"
			exp += "width:"+width+"px;height:"+height+"px; "+init_layer_state(i)+"; \">"
			exp += "<table width='100%' height='100%' cellpadding='0' cellspacing='0'><tr>"
			exp += "<td align="+falgn[i]+" valign='middle' "
			exp += "style=\"font-family:"+fname[i]+";font-size:"+fsize[i]+";color:"+fcolr[i]+";"
			exp += fattr[i]+" \">"
			exp += btext[i]
			exp += "</tr></td></table></DIV>"
		}
	}

	// "<name>-B" - Blank layer - Transparent mouseover event handler
			exp += "\n<DIV ID='"+name+"-B' "
//			exp += "style=\"position:absolute;top:"+coordy+"px;left:"+coordx+"px;width:"+width+"px;height:"+height+"px; \">"
			exp += "style=\"position:absolute;top:0px;left:0px;width:"+width+"px;height:"+height+"px; \">"
			exp += "<a href='"+url+"' target='"+frame+"' onmouseover=\"swap('"+name+"',1,'"+status+"')\;return true;\" "
//			exp += "<a href='"+url+"' onmouseover=\"swap('"+name+"',1,'"+status+"')\;return true;\" "
			exp += "onmouseout=\"swap('"+name+"',0,' ');return true;\" onmousedown=\"swap('"+name+"',2,' ');return true;\""
			if (def_butup) {
				exp += "onmouseup=\"swap('"+name+"',1,' ');return true;"
			}
			exp += "\">"
			if (isNull(cursr)) { cursr=def_cursr; }
			if (isNotNull(cursr)) { exp += "<span style=\"cursor:"+cursr+"\">"; }
			exp += "<img src='trans.gif' width="+width+" height="+height+" border=0></a>"
			if (isNotNull(cursr)) { exp += "</span>"; }
			exp += "</DIV>"

	if (def_dirhv=="h") {
		but_nextx = Number(coordx) + Number(width) + Number(def_space);
		but_nexty = coordy;
	} else {
		but_nextx = coordx;
		but_nexty = Number(coordy) + Number(height) + Number(def_space);
	}

	exp+="</DIV>";

	// Let's show all this hard work
	document.write(exp);

}


