/*****************************
htmlbutton class ver. 1.0
______________________________

Properties:
  buttonId 		string	must be same as button object variable name
  width 		int 		pixel  	
  height 		int 		pixel
  z 			int 		pixel (1-4) wypukłość
  margin 		int 		pixel
  fontFace 		string 	font name
  fontSize 		int 		pt
  fontWeight 	string 	normal | bold | bolder | lighter
  textDecoration 	string	none | underline | overline | line-through
+ textKolor1 	string	kolor tekstu normalny
+ textKolor2 	string 	kolor tekstu rozjaśnionego
+ kolor 		string 	kolor aktualny przycisku
  defkolor 		string 	kolor początkowy przycisku
+ light 		int 		procent rozjaśnienia (-100 do +100)
  html 		string 	tekst/html
+ action 		string 	akcja przy kliknięciu lub url
+ status 		string 	tekst linii statusu przy onmouseover
  disabled 		boolean 	stan: nieaktywny/aktywny

+ zmiana możliwa przez przypisanie
______________________________

Methods:
  getButton(divID)  object reference 
  setKolor(kolor)	  string
  setHTML(html) 	  string
  setAction(action) string
  setLink(url) 	  string
  click()
  disable(bool) 	  boolean
______________________________

Creator template:
<script language="JavaScript">
	bt_1 = new htmlbutton('bt_1',100,20,2,1,"sans serif","8pt","bold","underline","black","gray","#C0C0C0",20,"","","");
	bt_1.getButton(Button_1);
</script>
<span id="Button_1"></span>
______________________________

Copywrite:
autor: Piotr Szałkowski
e-mail:pszalk@poczta.onet.pl
*****************************/

var allowhtmlbutton = (document.all) ? true : false;

function brightness(kolor,prc) {
   if(prc >= -100 && prc <= 100) {
	var R1 = eval("0x"+kolor.substr(1,2));
	var G1 = eval("0x"+kolor.substr(3,2));
	var B1 = eval("0x"+kolor.substr(5,2));

	if(prc>=0 && prc<=100) { //rozjasnianie
		var R2 = parseInt(R1+((255-R1)*prc/100));
		var G2 = parseInt(G1+((255-G1)*prc/100));
		var B2 = parseInt(B1+((255-B1)*prc/100));
	} else {
		var pra = Math.abs(prc);
		var jr = (R1/255);
		var jg = (G1/255);
		var jb = (B1/255);
		var jmax = 0
		jmax = Math.max(jmax,jr)
		jmax = Math.max(jmax,jg)
		jmax = Math.max(jmax,jb)
		var jmin = jmax-(jmax*(pra/100))
		var R2 = Math.ceil(R1*jmin/jmax);
		var G2 = Math.ceil(G1*jmin/jmax);
		var B2 = Math.ceil(B1*jmin/jmax);
	}
	var kolor2 = "#";
	var kolor2 = kolor2 + (R2<16 ? "0" : "") + R2.toString(16);
	var kolor2 = kolor2 + (G2<16 ? "0" : "") + G2.toString(16);
	var kolor2 = kolor2 + (B2<16 ? "0" : "") + B2.toString(16);
	return kolor2;
   }
}

function zmienkolory(objId,procent) {
	var tabela=eval("document.all."+objId);
	var kolor = brightness(tabela.rows(2).cells(1).bgColor,procent);
	var z = eval(objId+".z");
	borderkolor(tabela,kolor,z);
}

function ustawkolory(objId,kolor) {
	var tabela=eval("document.all."+objId);
	tabela.rows(2).cells(1).bgColor=kolor;
	var ckolor = tabela.rows(2).cells(1).bgColor;
	var z = eval(objId+".z");
	borderkolor(tabela,ckolor,z);

	this.kolor = ckolor;
}

function setkolor(kolor) {
	var bid = this.buttonId;
	var str = "document.all."+bid;
	var tabela = eval(str);
	tabela.rows(2).cells(1).bgColor=kolor;
	var ckolor = tabela.rows(2).cells(1).bgColor;
	var z = this.z;
	borderkolor(tabela,ckolor,z);

	this.kolor = ckolor;
}

