﻿    
function getTargetElement(evt) {
    var elem = (evt.target) ? ((evt.target.nodeType == 3) ? evt.target.parentNode : evt.target) : evt.srcElement;
    return elem;
}

function regtypes(){
	
var posix = ["ereg","eregi","ereg_replace","eregi_replace","split","spliti","sql_regcase"];
var pcre = ["preg_match","preg_quote","preg_match_all","preg_split","preg_grep","preg_replace","preg_replace_callback"];

    if ($("rdpox").checked) {
    
    for (var i=0;i<posix.length;++i) {
        $("select").options[i].text = posix[i];
    }
	}
	else if ($("rdpcr").checked) {
		for (var i=0;i<pcre.length;++i) {
        $("select").options[i].text = pcre[i];
    }
	}	
	removeElement("intxt");
	removeElement("allflags");
	$("select").selectedIndex=0;
	$("output").value = "";
}

function regpattern(ptn) {
var dd = ["/","%","@","#","!","$","&",".","*","^","=",",",";","'","?"];
for (var i in dd) {	
if (ptn.substring(0,1)== dd[i]) {
var d = dd[i];
}
}

	if (d!= undefined) {
	var vre = "\\"+d+"[isxum]*$";
	var re= new RegExp(vre, "g");
	if (ptn.match(re)!=null) {
		return ptn;	
	}
	else  
	var vrr = "\\"+d+"[A-Za-z]+$";
	var rr= new RegExp(vrr, "g");
	var rst = ptn.match(rr);
	if (rst!=null){
	if (rst[0].length<ptn.length)
	return "modifier error";
	}
}
	
return "/"+ptn+"/";
}


function runpreg() {

var vregex = $("regex").value.replace(/\s+$/,"");	 
var vregtype =  ($("rdpcr").checked) ? "pcre" : "posix"; 
if (vregtype=="pcre"){
	vregex = regpattern(vregex);
	
	if (vregex=="modifier error") {
		alert("modifier error");
		return;
		}
} 

var vmethod = $("select").value;
var srcstring = $("scrstr").value;
var selflag = 0;
var vflag="";
if ($("allflags")) selflag = $("allflags").selectedIndex;
	
if (($("allflags"))&&(selflag!=undefined)) {var vflag = $("allflags").options[selflag].text;}

if ($("intxt")) {
            var retxt=$("intxt").value;
        }  
   else
   var retxt="";
   
 
   var phpcode = generatephpcode(vregex,vregtype,vmethod,srcstring,retxt,vflag);
    document.getElementById("code").innerHTML = phpcode;
    document.getElementById("code").style.height="auto";
  //alert(vregex+vregtype+vmethod+srcstring+vflag);
	postvalue(vregex,vregtype,vmethod,srcstring,retxt,vflag);
}

function selectpreg() {
var vregex = $("regex").value.replace(/\s+$/,"");	 
var vregtype =  ($("rdpcr").checked) ? "pcre" : "posix";  
var vmethod = $("select").value;

if (vregtype=="pcre"){
	
var selflag = 0;
if ($("allflags")) selflag = $("allflags").selectedIndex;
	
	removeElement("allflags");
	if ((vmethod==2)||(vmethod==3)) {
		addselect(vmethod);
		
		if (selflag==undefined) {
		var vflag ="";
		}
		else {
		var vflag = $("allflags").options[selflag].text;
		$("allflags").selectedIndex = selflag; 
		
		}		
	}
}       

if (vregtype=="posix"){
    if ((vmethod==2)||(vmethod==3)){
	    createInput ();
       
     }
     else 
	    removeElement("intxt");;
}
else 
{
	
	
	if (vmethod==5){
	    createInput ();
     } 
    else
    removeElement("intxt");
    
}
    
}

