function addEvent( obj, type, fn ) {
        if (obj.addEventListener)
                obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) 
                obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));});
};

function getId( elem ) {
    return document.getElementById(elem);
};

  //通过类名查找元素 hasClass("test","li")[0]
function hasClass(name,tag) {
    var r = [];
	if (tag == null)
    tag = '*';
    var re = new RegExp("(|\\s)" + name + "(\\s|$)");
    var e = document.getElementsByTagName(tag);
    for ( var j = 0; j < e.length; j++ ){
    if ( re.test(e[j].className) ) r.push( e[j] )
	};
    return r;
}

function cssjs(a,o,c1,c2){
    switch (a){
        case 'add':
            if(!cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
        break;
        case 'remove':
            var rep=o.className.match(' '+c1)?' '+c1:c1;
            o.className=o.className.replace(rep,'');
        break;
        case 'check':
            return new RegExp("(|\\s)" + c1 + "(\\s|$)").test(o.className)
        break;
    }
};

function getStyle( elem, name ) {
    if (elem.style[name])
        return elem.style[name];
    else if (elem.currentStyle)
        return elem.currentStyle[name];
    else if (document.defaultView && document.defaultView.getComputedStyle) {
        name = name.replace(/([A-Z])/g,"-$1");
        name = name.toLowerCase();
        var s = document.defaultView.getComputedStyle(elem,"");
        return s && s.getPropertyValue(name);
    } else
    return null;
};

function toggle(obj) {
    obj.style.display = (getStyle( obj, 'display') == 'none' ? 'block' : 'none' );
};

function next( elem ) {
    do {
        elem = elem.nextSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
};

function stopDefault( e ) {
    if ( e && e.preventDefault )
        e.preventDefault();
    else
        window.event.returnValue = false;
    return false;
};

 function hasClass(name,tag) {
    var r = [];
    if (tag == null)
      tag = '*';
      var re = new RegExp("(|\\s)" + name + "(\\s|$)");
      var e = document.getElementsByTagName(tag);
      for ( var j = 0; j < e.length; j++ ){
      if ( re.test(e[j].className) ) r.push( e[j] )
    };
      return r;
 } 

 

//ajax
function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
	 req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
	 if (req.readyState != 4) return;

	 callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
 };
 
 function XMLHttpFactories() {
  return [
   function () {return new XMLHttpRequest()},
   function () {return new ActiveXObject("Msxml2.XMLHTTP")},
   function () {return new ActiveXObject("Msxml3.XMLHTTP")},
   function () {return new ActiveXObject("Microsoft.XMLHTTP")}
  ];
 };
 
 function createXMLHTTPObject() {
  var xmlhttp = false;
  var factories = XMLHttpFactories();
  for (var i=0;i<factories.length;i++) {
   try {
	xmlhttp = factories[i]();
   }
   catch (e) {
	continue;
   }
   break;
  }
  return xmlhttp;
 };



