
var clrsArry = Array()			//default colors
clrsArry[0]='blue';			 	//clrPg0
clrsArry[1]='yellow';		 	//clrPg1
clrsArry[2]='green';			//clrBothP
clrsArry[3]='aquamarine';	 	//clrStatBit
clrsArry[4]='red';			 	//clrIntconBit
clrsArry[5]='magenta';		 	//clrOptionBit
clrsArry[6]='orange';		 	//clrEeecon1Bit
clrsArry[7]='white';			//clrConfig
clrsArry[8]='navy';		 		//clrAsmDir
clrsArry[9]='#C0C0C0';			//clrBckGrnd
clrsArry[10]='purple';		 	//clrOpcd
clrsArry[11]='cyan';			//clrComment
clrsArry[12]='black';			//clrTxt
clrsArry[13]='fuchsia';			//dest(ination)
clrsArry[14]='dark khaki';	 		//clrNewSymbls
clrsArry[15]='dark slate';	 	//clrMacro
clrsArry[16]='slate';	 	//clrConst
//-------------------color schemes---------
var clrScheme0 = clrsArry; //defaiult scheme

var clrScheme1 = Array()//white
clrScheme1[0]='blue';			 	//clrPg0
clrScheme1[1]='teal';		 	//clrPg1
clrScheme1[2]='green';			//clrBothP
clrScheme1[3]='navy';	 	//clrStatBit
clrScheme1[4]='red';			 	//clrIntconBit
clrScheme1[5]='magenta';		 	//clrOptionBit
clrScheme1[6]='orange';		 	//clrEeecon1Bit
clrScheme1[7]='purole';			//clrConfig
clrScheme1[8]='navy';		 		//clrAsmDir
clrScheme1[9]='white';			//clrBckGrnd
clrScheme1[10]='red';		 	//clrOpcd
clrScheme1[11]='chocolate';		//clrComment
clrScheme1[12]='black';			//clrTxt
clrScheme1[13]='slate';			//dest(ination)
clrScheme1[14]='dark khaki';	 		//clrNewSymbls
clrScheme1[15]='dark slate';	 	//clrMacro
clrScheme1[16]='slate';	 	//clrConst

var clrScheme2 = Array()//silver
clrScheme2[0]='blue';			 	//clrPg0
clrScheme2[1]='yellow';		 	//clrPg1
clrScheme2[2]='green';			//clrBothP
clrScheme2[3]='aquamarine';	 	//clrStatBit
clrScheme2[4]='red';			 	//clrIntconBit
clrScheme2[5]='magenta';		 	//clrOptionBit
clrScheme2[6]='orange';		 	//clrEeecon1Bit
clrScheme2[7]='white';			//clrConfig
clrScheme2[8]='navy';		 		//clrAsmDir
clrScheme2[9]='silver';			//clrBckGrnd
clrScheme2[10]='purple';		 	//clrOpcd
clrScheme2[11]='aqua';		//clrComment
clrScheme2[12]='black';			//clrTxt
clrScheme2[13]='slate';			//dest(ination)
clrScheme2[14]='dark khaki';	 		//clrNewSymbls
clrScheme2[15]='dark slate';	 	//clrMacro
clrScheme2[16]='khaki';	 	//clrConst

var clrScheme3 = Array()//black
clrScheme3[0]='blue';			 	//clrPg0
clrScheme3[1]='yellow';		 	//clrPg1
clrScheme3[2]='green';			//clrBothP
clrScheme3[3]='silver';	 	//clrStatBit
clrScheme3[4]='red';			 	//clrIntconBit
clrScheme3[5]='magenta';		 	//clrOptionBit
clrScheme3[6]='orange';		 	//clrEeecon1Bit
clrScheme3[7]='white';			//clrConfig
clrScheme3[8]='lime';		 		//clrAsmDir
clrScheme3[9]='black';			//clrBckGrnd
clrScheme3[10]='red';		 	//clrOpcd
clrScheme3[11]='aqua';		//clrComment
clrScheme3[12]='white';			//clrTxt
clrScheme3[13]='slate';			//dest(ination)
clrScheme3[14]='khaki';	 		//clrNewSymbls
clrScheme3[15]='slate';	 	//clrMacro
clrScheme3[16]='springgreen';	 	//clrConst