function generatephpcode(ptn,typ,mthd,str,repl,flg) {
var code="&lt?php <br>";

if (typ=="posix"){

    if ( mthd!=6) code+='$ptn = <span style="color:#cc3300">"'+ptn.hash()+'"</span>;<br>';
    code+='$str = <span style="color:#cc3300">"'+str.hash()+'"</span>;<br>';
    switch ( mthd ) {            
        case '0':
          
            code+='ereg($ptn, $str, $matches);<br>';
			code+='print_r($matches);<br>';
            
            break;
        case '1':
            code+='eregi($ptn, $str, $matches);<br>';
			code+='print_r($matches);<br>';
            break;
        case '2':
            //code+='$rpltxt = "'+repl+'";<br>';
            code+='$rpltxt = <span style="color:#cc3300">"'+repl.hash()+'"</span>;<br>';            	
            code+='echo ereg_replace($ptn, $rpltxt, $str);<br>';
			
            break;
        case '3':
            //code+='$rpltxt = "'+repl+'";<br>';
            code+='$rpltxt = <span style="color:#cc3300">"'+repl.hash()+'"</span>;<br>';
            	
            code+='echo eregi_replace($ptn, $rpltxt, $str);<br>';
            break;
            code+=mthd;
        case '4':
            code+='$split_array = split($ptn, $str);<br>';
			code+='print_r($split_array);<br>';
            break;
        case '5':
            code+='$split_array = spliti($ptn, $str);<br>';
			code+='print_r($split_array);<br>';
            break;
        case '6':
            code+='echo sql_regcase($str);'
            break;
      } 
           
}
else if (typ=="pcre"){
    if (mthd!=1) code+='$ptn = <span style="color:#cc3300">"'+ptn.hash()+'"</span>;<br>';
    code+='$str = <span style="color:#cc3300">"'+str.hash()+'"</span>;<br>';
    switch ( mthd ) {            
        case '0':
            
            code+='preg_match($ptn, $str, $matches);<br>';
			code+='print_r($matches);<br>';
            
            break;
        case '1':
            code+='echo preg_quote($str);<br>';
            break;
        case '2':
            if (flg=="") {
            code+='preg_match_all($ptn, $str, $matches);<br>';       
            }
            else
            code+='preg_match_all($ptn, $str, $matches, '+flg+');<br>';  
            
            code+='print_r($matches);<br>';
            break;
        case '3':
            if (flg=="") {
                code+='$result = preg_split($ptn, $str);<br>';
            }
            else
                code+='preg_split($ptn, $str, -1, '+flg+');<br>'; 
            code+='print_r($result);<br>';
            
            break;
            
        case '4':
            code+='$result = preg_grep($ptn, $inputArray);<br>';
			code+='print_r($result);<br>';
            break;
        case '5':
            //code+='$rpltxt = "'+repl+'";<br>';
            code+='$rpltxt = <span style="color:#cc3300">"'+repl.hash()+'"</span>;<br>';            	
            code+='echo preg_replace($ptn, $rpltxt, $str);<br>';
            break;
        case '6':
            code+='$result = preg_replace_callback($ptn,"callbackhandler",$str);<br>';
			code+='echo $result;<br>';
			
			code+='function callbackhandler($matches) {<br>';
	        code+='return print_r($matches);<br>';
            code+=' }<br>';
			
            break;
      } 
       
}
return phpmakeup(code)+'?>';

}


function postvalue(ptn,typ,mthd,str,repl,flg) {

var url = "../phpscript/regparser.php";
var ipsum = "ccccccccc";
var binny = "vvvvvvvv";
//var params = "lorem=ipsum&name=binny";
//var params = "lorem="+ipsum+"&name="+binny;
//p="+ptn+"&t="+typ+"&m="+mthd+"&s="+str
//alert(encodeURIComponent(ptn))
var params ="p="+encodeURIComponent(ptn)+"&t="+typ+"&m="+mthd+"&s="+encodeURIComponent(str)+"&r="+repl+"&f="+flg;
xmlhttp=GetXmlHttpObject();
xmlhttp.open("POST", url, true);

//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
document.getElementById("pr").style.visibility="visible";
xmlhttp.onreadystatechange = function() {//Call a function when the state changes.
	if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	    
		$("output").value = "";
		$("output").value = xmlhttp.responseText;
		document.getElementById("pr").style.visibility="hidden";
	}
}
xmlhttp.send(params);

}

