
function isUndef(obj)
{
	return typeof obj == 'undefined' ? true : false;
}
//menu layer

var userAgent = navigator.userAgent.toLowerCase();
var is_ie = (userAgent.indexOf('msie') != -1);
var is_ie60 = (userAgent.indexOf('msie 6.0') != -1);

function page_preexecuted()
{
	try {
	document.execCommand('BackgroundImageCache', false, true);
	}
	catch(e) {}
}
if(is_ie60)page_preexecuted();

$ = function(id){
	return document.getElementById(id);
}

$$ = document.getElementsByClassName = function(classname){
	var elems = [];
	var alls = document.getElementsByTagName('div'); 
	for(var i=0; i<alls.length; i++){
		if(alls[i].className && alls[i].className == classname){
			elems.push(alls[i]);	
		}
	}
	var alls = document.getElementsByTagName('span'); 
	for(var i=0; i<alls.length; i++){
		if(alls[i].className && alls[i].className == classname){
			elems.push(alls[i]);	
		}
	}
	return elems;
}


function getX(e) {
    var x = 0;                
    while(e) {               
        x += e.offsetLeft;   
        e = e.offsetParent;   
    }
    return x;                
}

function getY(ee) {
    var y = 0;
    while(ee) {;
        y += ee.offsetTop;
        ee = ee.offsetParent;  
    }
    return y;          
}


var mnu_curele="",mnu_n=1;
function mnu_hide(obj)
{
	var iobj = $(obj);
	if(iobj.id!=mnu_curele.id || isUndef(mnu_curele.id))
	{
		iobj.info.style.display = 'none';
	}
	else
	{
		//iobj.info.style.display = 'none';
		if(iobj.info.style.display != 'none')setTimeout("(function(){mnu_hide('"+obj+"')})()",3500);
	}
}

LayerMenu = function(menus, layers){
	this.menus = $$(menus);
	if(layers!="none")this.layers = $$(layers);
	this.addEvent();
}

LayerMenu.prototype.addEvent = function(){
	for(var i=0; i<this.menus.length; i++){
		var item = this.menus[i];
		if(this.layers)
		{
			item.id = "menu_" + mnu_n;
			mnu_n++;
			item.info = this.layers[i];
			if(item.info.onclick==null)
			{
				item.onmouseover = this.showInfo;
				item.onmouseout = this.hiddenInfo;
			}
			else
			{
				item.onclick = this.showInfo;
			}
		}
		else
		{
			item.onmouseover = this.showInfo;
			item.onmouseout = this.hiddenInfo;
		}
	}
}

LayerMenu.prototype.showInfo = function(e){
	mnu_curele = this;
	if(this.info)
	{
	var x = getX(this);
	var y = getY(this)-1;
	var distHeight = this.clientHeight;
	distWidth = 0;
	if(!distHeight)distHeight+=this.offsetHeight;
	x += distWidth;
	y += distHeight;
	this.info.style.top = y + 'px';
	this.info.style.left = x + 'px';
	this.info.style.display = 'block';
	if(document.documentElement)
	{
		var W = document.documentElement.clientWidth;
		var H = document.documentElement.clientHeight;
		var WS = document.documentElement.scrollLeft;
		var HS = document.documentElement.scrollTop;
	}
	else
	{
		var W = document.body.clientWidth;
		var H = document.body.clientHeight;
		var WS = document.body.scrollLeft;
		var HS = document.body.scrollTop;
	}
	var thisY = getY(this);//当前层坚向起点坐标
	var topY = thisY - HS;//当前层的上边可见高
	var bottomY = (HS+H-y);//当前层的下边可见高
	
	var thisX = getX(this); //当前层绝对坐标左
	var thisX2 = thisX + this.info.offsetWidth;//当前层绝对坐标右
	var headX = thisX - WS;//当前层的左边可见宽(不包括自己宽)
	var bottomX = WS+W-thisX;//当前右的左边可见宽(包括自己宽)
	var viewMaxX = WS + W;//可见的横最大坐标
	//alert("W-" + W+" H-"+ H + " 坐标-" + getY(this) + " 卷去高-" + WS + " Y-" + y + " topY-" + topY + " bottomY-" + bottomY + " thisX-" + thisX + " thisX2-" + thisX2 + " headX-" + headX + " bottomX-" + bottomX);
		if(bottomY<this.info.offsetHeight && topY>bottomY)
		{
			y = getY(this)-this.info.offsetHeight+1;
			this.info.style.top = y + 'px';
		}
		if(thisX < WS) //层超出左边可见窗口
		{
			x = WS + 1;
			this.info.style.left = x + 'px';
		}
		else if(thisX2 > viewMaxX) //层超出右边可见窗口 优先处理超出左边情况从而忽略超出右边的情况
		{
			x = viewMaxX-(this.info.offsetWidth);
			this.info.style.left = x + 'px';
		}
	}
	if(this.className.indexOf('active')==-1)this.className += 'active';
	if(this.onclick!=null)
	{
		this.info.onmouseover = function(){if(mnu_curele.info)mnu_curele.info.style.display='block';};
		this.onmouseout = function(){if(mnu_curele.info)mnu_curele.info.style.display='none';};
	}
}


