//window.onerror=function(){return true;};
var Base={
    setCookie:function(cn,cv,d){
        var now=new Date();
        var expire=new Date();
        if(d==null||d==0){
            d=1;
        }
        expire.setTime(now.getTime()+3600000*24*d);
        document.cookie=cn+"="+escape(cv)+";expires="+expire.toGMTString();
    },
    delCookie:function(cn,dm){
        if(getCookie(name)){
            document.cookie=cn+"="+((domain)?"; domain="+dm:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
    },
    getCookie:function(cn){
        var dc=document.cookie;
        var prefix=cn+"=";
        var begin=dc.indexOf("; "+prefix);
        if(begin==-1){
            begin=dc.indexOf(prefix);if(begin!=0)return null;
        }else{
            begin+=2;
        }
        var end=document.cookie.indexOf(";",begin);
        if(end==-1){
            end=dc.length;
        }
        return unescape(dc.substring(begin+prefix.length,end));
    },
    trimL:function(txt){
		return txt.replace(/^\s*/,"");
	},
    trimR:function(txt){
		return txt.replace(/\s*$/,"");
	},
    trim:function(txt){
		return this.trimL(this.trimR(txt));
	},
	/*check explorer type
	*/
	isIE6:function(){
		return navigator.userAgent.search('MSIE')>0&&navigator.userAgent.search('6')>0;
	},
	isIE:function(){
		return navigator.userAgent.search('MSIE')>0;
	},
	isOpera:function(){
		return navigator.userAgent.indexOf('Opera')>-1;
	},
	isMoz:function(){
		return navigator.userAgent.indexOf('Mozilla/5.')>-1;
	}
};

/*
dom
*/
var Dom={
/*
node
*/
//$ -> getBy
    $id:function(nodeId){
    	if(typeof nodeId=='string'){
    		return document.getElementById(nodeId);
    	}else if(typeof nodeId=='object'){
    		return nodeId;
    	}else{
			return false;
		}
    },
	$idInNode:function(nodeId, pNode){// have not finish
		if(!pNode){
			return Dom.$id(nodeId);
		}else{
			return false;
		}
    },
    $tagInNode:function(tagName, pNode){
		if(!pNode){
			pNode=document;
		}
		reNodes=pNode.getElementsByTagName(tagName);
		if(reNodes&&reNodes.length){
			return reNodes;
		}else{
			return false;
		}
    },
//reXxxx -> use to return value
    $tagInNodeChild:function(tagName, pNode){
		if(!pNode){
			pNode=document;
		}
		var nodes=pNode.childNodes;
		if(!(nodes&&nodes.length)){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(node.nodeName.toLowerCase()==tagName){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
    },
    $withClassInNodeChild:function(className, pNode){
		if(!pNode){
			pNode=document;
		}
		var nodes=pNode.childNodes;
		if(!(nodes&&nodes.length)){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(node.className.toLowerCase()==className){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
    },
    /*$hasClassInNodeChild:function(className, pNode){},*/
    $tagWithClassInNode:function(tagName, className, pNode){
		var nodes=Dom.$tagInNode(tagName, pNode);
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(Dom.isClass(className, node)){
				reNodes[reNodes.length]=node;
			}
		}
		return reNodes;
	},
    $tagHasClassInNode:function(tagName, className, pNode){
		var nodes=Dom.$tagInNode(tagName, pNode);
		if(!nodes){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(Dom.hasClass(className, node)){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
	},
    $tagHasClassInNodeChild:function(tagName, className, pNode){
		var nodes=Dom.$tagInNodeChild(tagName, pNode);
		if(!nodes){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(Dom.hasClass(className, node)){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
	},
/*
class
*/
	isClass:function(className, node){
		if((!node)||(!className)){return null;}
		var reFlag=false;
		if(node.className==className){
			reFlag=true;
		}
		return reFlag;
	},
	hasClass:function(className, node){
		if((!node)||(!className)){return null;}
		var reFlag=false;
		if(node.className.indexOf(className)!=-1){// need to update
			reFlag=true;
		}
		return reFlag;
	},
	addClass:function(className, node){
		if(Dom.hasClass(className, node)){return false;}
		var nodeClassName=node.className?node.className+' '+className:className;
		node.className=nodeClassName;
	},
	removeClass:function(className, node){
		if(!(Dom.hasClass(className, node))){return true;}
		var nodeClassName=node.className;
		if(nodeClassName==className){
			nodeClassName="";
		}else{
			nodeClassName=Base.trim(nodeClassName.replace(className, ""));
		}
		node.className=nodeClassName;
	},
	replaceClass:function(className, newClassName, node){
		if(!(Dom.hasClass(className, node))){return false;}
		node.className=Base.trim(node.className.replace(className, NewClassName));
	},
	setClass:function(className, node){
		node.className=className;
	},
	clearClass:function(node){
		node.className="";
	}
};

var kEvent={
	addEvent: function(element, name, observer, useCapture) {
		try{
			if(element.addEventListener){
				element.addEventListener(name, observer, useCapture);
			}else if(element.attachEvent){
				element.attachEvent('on' + name, observer);
			}
		}catch(e){}
	}
};

var kStyle={
	blankImgSrc: "/library/image/dot/dot_blank.gif",
	fixPngBg: function(element){
		if(typeof element=='string'){element=Dom.$id(element);}
		if((!(element.currentStyle))||((navigator.appName.toLowerCase().indexOf('internet explorer'))==-1)){return;}
		var xSrc=element.currentStyle.backgroundImage;
		element.style.background="none";
		element.style.filter ="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod='scale', src='"+xSrc.substring(5, xSrc.length-2)+"')";
	},
	fixPngImg: function(element){
		if(typeof element=='string'){element=Dom.$id(element);}
		if((!(element.currentStyle))||((navigator.appName.toLowerCase().indexOf('internet explorer'))==-1)){return;}
		var xSrc=element.src;
		element.src=blankImgSrc;
		element.style.filter ="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod='scale', src='"+xSrc+"')";
	},
	getRealStyle: function(element){
		var reStyle;
		if (element.currentStyle){
			reStyle = element.currentStyle;
		}else if (window.getComputedStyle){
			reStyle = window.getComputedStyle(element, null);
		}else{
			reStyle = null;
		}
		return reStyle;
	}
	
};