/*---------------------------------------------------------------------------*\ 
|  subject: javascript framework 
|  author:  meizz 
|  created: 2005-02-27 
|  version: 2006-08-31 
|----------------------------------- 
|  msn: huangfr@msn.com qq:112889082 copyright (c) meizz 
|  http://www.meizz.com/jsframework/ mit-style license 
|  the above copyright notice and this permission notice shall be 
|  included in all copies or substantial portions of the software 
\*---------------------------------------------------------------------------*/
window.system = function(){this.sethashcode();}
system.debug=false; //false 
system._codebase={}; 
try 
{ 
  if (window!=parent && parent.system && parent.system._codebase) 
    system._codebase = parent.system._codebase; 
  else if (undefined!=typeof opener&&opener.system&&opener.system._codebase) 
    system._codebase = opener.system._codebase; 
  else if (undefined!=typeof dialogarguments && dialogarguments.system) 
    system._codebase = dialogarguments.system._codebase; 
} 
catch(ex){}
system.missing_argument=missing argument; 
system.argument_parse_error=the argument cannot be parsed; 
system.not_supported_xmlhttp=your browser do not support xmlhttp; 
system.file_not_found=file not found; 
system.miscoding=maybe file encoding is not ansi or utf-8; 
system.namespace_error= nonstandard namespace;
system.hashcounter=0; 
system.currentversion=20060831; 
var t=document.getelementsbytagname(script); 
t=(system.scriptelement=t[t.length-1]).src.replace(/\\/g, /); 
system.extend=function(d,s){for(var i in s)d[i]=s[i];return d;}; 
system.path=(t.lastindexof(/)system.getuniqueid=function(){return mz_+(system.hashcounter++).tostring(36);}; 
system.tohashcode=function(e) 
{ 
  if(undefined!=typeof e.hashcode) return e.hashcode; 
  return e.hashcode=system.getuniqueid(); 
}; 
system.supportsxmlhttp=function() 
{ 
  return object==typeof(system._xmlhttp||(system._xmlhttp=new xmlhttprequest())); 
}; 
system._getprototype=function(namespace, argu) 
{ 
  if(undefined==typeof system._prototypes[namespace])return new system(); 
  for(var a=[], i=0; i  return eval(new (system._prototypes['+namespace+'])(+a.join(,)+)); 
}; 
system.ie=navigator.useragent.indexof(msie)>0 && !window.opera; 
system.ns=navigator.vendor==netscape; 
system.alert=function(msg){if(system.debug)alert(msg);}; 
system._parseresponsetext=function(s) 
{ 
    if (null==s||\ufffd==s.charat(0)){system.alert(system.miscoding);return ;} 
    if (\xef==s.charat(0))s=s.substr(3); //for firefox 
    return s.replace(/(^|\n)\s*\/\/+\s*((using|import|include)\((\|\'))/g,$1$2); 
};
if(window.activexobject && (system.ie || !window.xmlhttprequest)) 
{ 
  window.xmlhttprequest = function() 
  { 
    var msxmls=['msxml3','msxml2','microsoft']; 
    for(var i=0;i      try{return new activexobject(msxmls[i]+'.xmlhttp')} catch(ex){} 
    system._xmlhttp=mz; throw new error(system.not_supported_xmlhttp); 
  } 
} 
system.load = function(namespace, path) 
{ 
  try 
  { 
    if(system.supportsxmlhttp()){path=system._mappath(namespace, path); 
    var x=system._xmlhttp; x.open(get,path,false); x.send(null); 
    if (x.readystate==4) 
    { 
      if(x.status==0||/^file\:/i.test(path)) 
        return system._parseresponsetext(x.responsetext); 
      else if(x.status==200)return system._parseresponsetext(x.responsetext); 
      else if(x.status==404)system.alert(namespace+\n+system.file_not_found); 
      else throw new error(x.status +: + x.statustext);} 
    } else system.alert(system.not_supported_xmlhttp); 
  } 
  catch(ex){system.alert(namespace+\n+ex.message);}return ; 
}; 
system._eval = function(namespace, path) 
{ 
  //alert(system._eval(\+namespace+\)=\r\n+system._codebase[namespace]); 
  try{if(window.execscript)window.execscript(system._codebase[namespace]);else 
  { 
    var script=document.createelement(script);script.type=text/javascript; 
    script.innerhtml=eval(system._codebase['+ namespace +']);; 
    document.getelementsbytagname(head)[0].appendchild(script); 
    settimeout(function(){script.parentnode.removechild(script)},99); 
  }}catch(ex){system.alert(syntax error on load + namespace);} 
  system._existences[namespace]=system._mappath(namespace, path); 
}; 
system._exist = function(namespace, path) 
{ 
  if(undefined==typeof system._existences[namespace]) return false; 
  return system._existences[namespace]==system._mappath(namespace,path); 
}; 
system._mappath = function(namespace, path) 
{ 
  if(string==typeof path && path.length>3) return path; 
  var p=system.path +/+ namespace.replace(/\./g,/) +.js; 
  return p +((undefined==typeof path||path) ?  : ?t=+ math.random()); 
};
window.using = function(namespace, path, rename) 
{ 
  if(system._exist(namespace, path)){ 
  var s=window[namespace.substr(namespace.lastindexof(.)+1)]; 
  if(s!=system._prototypes[namespace])s=system._prototypes[namespace];return} 
  var code=namespace +.; if(!/((^|\.)[\w\$]+)+$/.test(namespace)) 
  throw new error(namespace+system.namespace_error); 
  for(var i=code.indexof(.); i>-1; i=code.indexof(., i+1)){ 
  var e= code.substring(0,i), s=(e.indexof(.)==-1) ? window[\+e+\]:e; 
  if(e&&undefined==typeof(s)){ 
  eval(s+=function(){return system._getprototype(\+e+\, arguments)});}} 
  if(undefined==typeof path &&string==typeof system._codebase[namespace]) 
  { 
    system._eval(namespace, path);}else{if(code=system.load(namespace,path)){ 
    e = $+ system.getuniqueid() +__id+ new date().gettime() +$; 
    s = function +e+(){\r\n+code+;\r\nsystem._prototypes['; 
    code=namespace.substr(namespace.lastindexof(.)+1); 
    s += namespace+']=window['+(rename||code)+']=+code+;\r\n}+e+();; 
    system._codebase[namespace]=s;s=;system._eval(namespace, path);} 
  } 
}; 
window.import=function(namespace,path,rename){using(namespace,path,rename)}; 
window.instance=function(hashcode){return system._instances[hashcode]}; 
window.include=function(namespace, path) 
{ 
  if(system._exist(namespace, path)) return; 
  var code;if(!/((^|\.)[\w\$]+)+$/.test(namespace)) 
  throw new error(namespace + system.namespace_error); 
  if(undefined==typeof path&&string==typeof(system._codebase[namespace])) 
  { 
    system._eval(namespace, path);}else if(system.supportsxmlhttp()){ 
    if(code=system.load(namespace, path)){system._codebase[namespace]=code; 
    system._eval(namespace, path);}}else{ 
    var script=document.createelement(script);script.type=text/javascript; 
    script.src=system._existences[namespace]=system._mappath(namespace,path); 
    document.getelementsbytagname(head)[0].appendchild(script); 
    settimeout(function(){script.parentnode.removechild(script)},99); 
  } 
};
function.read=1;function.write=2;function.read_write=3; 
function.prototype.addproperty=function(name,initvalue,r_w) 
{ 
  var capital=name.charat(0).touppercase()+name.substr(1); 
  r_w=r_w||function.read_write; name=_+name; var p=this.prototype; 
  if(undefined!=typeof initvalue) p[name]=initvalue; 
  if(r_w&function.read) p[get+ capital]=function(){return this[name];}; 
  if(r_w&function.write) p[set+ capital]=function(v){this[name]=v;}; 
}; 
function.prototype.extends=function(superclass,classname) 
{ 
  var op=this.prototype, i, p=this.prototype=new superclass(); 
  if(classname)p._classname=classname; for(i in op)p[i]=op[i]; 
  if(p.hashcode)delete system._instances[p.hashcode];return p; 
}; 
system._instances={}; 
system._prototypes= 
{ 
  system:system, 
  system.object:system, 
  system.event:system.event 
}; 
system._existences= 
{ 
  system:system._mappath(system), 
  system.event:system._mappath(system.event), 
  system.object:system._mappath(system.object) 
}; 
t=system.extends(object, system); system.object = system; 
t.decontrol=function(){var t;if(t=this.hashcode)delete system._instances[t]}; 
t.addeventlisteners=function(type, handle) 
{ 
  if(function!=typeof handle) 
    throw new error(this+ addeventlistener: +handle+ is not a function); 
  if(!this._listeners) this._listeners={}; 
  var id=system.tohashcode(handle), t=this._listeners;  
  if(object!=typeof t[type]) t[type]={}; t[type][id]=handle; 
}; 
t.removeeventlistener=function(type, handle) 
{ 
  if(!this._listeners)this._listeners={}; var t=this._listeners; 
  if(!t[type]) return; var id=system.tohashcode(handle); 
  if( t[type][id])delete t[type][id];if(t[type])delete t[type]; 
}; 
t.dispatchevent=function(evt) 
{ 
  if(!this._listeners)this._listeners={}; 
  var i, t =this._listeners, p =evt.type; 
  evt.target=evt.srcelement=evt.target||evt.srcelement||this; 
  evt.currenttarget=this; if(this[p])this[p](evt); 
  if(object==typeof t[p]) for(i in t[p]) t[p][i].call(null, evt); 
  delete evt.target;delete evt.currenttarget;delete evt.srcelement; 
  return evt.returnvalue; 
}; 
t.sethashcode=function() 
{ 
  system._instances[(this.hashcode=system.getuniqueid())]=this; 
}; 
t.gethashcode=function() 
{ 
  if(!this.hashcode)this.sethashcode(); return this.hashcode; 
}; 
t.tostring=function(){return [object +(this._classname||object)+];}; 
system.event=function(type){this.type=type;}; 
t=system.event.extends(system, system.event); 
t.returnvalue=true; t.cancelbubble=false; 
t.target=t.currenttarget=t.srcelement=null; 
t.stoppropagation=function(){this.cancelbubble=true;}; 
t.preventdefault =function(){this.returnvalue=false;};
if(system.ie && !system.debug) include(system.plugins.ie); //ie userdata 
if(window.opera) include(system.plugins.opera); //opera support 
include(system.global);
演示效果
本地下载
   
 
   