var clrScheme4 = Array()//navy
clrScheme4[0]='blue';			 	//clrPg0
clrScheme4[1]='yellow';		 	//clrPg1
clrScheme4[2]='green';			//clrBothP
clrScheme4[3]='silver';	 	//clrStatBit
clrScheme4[4]='red';			 	//clrIntconBit
clrScheme4[5]='magenta';		 	//clrOptionBit
clrScheme4[6]='orange';		 	//clrEeecon1Bit
clrScheme4[7]='white';			//clrConfig
clrScheme4[8]='lime';		 		//clrAsmDir
clrScheme4[9]='navy';			//clrBckGrnd
clrScheme4[10]='red';		 	//clrOpcd
clrScheme4[11]='aqua';		//clrComment
clrScheme4[12]='white';			//clrTxt
clrScheme4[13]='slate';			//dest(ination)
clrScheme4[14]='khaki';	 		//clrNewSymbls
clrScheme4[15]='slate';	 	//clrMacro
clrScheme4[16]='springgreen';	 	//clrConst

var clrScheme5 = Array()//Simple White
clrScheme5[0]='green';			 	//clrPg0
clrScheme5[1]='green';		 	//clrPg1
clrScheme5[2]='green';			//clrBothP
clrScheme5[3]='navy';	 	//clrStatBit
clrScheme5[4]='navy';			 	//clrIntconBit
clrScheme5[5]='navy';		 	//clrOptionBit
clrScheme5[6]='navy';		 	//clrEeecon1Bit
clrScheme5[7]='blue';			//clrConfig
clrScheme5[8]='fuchsia';		 		//clrAsmDir
clrScheme5[9]='white';			//clrBckGrnd
clrScheme5[10]='red';		 	//clrOpcd
clrScheme5[11]='teal';		//clrComment
clrScheme5[12]='black';			//clrTxt
clrScheme5[13]='purple';			//dest(ination)
clrScheme5[14]='dark khaki';	 		//clrNewSymbls
clrScheme5[15]='dark slate';	 	//clrMacro
clrScheme5[16]='slate';	 	//clrConst

var clrScheme6= Array()// Simple navy
clrScheme6[0]='green';			 	//clrPg0
clrScheme6[1]='green';		 	//clrPg1
clrScheme6[2]='green';			//clrBothP
clrScheme6[3]='yellow';	 	//clrStatBit
clrScheme6[4]='yellow';			 	//clrIntconBit
clrScheme6[5]='yellow';		 	//clrOptionBit
clrScheme6[6]='yellow';		 	//clrEeecon1Bit
clrScheme6[7]='yellow';			//clrConfig
clrScheme6[8]='fuchsia';		 		//clrAsmDir
clrScheme6[9]='navy';			//clrBckGrnd
clrScheme6[10]='lime';		 	//clrOpcd
clrScheme6[11]='teal';		//clrComment
clrScheme6[12]='aqua';			//clrTxt
clrScheme6[13]='pink';			//dest(ination)
clrScheme6[14]='silver';	 		//clrNewSymbls
clrScheme6[15]='fuchsia';	 	//clrMacro
clrScheme6[16]='springgreen';	 	//clrConst

var clrScheme7 = Array()//Simple Silver
clrScheme7[0]='green';			 	//clrPg0
clrScheme7[1]='green';		 	//clrPg1
clrScheme7[2]='green';			//clrBothP
clrScheme7[3]='navy';	 	//clrStatBit
clrScheme7[4]='navy';			 	//clrIntconBit
clrScheme7[5]='navy';		 	//clrOptionBit
clrScheme7[6]='navy';		 	//clrEeecon1Bit
clrScheme7[7]='blue';			//clrConfig
clrScheme7[8]='fuchsia';		 		//clrAsmDir
clrScheme7[9]='silver';			//clrBckGrnd
clrScheme7[10]='red';		 	//clrOpcd
clrScheme7[11]='teal';		//clrComment
clrScheme7[12]='black';			//clrTxt
clrScheme7[13]='purple';			//dest(ination)
clrScheme7[14]='dark khaki';	 		//clrNewSymbls
clrScheme7[15]='dark slate';	 	//clrMacro
clrScheme7[16]='springgreen';	 	//clrConst
//------------------color schemes end------
var clrPg0 = 0;
var clrPg1 = 1;
var clrBothP = 2;
var clrStatBit = 3;
var clrIntconBit = 4;
var clrOptionBit = 5;
var clrEeecon1Bit =	6;
var clrConfig =	7;
var clrAsmDir = 8;
var clrBckGrnd = 9;
var clrOpcd	= 10;
var clrComment = 11;
var clrTxt = 12;
var dest = 13;
var clrNewSymbls = 14;
var clrMacro = 15;
var clrConst = 16;

