﻿function FormatNumber(srcStr,nAfterDot)
{
　　var srcStr,nAfterDot;
　　var resultStr,nTen;
　　srcStr = ""+srcStr+"";
　　strLen = srcStr.length;
　　dotPos = srcStr.indexOf(".",0);
　　if (dotPos == -1){
　　　　resultStr = srcStr+".";
　　　　for (i=0;i<nAfterDot;i++){
　　　　　　resultStr = resultStr+"0";
　　　　}
　　　　return resultStr;
　　}
　　else{
　　　　if ((strLen - dotPos - 1) >= nAfterDot){
　　　　　　nAfter = dotPos + nAfterDot + 1;
　　　　　　nTen =1;
　　　　　　for(j=0;j<nAfterDot;j++){
　　　　　　　　nTen = nTen*10;
　　　　　　}
　　　　　　resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
　　　　　　return resultStr;
　　　　}
　　　　else{
　　　　　　resultStr = srcStr;
　　　　　　for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
　　　　　　　　resultStr = resultStr+"0";
　　　　　　}
　　　　　　return resultStr;
　　　　}
　　}
} 


window.onload = function(){
init()
}
var containercolor="#6699cc";

function init() {

var border="#9999ff 1px solid";
var conbkcolor="#eee9e9";
var tabbk="#999999";

t4 = new Bindtabs("tabco4",0,"click","t",border,tabbk,conbkcolor,"400px");
t4.c();
}

function vd() {
}

function tabEvent(evt) {
    evt = (evt) ? evt : ((window.event) ? window.event : "");
    if (evt) {
    var elem = getTargetElement(evt);
    var actContainer = (elem.tagName=='A') ? elem.parentNode.parentNode.parentNode.id : elem.parentNode.parentNode.id; 
    var tp = gettab(actContainer).position;
    var hvelem = (elem.tagName=='A') ? elem.parentNode : elem;
    var lielem =  (elem.tagName=='A') ? elem.parentNode.parentNode.getElementsByTagName('li') : elem.parentNode.getElementsByTagName('li');
   
    if ((evt.type == "mouseover") || (evt.type == "click")) {
       actIndex = getIndex(lielem,hvelem);
       if (actIndex==undefined) return;
   
         showContent(actContainer,actIndex);
       } 
   	}
}


function getIndex(arry,elem) {
	for (var i=0; i < arry.length; i++) {
		if (arry[i] == elem) {
		return i;
		}
	}
}
 
function showContent(container,act) {
	var contDiv = new Array;
	var j =0;
	var tab = gettab(container);
	var tp = tab.position;
	var vborder = tab.border;
	var vboxwidth = tab.width;
	var vtabcolor =tab.tabcolor;
	var contDiv0 = $$($(container),('div'));
	
	
	for(var i=0; i<contDiv0.length; i++){
		if (contDiv0[i].parentNode.id==container) {
			contDiv[j] = contDiv0[i];
			j = j+1;
		}
    }    

	contDiv[act].className = (act!=2) ? "content" : "content2";	    
		
	var vbkcolor = getbkColor(contDiv[act]);
	var tagul = getUL(container,tp);
	var tagula = $$(tagul,('a'));
	var tagulli = $$(tagul,('li'));

	for(var i=0; i<tagula.length; i++){
	    tagula[i].className="ula";
	}

	for(var i=0; i<tagulli.length; i++){	
		tagulli[i].className="ullifloat";
	}
	tagul.className= "ulnofloat";
	contDiv[act].style.display = "block";
	
	for(var i=0; i<contDiv.length; i++){	
		if (i != act) {
			contDiv[i].style.display = "none";
		}
	}

	var actitem = tagulli[act];
	var actitema = $$(actitem,('a'))[0];

	actitema.style.top ="1px";

	actitem.style.borderTop = vborder;

	actitema.style.backgroundColor =vbkcolor;	
    var marginRight_li = getmarginRight(actitem);	
	var marginBottom_li = getmarginBottom(actitem);	
	
	for(var i=0; i<tagulli.length; i++){
		
	if (marginRight_li=="0px") {			
			
			tagulli[i].style.borderLeft = (i==0) ? vborder : "#fff 0px";
					
	}
	
	
	if (i != act) {
	
	var a = $$(tagulli[i],'a')[0];
	
	a.style.top ="0px";	
	a.style.left ="0px";

	a.style.backgroundColor =vtabcolor;

	tagulli[i].style.borderTop = vborder;	
		        
	}
	
  }
}
  
