// 通用函数库
// 作者：biny
// 时间：2009-9-27
// 本函数库集成一些通用的函数功能

// 浏览器版本判断函数--本函数已经通过全部浏览器的测试，完全正确
// 判断某种浏览器只需用if(Sys.ie)或 if(Sys.firefox)等形式，
// 而判断浏览器版本只需用if(Sys.ie =='8.0')或if(Sys.firefox == '3.0')等形式即可 
var Sys = {}; 
var ua = navigator.userAgent.toLowerCase(); 
var s; 
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : 
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : 
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] : 
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : 
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0; 

//以下进行测试 
//if (Sys.ie) document.write('IE: ' + Sys.ie); 
//if (Sys.firefox) document.write('Firefox: ' + Sys.firefox); 
//if (Sys.chrome) document.write('Chrome: ' + Sys.chrome); 
//if (Sys.opera) document.write('Opera: ' + Sys.opera); 
//if (Sys.safari) document.write('Safari: ' + Sys.safari); 


/*通用加载函数，页面中如果要用到onload函数在窗体一加载时就执行的代码，可以直接添加到这个函数，否则会引起多个onload函数的执行冲突*/
function addLoadEvent(func){
	var oldonload=window.onload;
	if(typeof window.onload!='function'){
		window.onload=func;	
	}
	else{
		window.onload=function(){
			oldonload();
			func();
		}	
	}
}
/*有多少个需要在窗体加载时载入的函数，直接添加就可以了*/
addLoadEvent(clearAdot);
addLoadEvent(autoIfrma);
//addLoadEvent(showhighlight);

/*通用函数---高亮菜单*/
function showhighlight(m) {
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("nav")) return false;
  var nav = document.getElementById("nav");
  var linkli=nav.getElementsByTagName("li");
  for (var i=0; i<linkli.length; i++) {

   linkli[i].setAttribute("id","");/*清空ID的值*/
    if (i == m) {
    	if(m==5||m==6||m==7||m==8){
    		linkli[4].setAttribute("id","cur");/*添加一个id="cur"*/
    	}
    	else{
    		linkli[i].setAttribute("id","cur");/*添加一个id="cur"*/
    	}
    }
  }
}
//ifame自适应内容高度的调用函数
function autoIfrma(){
	reinitIframe();
	window.setInterval("reinitIframe()", 200);
}
//ifame自适应内容高度的函数
function reinitIframe(){
	var iframe = document.getElementById("ifrcontent");
	try{
		var bHeight = iframe.contentWindow.document.body.scrollHeight;
		var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
		var height = Math.max(bHeight, dHeight);
		iframe.height =  height;
	}catch (ex){}
}
//清除ie系列浏览器中所有页面中的链接的虚线框函数
function clearAdot(){
	var objAs = document.getElementsByTagName("A");
	var objA;
	for(var i=0;objA = objAs[i];i++){
	  objA.onfocus=function(){this.blur()};
	}
}
//ff浏览器中连续字符串无法断行的解决函数
//使用方法：在要断行的容器中加入class="word-break-all"，
//页头加样式：.word-break-all{word-wrap:break-word;}直接解决IE下的问题，当然一般都要定义一个宽度值
//调用方法：fnBreakWordAll({word:15,re:'[\\w]'});这其中的15是指每隔15个字符就插入一个隐藏空格
function fnBreakWordAll(o){
	var o = o || {},
	iWord = o.word || 13,
	sRe = o.re || '[a-zA-Z0-9]',
	bAll = o.all || false,
	sClassName = o.className || 'word-break-all',
	aEls = o.els || (function(){
		var aEls = [],aAllEls = document.getElementsByTagName('*'),re = new RegExp('(?:^|\\s+)' + sClassName + '(?:\\s+|$)');
		for(var i =0,iLen = aAllEls.length; i < iLen ; ++i){if(re.test(aAllEls[i].className)){aEls[aEls.length] = aAllEls[i]; }}
		return aEls;
	})() || [],
	fnBreakWord = function(oEl){ 
		if(!oEl || oEl.nodeType !== 1){return false;} 
		else if(oEl.currentStyle && typeof oEl.currentStyle.wordWrap === 'string'){
			breakWord = function(oEl){oEl.runtimeStyle.wordWrap = 'break-word';return true;}
			return breakWord(oEl);
		}
		else if(document.createTreeWalker){
			var trim = function  (str) {
				str = str.replace(/^\s\s*/, '');
				var ws = /\s/,i = str.length;
				while (ws.test(str.charAt(--i)));
				return str.slice(0, i + 1);
			}
			breakWord = function(oEl){
				var dWalker = document.createTreeWalker(oEl, NodeFilter.SHOW_TEXT, null, false);
				var node,s,c = String.fromCharCode('8203'),re = new RegExp('('+ sRe +'{0,' + iWord + '})');
				while (dWalker.nextNode()){
					node = dWalker.currentNode;
					s = trim(node.nodeValue).split(re).join(c);
					node.nodeValue = s;
				}
				return true;
			}
			return breakWord(oEl);
	    }
	};
	for(var i=0,n=aEls.length; i<n; ++i){
		var sUa = navigator.userAgent,sTn = aEls[i].tagName.toLowerCase() ;
		if((/Opera/).test(sUa) || (/Firefox/).test(sUa) || ((/KHTML/).test(sUa) && (sTn === 'td' || sTn === 'th')) || bAll){fnBreakWord(aEls[i]);}
	}
}

