var lnvis = true;

function updateCSS(cl,pr,vl){
	//update css values
	//parameters cl = Class Name, pr = CSS Property, vl = CSS Value
	var dagnabbit;
	if (document.all){
		dagnabbit = 'rules';
	} else {
		dagnabbit = 'cssRules';
	}
	for (var i = 0; i < document.styleSheets.length; i++){
		
		for (var j=0; j < document.styleSheets[i][dagnabbit].length;j++){
			//alert(document.styleSheets[i][dagnabbit][j].selectorText);
			if(document.styleSheets[i][dagnabbit][j].selectorText == cl){
				//alert('got it');
				document.styleSheets[i][dagnabbit][j].style[pr] = vl;
				return;
			}
		}
	}
}

function toggle_line_numbers(par){
	if (lnvis == true){
		removenumbering(par);
		//updateCSS('.linenumber','display','none');
		lnvis = false;
		//alert('hiding');
	} else {
		//updateCSS('.linenumber','display','');
		codenumbering(par);
		lnvis = true;   
		//alert('showing');
	}
}
function line_spacing(len,curline){
	ln = '&nbsp;';
	lens = len + '';
	curlines = curline + '';
	if(lens.length > curlines.length){
		k = lens.length - curlines.length;
		ln = "&nbsp;";
		for(l=0;l<k;l++){
			ln = "&nbsp;"+ln;
		}
	}
	ln +=curlines; 
	return ln;
}
function numbers(elem){
 myarray = elem.innerHTML.split("\n");
 numbered = "";
 var mynum = myarray.length;
 //alert(mynum); 
 //alert(elem.id);
 for(i=0;i<mynum;i++){
 	  line = line_spacing(mynum,(i+1));
 	  
 	  if (myarray[i].indexOf('"skeo"')>0){
 	  	//alert('with quotes');
 	  	numbered += myarray[i].replace(/class="skeo">/,'class="skeo"><span class="linenumber">'+line+'</span>');
      //alert(myarray[i].replace(/class=skeo>/,'class="skeo"><span class="linenumber">'+line+'</span>'));
 	  	if(i < mynum - 1) numbered +="\n";
 	  } else if  (myarray[i].indexOf('"skee"')>0){
 	  	numbered += myarray[i].replace(/class="skee">/,'class="skee"><span class="linenumber">'+line+'</span>');
 	  	//alert(myarray[i].replace(/class=skee>/,'class="skee"><span class="linenumber">'+line+'</span>'));
 	  	if(i < mynum - 1) numbered +="\n";
 	  } else if (myarray[i].indexOf('skeo')>0){
 	  	//alert('no quotes');
 	  	numbered += myarray[i].replace(/class=skeo>/,'class="skeo"><span class="linenumber">'+line+'</span>');
 	  	if(i < mynum - 1) numbered +="\n";
 	  } else if (myarray[i].indexOf('skee')>0){
 	  	numbered += myarray[i].replace(/class=skee>/,'class="skee"><span class="linenumber">'+line+'</span>');
 	  	if(i < mynum - 1) numbered +="\n";
 	  }else {
 	  	if(i%2) {numbered +='<span class="skeo">';} else {numbered += '<span class="skee">';} 	  	
 	    numbered += '<span class="linenumber">'+line+"</span>" + myarray[i];
 	    if(i < mynum - 1) {numbered +="\n</span>";} else {numbered += '</span>';}
 	  }
 
 	  //numbered += myarray[i];
 	
 } 
 //alert(numbered);   
// numbered='<span class="linenumber">&nbsp;&nbsp;1</span><SPAN class="def_Comment def_Syntax"># Build and install apr 1.2</SPAN>'; 
// numbered += "\n";
// numbered+= '<span class="linenumber">&nbsp;&nbsp;2</span><SPAN class="shell_command_sys def_KeywordStrong def_Keyword">cd</SPAN>';
if (elem.tagName == "PRE" && "outerHTML" in elem){
  elem.outerHTML = '<pre class="code">' + numbered + '</pre>';
	//alert('hey, this might work...');
} else {
 elem.innerHTML = numbered;  
}
} 

function codenumbering(par){
	ne = document.getElementsByClassName('code',par);
	if(!(ne.length)) return;
	var mynum = ne.length;
	//alert(mynum);
	for(j=0;j<mynum;j++){
		numbers(ne[j]); 
	}
}
function removenumbering(par){
	var ne = document.getElementsByClassName('linenumber',par);
	mynum = ne.length;
	for(i=0;i<mynum;i++){
		Element.remove(ne[i]);
	}
}
Event.observe(window, 'load', page_loaded, false);
function page_loaded(evt){
  Event.observe('shtg1','click',code_toggle,false);
  Event.observe('shln1','click',ct, false);	
}
function code_toggle(evt){
	Effect.toggle('codeseg1','blind'); 
	Event.stop(evt);
}

function ct(evt){
	toggle_line_numbers('codeseg1');
	Event.stop(evt);
}
