(function(){function CLW(){this.dom=null;this.name='CLW';};CLW.nodeType={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};CLW.__isCompatible=function(other){if(other===false||!Array.prototype.push||!Object.hasOwnProperty||!document.createElement||!document.getElementsByTagName){throw new Error('not compatibility');}return true;};CLW.addEvent=function(node,type,listener){CLW.__isCompatible();if(node.dom.addEventListener){node.dom.addEventListener(type,listener,false);}else if(node.dom.attachEvent){node.dom['e'+type+listener]=listener;node.dom[type+listener]=function(){node.dom['e'+type+listener](window.event);};node.dom.attachEvent('on'+type,node.dom[type+listener]);}};CLW.removeEvent=function(node,type,listener){if(node.dom.removeEventListener){node.dom.removeEventListener(type,listener,false);}else if(node.dom.detachEvent){node.dom.detachEvent('on'+type,node.dom[type+listener]);node.dom[type+listener]=null;}};CLW.addLoadEvent=function(node,load_event,is_wait_images){CLW.__isCompatible();if(is_wait_images){node.dom=window;CLW.addEvent(node,'load',load_event);return;}var init=function(){if(arguments.callee.done){return;}arguments.callee.done=true;load_event.apply(document,arguments);};if(document.addEventListener){document.addEventListener("DOMContentLoaded",init,false);}else if(/MSIE/i.test(navigator.userAgent)){document.write('<script id="__ie_onload" defer src="javascript:void(0)"></script>');var script=document.getElementById("__ie_onload");script.onreadystatechange=function(){if(this.readyState=='complete'){init();}}}else if(/WebKit/i.test(navigator.userAgent)){var _timer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(_timer);init();}},10);}else{node.dom=window;CLW.addEvent(node,'load',load_event);return;}return true;};CLW.stopPropagation=function(node,event_object){event_object=event_object||CLW.getEventObj(node,event_object);if(event_object.stopPropagation){event_object.stopPropagation();}else{event_object.cancelBubble=true;}};CLW.preventDefault=function(node,event_object){event_object=event_object||CLW.getEventObj(node,event_object);if(event_object.preventDefault){event_object.preventDefault();}else{event_object.returnValue=false;}};CLW.byClassName=function(node,classname,tag){tag=tag||'*';var all_tag=(tag=="*"&&node.dom.all)?node.dom.all:node.dom.getElementsByTagName(tag);classname=classname.replace(/\-/g,"\\-");var regex=new RegExp("(^|\\s)"+classname+"(\\s|$)");var elements=new Array();var element;for(var i=0;i<all_tag.length;i++){element=all_tag[i];if(regex.test(element.className)){elements.push(element);}}node.dom=elements;};CLW.byTagName=function(node,tag){tag=tag||'*';var all_tag=(tag=="*"&&node.dom.all)?node.dom.all:node.dom.getElementsByTagName(tag);node.dom=all_tag;};CLW.byName=function(node,name){var all_tag=name?document.getElementsByName(name):null;node.dom=all_tag;};CLW.getBrother=function(node,flag){var parent={};parent.dom=node.dom.parentNode;var element=null;if(flag=='next'){if(CLW.getChild(parent,'last')==node.dom){}else{var element=node.dom.nextSibling;do{element=element.nextSibling;}while(element.nodeType!=CLW.nodeType.ELEMENT_NODE);}}else{if(CLW.getChild(parent,'first')==node.dom){}else{var element=node.dom.previousSibling;while(element.nodeType!=CLW.nodeType.ELEMENT_NODE){element=element.previousSibling;}}}node.dom=element;return element;};CLW.getChild=function(node,flag){flag=flag||'';if(flag=='first'){var elements=node.dom.firstChild;while(elements.nodeType!=CLW.nodeType.ELEMENT_NODE){elements=elements.nextSibling;}}else if(flag=='last'){var elements=node.dom.lastChild;while(elements.nodeType!=CLW.nodeType.ELEMENT_NODE){elements=elements.previousSibling;}}else{var elements=[];var childs=node.dom.childNodes;for(var i=0;i<childs.length;i++){if(childs[i].nodeType!=CLW.nodeType.ELEMENT_NODE){continue;}elements.push(childs[i]);}}node.dom=elements;return elements;};CLW.insertAfter=function(existingChild,newNode){var parent={};parent.dom=existingChild.dom.parentNode;if(CLW.getChild(parent,'last')==existingChild.dom){existingChild.dom.parentNode.appendChild(newNode);}else{existingChild.dom.parentNode.insertBefore(newNode,existingChild.dom.nextSibling);}};CLW.setStyle=function(node,styles){for(property in styles){if(node.dom.style.setProperty){node.dom.style.setProperty(CLW.__uncamelize(property,'-'),styles[property],null);}else{node.dom.style[CLW.__camelize(property)]=styles[property];}}};CLW.getClassName=function(node){node.__value=node.dom.className.replace(/\s+/,' ').split(' ');return node.__value;};CLW.hasClassName=function(node,className){var classes=CLW.getClassName(node);for(var i=0;i<classes.length;i++){if(classes[i]==className){node.__value=true;return;}}node.__value=false;return;};CLW.addClassName=function(node,classname){node.dom.className+=(node.dom.className?' ':'')+classname;};CLW.removeClassName=function(node,className){var classes=CLW.getClassName(node);var length=classes.length;for(var i=0;i<length;i++){if(classes[i]==className){delete(classes[i]);}}node.dom.className=classes.join(' ');};CLW.getStyle=function(node,property){var value=node.dom.style[CLW.__camelize(property)];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){value=document.defaultView.getComputedStyle(node.dom,null).getPropertyValue(property);}else if(node.dom.currentStyle){value=node.dom.currentStyle[CLW.__camelize(property)];}}node.__value=(value=='auto')?'':value;};CLW.getTarget=function(node,event_obj){event_obj=event_obj||CLW.getEventObj(node,event_obj);var target=event_obj.target||event_obj.srcElement;if(target.nodeType==CLW.nodeType.TEXT_NODE){target=node.parentNode;}node.dom=target;};CLW.getPointPosition=function(node,event_obj){event_obj=event_obj||CLW.getEventObj(node,event_obj);var x=event_obj.pageX||event_obj.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft);var y=event_obj.pageY||event_obj.clientY+(document.documentElement.scrollTop||document.body.scrollTop);node.__value={'x':x,'y':y};};CLW.getKeyPress=function(node,event_obj){event_obj=event_obj||get_event_obj(event_obj);var code=event_obj.keyCode;var value=String.fromCharCode(code);node.__value={'code':code,'value':value};};CLW.getEventObj=function(node,W3CEvent){W3CEvent=W3CEvent||window.event;node.__value=W3CEvent;return W3CEvent;};CLW.getWindowSize=function(node){if(self.innerHeight){node.__value={'width':self.innerWidth,'height':self.innerHeight};}else if(document.documentElement&&document.documentElement.clientHeight){node.__value={'width':document.documentElement.clientWidth,'height':document.documentElement.clientHeight};}else if(document.body){node.__value={'width':document.body.clientWidth,'height':document.body.clientHeight};}};CLW.__camelize=function(s){return s.replace(/-(\w)/g,function(strMatch,p1){return p1.toUpperCase();});};CLW.__uncamelize=function(s,sep){sep=sep||'-';return s.replace(/([a-z])([A-Z])/g,function(strMatch,p1,p2){return p1+sep+p2.toLowerCase();});};CLW.parseJSON=function(node,s,filter){var j;function walk(k,v){var i;if(v&&typeof v==='object'){for(i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}}var json=filter(k,v);node.__value=json;return json;}if(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(s)){try{var j=eval('('+s+')');}catch(e){throw new SyntaxError("parseJSON");}}else{throw new SyntaxError("parseJSON");}if(typeof filter==='function'){j=walk('',j);}node.__value=j;return j;};CLW.AjaxRequest=function(url,options,isAsynchronous){var req=false;if(window.XMLHttpRequest){var req=new window.XMLHttpRequest();}else if(window.ActiveXObject){var req=new window.ActiveXObject('Microsoft.XMLHTTP');}if(!req){throw new Error('create XMLHttpRequest Error');}options=options||{};options.method=options.method||'GET';options.send=options.send||null;if(isAsynchronous){req.onreadystatechange=function(){switch(req.readyState){case 1:if(options.loadHandle){options.loadHandle.apply(req,arguments);}break;case 2:if(options.loadedHandle){options.loadedHandle.apply(req,arguments);}break;case 3:if(options.ineractiveHandle){options.ineractiveHandle.apply(req,arguments);}break;case 4:try{if(req.status&&req.status==200){CLW.ajaxReturn(req,options,isAsynchronous);}else{if(options.errorHandle){options.errorHandle.apply(req,arguments);}}}catch(e){}break;}};}req.open(options.method,url,isAsynchronous);req.setRequestHeader('Send-by-Ajax','myajax');req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");return req;};CLW.ajaxReturn=function(req,options,isAsynchronous){var content_type=req.getResponseHeader('Content-Type');var mime_type=content_type.match(/\s*([^;]+)\s*(;|$)/i)[1];switch(mime_type){case 'text/javascript':case 'application/javascript':if(options.finishHandle){if(isAsynchronous){options.finishHandle.call(req,req.responseText,options.other);}else{return req.responseText;}}break;case 'application/json':if(options.finishHandle){try{var json=CLW.parseJSON('node',req.responseText);}catch(e){var json=false;}if(isAsynchronous){options.finishHandle.call(req,json,options.other);}else{return json;}}break;case 'text/xml':case 'application/xml':case 'application/xhtml+xml':if(options.finishHandle){if(isAsynchronous){options.finishHandle.call(req,req.responseXML,options.other);}else{return req.responseXML;}}break;case 'text/html':if(options.finishHandle){if(isAsynchronous){options.finishHandle.call(req,req.responseText,options.other);}else{return req.responseText;}}break;}if(options.completeHandle){options.completeHandle.apply(req,arguments);}};CLW.Ajax=function Ajax(node,url,options,isAsynchronous){isAsynchronous=(isAsynchronous===false)?false:true;var req=CLW.AjaxRequest(url,options,isAsynchronous);if(!isAsynchronous){req.send(options.send);node.__value=CLW.ajaxReturn(req,options,isAsynchronous);}else{req.send(options.send);}};function Node(id){if(id==''||id==null){this.dom=document;}else{if(typeof id=='string'){if(document.getElementById(id)==null||!document.getElementById(id)){throw new Error('can not find ID="'+id+'" element in document');}this.dom=document.getElementById(id);}else{this.dom=id;}}this.id=id;this.__value=null;};Node.prototype={value:function(){return this.__value;},addFunction:function(name,fn){Node.prototype[name]=function(){var self=this;var newArguments=Array.prototype.slice.call(arguments);newArguments.unshift(self);fn.apply(self,newArguments);return self;};},batchAddFunction:function(sourceObj,fnName){var type=typeof fnName;if(!/[Object|Array|String]/.test(type)){throw new Error("paramer err the second paramer[functionName] must array or object or string ");}if(type=='string'){if(typeof sourceObj[fnName]!='function'){throw new Error('can not find function [ '+fnName+' ] in the Object ['+sourceObj.name+']');}this.addFunction(fnName,sourceObj[fnName]);}else{for(var i in fnName){var currentName=fnName[i];var currentFn=sourceObj[currentName];if(typeof currentFn!='function'){throw new Error('can not find function [ '+currentName+' ] in the Object ['+sourceObj.name+']');}this.addFunction(currentName,currentFn);}}}};Node.addFunction=function(name,fn){Node.prototype[name]=function(){var self=this;var newArguments=Array.prototype.slice.call(arguments);newArguments.unshift(self);fn.apply(self,newArguments);return self;};};Node.batchAddFunction=function(sourceObj,fnName){var type=typeof fnName;if(!/[Object|Array|String]/.test(type)){throw new Error("paramer err the second paramer[functionName] must array or object or string ");}if(type=='string'){if(typeof sourceObj[fnName]!='function'){throw new Error('can not find function [ '+fnName+' ] in the Object ['+sourceObj.name+']');}Node.addFunction(fnName,sourceObj[fnName]);}else{for(var i in fnName){var currentName=fnName[i];var currentFn=sourceObj[currentName];if(typeof currentFn!='function'){throw new Error('can not find function [ '+currentName+' ] in the Object ['+sourceObj.name+']');}Node.addFunction(currentName,currentFn);}}};var fuName=['addLoadEvent','addEvent','removeEvent','stopPropagation','preventDefault','byClassName','byTagName','byName','getBrother','getChild','insertAfter','setStyle','getClassName','hasClassName','addClassName','removeClassName','getStyle','getTarget','getPointPosition','getKeyPress','getEventObj','getWindowSize','parseJSON','Ajax'];Node.batchAddFunction(CLW,fuName);function clw(id){return new Node(id);};window['clw']=clw;})()