function borderkolor(tabela,kolor,z) {
	if(z==0) {
		tabela.rows(1).cells(1).bgColor=kolor;
		tabela.rows(2).cells(0).bgColor=kolor;
		tabela.rows(2).cells(1).bgColor=kolor;
		tabela.rows(2).cells(2).bgColor=kolor;
		tabela.rows(3).cells(0).bgColor=kolor;
	} else {
		if(z>0) {
			tabela.rows(1).cells(1).bgColor=brightness(kolor,30);
			tabela.rows(2).cells(0).bgColor=brightness(kolor,50);
			tabela.rows(2).cells(1).bgColor=kolor;
			tabela.rows(2).cells(2).bgColor=brightness(kolor,-30);
			tabela.rows(3).cells(0).bgColor=brightness(kolor,-15);
		} else {
			tabela.rows(1).cells(1).bgColor=brightness(kolor,-20);
			tabela.rows(2).cells(0).bgColor=brightness(kolor,-30);
			tabela.rows(2).cells(1).bgColor=kolor;
			tabela.rows(2).cells(2).bgColor=brightness(kolor,30);
			tabela.rows(3).cells(0).bgColor=brightness(kolor,20);
		}
	}

}

function setstatus(stext) {
	self.status=stext;
	return true;
}

function getbuttonhtml(xid,xw,xh,xz,xmarg,fnf,fns,fnw,fnd,fnk1,fnk2,xproc,xtekst) {
	var z = ((xz==0)?1:Math.abs(xz))
	var s = '';
	s=s+'<table id="'+xid+'" border="0" width="'+xw+'" height="'+xh+'" cellspacing="0" cellpadding="0" style="display:inline; margin:'+xmarg+'px">\n';
	//s=s+'<table id="'+xid+'" border="0" width="'+xw+'" height="'+xh+'" cellspacing="0" cellpadding="0" style="display:inline; margin:'+xmarg+'px; filter:alpha(opacity=100);blur:(Strength=0)">\n';
	s=s+'<tr>\n';
	s=s+'<td colspan="5" height="1" bgcolor='+((xz>=0) ? "#DDDDDD" : "#000000")+'></td>\n';
	s=s+'</tr>\n';
	s=s+'<tr>\n';
	s=s+'<td rowspan="3" width="1" bgcolor='+((xz>=0) ? "#EEEEEE" : "#000000")+'></td>\n';
	s=s+'<td colspan="3" height="'+z+'"></td>\n';
	//s=s+'<td rowspan="3" width="1" bgcolor='+((xz>=0) ? "#000000" : "#EEEEEE")+'></td>\n';
	s=s+'<td rowspan="3" width="1" bgcolor='+((xz>=0) ? "#000000" : "#444444")+'></td>\n';
	s=s+'</tr>\n';
	s=s+'<tr>\n';
	//s=s+'<td width="'+z+'"></td>\n';
	s=s+'<td rowspan="2" width="'+z+'"></td>\n';
	//s=s+'<td align="center" valign="middle" style="cursor:hand;" onmouseover="mouse_over(\''+xid+'\')" onmouseout="mouse_out(\''+xid+'\')" onclick="'+xid+'.click()"><div style="font-family:'+fnf+'; font-size:'+fns+'; font-weight:'+fnw+'; text-decoration:'+fnd+'; color:'+fnk1+'">'+xtekst+'</div></td>\n';
	s=s+'<td align="center" valign="middle" style="cursor:hand;" onmouseover="'+xid+'.mouseOver()" onmouseout="'+xid+'.mouseOut()" onclick="'+xid+'.click()"><div style="font-family:'+fnf+'; font-size:'+fns+'; font-weight:'+fnw+'; text-decoration:'+fnd+'; color:'+fnk1+'">'+xtekst+'</div></td>\n';
	s=s+'<td width="'+z+'"></td>\n';
	s=s+'</tr>\n';
	s=s+'<tr>\n';
	s=s+'<td colspan="2" height="'+z+'"></td>\n';
	s=s+'</tr>\n';
	s=s+'<tr>\n';
	//s=s+'<td colspan="5" height="1" bgcolor='+((xz>=0) ? "#000000" : "#DDDDDD")+'></td>\n';
	s=s+'<td colspan="5" height="1" bgcolor='+((xz>=0) ? "#000000" : "#444444")+'></td>\n';
	s=s+'</tr>\n';
	s=s+'</table>';
	return s;
}

function sethtml(html) {
   if(allowhtmlbutton) {
	this.textarea.innerHTML = html;
   }
}

function getaction(act) {
	var a = act;
	if(a.length>=3) {
		var n=0;
		var ext = new Array(".htm",".shtm",".xml",".asp",".php",".pdf",".doc",".xsl",".csv",".txt");
		for(var i = 0; i < ext.length; i++) {
			n += (a.indexOf(ext[i]) == -1) ? 0 : 1;
		}
		if( (a.length>=5) && (n>0) && (a.indexOf(".",1)!=-1) && (a.indexOf(".href",1)==-1) && (a.indexOf("(",1) == -1)  && (a.indexOf(")",2) == -1)) { //link
			a = "location.href='"+a+"'";
		}
	} else {
		a = "";
   	}
	return a;
}

