/*
	
	GoAscii.com - JavaScript
	Version: 1.0
	
	Copyright © 2007 by OXID Software
	
*/

var TipsEnabled=false;
var ActiveCharTip=-1;
var ActiveHighlight=0;

$=function(ID)
{
	return document.getElementById(ID);
};
Show=function(ID)
{
	$(ID).style.display="";
};
Hide=function(ID)
{
	$(ID).style.display="none";
};
Base2Dec=function(Val,Base)
{
	return parseInt(Val,Base);
};
Dec2Base=function(Val,Base)
{
   	var BaseChars='0123456789ABCDEF';
   	var BaseStr=''
	if (Val==0) {return 0;}
	while (Val>0)
	{
		var BaseStr = BaseChars.charAt(Val%Base)+BaseStr;
		var Val=Math.floor(Val/Base);
	}
	return BaseStr;
};
Hex=function(Dec)
{
	return Dec2Base(Dec,16);
};
Oct=function(Dec)
{
	return Dec2Base(Dec,8);
};
CleanHexInput=function()
{
	var Clean = new RegExp();
	var NewVal;
	Clean = /[0-9ABCDEF]+/;
	NewVal=Clean.exec($("fid_hex").value.toUpperCase());
	
	if (isNaN(parseInt(NewVal,16)) || parseInt(NewVal,16)>=256)
	{
		$("fid_hex").value="";
	}
	else
	{
		if (NewVal!=$("fid_hex").value) {$("fid_hex").value=NewVal;}
	}
};
TypeHexInput=function(e)
{
	var KeyCode=(document.all) ? window.event.keyCode : e.keyCode;
		
	if (KeyCode==8 || (KeyCode>=37 && KeyCode<=40) || KeyCode==46 || KeyCode==35 || KeyCode==36 || KeyCode==9)
	{
		return true;
	}
	else
	{
		if (KeyCode>=48 && KeyCode<=57) {return (parseInt(this.value+(KeyCode-48),16)<=255);}
		else if (KeyCode>=96 && KeyCode<=105) {return (parseInt(this.value+(KeyCode-96),16)<=255);}
		else if (KeyCode>=65 && KeyCode<=70) {return (parseInt(this.value+String.fromCharCode(KeyCode),16)<=255);}
		else {return false;}
	}
};
CleanDecInput=function()
{
	var Clean = new RegExp();
	var NewVal=0;
	Clean = /[0-9]+/;
	NewVal=Clean.exec($("fid_dec").value);
	
	if ((isNaN(NewVal) || Number(NewVal)>=256 || !Number(NewVal)) && NewVal!="0")
	{
		$("fid_dec").value="";
	}
	else
	{
		if (NewVal!=$("fid_dec").value) {$("fid_dec").value=NewVal;}
	}
};
TypeDecInput=function(e)
{
	var KeyCode=(document.all) ? window.event.keyCode : e.keyCode;
	
	if (KeyCode==8 || (KeyCode>=37 && KeyCode<=40) || KeyCode==46 || KeyCode==35 || KeyCode==36 || KeyCode==9)
	{
		return true;
	}
	else
	{
		if (KeyCode>=48 && KeyCode<=57) {return (parseInt(this.value+(KeyCode-48))<256);}
		else if (KeyCode>=96 && KeyCode<=105) {return (parseInt(this.value+(KeyCode-96))<256);}
		else {return false;}
	}
};
CleanOctInput=function()
{
	var Clean = new RegExp();
	var NewVal;
	Clean = /[0-7]+/;
	NewVal=Clean.exec($("fid_oct").value);
	
	if (isNaN(parseInt(NewVal,8)) || parseInt(NewVal,8)>=256)
	{
		$("fid_oct").value="";
	}
	else
	{
		if (NewVal!=$("fid_oct").value) {$("fid_oct").value=NewVal;}
	}
};
TypeOctInput=function(e)
{
	var KeyCode=(document.all) ? window.event.keyCode : e.keyCode;
	
	if (KeyCode==8 || (KeyCode>=37 && KeyCode<=40) || KeyCode==46 || KeyCode==35 || KeyCode==36 || KeyCode==9)
	{
		return true;
	}
	else
	{
		if (KeyCode>=48 && KeyCode<=55) {return (parseInt(this.value+(KeyCode-48),8)<256);}
		else if (KeyCode>=96 && KeyCode<=103) {return (parseInt(this.value+(KeyCode-96),8)<256);}
		else {return false;}
	}
};
ConvertChar=function()
{
	$("fid_dec").value=($("fid_char").value!="") ? $("fid_char").value.charCodeAt(0) : "";
	$("fid_oct").value=($("fid_char").value!="") ? Oct($("fid_char").value.charCodeAt(0)) : "";		
	$("fid_hex").value=($("fid_char").value!="") ? Hex($("fid_char").value.charCodeAt(0)) : "";
};
ConvertDec=function()
{
	$("fid_char").value=($("fid_dec").value!="") ? String.fromCharCode($("fid_dec").value) : "";
	$("fid_oct").value=($("fid_dec").value!="") ? Oct($("fid_dec").value) : "";		
	$("fid_hex").value=($("fid_dec").value!="") ? Hex($("fid_dec").value) : "";
};
ConvertOct=function()
{
	$("fid_dec").value=($("fid_oct").value!="") ? Base2Dec($("fid_oct").value,8) : "";
	$("fid_hex").value=($("fid_oct").value!="") ? Hex(Base2Dec($("fid_oct").value,8)) : "";
	$("fid_char").value=($("fid_oct").value!="") ? String.fromCharCode(Base2Dec($("fid_oct").value,8)) : "";	
};
ConvertHex=function()
{
	$("fid_char").value=($("fid_hex").value!="") ? String.fromCharCode(Base2Dec($("fid_hex").value,16)) : "";
	$("fid_dec").value=($("fid_hex").value!="") ? Base2Dec($("fid_hex").value,16) : "";
	$("fid_oct").value=($("fid_hex").value!="") ? Oct(Base2Dec($("fid_hex").value,16)) : "";
};
MoveCharTip=function(e)
{
	if (TipsEnabled==true)
	{
		if (ActiveCharTip!=-1)
		{
			x = (document.all) ? window.event.x : e.pageX;
			y = (document.all) ? window.event.y : e.pageY;
			
			$("char_tip_"+ActiveCharTip).style.left = (x + 15) + "px";
			$("char_tip_"+ActiveCharTip).style.top = (y - 32) + "px";
		}
	}
};
ShowCharTip=function(Index)
{
	if (TipsEnabled==true)
	{
		ActiveCharTip=Index;
		$("char_tip_"+ActiveCharTip).style.display="block";
	}
};
HideCharTip=function()
{
	if (TipsEnabled==true)
	{
		$("char_tip_"+ActiveCharTip).style.display="none";
	}
};
LoadDec=function(Value)
{
	$("fid_dec").value=Value;
	ConvertDec();
	$("fid_char").focus();
	$("fid_char").select();
};
HighlightChars=function(Group)
{
	switch (ActiveHighlight)
	{
		case 1: //Control chars
			for (var i=0;i<=31;i++) {$("char_"+i).bgColor="#EFEFEF";}
			$("char_127").bgColor="#EFEFEF";
			break;
		case 2:
			for (var i=65;i<=90;i++) {$("char_"+i).bgColor="#EFEFEF";}
			for (var i=97;i<=122;i++) {$("char_"+i).bgColor="#EFEFEF";}
			break;
		case 3:
			for (var i=48;i<=57;i++) {$("char_"+i).bgColor="#EFEFEF";}
			break;
		case 4:
			for (var i=33;i<=47;i++) {$("char_"+i).bgColor="#EFEFEF";}
			for (var i=58;i<=64;i++) {$("char_"+i).bgColor="#EFEFEF";}
			for (var i=91;i<=96;i++) {$("char_"+i).bgColor="#EFEFEF";}
			for (var i=123;i<=126;i++) {$("char_"+i).bgColor="#EFEFEF";}
			break;
	}
	
	ActiveHighlight=Group;
	
	switch (Group)
	{
		case 1:
			for (var i=0;i<=31;i++) {$("char_"+i).bgColor="#3399CC";}
			$("char_127").bgColor="#3399CC";
			break;
		case 2:
			for (var i=65;i<=90;i++) {$("char_"+i).bgColor="#3399CC";}
			for (var i=97;i<=122;i++) {$("char_"+i).bgColor="#3399CC";}
			break;
		case 3:
			for (var i=48;i<=57;i++) {$("char_"+i).bgColor="#3399CC";}
			break;
		case 4:
			for (var i=33;i<=47;i++) {$("char_"+i).bgColor="#3399CC";}
			for (var i=58;i<=64;i++) {$("char_"+i).bgColor="#3399CC";}
			for (var i=91;i<=96;i++) {$("char_"+i).bgColor="#3399CC";}
			for (var i=123;i<=126;i++) {$("char_"+i).bgColor="#3399CC";}
			break;
	}
};
Init=function()
{
	TipsEnabled=true;
	
	$("fid_dec").onkeydown=TypeDecInput;
	$("fid_dec").onchange=function() {CleanDecInput(); ConvertDec();};
	$("fid_dec").onblur=CleanDecInput;
	$("fid_dec").onkeyup=function() {CleanDecInput(); ConvertDec();};
	
	$("fid_oct").onkeydown=TypeOctInput;
	$("fid_oct").onchange=function() {CleanOctInput(); ConvertOct();};
	$("fid_oct").onblur=CleanOctInput;
	$("fid_oct").onkeyup=function() {CleanOctInput(); ConvertOct();};
	
	$("fid_hex").onkeydown=TypeHexInput;
	$("fid_hex").onchange=function() {CleanHexInput(); ConvertHex();};
 	$("fid_hex").onblur=CleanHexInput;
	$("fid_hex").onkeyup=function() {CleanHexInput(); ConvertHex();};
	
	$("fid_char").onkeyup=ConvertChar;
	$("fid_char").onchange=ConvertChar;
	
	document.onmousemove=MoveCharTip;
};

fixPNG=function(myImage)
{	
	if (navigator.appVersion.indexOf("MSIE") != -1)
	{
		var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""
		var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""
		var imgTitle = (myImage.title) ? "title='" + myImage.title + "' " : "title='" + myImage.alt + "' "
		var imgStyle = "display:inline-block;" + myImage.style.cssText 
		var strNewHTML = "<span " + imgID + imgClass + imgTitle
		strNewHTML += " style=\"" + "width:" + myImage.width + "px; height:" + myImage.height + "px;" + imgStyle + ";"
		strNewHTML += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
		strNewHTML += "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>" 
		myImage.outerHTML = strNewHTML
	}
};