var xmlhttp;
function sendpar1(ptn,typ,mthd,str)
{
	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="../script/regparser.php";
//alert(ptn+typ+mthd+str)
url=url+"?p="+ptn+"&t="+typ+"&m="+mthd+"&s="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function sendpar(ptn,typ,mthd,str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="script/regparser.php";
//alert(ptn+typ+mthd+str)
//url=url+"?p="+ptn+"&t="+typ+"&m="+mthd+"&s="+str;
//url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("POST",url,true);
xmlhttp.send("p=ptn&t=typ&m=mthd&s=str");
//xmlHttp.send("param1=x&param2=y");
}
function stateChanged()
{
	//document.getElementById("pr").style.visibility="visible";
if (xmlhttp.readyState==4)
{
	
$("vis").innerHTML=xmlhttp.responseText;
//document.getElementById("pr").style.visibility="hidden";
}
}
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}
	

function toolbarEvent(evt) {
    evt = (evt) ? evt : ((window.event) ? window.event : "")

	    if (evt) {
		    var elem = getTargetElement(evt);			
			if (evt.type == "click") {
				
				if (elem.id == "bkh"){
					if (n==1) {
						elem.className ="tbno";
					}					
					backhistory();					
				}
				else if (elem.id == "fwh") {
					if (n==hsreg.length-1) {
					elem.className ="tbno";
					}
					forwordhistory();
				}
								
			}
			else if (evt.type == "mouseover") {
				if (elem.className=="tbnm") {
					elem.className ="tbhv";
				}
			}
			else if (evt.type == "mouseout") {
				if (elem.className=="tbhv") {
					elem.className ="tbnm";
				}
			} 		    
	   }
}
	

var hsreg = new Array;
var hsflg = new Array;
var hstring = new Array;
var hsact = new Array;
var hsreptxt = new Array;
var hsregex = new Array;
var hsjsex = new Array;
var hstype = new Array;
var hsresult = new Array;
var hslastindex = new Array;
var hsource = new Array;

var n = null;

function addhistory() {
var i = hsreg.length;
hsreg[i] =$("regex").value.replace(/\s+$/,"");
hsflg[i] =$("flags").value;
hstring[i] =$("scrstr").value;
hsact[i] =$("select").value;
hsregex[i] =$("vis").innerHTML;
hsjsex[i] =$("expression").innerHTML;
hstype[i] =$("returntype").innerHTML;
hsresult[i] =$("matchresult").innerHTML;
hslastindex[i] =$("lastindex").innerHTML;
hsource[i] =$("group").value;

if ($("intxt")) {
hsreptxt[i] =$("intxt").value;
}

var tst = hsreg[0];
n = i;
if (n>0) {
$("bkh").className="tbnm";
}
}

function replacetext() {
if (hsreptxt[n]==undefined) {
	removeElement("intxt");
}
else {
	createInput ();
	$("intxt").value = hsreptxt[n];
}

}

function backhistory() {
if (n==null) return;
if (n==0) {
n = 0;
}  else 
{
n = n -1;
}

replacetext();
$("regex").value =hsreg[n];
$("flags").value = hsflg[n];
$("scrstr").value = hstring[n];
$("select").value = hsact[n];
$("vis").innerHTML = hsregex[n];
$("expression").innerHTML = hsjsex[n];
$("returntype").innerHTML = hstype[n];
$("matchresult").innerHTML = hsresult[n];
$("lastindex").innerHTML = hslastindex[n];
$("group").innerHTML = hsource[n];

if (n<hsreg.length-1) {
$("fwh").className="tbnm";
}

}

