/*
InClean v 1.03
copyright 2006 Thomas Frank

This program is free software under the terms of the 
GNU General Public License version 2 as published by the Free 
Software Foundation. It is distributed without any warranty.
*/

Function.prototype.inClean=function(){
	if(this.inCleanOrg){return this};
	var x=this+"";var r="[|]$1[||]";
	if((function(){a="\n"}+"").split("a")[1].split("\n")[0].split('"').length<3){
		x=x.split("\n");
		for(var i=0;i<x.length;i++){
			if(x[i].indexOf('"')>=0 && x[i].lastIndexOf('"')==x[i].indexOf('"')){
				x[i]+="\\n"+x[i+1];x[i+1]=""
			}
		};
		x=x.join("\n")		
	};	
	x=x.replace(/(if.*\(.* in [^\)]*\))/g,r)
	.replace(/(for.*\(.* in [^\)]*\)[^\{]*\{)/g,r);
	x=x.split("[|]"); var y=x[0];
	for(var i=1;i<x.length;i++){
		var m=x[i].split("[||]"); var n=m[0];
		if(n.substring(0,2)=="if"){
			n=n.replace(/ in\s*([^\s]*)/g,"+'__' in inIfClean($1)")
		}
		else {
			var o=n.substring(3).replace(/var /g,"")
			.replace(/ in /g,"xzzx").replace(/\W/g,"").split("xzzx");
			n+="if (Object.prototype["+o[0]+"]==="
			+o[1]+"["+o[0]+"]){continue};"
		};
		y+=n+m[1];	
	};
	eval("y="+y);
	y.inCleanOrg=this;
	inIfClean=function(x){
		var y={};
		for(var i in x){
			if(Object.prototype[i]!=x[i]){y[i+"__"]=1}
		};
		return y	
	};
	return y;
};

Function.prototype.inNormal=function(){return this.inCleanOrg?this.inCleanOrg:this};