function bindEvent(container, e) {

var tp = gettab(container).position;
var ele = $$(getUL(container,tp),'li');

   for(var i=0; i<ele.length; i++){ 
		if (e=="click") {
		   ele[i].onmouseover ="";
		   ele[i].onclick = tabEvent;
		}
		if (e=="mouseover") { 
		   ele[i].onmouseover = tabEvent;
		} 	    
   }
}
    

function Bindtabs(id,activetab1,eventType,position,border,tabcolor,bkcolor,width) {	
    this.id = id;
	this.activetab1 = activetab1;
	this.eventType = eventType;
	this.position = position;
	this.border =border;
	this.tabcolor=tabcolor;
	this.bkcolor=bkcolor;
	this.width = width;

	this.c = function () {
	
showContent(this.id,this.activetab1);

	bindEvent(this.id,this.eventType);

	}
}

function getUL(id,ttp) {

if ((ttp=="t") || (ttp=="l") ||(ttp=="p")) {
	var ul = $$($(id),('ul'))[0];
}
else
{
	var n = $$($(id),('ul')).length;
	var ul = $$($(id),('ul'))[n-1];

}
return ul;
}

function gettab(id) {
return (id=="tabco4") ? t4 : t1;
}
 
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  getmarginBottom(obj) {
return (obj.currentStyle) ?  obj.currentStyle.marginBottom : getComputedStyle(obj,'').getPropertyValue('margin-bottom');
}

function getmarginRight(obj) {
return (obj.currentStyle) ?  obj.currentStyle.marginRight : getComputedStyle(obj,'').getPropertyValue('margin-right');
}

function getbkColor(obj) {
return (obj.currentStyle) ?  obj.currentStyle.backgroundColor : getComputedStyle(obj,'').getPropertyValue('background-color');
}

function getTargetElement(evt) {
    return (evt.target) ? ((evt.target.nodeType == 3) ? evt.target.parentNode : evt.target) : evt.srcElement;
}

function $(id){ return(document.getElementById(id)); }
function $$(e,tag) {return e.getElementsByTagName(tag);}

var intcss;
var rel, orlen, comlen,hd;
function doit () {
var ins = document.getElementById("q").value;

orlen = ins.length
document.getElementById("olen").innerHTML = orlen + " bytes"

rd=ins.indexOf("<");

if (rd>-1) {
var rx = ins.indexOf(">");
hd = ins.slice(rd+1,rx);

ins = ins.slice(rx+1,ins.length);

rd = ins.indexOf("<");
rx = ins.indexOf(">");
var ft = ins.slice(rd+1,rx+1);

ins = ins.slice(0,rd);
}
ins = ins.replace(/[\n\t\r]+/g,"");     
ins = ins.replace(/\*\//g,"*/"+"\n");
ins = ins.replace(/\/\*.*\*\/\n/g, "");

ins = ins.replace(/\s+;/g, ";");
ins = ins.replace(/;\s+/g, ";");
ins = ins.replace(/:\s+/g, ":");
ins = ins.replace(/\{\s+/g, "{");
ins = ins.replace(/\s+\{/g, "{");
ins = ins.replace(/\}\s+/g, "}");
ins = ins.replace(/\s+\}/g, "}");
ins = ins.replace(/;+\}/g,"}");
var ss = ins.split("}");
var n = ss.length;
var i, j;
var sss = new Array(n);
var vvv = new Array(n);

for (i= 0; i <= n-1; i++) 
{

sss[i] = ss[i].slice(0,ss[i].indexOf("{"));
}

for (i= 0; i <= n-1; i++) 
{


vvv[i] = ss[i].slice(ss[i].indexOf("{")+1,ss[i].length);

}

for (i= 0; i <= n-1; i++)
{    
	for (j=0; j <=n-1;j++)
	{		
		if (i!=j) {
			
		    if (sss[j]== sss[i]) {
    		
			    sss[j] = "";
			    vvv[i] = vvv[i] +";" + vvv[j];
			    vvv[j] = "";			
		    }
		}
	}
if (sss[i] !="") {
sss[i] = sss[i] + "{" + vvv[i]+"}";}

}

var t = sss.join("")	
intcss = t;

if (ck==true){
t=removeDuplcatedcClass(t,"id",false);
t=removeDuplcatedcClass(t,"class",false);}

t=checkdupicted(t,"padding");
t=checkdupicted(t,"margin");


if (hd) {
t = "&lt;" +hd +"&gt;" + t +"&lt;" +ft;}

comlen = t.length;
document.getElementById("clen").innerHTML = comlen + " bytes";
document.getElementById("crate").innerHTML = FormatNumber((orlen - comlen)*100 /orlen,1) + "%";
document.getElementById("re").innerHTML = t;
showContent("tabco4",1)
}


