/*  Water JavaScript Application Pack, Version 0.1
 *  
 *	Last Modify: 2007-4-13
/*--------------------------------------------------------------------------*/

//浏览器判断
var sUserAgent = navigator.userAgent;
var isOpera = sUserAgent.indexOf('Opera') > -1;
var isIE = sUserAgent.indexOf('compatible') > -1 && sUserAgent.indexOf('MSIE 6.0') > -1 && !isOpera;


//
function fixEllipsis(){
	if (isIE){
		var ellipsis = document.getElementsByClassName("ul_ellipsis");
		for (var i = 0; i < ellipsis.length; i++){
			for(var j = 0; j < ellipsis[i].children.length; j++){
				var info = null;
				var title = null;
				for (var k = 0; k < ellipsis[i].children[j].children.length; k++){
					switch( ellipsis[i].children[j].children[k].className ){
						case 'txt_info':
							info = ellipsis[i].children[j].children[k];
							break;
						case 'lnk_title':
							title = ellipsis[i].children[j].children[k];
							break;
					}
					if (info != null && title != null){
						title.style.width = ellipsis[i].offsetWidth - info.offsetWidth - 15 + 'px';
						break;
					} 
				}
			}
		}	
	}
}


//通用标签切换脚本，更新日期：06-12-20，开始
function FrameGroup(groupName,groupList){
	this.groupName = groupName;
	this.groupList = groupList;
}

var FrameSet = {
	framePrefix: 'fra_',
	frameHeadPrefix: 'fra_head_',
	classBefore: 'classBefore',
	classAfter: 'classAfter',
	classCurrent: 'classCurrent',
	timeFlag: null,
	currentFrameHead: null,
	currentFrame: null,
	frames: new Array(),
	eventType: 'mouse',
	linkageEvent: function(){},
	initFlag: false,
	
	show: function(event){
		FrameSet.currentFrameHead = typeof(event) == 'string' ? event : Event.element(event).id == "" ? Event.element(event).parentNode.id : Event.element(event).id;
		FrameSet.timeFlag = setTimeout('FrameSet.showFrame()',200);
	},
	
	show2: function(event){
		FrameSet.currentFrameHead = typeof(event) == 'string' ? event : Event.element(event).id == "" ? Event.element(event).parentNode.id : Event.element(event).id;
		FrameSet.showFrame();
	},
	
	_show: function(frameHead){
		FrameSet.currentFrameHead = frameHead;
		FrameSet.showFrame();
	},
	
	showFrame: function(){
		var frameHead = FrameSet.currentFrameHead;
		var groupName = frameHead.substring(FrameSet.frameHeadPrefix.length,frameHead.lastIndexOf("_"));
		var serial = frameHead.substring(frameHead.lastIndexOf("_")+1,frameHead.length); 

		var frameGroup = FrameSet.getFrameGroup(groupName);

		var frameHeadStyle = FrameSet.classBefore;
		
		for (var i = 0; i < frameGroup.groupList.length; i++)
		{
			frame = $(FrameSet.framePrefix + groupName + '_' + frameGroup.groupList[i]);
			frameHead = $(FrameSet.frameHeadPrefix + groupName + '_' + frameGroup.groupList[i]);
			
			if (frameGroup.groupList[i] == serial)
			{
				frame.style.display = 'inline';
				frameHead.className = FrameSet.classCurrent;
				frameHeadStyle = FrameSet.classAfter;
				FrameSet.currentFrame = frame;
			}
			else
			{
				frame.style.display = 'none';
				frameHead.className = frameHeadStyle;
			}
		}
		FrameSet.linkageEvent(serial);
	},
	
	timeClear: function(){
		window.clearTimeout(FrameSet.timeFlag);
	},
	
	getFrameGroup: function(groupName){
		var frameGroup = new Object();
		
		for (var i = 0; i < FrameSet.frames.length; i++)
		{
			frameGroup = FrameSet.frames[i];
			if (frameGroup.groupName == groupName) return frameGroup;
		}
	},
	
	init: function(){
		if (FrameSet.initFlag == false)
		{
			var frameIds = new Array();
			var frameSerial,frameName,frameHead;
			var frameHeads = document.getElementsByClassName("frame");
			for (var i = 0; i < frameHeads.length; i++)
			{
				var groupList = new Array();
				for(var j=0; j<frameHeads[i].childNodes.length; j++)
				{
					if (frameHeads[i].childNodes[j].nodeType == 1)
					{
						frameIds = frameHeads[i].childNodes[j].id.split("_");
						framePrefix = frameIds.shift();
						if (framePrefix + "_" == FrameSet.framePrefix)
						{
							frameSerial = frameIds.pop();
							frameName = frameIds.length>1 ? frameIds.join("_") : frameIds;
							frameHead = $(FrameSet.frameHeadPrefix + frameName + '_' + frameSerial);
							switch (FrameSet.eventType)
							{
								case 'click':
									Event.observe(frameHead,'click',FrameSet.show2,false);
									break;
								default:
									Event.observe(frameHead,'mouseover',FrameSet.show,false);
									Event.observe(frameHead,'mouseout',FrameSet.timeClear,false);
							}
							groupList.push(frameSerial);
						}
					}
				}
				var frameGroup = new FrameGroup(frameName,groupList);
				FrameSet.frames.push(frameGroup);
				var firstFrameHead = FrameSet.frameHeadPrefix + frameName + '_' + groupList.first();
				FrameSet._show(firstFrameHead);
			}
			FrameSet.initFlag = true;
		}
	}
	
}