function setnewaction(strAction,strStat,info) {
	this.action = getaction(strAction);
	this.status = (typeof strStat == "undefined") ? ((this.status == "") ? strAction : this.status ): strStat;
	if(info) {
		alert("Nowy akcja dla przycisku " + this.buttonId + "\n" + this.action);
	}
}

function setnewlink(strLink,strStat,info) {
	this.action = (strLink == "") ? "" : "location.href='"+strLink+"'";
	this.status = (typeof strStat == "undefined") ? strLink : strStat;
	if(info) {
		alert("Nowy link dla przycisku " + this.buttonId + "\n" + this.action);
	}
}

function mouse_over(xid) {
	var dsb = eval(xid+".disabled");
	if(!dsb) {
		var act = eval(xid+".action");
		if(act!="") {
			zmienkolory(xid,eval(xid+".light"));
			eval(xid+".textarea.style.color="+xid+".textKolor2");
		}
	}
	setstatus(eval(xid+".status"));
}

function mouse_out(xid) {
	var dsb = eval(xid+".disabled");
	if(!dsb) {
		var act = eval(xid+".action");
		if(act!="") {
			ustawkolory(xid,eval(xid+".kolor"));
			eval(xid+".textarea.style.color="+xid+".textKolor1");
		}
	}
	setstatus("");
}

function buttonclick() {
	if(!this.disabled) {
		if(this.action == "") {
			alert("Z tym przyciskiem nie jest \nzwi±zana żadna akcja !");
		} else {
			eval(this.action);
		}
	}
}

function mouseover() {
	if(!this.disabled) {
		if(this.action != "") {
			zmienkolory(this.buttonId,this.light)
			this.textarea.style.color=this.textKolor2;
			if(this.moveraction != "") {
				eval(this.moveraction);
			}
		}
	}
	setstatus(this.status);
}

function mouseout() {
	if(!this.disabled) {
		if(this.action != "") {
			ustawkolory(this.buttonId,this.kolor)
			this.textarea.style.color=this.textKolor1;
			if(this.moutaction != "") {
				eval(this.moutaction);
			}
		}
	}
	setstatus("");
}

function buttondisable(dsb) {
	var kolor = (dsb) ? "#C0C0C0" : this.kolor
	var bid = this.buttonId;
	var str = "document.all."+bid;
	var tabela = eval(str);
	tabela.rows(2).cells(1).bgColor=kolor;
	var ckolor = tabela.rows(2).cells(1).bgColor;
	var z = this.z;
	borderkolor(tabela,kolor,z);
	var txkolor = (dsb) ? "#F3F3F3" : this.textKolor1;
	this.textarea.style.color=txkolor;
	this.disabled = (dsb) ? true : false;
}

function makebtn(divobj) {
   if(allowhtmlbutton) {
	divobj.innerHTML = getbuttonhtml(this.buttonId,this.width,this.height,this.z,this.margin,this.fontFace,this.fontSize,this.fontWeight,this.textDecoration,this.textKolor1,this.textKolor2,this.light,this.html);
	ustawkolory(this.buttonId,this.kolor);
	var tbl = eval("document.all."+this.buttonId);
	this.tbl = tbl;
	var button = this.tbl.rows(2).cells(1);
	this.button = button;
	var textarea = button.children(0);
	this.textarea = textarea;
   }
}

function htmlbutton(xid,xw,xh,xz,xmarg,fnf,fns,fnw,fnd,fnk1,fnk2,xkolor,xproc,xhtml,xhref,xstat) {
	this.buttonId = xid;
	this.width = xw;
	this.height = xh;
	this.z = xz //(xz<=0) ? 0 : (xz>=4) ? 4 : xz;
	this.margin = xmarg;
	this.fontFace = fnf;
	this.fontSize = fns;
	this.fontWeight = fnw;
	this.textDecoration = fnd;
	this.textKolor1 = fnk1;
	this.textKolor2 = fnk2
	this.kolor = xkolor;
	this.defkolor = xkolor;
	this.light = xproc;
	this.html = (typeof xhtml == "undefined" || xhtml == "") ? "("+xid+")" : xhtml;
	this.action = getaction((typeof xhref == "undefined") ? "" : xhref);
	//this.status = (typeof xstat == "undefined") ? ((this.action == "") ? "button "+xid+" - no action !" : xhref) : xstat;
	this.status = (typeof xstat == "undefined") ? ((this.action == "") ? "" : xhref) : xstat;
	this.disabled = false;
	this.getButton = makebtn;
	this.setKolor = setkolor;
	this.setHTML = sethtml;
	this.setAction = setnewaction;
	this.setLink = setnewlink;
	this.click = buttonclick;
this.mouseOver = mouseover;
this.mouseOut = mouseout;
this.moveraction=""
this.moutaction=""
	this.disable = buttondisable;
}