Array.prototype.hasObject = (
    !Array.indexOf ? function (o)
    {
        var l = this.length + 1;
        while (l -= 1)
        {
            if (this[l - 1] === o)
            {
                return true;
            }
        }
        return false;
    } : function (o)
    {
        return (this.indexOf(o) !== -1);
    }
);


String.prototype.getclassfromCSS=function(){
var str = this.replace(/{/g,"{"+"\n");
var str =str.replace(/.*(?=\})/g,"");

return str.$1elements("\\.(\\w+)");

}

String.prototype.getidfromCSS=function(){
var str = this.replace(/\{/g,"{"+"\n");
var str =str.replace(/.*(?=\})/g,"");

return str.$1elements("\\#(\\w+)");

}

String.prototype.getclassfromHTML=function (style) {
var str = this.replace(/>/g,">"+"\n");
str = str.$1elements('\.\*'+style+'="?(\\w+\\s*\\w*)"?');
return str.seperate().unique();
}

var ck=false;
function findClassId(){
ck = $("iscked").checked;

if (ck==true) {
$("html").style.display= "block";
$("htmltt").style.display=  "block"; 
$("did").style.display= "block";
$("unid").style.display= "block";
$("btnid").style.display= "block";
$("dclass").style.display= "block";
$("unclass").style.display="block";
$("btnclass").style.display= "block";
}else{
$("html").style.display= "none";
$("htmltt").style.display= "none";
$("did").style.display="none";
$("unid").style.display="none";
$("btnid").style.display="none";
$("dclass").style.display="none";
$("unclass").style.display="none";
$("btnclass").style.display="none";
}

}


function removeDuplcatedcClass(t,style,del) {

var strhtml = $("html").value;
strhtml = strhtml.getclassfromHTML(style);

var strcss =(style=="class") ? t.getclassfromCSS().unique() : t.getidfromCSS().unique();
var strno = strhtml.notDuplicated(strcss);

if ((strno.length==0)&&($("d"+style).style.display=="none")) {
$("d"+style).style.display="none";
$("un"+style).style.display="none";
$("btn"+style).style.display="none";

return t;
}else {
$("d"+style).style.display="block";
$("un"+style).style.display="block";
$("btn"+style).style.display="block";
var clslen = (del==true) ? 0 : strno.length;
var cls = (del==true) ? "" : strno.join(" ");

$("d"+style).innerHTML = clslen + " unused "+style + " found in CSS.";
$("un"+style).innerHTML = cls;

}
//alert(strcss.notDuplicated(strshtml))
if (del==false) {return t;}
		
var t = t.replace(/}/g,"}"+"\n");
var tt =t.match(/.+(?={)/g);

for(i=0;i<strno.length;i++) {

for(j=0;j<tt.length;j++) {
	var mre = tt[j].matchAll(strno[i]+"\\b","g");
	
	if (mre!=null) {
	var arr = tt[j].split(/\,/g);
	if (arr.length>1) {
	     var ttbefore = tt[j];
	     tt[j]="";
		for(k=0;k<arr.length;k++) {
		    var clss=arr[k].matchAll("\."+strno[i]+"\(\?\=\\s\*\|\:\)","");
		    
		        if (clss==null){  
		            tt[j]=tt[j]+arr[k]+",";
		        }
		}
        tt[j]=tt[j].substring(0,tt[j].length-1);
     
		t=t.replaceDuplicatedClass(ttbefore+"{(.*)}",tt[j]);
		
	}
	
	else
	{
		t=t.replaceAll(tt[j]+"{(.*)}","");
		
	}

	}
  }
}
deled =true;
t = t.replace(/{\s*/g,"{");
t = t.replace(/}\s*/g,"}");
return t

}

var deled =false;
function delclass() {

var t=removeDuplcatedcClass(intcss,"class",true);
t=checkdupicted(t,"padding");
t=checkdupicted(t,"margin");
if (intcss==t) return;

if (hd) {
t = "&lt;" +hd +"&gt;" + t +"&lt;" +ft;}

comlen = t.length;
document.getElementById("clen").innerHTML = comlen + " bytes";
document.getElementById("crate").innerHTML = FormatNumber((orlen - comlen)*100 /orlen,1) + "%";
document.getElementById("re").innerHTML = t;

intcss =t;
} 