//通用标签切换脚本，更新日期：06-12-20，结束

//下拉菜单脚本，更新日期：08-07-25，开始
function getPosition(obj) {
	var objLeft = obj.offsetLeft;
	var objTop = obj.offsetTop;
	while (obj = obj.offsetParent) {
		objLeft += obj.offsetLeft;
		objTop += obj.offsetTop;
	}
	return([objLeft,objTop]);
}

var pdMenu = {
	_children : new Array(),
	_current: '',
	_hide : true,
	_iTimerID : 0,
	
	init : function(id){
		pdMenu._traversal(id);
	},
	
	_traversal : function(id){
		var parent = $get(id);
		var children = parent.getElementsByTagName('LI');
		for (var i = 0; i < children.length; i++){
			var grandid = children[i].id + '_s'
			if ($get(grandid)){
				children[i].className = 'folder';
				children[i].onmouseover = pdMenu.show;
				children[i].onmouseout = pdMenu.hide;
				$get(grandid).onmouseover = pdMenu.hold;
				$get(grandid).onmouseout = pdMenu.hide;
				pdMenu._traversal(grandid);
			}else{
				children[i].onmouseover = pdMenu.hidechildren;
			}
		}
	},
	
	show : function(event){
		var e = event || window.event;
		var srcElement = e.srcElement || e.target; 
		var parent_id = srcElement.id == "" ? (srcElement.parentNode.id == "" ? srcElement.parentNode.parentNode.id : srcElement.parentNode.id) : srcElement.id;
		var parent = $get(parent_id);
		var child = $get(parent_id + '_s');
				
		pdMenu.hold();

		if ( child.id == pdMenu._children[pdMenu._children.length - 1]) return; 
				
		pdMenu._current = child.id;
		
		if (pdMenu._children.length > 0){
			var last = pdMenu._children[pdMenu._children.length - 1];
			var last_prefix = last.substr(0,last.length - 1);
			if ( child.id.substr(0,last_prefix.length) != last_prefix ){
				pdMenu._hide();
			}
		}
				
		if (pdMenu._iTimerID == 0){
			var xy = getPosition(parent.childNodes[0]);
			var pd = child;
			var pw = pd.offsetWidth;
			
			var dw = document.documentElement.scrollWidth;
			var bw = document.body.scrollWidth;
			var h = parent.childNodes[0].offsetHeight;
			var w = parent.childNodes[0].offsetWidth;
			if (parent_id.split('_').length == 2){
				if (parent.className != 'choose') h++;
				if (pw < w){
					setStyle(pd,{width:(w - 22) + 'px'});
				}
				setStyle(pd,{left:(xy[0] + Math.ceil((dw-bw)/2) - 1 + 'px'),top:(xy[1] + h - 2 + 'px'),zIndex:1999,visibility:'visible'});
			}else{
				setStyle(pd,{left:(xy[0] + Math.ceil((dw-bw)/2) + parent.offsetWidth + 5 + 'px'),top:(xy[1] - 2 + 'px'),zIndex:1999,visibility:'visible'});
			}
			parent.childNodes[0].className = 'hover';
			pdMenu._children.push(child.id);
		}
	},
	
	hide : function(){
		if (pdMenu._iTimerID == 0) pdMenu._iTimerID = setTimeout(pdMenu._hide,200);
	},
	
	hidechildren : function(event){
		var e = event || window.event;
		var srcElement = e.srcElement || e.target; 
		var parent_id = srcElement.id == "" ? (srcElement.parentNode.id == "" ? srcElement.parentNode.parentNode.id : srcElement.parentNode.id) : srcElement.id;
		if (pdMenu._children.length > 0 && parent_id.length < pdMenu._children[pdMenu._children.length - 1].length) {
			var tmp = pdMenu._children.pop();
			setStyle($get(tmp),{visibility:'hidden'});
			$get(tmp.substr(0,tmp.length - 2)).childNodes[0].className = '';
		}
	},

	_hide : function(){
		if ( pdMenu._children.length > 0 ){
			var tmp = pdMenu._children.pop();
			setStyle($get(tmp),{visibility:'hidden'});
			$get(tmp.substr(0,tmp.length - 2)).childNodes[0].className = '';
			if ( pdMenu._iTimerID > 0 ){
				while(pdMenu._children.length > 0){
					tmp = pdMenu._children.pop();
					setStyle($get(tmp),{visibility:'hidden'});
					$get(tmp.substr(0,tmp.length - 2)).childNodes[0].className = '';
				}
			}else{
				var level = pdMenu._current.split('_').length;
				for ( var i = pdMenu._children.length - 1; i >= 0; i--){
					if ( pdMenu._children[i].split('_').length >= level){
						tmp = pdMenu._children[i];
						setStyle($get(tmp),{visibility:'hidden'});
						$get(tmp.substr(0,tmp.length - 2)).childNodes[0].className = '';
					}
				}
			}
		}
	},
		
	hold : function(){
		if ( pdMenu._iTimerID > 0 ){
			clearTimeout(pdMenu._iTimerID);	
			pdMenu._iTimerID = 0;
		}
	}
}
//下拉菜单脚本，更新日期：08-07-25，结束

