
var isIE = (document.all) ? true : false;


//创建类
var Class = {
	create: function() {
		return function() { this.initialize.apply(this, arguments); }
	}
}

//继承
var Extend = function(destination, source) {
	for (var property in source) {
		destination[property] = source[property];
	}
}

//绑定事件的监听
var Bind = function(object, fun) {
	return function() {
		return fun.apply(object, arguments);
	}
}

//绑定事件的监听
var BindAsEventListener = function(object, fun) {
	var args = Array.prototype.slice.call(arguments).slice(2);
	return function(event) {
		return fun.apply(object, [event || window.event].concat(args));
	}
}

//得到当前的样式值
var CurrentStyle = function(element){
	return element.currentStyle || document.defaultView.getComputedStyle(element, null);
}

//添加时间绑定
function addEventHandler(oTarget, sEventType, fnHandler) {
	if (oTarget.addEventListener) {
		oTarget.addEventListener(sEventType, fnHandler, false);
	} else if (oTarget.attachEvent) {
		oTarget.attachEvent("on" + sEventType, fnHandler);
	} else {
		oTarget["on" + sEventType] = fnHandler;
	}
}

//移出时间绑定
function removeEventHandler(oTarget, sEventType, fnHandler) {
  if (oTarget.removeEventListener) {
      oTarget.removeEventListener(sEventType, fnHandler, false);
  } else if (oTarget.detachEvent) {
      oTarget.detachEvent("on" + sEventType, fnHandler);
  } else { 
      oTarget["on" + sEventType] = null;
  }
}

//得到全屏幕的宽度
function getBodyWidth(){
	return document.documentElement.clientWidth;
}

//得到全屏幕的高度
function getBodyHeiht(){
	return document.documentElement.clientHeight;
}

//设置事件的属性的兼容
function Event(e){
	var oEvent = document.all ? window.event : e;
	if (document.all) {
		//得到鼠标移上和移开的物件的名字
		if(oEvent.type == "mouseout") {
			oEvent.relatedTarget = oEvent.toElement;
		}else if(oEvent.type == "mouseover") {
			oEvent.relatedTarget = oEvent.fromElement;
		}
		//停止冒泡
		oEvent.stopPropagation = function() { this.cancelBubble = true; }
	}
	return oEvent;
}

//以函数fun遍历数组
function Each(list, fun){
	for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
}

//得到物體的偏移量
function getOffsetPixel(o,ct){
   var n = 0;
   while (o.parentNode) {
    eval('n += o.offset' + ct + ';');
    o = o.parentNode;
   }
   return n;
}

//判斷一個物件是否包含任一個物件
function contains(parobj,childobj){
	while(childobj!=null){
		if(parobj==childobj){
		  return true;
		}else{
			childobj=childobj.parentNode;
	  }
	}
	return false;
}

//判斷瀏覽器是那種類型
function fCkBrs(){
 switch (navigator.appName){
  case 'Opera': return 2;
  case 'Netscape': return 3;
  case 'Microsoft Internet Explorer': return 1;
  default: return 0;
 }
}

//得到物件的坐標
function getEventOffset(evt){
  var msg = "";
  if (evt.offsetX == undefined){
    var evtOffsets = getOffset(evt);
 		msg={offsetX:evtOffsets.offsetX,offsetY:evtOffsets.offsetY};
  }else{
 		msg={offsetX:evt.offsetX,offsetY:evt.offsetY};
  }
  return msg;
}


function getOffset(evt){
  var target = evt.target;
  if (target.offsetLeft == undefined){
    target = target.parentNode;
  }
  var pageCoord = getPageCoord(target);
  var eventCoord = {
    x: window.pageXOffset + evt.clientX,
    y: window.pageYOffset + evt.clientY
  };
  var offset = {
    offsetX: eventCoord.x - pageCoord.x,
    offsetY: eventCoord.y - pageCoord.y
  };
  return offset;
}


function getPageCoord(element){
  var coord = {x: 0, y: 0};
  while (element){
    coord.x += element.offsetLeft;
    coord.y += element.offsetTop;
    element = element.offsetParent;
  }
  return coord;
}

//停止冒泡
function fCancleBubble(e){
 var e = window.event || e;
 if (e.preventDefault) e.preventDefault();
 else e.returnValue = false;
}

//和cookie有关的函数

//获得Cookie解码后的值
function GetCookieVal(offset){
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

//设定Cookie值
function SetCookie(name, value){
	var expdate = new Date();
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
	document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
	+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
	+((secure == true) ? "; secure" : "");
}

//删除Cookie
function DelCookie(name){
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}

//获得Cookie的原始值
function GetCookie(name){
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen){
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
		return GetCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

//解决ie和firefox的getElementsByName不兼容的问题
function getElementsByName(tag,eltname){
	var elts=document.getElementsByTagName(tag);
	var count=0;
	var elements=[];
	for(var i=0;i<elts.length;i++){
	   if(elts[i].getAttribute("name")==eltname){
	      elements[count++]=elts[i];
	   }
	}
	return elements;
} 

//定義兼容的innerText函數
if(!isIE){ //firefox innerText define
	HTMLElement.prototype.__defineGetter__("innerText",
	  function(){return this.textContent.replace(/(^\s*)|(\s*$)/g, "");}
	);
	HTMLElement.prototype.__defineSetter__("innerText",
    function(sText){this.textContent=sText;}
	);
}

//計算字符串的字節數
String.prototype.getBytesLength = function() {   
	return this.replace(/[^\x00-\xff]/gi, "--").length;   
}