LayerMenu.prototype.hiddenInfo = function(e){
	var evt = window.event || e;
	var elem = evt.target || evt.srcElement;
	if(this.info)
	{
		//if(elem.className != this && elem != this.info){
		//菜单延后隐藏
		if(this.info.parentNode==this)
		{
			mnu_curele = "";
			setTimeout("(function(){mnu_hide('"+this.id+"')})()",100);
		}
		//层立即隐藏
		else
		{
			this.info.style.display = 'none';
		}
		//}
		//this.info.style.display = 'none';
	}
	this.className = this.className.replace(/active/g,'');
}

function setLayerCenter(obj)
{
	obj.style.display = 'block';
	var W = document.body.clientWidth;
	var H = document.body.clientHeight;
	var LW = obj.offsetWidth;//层高
	var LH = obj.offsetHeight;//层高
	var x = parseInt((W-LW)/2);
	var y = parseInt((H-LH)/2);
	obj.style.top = y + 'px';
	obj.style.left = x + 'px';
}

//cookie

function StrToDate(s) {
    var d = new Date(); 
    var g = s.length;
    if(g>=4)d.setYear(parseInt(s.substring(0,4),10));
    if(g>=6)d.setMonth(parseInt(s.substring(5,6)-1,10)); 
    if(g>=8)d.setDate(parseInt(s.substring(7,8),10)); 
    if(g>=10)d.setHours(parseInt(s.substring(9,10),10));
    if(g>=12)d.setMinutes(parseInt(s.substring(11,12),10));
    if(g>=14)d.setSeconds(parseInt(s.substring(13,14),10));
    return(d);
}

function Cookie_Add(name,value)
{
	var expiredate = Cookie_Get(DEF_MasterCookies,"expires");
	if(expiredate.length<8)expiredate=30;
	var cookieString=name+"="+escape(value);
	if(expiredate.length>=8)
	{
		cookieString=cookieString+"; expire="+(StrToDate(expiredate).toUTCString());
	}
	else
	{
		var date=new Date();
		date.setTime(date.getTime+expiredate*3600*1000*24);
		cookieString=cookieString+"; expire="+date.toUTCString();
	
	}
	document.cookie=cookieString;
}

function Cookie_Get(name,name2)
{
	var str=document.cookie;
	var arrCookie=str.split("; ");
	str = "";
	for(var i=0;i<arrCookie.length;i++)
	{
		if(arrCookie[i].indexOf(name+"=")==0)
		{
			str = arrCookie[i].substring(name.length+1,arrCookie[i].length);
		}
	}
	if(!name2)return(unescape(str));
	if(str=="")return("");
	arrCookie=str.split("&");
	for(var i=0;i<arrCookie.length;i++)
	{
		if(arrCookie[i].indexOf(name2+"=")==0)
		{
			str = arrCookie[i].substring(name2.length+1,arrCookie[i].length);
		}
	}
	return(unescape(str));
}