//通用折叠菜单脚本，更新日期：07-06-12，开始
var FoldNav = {
	className: 'fold_nav',
	currentNav: 'cur_nav',
	currentDt: 'cur_dt',
	foldNavs: new Array(),
	
	init: function(){
		foldNavs = document.getElementsByClassName(FoldNav.className);
		for (var i = 0; i < foldNavs.length; i++){
			var dts = foldNavs[i].getElementsByTagName('dt');
			for (var j = 0; j < dts.length; j++) Event.observe(dts[j],'click',FoldNav.showDD,false);
		}
	},
	
	showDD: function(event){
		var e = event || window.event;
		var srcElement = e.srcElement || e.target; 
		var eventObj = srcElement;
		var dt;
		var dl;
		var display;
		 dt = eventObj.tagName == 'DT' ? eventObj : eventObj.parentNode;
		dl = dt.parentNode;
		if (dt.className == ''){
			dt.className = FoldNav.currentDt;
			display = 'block';
		}else{
			dt.className = '';
			display = 'none';
		}
		var dds = dl.getElementsByTagName('dd');
		for (var i = 0; i < dds.length; i++) dds[i].style.display = display;
	}
}
//通用折叠菜单脚本，更新日期：07-06-12，结束

//批量添加样式脚本，更新日期：08-02-13，开始
function setStyle(obj,css){
	if( arguments.length == 1 ){
		var css = obj;
		var obj = this;
	}
	for(var c in css){
		obj.style[c] = css[c];
	}
}
//批量添加样式脚本，更新日期：08-02-13，结束



//导航/搜索
function setChoose(pre,id){
	if (!id){ id = 0}
	$get(pre + id).className = 'choose';
	if ($get('s_' + pre + id)) $get('s_' + pre + id).className = 'pd_menu2';
}

//使FF支持click事件
if (typeof HTMLElement != 'undefined'){
	HTMLElement.prototype.click = function()
	{
		var evt = this.ownerDocument.createEvent('MouseEvents');
		evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
		this.dispatchEvent(evt);
	}
}