function forwordhistory() {
if (n<hsreg.length-1) {

$("regex").value = hsreg[n+1];
$("flags").value = hsflg[n+1];
$("scrstr").value = hstring[n+1];
$("select").value = hsact[n+1];
$("vis").innerHTML = hsregex[n+1];
$("expression").innerHTML = hsjsex[n+1];
$("returntype").innerHTML = hstype[n+1];
$("matchresult").innerHTML = hsresult[n+1];
$("lastindex").innerHTML = hslastindex[n+1];
$("group").innerHTML = hsource[n+1];
$("bkh").className ="tbnm";
n = n +1;
replacetext();

}

if (n==hsreg.length-1) {
$("fwh").className ="tbno";

}
}

function clear() {
$("regex").value="";
$("flags").value ="g";
$("scrstr").value ="";
$("select").value ="";
clearhf();

}

function clearhf() {
$("alertfg").innerHTML = "";
$("vis").innerHTML = "";
$("expression").innerHTML = "";
$("returntype").innerHTML = "";
$("matchresult").innerHTML ="";
$("lastindex").innerHTML ="";
$("group").innerHTML ="";
}



function createInput () {
    if ($("intxt")) return;
    var temp = document.createElement("input");
    temp.type = "text";
    temp.value = "";
    temp.id = "intxt";
    temp.size =10;
	$("rplctxt").appendChild(temp);  
}

//"intxt" removeElement("intxt");removeElement("allflags");
function removeElement(id) {
	if ($(id)) {
	  var d = $(id);
	  d.parentNode.removeChild(d);
	 }
}

function addselect(s) {
    if (document.getElementById("allflags")) return;
    var tempsel = document.createElement("select");
    tempsel.id = "allflags";
    for (var i=0;i<4;++i) {
    	var tempopt = document.createElement("option");
    	tempsel.appendChild(tempopt);
    }
    
    document.getElementById("rplctxt").appendChild(tempsel);  
    document.getElementById("allflags").options[0].text = "";
    if (s==2) {
    document.getElementById("allflags").options[1].text = "PREG_PATTERN_ORDER";
    document.getElementById("allflags").options[2].text = "PREG_SET_ORDER";
    document.getElementById("allflags").options[3].text = "PREG_OFFSET_CAPTURE";
    }
    else if (s==3) {
    document.getElementById("allflags").options[1].text = "PREG_SPLIT_NO_EMPTY";
    document.getElementById("allflags").options[2].text = "PREG_SPLIT_DELIM_CAPTURE";
    document.getElementById("allflags").options[3].text = "PREG_SPLIT_OFFSET_CAPTURE";
    
    }
}

function geturlpara() {
if (location.href) {var url = location.href; } else return;
var url = decodeURIComponent(url);
var reg = new RegExp("rp=(.+)\&rf=(.*)\&me=([0-6])\&ts=(.+)", "");
var mypa = reg.exec(url);
if (mypa!=null) {

	$("regex").value=mypa[1].replace(/amp\;/g,"").replace(/\&lt\;/g,"<").replace(/\&gt\;/g,">");
    $("flags").value=mypa[2];
    $("select").value=mypa[3];
    $("scrstr").value=mypa[4].replace(/amp;/g,"").replace(/\&lt\;/g,"<").replace(/\&gt\;/g,">");
}
}

function buildlink() {
var url0 = 'http://www.pagecolumn.com/tool/regtest.htm';
var rp = $("regex").value.replace(/\s+$/,"").replace(/</g,"&lt;").replace(/>/g,"&gt;");
var rf = $("flags").value;
var me = $("select").value;
var ts = $("scrstr").value.replace(/</g,"&lt;").replace(/>/g,"&gt;");
url = url0+'?rp='+encodeURIComponent(rp)+'&rf='+encodeURIComponent(rf)+'&me='+encodeURIComponent(me)+'&ts='+encodeURIComponent(ts);
$("link").innerHTML = url;
}


function phpmakeup(str) {
var syn = ["[\(]","[\)]","echo","print_r","function",",",";","{","}"];
//var codeblock = $("code");

//var str = codeblock.innerHTML;
for (j=0;j<syn.length;j++) {
    var re= new RegExp("("+syn[j]+")", "g");
    str = str.replace(re,'<span style="color:#66cc00">$1</span>')
}

return str
  //codeblock.innerHTML = str.replace(/\n/g,"</br>");
  //codeblock.style.paddingLeft="30px";
    
}