function Cookie_Del(name){
        var date=new Date();
        date.setTime(date.getTime()-10000);
        document.cookie=name+"=; expire="+date.toUTCString();
}

//import file

function $import(path,type,title)
{
	var s,i;
	if(type=="js")
	{
		var ss=document.getElementsByTagName("script");
		for(i=0;i<ss.length;i++)
		{
			if(ss[i].src && ss[i].src.indexOf(path)!=-1)return;
		}
		s=document.createElement("script");
		s.type="text/javascript";
		s.src=path;
	}
	else if(type=="css")
	{
		s=document.createElement("link");
		s.rel="alternate stylesheet";
		s.type="text/css";
		s.href=path;
		s.title=title;
		s.disabled=false;
	}
	else return;
	var head=document.getElementsByTagName("head")[0];
	head.appendChild(s);
}

function setStyle2(file,title)
{
	var i=0, Links;
	$import(file,"css",title);
	Links = document.getElementsByTagName("link")[i]
	while(Links)
	{
		if(Links.title==title)
		{document.getElementsByTagName("link")[0].disabled = true;
		document.getElementsByTagName("link")[0].disabled = false;
		}
		i++;
		Links = document.getElementsByTagName("link")[i]
	}
}

function setStyle(file,title)
{
	var i, links,eflag=false;
	var Links=document.getElementsByTagName("link")[0];
	while(Links)
	{
		if(Links.title==title)return;
		Links.parentNode.removeChild(Links);
		Links=document.getElementsByTagName("link")[0]
	}
	$import(file,"css",title);
	if(document.getElementsByTagName("link")[0])
	{
		document.getElementsByTagName("link")[0].disabled = true;
		document.getElementsByTagName("link")[0].disabled = false;
	}
}

//ajax

function getHttp()
{
	var oT = false;
	try {
		oT = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
	try {
		oT = new ActiveXObject('Microsoft.XMLHTTP');
		} catch(e) {
			oT = new XMLHttpRequest();
		}
	}
	return oT;
}


function getAJAX(url,str,lb,ty)
{
	delete HR;
	var HR = getHttp();
	function processAJAX(lb)
	{
		if (HR.readyState == 4)
		{
			if (HR.status == 200)
			{
				var tmp = HR.responseText;
				if(ty==1)
					eval(lb);
				else
					$(lb).innerHTML = tmp;
			}
			else
			{
				var tmp = "<p>网页错误: " + HR.statusText +"<\/p>";
				if(ty==1)
					eval(lb);
				else
					$(lb).innerHTML=tmp;
			}
			delete HR;
			HR=null;
			if(is_ie)CollectGarbage;
		}
	}
	HR.onreadystatechange = function() {processAJAX(lb);};
	if(str!="")
		HR.open("POST", url, true);
	else
		HR.open("GET", url, true);
	HR.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gb2312");
	HR.send(str);
}

//string

function $replace(str,str1,str2)
{
	var re = new RegExp(str1,"g");
	return(str.replace(re,str2));
}

