/*window.onerror=function(){alert("error occured");};*/
var Base={
	setCookie:function(sName, sValue){
		var date=new Date();
		date.setTime(date.getTime()+31536000000);
		document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
	},
    delCookie:function(sName){
        if(Base.getCookie(name)){
            document.cookie=sName+"="+((domain)?"; domain="+dm:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
    },
	getCookie:function(sName){
		var aCookie = document.cookie.split("; ");
		for (var i=0; i < aCookie.length; i++)
		{
			var aCrumb = aCookie[i].split("=");
			if (sName == aCrumb[0]) 
				return unescape(aCrumb[1]);
		}
		return "";
	},
    trimL:function(txt){
		return txt.replace(/^\s*/,"");
	},
    trimR:function(txt){
		return txt.replace(/\s*$/,"");
	},
    trim:function(txt){
		return this.trimL(this.trimR(txt));
	},
	/*check explorer type
	*/
	isIE6:function(){
		return navigator.userAgent.indexOf('MSIE')>0&&navigator.userAgent.indexOf('6')>0;
	},
	isIE:function(){
		return navigator.userAgent.indexOf('MSIE')>0;
	},
	isOpera:function(){
		return navigator.userAgent.indexOf('Opera')>-1;
	},
	isMoz:function(){
		return navigator.userAgent.indexOf('Mozilla/5.')>-1;
	}
};

/*
dom
*/
var Dom={
/*
node
*/
//$ -> getBy
    $id:function(nodeId){
    	if(typeof nodeId=='string'){
    		return document.getElementById(nodeId);
    	}else if(typeof nodeId=='object'){
    		return nodeId;
    	}else{
			return false;
		}
    },
	$idInNode:function(nodeId, pNode){// have not finish
		if(!pNode){
			return Dom.$id(nodeId);
		}else{
			return false;
		}
    },
    $tagInNode:function(tagName, pNode){
		if(!pNode){
			pNode=document;
		}
		reNodes=pNode.getElementsByTagName(tagName);
		if(reNodes&&reNodes.length){
			return reNodes;
		}else{
			return false;
		}
    },
//reXxxx -> use to return value
    $tagInNodeChild:function(tagName, pNode){
		if(!pNode){
			pNode=document;
		}
		var nodes=pNode.childNodes;
		if(!(nodes&&nodes.length)){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(node.nodeName.toLowerCase()==tagName){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
    },
    $withClassInNodeChild:function(className, pNode){
		if(!pNode){
			pNode=document;
		}
		var nodes=pNode.childNodes;
		if(!(nodes&&nodes.length)){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(node.className.toLowerCase()==className){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
    },
    /*$hasClassInNodeChild:function(className, pNode){},*/
    $tagWithClassInNode:function(tagName, className, pNode){
		var nodes=Dom.$tagInNode(tagName, pNode);
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(Dom.isClass(className, node)){
				reNodes[reNodes.length]=node;
			}
		}
		return reNodes;
	},
    $tagHasClassInNode:function(tagName, className, pNode){
		var nodes=Dom.$tagInNode(tagName, pNode);
		if(!nodes){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(Dom.hasClass(className, node)){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
	},
    $tagHasClassInNodeChild:function(tagName, className, pNode){
		var nodes=Dom.$tagInNodeChild(tagName, pNode);
		if(!nodes){return false;}
		var reNodes=[];
		for(var i=0; i<nodes.length; i++){
			var node=nodes[i];
			if(Dom.hasClass(className, node)){
				reNodes[reNodes.length]=node;
			}
		}
		if(reNodes.length){
			return reNodes;
		}else{
			return false;
		}
	},
/*
class
*/
	isClass:function(className, node){
		if((!node)||(!className)){return null;}
		var reFlag=false;
		if(node.className==className){
			reFlag=true;
		}

		return reFlag;
	},
	hasClass:function(className, node){
		if((!className)||(!node)||(!node.className)){return null;}
		return (new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(node.className));
	},
	addClass:function(className, node){
		if(Dom.hasClass(className, node)){return;}
		var newClassName=node.className?node.className+' '+className:className;
		node.className=newClassName;
		return true;
	},
	removeClass:function(className, node){
		if(!(Dom.hasClass(className, node))){return;}
		var nodeClassName=node.className;
		if(nodeClassName==className){
			nodeClassName="";
		}else{
			nodeClassName=Base.trim(nodeClassName.replace(new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', 'g'), ""));
		}
		node.className=nodeClassName;
	},
	replaceClass:function(className, newClassName, node){
		if(className===newClassName){return;}
		if(!(Dom.hasClass(className, node))){
			Dom.addClass(newClassName, node);
			return;
		}
		node.className=Base.trim(node.className.replace((new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', 'g')), ' '+newClassName +' '));
		if(Dom.hasClass(className, node)){
			Dom.replaceClass(className, newClassName, node);
		}
	},
	setClass:function(className, node){
		node.className=className;
	},
	clearClass:function(node){
		node.className="";
	}
};

var kEvent=(function(){
	return {
	addEvent: function(element, name, observer, useCapture) {
		try{
			element=Dom.$id(element);
			if(element.addEventListener){
				element.addEventListener(name, observer, useCapture);
			}else if(element.attachEvent){
				element.attachEvent('on' + name, observer);
			}
		}catch(e){}
	},
	
	delEvent: function(el, sType, fn) {
		if (window.removeEventListener) {
			el.removeEventListener(sType, fn, false);
		} else if (window.detachEvent) {
			el.detachEvent("on" + sType, fn);
		}
	},

	getTarget: function(ev) {
		var t = ev.target || ev.srcElement;
		return this.resolveTextNode(t);
	},
	
	resolveTextNode: function(node) {
		// if (node && node.nodeName && 
				// "#TEXT" == node.nodeName.toUpperCase()) {
		if (node && 3 == node.nodeType) {
			return node.parentNode;
		} else {
			return node;
		}
	},
	
	stopEvent: function(ev) {
		this.stopPropagation(ev);
		this.preventDefault(ev);
	},
	
	stopPropagation: function(ev) {
		if (ev.stopPropagation) {
			ev.stopPropagation();
		} else {
			ev.cancelBubble = true;
		}
	},
	
	preventDefault: function(ev) {
		if (ev.preventDefault) {
			ev.preventDefault();
		} else {
			ev.returnValue = false;
		}
	}
	
	}

})();


var kStyle={
	blankImgSrc: "/library/image/dot/dot_blank.gif",
	fixPngBg: function(element){
		if(typeof element=='string'){element=Dom.$id(element);}
		if((!(element.currentStyle))||((navigator.appName.toLowerCase().indexOf('internet explorer'))==-1)){return;}
		var xSrc=kStyle.getRealStyle(element).backgroundImage;
		if(xSrc.indexOf('.png')==-1){
			return;
		}
		element.style.backgroundImage="none";
		element.style.filter ="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod='scale', src='"+xSrc.substring(5, xSrc.length-2)+"')";
	},
	fixPngImg: function(element){
		if(typeof element=='string'){element=Dom.$id(element);}
		if((!(element.currentStyle))||((navigator.appName.toLowerCase().indexOf('internet explorer'))==-1)){return;}
		var xSrc=element.src;
		if(xSrc.indexOf('.png')==-1){
			return;
		}
		element.src=blankImgSrc;
		element.style.filter ="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod='scale', src='"+xSrc+"')";
	},
	getRealStyle: function(element){
		var reStyle;
		element=Dom.$id(element);
		if(!element){
			return false;
		}
		if (element.currentStyle){
			reStyle = element.currentStyle;
		}else if (window.getComputedStyle){
			reStyle = window.getComputedStyle(element, null);
		}else{
			reStyle = null;
		}
		return reStyle;
	},
	setAtt: (function(){
				if (Base.isIE()) {
					return (function(el, property, val) {
						switch (property) {
							case 'opacity':
								if (typeof el.style.filter == 'string' ) {
									el.style.filter = 'alpha(opacity=' + val * 100 + ')';
									if (!el.currentStyle || !el.currentStyle.hasLayout) {
										el.style.zoom = 1;
									}
								}
								break;
							default:
								el.style[property] = val;
						}
					});
				} else {
					return (function(el, property, val) {
						el.style[property] = val;
					});
				}
			})(),
	getAtt: (function(){
		var patterns = {
			HYPHEN: /(-[a-z])/i
		};
		var toCamel = function(property) {
			if ( !patterns.HYPHEN.test(property) ) {
				return property; // no hyphens
			}
			
			if (propertyCache[property]) { // already converted
				return propertyCache[property];
			}
			
			while( patterns.HYPHEN.exec(property) ) {
				property = property.replace(RegExp.$1,
						RegExp.$1.substr(1).toUpperCase());
			}
			
			propertyCache[property] = property;
			return property;
		};

		if (document.defaultView && document.defaultView.getComputedStyle) {
        	return (function(el, property) {
				var value = null;
				
				var computed = document.defaultView.getComputedStyle(el, '');
				if (computed) { // test computed before touching for safari
					value = computed[toCamel(property)];
				}
				
				return el.style[property] || value;
        	});
		} else if (document.documentElement.currentStyle && Base.isIE()) {// IE method
			return (function(el, property) {
				switch( toCamel(property) ) {
					case 'opacity' :// IE opacity uses filter
						var val = 100;
						try { // will error if no DXImageTransform
							val = el.filters['DXImageTransform.Microsoft.Alpha'].opacity;
						} catch(e) {
							try { // make sure its in the document
								val = el.filters('alpha').opacity;
							} catch(e) {}
						}
						return val / 100;
						break;
					default:
						// test currentStyle before touching
						var value = el.currentStyle ? el.currentStyle[property] : null;
					return ( el.style[property] || value );
				}
        	});
		} else { // default to inline only
			return (function(el, property) {return el.style[property];});
		}
	})()
};

var kAnimator={
	FPS:30,
	create:function(){
		
	},
	getPV:function(v1, v2, percent, Method){//取进度值
		var reV=(v2-v1)*Math.sin(Math.PI*percent/2)+v1;
		return reV;
	}
};
var Animation_FPS=Animation_FPS||30;

Math.getDegree=function(radian){
	return radian*180/(Math.PI);
};
Math.getRadian=function(degree){
	return degree*(Math.PI)/180;
};

Date.prototype.getWeekBegin=function(){
	var tV01=this.getDay()-1;
	if(tV01==-1){tV01=6;}
	return (new Date(this.getTime()-tV01*86400000));
};
Date.prototype.getYMD=function(){
	var reV01=this.getFullYear()+","+(this.getMonth()+1)+","+this.getDate();
	return reV01;
};
Date.prototype.setYMD=function(sYMD){
	try{
		var d=sYMD.split(",");
		this.setFullYear(d[0], d[1]-1, d[2]);
		return this;
	}catch(e){return false;}
};

/**
addVideo('/library/media/data/football.wmv', 320, 240, true, {type:"wmv"});
*/
if(typeof addVideo !=='function'){
	function addVideo(src, w, h, isAutoPlay, opt){
		var objId='media_'+new Date().getTime();
		var strMoz='<embed ';
		strMoz+='type="application/x-mplayer2" ';
		strMoz+='pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" ';
		strMoz+='name="mediaObjectId" ';
		strMoz+='filename="mediaSrcForReplace" ';
		strMoz+='autostart="mediaIsAutoStartForReplace" ';
		strMoz+='enablecontextmenu="1" ';
		strMoz+='clicktoplay="1" ';
		strMoz+='enablepositioncontrols="0" ';
		strMoz+='showcontrols="1" ';
		strMoz+='showstatusbar="0" ';
		strMoz+='showtracker="1" ';
		strMoz+='showdisplay="0" ';
		strMoz+='width="mediaWidthForReplace" ';
		strMoz+='height="mediaHeightForReplace"> ';
		strMoz+='</embed>';
		//使用查找替换的方法，进行初始化
		var strIE='<object classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" ';
		strIE+='id="mediaObjectId" ';
		strIE+='type="application/x-oleobject" ';
		strIE+='width="mediaWidthForReplace" ';
		strIE+='height="mediaHeightForReplace">';
		strIE+='<param name="FileName" value="mediaSrcForReplace">';
		strIE+='<param name="AutoStart" value="mediaIsAutoStartForReplace">';
		strIE+='<param name="AutoRewind" value="-1">';
		strIE+='<param name="AnimationAtStart" value="true">';
		strIE+='<param name="ShowControls" value="true">';
		strIE+='<param name="ShowTracker" value="true">';
		strIE+='<param name="ClickToPlay" value="true">';
		strIE+='<param name="EnableContextMenu" value="true">';
		strIE+='<param name="EnablePositionControls" value="true">';
		strIE+='<param name="Balance" value="0">';
		strIE+='<param name="ShowStatusBar" value="0">';
		strIE+='<param name="AutoSize" value="0">';
		strIE+='</object>';
		try{
			var strToInsert=(Base.isIE())?strIE:strMoz;
			var mediaRef;
			if(src && (typeof src=='string')){
				strToInsert=strToInsert.replace(/mediaSrcForReplace/, src);
			}else{
				strToInsert=strToInsert.replace(/mediaSrcForReplace/, "");
			}
			if(w && (typeof parseInt(w)=='number')){
				strToInsert=strToInsert.replace(/mediaWidthForReplace/, w);
			}else{
				strToInsert=strToInsert.replace(/mediaWidthForReplace/, '320');
			}
			if(h && (typeof parseInt(h)=='number')){
				strToInsert=strToInsert.replace(/mediaHeightForReplace/, h);
			}else{
				strToInsert=strToInsert.replace(/mediaHeightForReplace/, '240');
			}
			if(isAutoPlay){
				strToInsert=strToInsert.replace(/mediaIsAutoStartForReplace/, '1');
			}else{
				strToInsert=strToInsert.replace(/mediaIsAutoStartForReplace/, '0');
			}
			if(opt && opt.id && (typeof opt.id=='string')){
				objId=opt.id;
			}
			strToInsert=strToInsert.replace(/mediaObjectId/, objId);
			/*if(0 && opt){
				if(opt.scale){
					flashTagIns.setScale(opt.scale);
				}
				if(opt.allowScriptAccess){
					flashTagIns.setAllowScriptAccess(opt.allowScriptAccess);
				}
				if(opt.salign){
					flashTagIns.setSalign(opt.salign);
				}
				if(opt.align){
					flashTagIns.setAlign(opt.align);
				}
				if(opt.version){
					flashTagIns.setVersion(opt.version);
				}
			}*/
			document.write(strToInsert);
			document.close();
			mediaRef=(window[opt.id] ? window[opt.id] : document[opt.id]);
			return mediaRef;
		}catch(er){return;}
	}
}

var winLoadFuns=winLoadFuns||[];
var addWinLoadFuns=function(fn){//fn -> function 一个函数
	if(typeof fn=='function'){
		winLoadFuns.push(fn);
	}
};
kEvent.addEvent(
	window,
	"load",
	function(){
		if(winLoadFuns&&winLoadFuns.length){
			var i, fn;
			for(i=0; (fn=winLoadFuns[i]); i++){
				if(typeof fn=='function'){
					fn();
				}
			}
		}
	}
);