//
function $get(id){
	return document.getElementById(id);	
}

/*---------------WCMS：通用元素居中脚本，更新日期：08-06-13，开始---------------*/
//调用形式有AdjustPos(id)和AdjustPos(id,xRectify,yRectify)两种
function AdjustPos(){
	var id = arguments[0];
	var xRectify = 0;	//横向校正
	var yRectify = 0;	//纵向校正
	if (arguments.length > 1){
		var xRectify = arguments[1]	;
		var yRectify = arguments[2];
	}
	var bodyElement = (document.documentElement.clientWidth != 0) ? document.documentElement : document.body;
	var posElement = $(id);
	var offsetLeft = (bodyElement.clientWidth - posElement.offsetWidth - xRectify)/2;
	var offsetTop = (bodyElement.clientHeight - posElement.offsetHeight - yRectify)/2 + bodyElement.scrollTop;
	if (offsetTop < 0){
		offsetTop = 0;
	}
	with(posElement.style){
		display  = "block" ;
		top = offsetTop + "px";
		left = offsetLeft + "px";
	}
}
/*---------------WCMS：通用元素居中脚本，更新日期：08-06-13，结束---------------*/

/*---------------页内显示页面脚本，更新日期：08-08-05，开始---------------*/
function showInnerPage(src,w,h,title){
	if (!$('inner_page')){
		ip_container = document.createElement("div");
		ip_container.id = "inner_page";
		document.body.insertAdjacentElement("beforeend",ip_container);
	}else{
		ip_container = $('inner_page');
	}
	setStyle(ip_container,{display:"",width:(w + 'px'),height:(h + 21 + 'px')})
	AdjustPos('inner_page');
	//ip_container.innerHTML = "<div id='inner_title'><div id='inner_close'><a href='javascript:hideInnerPage()'>&times;关闭</a></div>艾瑞</div><iframe id='inner_view' width='" + w + "' height='" + h + "' scrolling='no' src='" + src + "' frameborder='0'  style='border:0px' allowtransparency='true'></iframe>";
	ip_container.innerHTML = "<div id='inner_title'><div id='inner_close'><a href='javascript:hideInnerPage()'>&times;关闭</a></div>" + title + "</div><img src='" + src + "' />";
}

function hideInnerPage(){
	ip_container = $('inner_page');
	setStyle(ip_container,{display:"none"});
	ip_container.innerHTML = "";
}
/*---------------页内显示页面脚本，更新日期：08-08-05，结束---------------*/

function plateShow(src,title){
	var img = new Image();
	img.src = src;
	showInnerPage(src,img.width,img.height,title);
}

/*
//文章插图
var PlateShow = {
	init: function(){
		plates = document.getElementsByClassName('img_plate');
		for (var i = 0; i < plates.length; i++){
			plates[i].parentElement.innerHTML = '<div class="swf_plate">' + swfoto(plates[i].offsetWidth,plates[i].offsetHeight,plates[i].src,'xyz') + '</div>';
		}
	}
}
*/

function swfoto(width,height,src,url){
	return '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + width + '" height="' + height + '"><param name="movie" value="common/swf/swfoto2.swf?image=' + src + '&link=' + url + '&isShowLoader=true&windowOpen=_self"><embed src="common/swf/swfoto2.swf?image=' + src + '&link=' + url + '&isShowLoader=true&windowOpen=_self" width="' + width + '" height="' + height + '"  pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></object>';
}

//导航菜单
var current_child = null;
var current_parent = null;
var parent_sign = false;	//一级菜单的mouseover状态标记
var child_sign = false;	//二级菜单的mouseover状态标记
function show_child(id)
{
	//一级导航
	parent_sign = true;
	var parent = document.getElementById("first_nav_" + id);
	parent.className = "choose";
	if (current_parent){
		if (current_parent!=parent) current_parent.className = ""
	}else{
		current_parent = document.getElementById("first_nav_1");
		current_child = document.getElementById("second_nav_1");
		if (current_parent != parent) current_parent.className = ""
	}
	current_parent = parent;
	//二级导航
	child_sign = false;
	var child = document.getElementById("second_nav_"+id);
	if (child) child.className = "";
	if (current_child && current_child != child) current_child.className = "hide";	
	current_child = child;
}