function delid() {

var t=removeDuplcatedcClass(intcss,"id",true);
t=checkdupicted(t,"padding");
t=checkdupicted(t,"margin");

if (hd) {
t = "&lt;" +hd +"&gt;" + t +"&lt;" +ft;}

comlen = t.length;
document.getElementById("clen").innerHTML = comlen + " bytes";
document.getElementById("crate").innerHTML = FormatNumber((orlen - comlen)*100 /orlen,1) + "%";
document.getElementById("re").innerHTML = t;
//showContent("tabco4",2);
intcss =t;
} 

String.prototype.replaceDuplicatedClass = function (ol,ne) {
    var re = new RegExp(ol,""); 
    return this.replace(re, ne+"{$1}");
}

function q(str) {
     return str.replace(/([.?*+^$[\]\\(){}-])/g, "\\$1");
};
String.prototype.replaceAll = function (ol,ne) {
    var re = new RegExp(ol,"g"); 
    return this.replace(re, ne);
}
String.prototype.execA = function (e) {
    var re = new RegExp(e,""); 
    return re.exec(this);
}   


function rem(s) {
return (s.indexOf(";")>-1) ? s.substring(0,s.indexOf(";")) : s;
}

function checkdupicted (strcss,s) {
strcss = strcss.replace(/\{/g,"{"+"\n");
var khcss=strcss.matchAll("{\\s\*\.\*"+s+"\.\*\}","g");
if (khcss==null) return  strcss;
var k = khcss.length;
for(i=0;i<k;i++) {
var str=khcss[i].replace(/\s*\;/g,"; ");
           
str = str.replace(/{/g,"{"+"\n");

var c = "\:\\s\*\(\[\\w\%\;\.\]\+\)";
var l= s+"-left"+c,r= s+"-right"+c,b= s+"-bottom"+c,t= s+"-top"+c;
var rl = str.execA(l),rr = str.execA(r),rb = str.execA(b),rt =str.execA(t);

if ((rl!=null)&&(rr!=null)&&(rb!=null)&&(rt!=null)) {
str = str.replaceAll(l,"").replaceAll(r,"").replaceAll(b,"");
var tmpstr = s+":"+rem(rt[1])+ " "+rem(rr[1])+" "+ rem(rb[1])+ " "+rem(rl[1])+";";
str = str.replaceAll(t,tmpstr);
}

strcss=strcss.replace(khcss[i],str)
}

return strcss.replace(/\;\s*/g,";").replace(/\{\s+/g,"{");
}
 

String.prototype.replaceDuplicatedcss = function (ol,ne) {
    var re = new RegExp(ol,""); 
    return this.replace(re, ne+"{$1}");
}


String.prototype.matchAll = function (e,f) {
   var re = new RegExp(e,f); 
   return this.match(re);
};

String.prototype.$1elements=function(vregex) {
var elm=[];
var str=this;
var re= new RegExp(vregex, "");
do { 
   var vmm = str.match(re);
   str = str.substring(re.lastIndex,str.length);
   if (vmm!=null) elm.push(vmm[1]); 
} while(vmm!=null);
return elm;
}

Array.prototype.unique = function () {
	var r = new Array();
	o:for(var i = 0, n = this.length; i < n; i++)
	{
		for(var x = 0, y = r.length; x < y; x++)
		{
			if(r[x]==this[i])
			{
				continue o;
			}
		}
		r[r.length] = this[i];
	}
	return r;
}

Array.prototype.seperate = function() {
var r = new Array();
for(var i = 0,n= this.length;i<n; i++) {
var arr = this[i].split(/\s/g);

    for (var j=0,m=arr.length;j<m;j++) {
        r.push(arr[j]);
    }
}
return r;
}


Array.prototype.notDuplicated=function(r) {
var ar=[];
for(var i = 0,n= r.length;i<n; i++) {
	if (this.hasObject(r[i])==false){
		ar.push(r[i]);
	}
}
return ar;
}

Array.prototype.seperate = function() {
var r = new Array();
for(var i = 0,n= this.length;i<n; i++) {
var arr = this[i].split(/\s/g);

    for (var j=0,m=arr.length;j<m;j++) {
        r.push(arr[j]);
    }
}
return r;
}

function socialbkmk() {
var u = location.href;
var t = document.title;
location.href = 'http://www.pagecolumn.com/social_bookmark2.htm?pgcoluu='+u+'&pgcoltt='+t;
}
 