function check() {    

var vflag = $("flags").value.toLowerCase();	
		 	
if ( vflag.search(/[^g|i|m]/g) != -1 ) { 
	$("alertfg").innerHTML = ("Flags can only contain g, i, m");    
	return;   
}

$("alertfg").innerHTML ="";        
var vregex = $("regex").value.replace(/\s+$/,"");

try {
    var re = new RegExp(vregex, vflag);
    var re0 =re;        
}
    
catch(e) {
    
	if (e) {
		clearhf();
		$("vis").innerHTML = '<br>'+'new RegExp("' + vregex + '", "' + vflag + '") returned a ' + e
		$("vis").style.color = "#ff0000";
		return
	} 
		
} 
  
$("vis").style.color = "#000";   

var myArray;     
               
var vregext = vregex.hash();
   
ex = 'new RegExp(' + vregext + ', ' + vflag + ');';   
             
var method = $("select").value;
var srcstring = $("scrstr").value; 
var vr = 'var'; 
var e0,e1,e2,e3,e4,e5;
var srcstringt;
var e7 = 'if ( myArray != null) {'; 
var e8 = 'for ( i = 0; i < myArray.length; i++ )   { ';
var e9 =   vr+' result = "myArray[" + i + "] = " + myArray[i];';                        
 
srcstringt = srcstring.hash(); 

e0 = '<h4>Using RegExp object:</h4>';
e1 = vr +' str = "' + srcstringt +'";';
e2 = vr +' re = ' + ex;       
e4 = '<h4>Using literal:</h4>';
     
crr = srcstring.match(re);
var output0 = srcstring;
	  
if (crr != null) {

var output = srcstring.replace(re,function($0){
return '<span class ="cssb0">'+$0.hash()+'</span>';
});

 var output ='<h4>match</h4>'+output;
}

else{
output="no match";

}
       
    
switch ( method ) {            
    
    case '0': 
			removeElement("intxt");;
            myArray = re.exec(srcstring);            
            e3 =  vr+' myArray = re.exec(str);';   
            ex = e1 +"<br>" + e2 +"<br>" +e3 +"<br>"+"<br>"+e7+"<br>"+e8+"<br>"+e9+"<br>"+'}'+"<br>"+'}'+"<br>"; 
              
            var vf = vflag.replace(/g/,"")		
		    var reec = new RegExp(vregex, vf);	
		    output0 = srcstring;
		    var cvv = reec.exec(output0);
		    				
		    if (cvv != null) { 		
			var output0 = output0.replace(cvv[0],function($0){
				return '<span class ="cssb0">'+$0.hash()+'</span>';
			});              
			output = output + '<br> <h4>exec</h4>'+ output0;
				
		    }
				
		    if ((cvv != null) &&(cvv.length>1)) { 
			output0 = srcstring;
			outexec2 = output0.cssit(1,cvv);
			output = output + '<br> <h4>exec group</h4>'+ outexec2;
		    }	
                
            break;   
    
    case '1':  
			removeElement("intxt");; 
            myArray = re.test(srcstring);           
            e3 =  vr+' myArray = re.test(str);';           
            ex = e1 +"<br>" + e2 +"<br>" +e3 +"<br>";
                
            break;   
                             
	case '2': 
			removeElement("intxt");; 			
            var myArray = srcstring.match(re);   
            e3 = vr+' myArray = str.match(re);';                  
            e5 = vr+' myArray = str.match(' + re0.toString().hash() + ')';             
            ex =  e0  + e1 +"<br>" + e2 +"<br>" +e3 +"<br>"+e4 + e5+"<br>"+"<br>"+e7+"<br>"+e8+"<br>"+e9+"<br>"+'}'+"<br>"+'}'+"<br>";
               
            break;   
    
	case '3': 
			removeElement("intxt");;   
            myArray = srcstring.search(re);              
            e3 = vr+' myArray = str.search(re);';           
            e5 = vr+' myArray = str.search(' + re.toString().hash() + ')';        
            ex =  e0 + e1 +"<br>" + e2 +"<br>" +e3 +"<br>"+e4 + e5;             
                  
            break;   
                             
	case '4':  
            
            createInput ();
            
            if ($("intxt")) {
            var retxt=$("intxt").value;
            myArray = srcstring.replace(re,retxt);            
            var et = '<span class="js1">"' + retxt.hash() +'"</span>';
            e3 = vr+' myArray = str.replace(re,'+ et+' );'; 
            e5 = vr+' myArray = str.replace(' + re.toString().hash() + ','+ et+ ')'; 
            ex =  e0 + e1 +"<br>" + e2 +"<br>" +e3 +"<br>"+e4 + e5;
                 
	        if (myArray != null) {      			
    			var outreplace = output0.replace(re,function($0){
				return '<span class ="cssb0">'+retxt.hash()+'</span>';
			    });      			 
    			  
	        }   
            output = output + '<br> <h4>replace</h4>'+ outreplace; 
            
            }    
            
            break;
                          
     case '5': 
            removeElement("intxt");;
            myArray = srcstring.split(re);         
            e3 = vr+' myArray = str.split(re);';          
            e5 = vr+' myArray = str.split(' + re.toString().hash() + ')';  
            ex =  e0 + e1 +"<br>" + e2 +"<br>" +e3 +"<br>"+e4 + e5+"<br>"+"<br>"+e7+"<br>"+e8+"<br>"+e9+"<br>"+'}'+"<br>"+'}'+"<br>";           
            
            output0 = srcstring; 
		    crr = srcstring.match(re);
	  
		    if (crr != null) {
                var vb = [];
	            var j=0;
	            var outsplit="";
	        
                for ( i = 0; i < crr.length; i++ )   {
                var inm = output0.indexOf(crr[i]);
    	            if (inm==0) {
    	                output0 = output0.substr(crr[i].length,output0.length-crr[i].length);
    	                outsplit = outsplit+ crr[i].hash();
    	            }
	                else{
	                    vb[j] = output0.substr(0,inm);
	                    outsplit = outsplit + '<span class ="cssb0">'+vb[j].hash()+'</span>' +crr[i].hash();
	                    output0= output0.substr(vb[j].length+crr[i].length,output0.length-vb[j].length-crr[i].length);
	                    j=j+1;
	                }	
	            }
	           
	            if (output0.length>0){
    	            vb[j] =output0;
    	            outsplit = outsplit + '<span class ="cssb0">'+vb[j].hash()+'</span>';        	          
    	        }
	       
	            output = output + '<br> <h4>split</h4>'+ outsplit; 
	       }	  
                          
            break;
     case '6':
            removeElement("intxt");;
            myArray = srcstring.$1elements(vregex);
            if (myArray!=null) {
            output0 = srcstring;
			out$1 = output0.cssit(0,myArray);
			output = output + '<br> <h4>$1 elements</h4>'+ out$1;
            }
            break;
     
}   
          
var grp;
  
if (RegExp.$1) grp = 'RegExp.$1 = '+ RegExp.$1.hash()+'<br>';   
if (RegExp.$2) grp+= 'RegExp.$2 = '+ RegExp.$2.hash()+'<br>';  
if (RegExp.$3) grp+= 'RegExp.$3 = '+ RegExp.$3.hash()+'<br>';  
if (RegExp.$4) grp+= 'RegExp.$4 = '+ RegExp.$4.hash()+'<br>';  
if (RegExp.$5) grp+= 'RegExp.$5 = '+ RegExp.$5.hash()+'<br>';
if (RegExp.$6) grp+= 'RegExp.$6 = '+ RegExp.$6.hash()+'<br>';
if (RegExp.$7) grp+= 'RegExp.$7 = '+ RegExp.$7.hash()+'<br>';
if (RegExp.$8) grp+= 'RegExp.$8 = '+ RegExp.$8.hash()+'<br>';
if (RegExp.$9) grp+= 'RegExp.$9 = '+ RegExp.$9.hash()+'<br>'; 

if (grp){
  
   $("group").innerHTML ='<h4>Using RegExp property:</h4>'+ grp  + '<h4>Using exec method:</h4>'+ 'See the returns using <strong>exec</strong> method. The number of possible parenthesized substrings is unlimited.';
} else {$("group").innerHTML ='no parenthesized substring matched';}
var result = '';
 	 
$("expression").innerHTML = ex;  
jsmakeup();   
$("returntype").innerHTML =  '<h4>Type</h4>'+typeof(myArray);
	
if ( myArray != null && typeof(myArray) == 'object' && myArray.length != null )  {  
		 
     for ( i = 0; i < myArray.length; i++ )   {  
	         myArray[i]=myArray[i].hash();				 
	         result +=  'myArray[' + i + '] = "' + myArray[i] + '"'+ '<br>'; 
		 
     }   
		
}   
		 
else if ( myArray == null ) { 
	  result = null;  
	  
}
		

//crr = "sds".match(/()/);
       
	$("vis").innerHTML ="";   
	$("vis").innerHTML = output.replace(/\n/g,"<br>"); 
	$("matchresult").innerHTML = '<h4>Value</h4>'+result;  
	$("lastindex").innerHTML = '<h4>lastIndex</h4>'+re.lastIndex ; 
	
	addhistory();    
    buildlink();
    re=null;
    reec=null;
   
}				