function genClrHtml()
{
  if(	curView != 'src'
  	&&
  		curView != 'list')
  {
		alert('Bu fonksiyon sadece \n>>Kaynak veya\n>>Liste \nkısımları açıkken kullanılabilir');
		return;
  }
  statBar('Renkli HTML çıktısı hazırlanıyor...');
  timer(start);// start timer
  document.editor.outpMsgs.value = '';
  addMsg('Hazırlanıyor......');

//-----------start of html list array creation
  var htmlLstArry ='';
   statBar('\nHazırlanıyor...');
 xpnsn = 0;
 lnCntr = 0;
 htmlLstArry = new Array();
 var tempBuf1 = document.editor.codeWindow.value;
 var tempBuf2 = '';
 var lstNdxOfNl = 0; //to store last index of '\n'
 while ( tempBuf1 != "" )
 {
   lstNdxOfNl = tempBuf1.lastIndexOf('\n');
   htmlLstArry[lnCntr] = new Array();//no lenght specified
   htmlLstArry[lnCntr] =  new Array();//no lenght specified
   tempBuf2 = tempBuf1.substring(lstNdxOfNl,tempBuf1.length);//put line in tempBuf2
   htmlLstArry[lnCntr] = trimNlLf(tempBuf2);
   tempBuf1 =  tempBuf1.substring(0,lstNdxOfNl);
   lnCntr += 1;
   statBar('');
  }

//-------------end of htmlLstArry creation-----------
//------------ start of colourized HTML generation---
var tmpArry = Array();
var tmpLnArry = Array();
var comment = '';
var curLn = '';
var ndxOfSmCln = -1;

 statBar('\nKaynak inceleniyor ve HTML hazırlanıyor...');
for(var i = htmlLstArry.length - 1; i >= 0; i--)
   {
	 	statBar('Kalan satır sayısı: '+ i);
	 	tmpLnArry = '';
	 	tmpArry = '';
		comment = '';
		curLn = '';
	 	curLn = htmlLstArry[i]; // copy line to curLn
	 	htmlLstArry[i] = ''; // clear line

	 	 ndxOfSmCln = curLn.indexOf(';'); //get location of ';'
		 if (ndxOfSmCln != -1)//get comments ,if any and remove then from the line
			{
			  comment = curLn.substring(ndxOfSmCln,curLn.length);
			  curLn = curLn.substring(0,ndxOfSmCln); //remove comments from the line
			}
		getLnElements(curLn);//get lines elements to global var  lnsLmnts
	 	tmpArry = lnsLmnts;
                 //alert(tmpArry);
	 	for(var j = 0; j < tmpArry.length; j++)
	 	{      //alert('opcd');
			if(isOpcode(tmpArry[j]) == true)
			{
				tmpLnArry = replace(curLn,tmpArry[j],tmpArry[j].fontcolor(clrsArry[clrOpcd]).bold() );
				htmlLstArry[i] += tmpLnArry[0]// the processed part is added to finished line
				curLn = tmpLnArry[1];
				continue;//curLn.indexOf(tmpArry[j]);
			}

			if(isDefined(tmpArry[j]) == true)
			{
			  	var tmpClr;// temporary color
			  	if(equArry[lastDefNdx].length != 3)// new symbol added by user source and has no color info
			  	{
				  tmpClr = clrsArry[clrNewSymbls]
				}
				else
				{
				  tmpClr = clrsArry[equArry[lastDefNdx][clrNdx]];
				}

				tmpLnArry = replace(curLn,tmpArry[j],tmpArry[j].fontcolor(tmpClr));
				htmlLstArry[i] += tmpLnArry[0]// the processed part is added to finished line
				curLn = tmpLnArry[1];
				continue;
			}

			if(isAsmDir(tmpArry[j]) == true)
			{
				tmpLnArry = replace(curLn,tmpArry[j],tmpArry[j].fontcolor(clrsArry[clrAsmDir]) );
				htmlLstArry[i] += tmpLnArry[0]// the processed part is added to finished line
				curLn = tmpLnArry[1];
				continue;
			}
			
			if(analyze(tmpArry[j]) != 'error')
			{
				tmpLnArry = replace(curLn,tmpArry[j],tmpArry[j].fontcolor(clrsArry[clrConst]).bold() );
				htmlLstArry[i] += tmpLnArry[0]// the processed part is added to finished line
				curLn = tmpLnArry[1];
				continue;
			}

			//if did not find a match till here, color is clrsArry[clrTxt]	so we skip this lmnt  as it is
			  tmpLnArry = replace(curLn,tmpArry[j],tmpArry[j]);
			  htmlLstArry[i] += tmpLnArry[0]// the processed part is added to finished line
			  curLn = tmpLnArry[1];
			  continue;
	  	}

		if(comment != '')
		{
		  	curLn += comment.fontcolor(clrsArry[clrComment]);
		}
		htmlLstArry[i] += curLn;

   }

//-------------html output begins-----------
addMsg('\nHTML penceresı yaratılıyor...    ');
	listWin = open("", "displayWindow","width=700,height=400,status=yes,toolbar=yes,menubar=yes,scrollbars=yes");// create document

 if (listWin != null)
   {
        if (listWin.opener == null)
        listWin.opener = self;
  }
  if (listWin == null)
  {
		alert("Problem creating window, restart your browser");
		addMsg('\nProblem creating window, restart your browser.');
		return;
  }


   listWin.document.open();// open document for further output
  //-----------------------------------------------------------------------------------------------
  // Start HTML Code -------------
  listWin.document.writeln("<HTML>");
  listWin.document.writeln("<HEAD>");
  listWin.document.writeln("<META NAME=\"GENERATOR\" CONTENT=\"Javascript Editor 2\">");
  listWin.document.writeln("<TITLE>DJDASM Renkli HTML Çıktısı</TITLE>");
  listWin.document.writeln("</head>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-329996-1";
urchinTracker();
</script>");
  listWin.document.writeln("<BODY bgcolor=\""+ clrsArry[clrBckGrnd]+"\"  text=\""+clrsArry[clrTxt] +"\">");

//----start body---------------
	var tmpHtml = '';
   listWin.document.writeln("<PRE>");
   for(i = htmlLstArry.length - 1; i >= 0; i--)
   {
		tmpHtml += htmlLstArry[i] + '\n';
   }

	listWin.document.write(tmpHtml);
    listWin.document.writeln("</PRE>");
   //--------end body-----
   listWin.document.writeln("  <p align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-5120552571919249";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "6699CC";
google_color_link = "FFFFFF";
google_color_bg = "003366";
google_color_text = "AECCEB";
google_color_url = "AECCEB";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
</body>");
   listWin.document.writeln("</HTML>");
   // End HTML Code -------------

  //-----------------------------------------------------------------------------------------------

   listWin.document.close(); // close the document - (not the window!)
   addMsg('\nHTML çıktısı başarıyla oluşturuldu...    ');
   addMsg('\n'+ htmlLstArry.length +' satır renklendirildi. Süre: '+ timer(stop));
   statBar('');
   alert('HTML çıktısı başarıyla oluşturuldu...');
}

function replace(str,str2beRplcd,newSubStr)// substitutes str2beRplcd with newSubStr in str and returns modified str
{	var tmpArry = Array();
  	var rplcmntLngth = str2beRplcd.length;
  	var ndxOfRplcmnt = str.indexOf(str2beRplcd);
	var tStr1 = str.substring(0,ndxOfRplcmnt);
	var tStr2 = str.substring(ndxOfRplcmnt + rplcmntLngth,str.length);
	tmpArry[0] = tStr1 + newSubStr ; // first lmnt is the one we are done with
	tmpArry[1] = tStr2 ; // there may still be something to do for the second part
	return tmpArry;

}

function isAsmDir(str)
{
 	str = str.toLowerCase();
	for(a=0;a<asmDirArry.length;a++)
	{
	  if (asmDirArry[a] == str)
	  {
		return true;
		break;
	  }
	}

}

function trimNlLf(str2Trim)
{
		while (
				str2Trim.charAt(0) == '\n'
			||
				str2Trim.charAt(0) == '\r')
		{
			str2Trim = str2Trim.substring(1,(str2Trim.length));
		}
		while (str2Trim.charAt(str2Trim.length-1) == '\n'

			||
				str2Trim.charAt(str2Trim.length-1) == '\r')
		{
			str2Trim = str2Trim.substring(0,(str2Trim.length-1));
		}
		return str2Trim;
}