function submit_disable(theform,tp)
{
	if (document.all||document.getElementById)
	{
		for (i=0;i<theform.length;i++)
		{
			var tempobj=theform.elements[i];
			if(tempobj.type && (tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset"))
			{
				if(tp==1)
				tempobj.disabled=false;
				else
				tempobj.disabled=true;
			}
		}
	}
}

if(!is_ie){ //firefox innerText define
    HTMLElement.prototype.__defineGetter__(    "innerText", 
        function(){ 
            return this.textContent.replace(/(^\s*)|(\s*$)/g, "");
        } 
    ); 
    HTMLElement.prototype.__defineSetter__(    "innerText", 
        function(sText){ 
            this.textContent=sText; 
        } 
    ); 
}

function relocationxy(ob,menuob,edt)
{
	var obj=$(ob);
	var menuobj = $(menuob);
	if(menuobj.innerHTML!="loading...")
	{
		var x = getX(obj);
		var y = getY(obj)-1;
		var distHeight = obj.clientHeight;
		if(!distHeight)distHeight+=obj.offsetHeight;
		y += distHeight;
		if(document.documentElement)
		{
			var W = document.documentElement.clientWidth;
			var H = document.documentElement.clientHeight;
			var WS = document.documentElement.scrollLeft;
			var HS = document.documentElement.scrollTop;
		}
		else
		{
			var W = document.body.clientWidth;
			var H = document.body.clientHeight;
			var WS = document.body.scrollLeft;
			var HS = document.body.scrollTop;
		}
		var thisY = getY(menuobj);//当前层坚向起点坐标
		var topY = thisY - HS;//当前层的上边可见高
		var bottomY = (HS+H-y);//当前层的下边可见高
		
		var thisX = getX(menuobj); //当前层绝对坐标左
		var thisX2 = thisX + menuobj.offsetWidth;//当前层绝对坐标右
		var headX = thisX - WS;//当前层的左边可见宽(不包括自己宽)
		var bottomX = WS+W-thisX;//当前右的左边可见宽(包括自己宽)
		var viewMaxX = WS + W;//可见的横最大坐标
		//alert("W-" + W+" H-"+ H + " 坐标-" + getY(this) + " 卷去高-" + WS + " Y-" + y + " topY-" + topY + " bottomY-" + bottomY + " thisX-" + thisX + " thisX2-" + thisX2 + " headX-" + headX + " bottomX-" + bottomX);
		
		if(bottomY<menuobj.offsetHeight && topY>bottomY)
		{
			y = getY(obj)-menuobj.offsetHeight+1;
			menuobj.style.top = y + 'px';
		}
		if(thisX < WS) //层超出左边可见窗口
		{
			x = WS + 1;
			menuobj.style.left = x + 'px';
		}
		else if(thisX2 > viewMaxX) //层超出右边可见窗口 优先处理超出左边情况从而忽略超出右边的情况
		{
			x = viewMaxX-(menuobj.offsetWidth);
			menuobj.style.left = x + 'px';
		}
		
		addListener(document,"click",function(evt)
		{
			var evt = window.event?window.event:evt,target=evt.srcElement||evt.target;
				//while(target.nodeName.toLowerCase() != "div" && target.nodeName.toLowerCase() != "html")
				//{
				//	target = target.parentNode;
				//}
				var tar1 = target,tar2 = target.parentNode,flag=1;
				if(tar1.nodeName.toLowerCase() == "div")
				if(tar1.id==menuob||tar1.id=="editor_selcolor")flag=0;
				if(tar1.className == "ico"||tar1.className == "layerico")flag=0;
				while(flag==1 && tar1 != tar2 && tar2.nodeName.toLowerCase() != "html")
				{
					if(tar2.className == "ico"||tar2.className == "layerico")flag=0;
					if(tar2.nodeName.toLowerCase() == "div")
					if(tar2.id==menuob||tar2.id=="editor_selcolor")flag=0;
					tar1 = tar2;
					tar2 = tar2.parentNode;
				}
				if(flag == 1)
				{
					$(menuob).style.display = "none";
				}
		})
		
		if(edt==1)
		addListener(edt_doc,"click",function(evt)
		{
					$(menuob).style.display = "none";
		})
	}
	else
	setTimeout("relocationxy('" + ob + "','" + menuob+ "');",100);
}

function addListener(element,e,fn)
{
	if(element.addEventListener)
	{
		element.addEventListener(e,fn,false);
	}
	else
	{
		element.attachEvent("on" + e,fn);
	}
}

function copyClipboard(data,value,alertmsg,dir)
{
	if (window.clipboardData)
	{
		window.clipboardData.setData(data,value);
		alert(alertmsg);
	}else
	{
		var flashcopier = 'flashcopier';
		if(!document.getElementById(flashcopier))
		{
			var divholder = document.createElement('div');
			divholder.id = flashcopier;
			document.body.appendChild(divholder);
		}
		document.getElementById(flashcopier).innerHTML = '';
		var divinfo = '<embed src="'+ dir+'images/pub/_clipboard.swf" FlashVars="clipboard='+encodeURI(value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';//这里是关键
		document.getElementById(flashcopier).innerHTML = divinfo;
		alert(alertmsg);
	}   
}