String.prototype.$1elements=function(vregex) { 
    var elm=[]; var str=this; if ((vregex=="")||(this=="")) return null;
    var re= new RegExp(vregex, "");
    var vmm = re.exec(str);
    if ((vmm==null)||(vmm.length<2)) return null;
    do { var vmm = re.exec(str);
        var lstin = re.lastIndex;
        str = str.substring(re.lastIndex,str.length); 
        if (vmm!=null) elm.push(vmm[1]); 
    } while(vmm!=null);
    return elm; 
} 

String.prototype.cssit=function(n,cv) {

var vvc = [];
var str = this;
for ( i = n; i < cv.length; i++ )   {				     
    var lstind = str.indexOf(cv[i]) + cv[i].length;    	     
    var mm = str.substring(0,lstind).replace(cv[i],"][[").hash();	             
    vvc[i] = mm.replace(/\]\[\[/,'<span class ="cssv">'+cv[i].hash()+'</span>')
    str = str.substring(lstind,str.length);  				     
 }
			
return vvc.join("")+str.hash();
			
}			

String.prototype.hash=function() {
return this.replace(/</g,"&lt;").replace(/>/g,"&gt;");
}


function ie6() {
var appVer = navigator.appVersion.toLowerCase();
var iePos = appVer.indexOf('msie');
if (iePos !=-1) {
is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)))
is_major = parseInt(is_minor);
}

var is_ie = ((iePos!=-1));
var is_ie6 = (is_ie && is_major == 6);
return is_ie6;
}


function getCssProperty(elem, prop)
	{
		if(document.defaultView)
		{
			return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
		}
		else if(elem.currentStyle)
		{
			var prop = prop.replace(/-(\w)/gi, function($0,$1)
			{
				//return $0.charAt($0.length - 1).toUpperCase();
				return $1.toUpperCase()
			});
			return elem.currentStyle[prop];
		}
		else return null;
	}


function $(id){ return(document.getElementById(id)); }
function $$(e,tag) {return e.getElementsByTagName(tag);}



	
	
window.onload = function(){
	//initt();
	//init();
	geturlpara();
	regtypes();
}
function socialbkmk() {
var u = location.href;
var t = document.title;
location.href = 'http://www.pagecolumn.com/social_bookmark2.htm?pgcoluu='+u+'&pgcoltt='+t;
}

    