var n=N=NZW={};
NZW.namespace=function(){
	var arg=arguments
		,len=arg.length
		,name
		,ns;
	while(len--){
		ns=NZW;
		name=arg[len].split(".");
		for(var i=name[0]=="NZW"?1:0;i<name.length;i++){
			ns[name[i]]=ns[name[i]]||{};
			ns=ns[name[i]];
		}
	}
};
NZW.namespace("dom");
NZW.namespace("ui");
NZW.namespace("tools");
NZW.namespace("core");

(function(){
		  
	var _toString=Object.prototype.toString;
	
	function isString(v){
		return _toString.call(v)=="[object String]";
	}
	
	function isArray(v){
		return _toString.call(v)=="[object Array]";
	}
	
	function isObject(v){
		return _toString.call(v)=="[object Object]";	
	}
	
	function isNum(v){
		return !isNaN(v);	
	}
	
	function Class(){
		return function(){
			this.init.apply(this,arguments);	
		}	
	}
	
	function $extends(_sub,_supper){
		for(var i in _supper){
			_sub[i]=_supper[i];	
		}
		return _sub;
	}
	$extends(NZW,{
		isString:isString,
		isArray:isArray,
		isObject:isObject,
		isNum:isNum,
		Class:Class,
		$extends:$extends
	})
})();

function _$(id){
	if(n.isObject(id)){
		return id;
	}else if(n.isNum(id)||n.isString(id)){
		id=id+"";
		return document.getElementById(id);
	}
};

NZW.core={
	camelize:function(str){
		var pats=str.split("-")
			,camelized;
		if(pats.length==1)return pats[0];
		camelized=str.charAt(0)=="-"?"":pats[0];
		for(var i=1;i<pats.length;i++){
			camelized+=pats[i].charAt(0).toUpperCase()+	pats[i].substring(1);
		}
		return camelized;
	}
};

(function(){
	function getIEOpacity(elem){
		var value=elem.style["filter"]||elem.currentStyle["filter"]
			,reg=/alpha\(opacity=(\d+)\)/;
		return value.match(reg) && value.match(reg)[1]/100;
	}
	function getFloat(elem){
		if(!+"\v1"){
			return elem.style["styleFloat"]||elem.currentStyle["styleFloat"];
		}else{
			return document.defaultView.getComputedStyle(elem,null)["cssFloat"];	
		}
	}
	function setCss(elem,obj){
		var name
			,value;
		for(var i in obj){
			if(i==="float"){
				name=!+"\v1"?"styleFloat":"cssFloat";	
			}else if(i==="opacity"){
				name=!+"\v1"?"filter":i;
				value=!+"\v1" && ("alpha(opacity="+obj[i]*100+")");
			}else if(n.isNum(obj[i])){
				value=obj[i]+"px";
			}
			elem.style[name||i]=value||obj[i];
			i=value=null;
		}
	}
	function getCss(elem,name){
		if(!+"\v1" && name==="opacity"){
			return getIEOpacity(elem);	 
		}else if(name==="float"){
			return getFloat(elem);
		}else if(elem.style[name])return elem.style[name];
		else if(elem.currentStyle)return elem.currentStyle[name];
		else if(document.defaultView){
			var value=document.defaultView.getComputedStyle(elem,null)[name];
			return value;
		}
	}
	function $E(tag){
		tag=tag.toLowerCase();
		return document.createElement(tag);
	}
	function clild(elem){
		if(!elem.hasChildNodes)return;
		var num=elem.childNodes.length
			,childs=elem.childNodes
			,arr=[];
		for(var i=0;i<num;i++){
			childs[i].nodeType==1 && (arr[length]=childs[i]);
		}
		return arr;
	}
	function append(elem,node,reference){
		if(!n.isArray(node))node=[node];
		for(var i=0;i<node.length;i++){
			reference?elem.insertBefore(node[i],reference):elem.appendChild(node[i]);
		}
	}
	function empty(elem){
		elem.innerHTML="";
	}
	function parent(elem){
		return elem.parentNode;
	}
	n.$extends(NZW.dom,{
		setCss:setCss,
		getCss:getCss,
		parent:parent,
		$E:$E,
		clild:clild,
		append:append,
		empty:empty
	})
})();