﻿// JavaScript Document
  
//采取现代方式注册事件
function addEvent(obj,evt,fn){
	if(obj.addEventListener){
		obj.addEventListener(evt,fn,false);
	}else if(obj.attachEvent){
		obj.attachEvent("on"+evt,function (){fn.call(obj,fixEvt(window.event))});
	}else{
		throw new Error("No event bind method can be used!!!");
	}
}
//处理事件的兼容性问题
function fixEvt(evt){
		evt=evt||window.event;
		evt.layerX=evt.offsetX;
		evt.layerY=evt.offsetY;
		evt.target=evt.srcElement;
		evt.pageX=evt.clientX+document.documentElement.scrollLeft;
		evt.pageY=evt.clientY+document.documentElement.scrollTop;
		if (evt.type=="mouseout")
			evt.relatedTarget=evt.toElement;
		else if (evt.type=="mouseover")
			evt.relatedTarget=evt.fromElement;
		else 
			evt.relatedTarget=evt.target;
		
		evt.stopPropagation=function () {
			this.cancelBubble=true;
		};
		evt.preventDefault=function () {
			this.returnValue=false;
		};
		return evt;
}
//根据id,class,tag获取元素
function $(attr,commander){
	commander=commander||document;
	var obj;
	if(/^\#/.test(attr)){
		attr=attr.replace("#","");
		return commander.getElementById(attr);
	}else if(/^\./.test(attr)){
		attr=attr.replace(".","");
		if(commander.getElementsByClassName){
			return commander.getElementsByClassName(attr);
		}
		var nodes=commander.getElementsByTagName("*"),result=[];
		for(var i=0;i<nodes.length;i++){
			if(hasClass(nodes[i],attr)) result.push(nodes[i]);	
		}
		return result;
	}else{
		return commander.getElementsByTagName(attr);	
	}
};

//判断某一对象是否存在className为attr的函数
function hasClass(obj,attr){
	var names=obj.className.split(" ");
	for(var i=0;i<names.length;i++){
		if(names[i]==attr) return true;
	}
	return false;
}

//实现动画效果
function animate(obj,start,sum,time,fn){
			var curTime=0;
			var interval=setInterval(function(){
				if(curTime>=time) clearInterval(interval);
				for(var i in start){
					obj.style[i]=fn(start[i],sum[i],curTime,time)+"px";
				}
				curTime+=50;
				},50);
		}


//各种动画的算法
function Linear(start,sum,curTime,time){
	return start+curTime/time*sum;
}
//删除空白文本节点
function trim(nodes){
	var arr=[];
	for(var i=0;i<nodes.length;i++){
		if(nodes[i].nodeType==1) arr.push(nodes[i]);
		else continue;
	}
	return arr;
}