var iTimeoutID = null;
function menu_back()
{
	if ( !parent_sign && !child_sign && current_parent!= source_parent)
	{
		show_child(source_parent);
	}
	window.clearTimeout(iTimeoutID);
}

function set_parent_sign()
{
	parent_sign = true;
}

function set_child_sign()
{
	child_sign = true;
}

function clear_parent_sign()
{
	parent_sign = false;
	iTimeoutID = window.setTimeout(menu_back,500);
}

function clear_child_sign()
{
	child_sign = false;
	iTimeoutID = window.setTimeout(menu_back,500);
}


//下拉列表
function LoginSelectClickOther(){
	$("loginFldselectop").style.display = "none";
}
function SearchSelectClickOther(){
	$("SearchFldselectop").style.display = "none";
}
function clickLoginSelect(){
	if($("loginFldselectop").style.display == "block"){
		LoginSelectClose();
	}else{
		$("loginFldselectop").style.display = "block";
		document.body.setAttribute("onmousedown",LoginSelectClose);
	}
};
function clickSearchSelect(){
	if($("SearchFldselectop").style.display == "block"){
		SearchSelectClose();
	}else{
		$("SearchFldselectop").style.display = "block";
		addEvent(document.body,"mousedown",SearchSelectClickOther);
	}
};
function LoginSelectClose(){
	setTimeout(LoginSelectClickOther,500)
	document.body.setAttribute("onmousedown",null);
};
function SearchSelectClose(){
	$("SearchFldselectop").style.display = "none";
	delEvent(document.body,"mousedown",SearchSelectClickOther);
};

function MenuClose(id){
	if($(id))
	{
	     $(id).className="choose";
	}
};

function LoginSelect(title){
	var titleName;
	switch(title){
		case "artcle":
			$("SearchType").value = "1";
			titleName = "资讯新闻";
			break;
		case "blog":
			$("SearchType").value = "2";
			titleName = "专栏文章";
			break;
		case "view":
			$("SearchType").value = "3";
			titleName = "艾瑞视点";
			break;
		case "report":
			$("SearchType").value = "4";
			titleName = "艾瑞报告";
			break;
	};

	$("loginFldselectdis").innerHTML = titleName;
	LoginSelectClose();
};

function openLoginType(){
	if(document.showLogin.username.value != "" && document.showLogin.username.value.indexOf("@") == -1 && $("loginFldselectdis").innerHTML == "选择去向"){
		$("loginFldselectop").style.display = "block";
		addEvent(document.body,"mousedown",LoginSelectClickOther);
	}
}

function addEvent( node, type, listener ) { 
    // Check compatibility using the earlier method 
    // to ensure graceful degradation 
    //if(!isCompatible()) { return false } 
    if(!(node = $(node))) return false; 
    
    if (node.addEventListener) { 
        // W3C method 
        node.addEventListener( type, listener, false ); 
        return true; 
    } else if(node.attachEvent) { 
        // MSIE method 
        node['e'+type+listener] = listener; 
        node[type+listener] = function(){node['e'+type+listener]( window.event );} 
        node.attachEvent( 'on'+type, node[type+listener] ); 
        return true; 
    } 
    
    // Didn't have either so return false 
    return false; 
}; 

function delEvent( node, type, listener ) { 
    // Check compatibility using the earlier method 
    // to ensure graceful degradation 
    //if(!isCompatible()) { return false } 
    if(!(node = $(node))) return false; 
    
    if (node.addEventListener) { 
        // W3C method 
        node.addEventListener( type, listener, false ); 
        return true; 
    } else if(node.attachEvent) { 
        // MSIE method 
        node['e'+type+listener] = listener; 
        node[type+listener] = function(){node['e'+type+listener]( window.event );} 
        node.attachEvent( 'on'+type, node[type+listener] ); 
        return true; 
    } 
    
    // Didn't have either so return false 
    return false; 
}; 

function CMail(mail)
{
    var re = /^([\.\w-]){1,}@([\w-]){1,}(\.([\w]){2,4}){1,2}$/;
	if (!re.test(mail)){
		return false;
	}
	return true;
}