//判断是否有className的函数，调用例子为：o.className=o.addClass(o,"normal");
function hasClass(element, className) {     
	var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');     
	return element.className.match(reg); 
} 
//动态添加className的函数，调用例子为：o.className=o.addClass(o,"normal"); 
function addClass(element, className) {     
	if (!this.hasClass(element, className)){         
		element.className += " "+className;     
	} 
}  
//动态删除className的函数，调用例子为：o.className=o.removeClass(o,""); 
function removeClass(element, className) {     
	if (hasClass(element, className)){         
		var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');         
		element.className = element.className.replace(reg,' ');     
	} 
} 

// 说明：准确获取指定元素 CSS 属性值
// 此函数的两个参数，elem为要获取的对象，name为样式属性，如“backgroundColor”
function getStyle( elem, name )
{
	//如果该属性存在于style[]中，则它最近被设置过(且就是当前的)
	if (elem.style[name])
	{
		return elem.style[name];
	}
	//否则，尝试IE的方式
	else if (elem.currentStyle)
	{
		return elem.currentStyle[name];
	}
	//或者W3C的方法，如果存在的话
	else if (document.defaultView && document.defaultView.getComputedStyle)
	{
		name = name.replace(/([A-Z])/g,"-$1");
		name = name.toLowerCase();
		//获取style对象并取得属性的值(如果存在的话)
		var s = document.defaultView.getComputedStyle(elem,"");
		return s && s.getPropertyValue(name);
	    //否则，就是在使用其它的浏览器
	}
	else
	{
		return null;
	}
}
//显示隐藏条的控制代码
var state=true;	/*开关状态，ture为打开，false为隐藏*/
function showBar(){
	var side=document.getElementById("side");
	var hidebar=document.getElementById("hidebar");
	var main=document.getElementById("main");
	var menutop=document.getElementById("m_top");
	if(state){
		side.style.display="none";
		menutop.style.display="none";
		hidebar.style.left="0px";
		main.style.left="0px";
		if (Sys.ie){
			if(Sys.ie =='8.0'){
				main.style.marginLeft="10px";
			}
			else{
				main.style.marginLeft="0px";
			}
		}
		else{
			main.style.marginLeft="10px";
		}
		state=false;
	}
	else{
		side.style.display="";	
		menutop.style.display="block";
		//hidebar在ie8下210px,ie7以下为0px
		//main在ie8要220px才行，ie7以下为210px
		if (Sys.ie){
			if(Sys.ie =='8.0'){
				//for IE8 only
				hidebar.style.left="204px";	
				main.style.marginLeft="214px";	
			}
			else{
				//for IE7 以下
				hidebar.style.left="0px";
				main.style.marginLeft="204px";	
				main.style.left="0px";	
			}
		}
		else{
			//其它标准浏览器中
			hidebar.style.left="204px";	
			main.style.marginLeft="214px";	
		}
		state=true;
	}
}
//隔行换色函数
//objId父容器的ID名，tagname要换色的行对象，可以是li、tr或dd任何值。
//cssStyle1,cssStyle2是隔行的两个样式名，hoverCss是鼠标移入的样式名，
//state是一个布尔值，是否开启鼠标移入功能，true为开启，false为关闭。
function hoverRow(objId,tagname,cssStyle1,cssStyle2,hoverCss,state) {
	var Ptr=document.getElementById(objId).getElementsByTagName(tagname);
    for (i=0;i<Ptr.length;i++) { 
    	Ptr[i].className = (i%2>0)?cssStyle1:cssStyle2; 
		Ptr[i].onmouseover=function(){
			this.tmpClass=this.className;
			if(state){//是否开启鼠标移入功能。
				this.className = hoverCss; 
			}
		};
		Ptr[i].onmouseout=function(){
			this.className=this.tmpClass;
		};
    }
}
//显示某个对象
function show(obj) {
	obj.style.display="block";
}
//隐藏某个对象
function hide(obj) {
	obj.style.display="none";
}
//根据一个ID返回这个对象，同Jquery中$()函数相同,为了避免冲突，取两个符号。
function $$(id) 
{ 
   return document.getElementById(id); 
} 

