/*******************************************
描述：本文件是通用函数集
创建者：叶文彪
创建时间：2002年08月31日
最新修订：2002年09月03日
版本：0.1
 ********************************************/
var navAppName = navigator.appName;
var navVer = navigator.appVersion;
var isIE = ( navAppName == "Microsoft Internet Explorer" );
var screenWidth = screen.width;
var screenHeight = screen.height;
var windowWidth = 0;
var windowHeight = 0;
var pageOffsetX = 0;
var pageOffsetY = 0;

//本方法须紧密配合Lanting系统开发，否则运行可能出错
function refreshSysInfo() {
	if (!isIE) {
		windowWidth = window.innerWidth;
		windowHeight = window.innerHeight;
		pageOffsetX = window.pageXOffset;
		pageOffsetY = window.pageYOffset;
	}else {
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
		pageOffsetX = document.body.scrollLeft;
		pageOffsetY = document.body.scrollTop;
	}
}

/**重新设置obj指定的IFrame的大小**/
function resizeIFrame( obj, width, height ) {
	if (typeof obj == "undefined"){
		return true;
	}
	if (obj == null) {
		return false;
	}
	obj.width = width;
	obj.height = height;
}

/**重新设置objName指定的IFrame的大小**/
function resizeIFrameByName( objName, width, height ) {
	var obj = document.all( objName );
	resizeIFrame( obj, width, height );
}

//获得Radio型的选中值；如果有选中项；返回选中项的值；如果没有任何选中项，则返回空字符串
//叶文彪 2002年08月31日；2002年09月03日
function getRadioValue(radioGroup) {
	//20020903修改：对于只有一个选项的radio来说，则不是数组型对象；而仅仅是个radio而已
	if (radioGroup.type == "radio" ) {
		return (radioGroup.checked)?radioGroup.value:"";
	}
    for ( var i=0; i<radioGroup.length; i++) {
		//alert("id="+i+" & "+radioGroup[i].value);
        if (radioGroup[i].checked)
            return radioGroup[i].value;
    }
    return ""
}


//将webItems中的所有CHECKBOX型选项均赋予选中状态
//叶文彪 2002年08月31日
function setSelect(webItems, isChecked) {
    for(i=0;i<webItems.length;i++){
        if (webItems[i].type.toLowerCase() == "checkbox"){
            webItems[i].checked = isChecked;
        }
    }
}

//将DOCUMENT中的所有CHECKBOX型选项均赋予选中状态
//叶文彪 2002年08月31日
function selectAll(){
    var webItems=document.all.tags("input");
    setSelect(webItems, true);
}

//将DOCUMENT中的所有CHECKBOX型选项均赋予选中状态
//叶文彪 2002年08月31日
function selectNone(){
    var webItems=document.all.tags("input");
    setSelect(webItems, false);
}

//打开模式对话框
function modalDialog( url ) {
	var xWidth = (screenWidth*3/4);
	var xHeight = (screenHeight*3/4);
	return window.showModalDialog(url,0,"dialogWidth:"+xWidth+"px;dialogHeight:"+xHeight+"px;resizable=yes;");
}

function openWindow( url ) {
	var wHeight = 430;
	var wWidth = 600;
	var wTop = (screen.height - wHeight) / 2;
	var wLeft = (screen.width - wWidth ) / 2;
	window.open (url, 0, 'height='+wHeight+', width=' + wWidth + ', top=' + wTop + ', left=' + wLeft + ', toolbar=yes, menubar=no, scrollbars=yes, resizable=yes,location=no, status=no');
}

//打开企业信息对话框
function openCompanyInfo( companyID ) {
	if (companyID == 0 ) {
		return;
	}
	var pageUrl = "../ltcompany/maininfo.jsp?id="+companyID;
	openWindow( pageUrl );
}

function  jtrim(s)
{
	var i,b=0,
	e=s.length;
	for(i=0;i<s.length;i++) {
		if(s.charAt(i)!=' '){b=i;break;}
	}
	if(i==s.length)  return  "";

	for(i=s.length-1;i>b;i--)  {
		if(s.charAt(i)!=' ') {e=i;break;}
	}
	return  s.substring(b,e+1);
}


/**
logicalValue:用于判断对象的值是否符合条件，如果不符合条件，将输入焦点跳到该输入控件中，并给出提示。现已提供的选择有：
integer：整型，还可判断正整型和负整型
number ：数值型，同样可判断正负
date ：日期型，可支持以自定义分隔符的日期格式，缺省是以'-'为分隔符
string ：判断一个字符串包括或不包括某些字符
返回值：
true或false
**/
function logicalInput(object,objType, fieldCaption) {
	var typeCaption = "";
	var typeTip = "";
	objType = objType.toLowerCase();
	if ( objType == "integer" || objType == "int" ){
		typeCaption = "整数";
		typeTip = "123";
	} else if ( objType == "string" ) {
		typeCaption = "字符串";
		typeTip = "江山如此多娇(不包含!#~$^&*% ()\'\<>\"等怪字符)";
	} else if ( objType == "number") {
		typeCaption = "数字";
		typeTip = "123";
	} else if ( objType == "date" )	{
		typeCaption = "日期";
		typeTip = "2002-02-03";
	} else if ( objType == "datetime" )	{
		typeCaption = "日期时间";
		typeTip = "2002-02-03 09:30:00";
	}

	if ( logicalObjectValue(object, objType) ){
		return true;
	} else {
		if(object.style.visibility)
			object.focus();
		var inputValue = jtrim(object.value);
		if ( inputValue == "") {
			inputValue = "当前没有输入相关信息";
		} else {
			inputValue = "您当前输入的是：["+inputValue+"]";
		}
		if (fieldCaption != ""){
			fieldCaption = "在["+fieldCaption+"]中";
		}
		alert("请"+fieldCaption+"输入["+typeCaption+"]型数据\n\n"+inputValue+" \n\n正确输入示例：["+typeTip+"]");
		return false;
	}
}

function logicalStringInput(object,fieldCaption,isAcceptSpecialStr,isAcceptZhCN) {
	if(!logicalStringValue(jtrim(object.value),fieldCaption,"!#~$^&*% ()\'\<>\"",isAcceptSpecialStr,isAcceptZhCN)) {
		object.focus();
		return false;
	}else {
		return true;
	}
}

function logicalStringValue(value,fieldCaption,specialStr,isAcceptSpecialStr,isAcceptZhCN) {
	var typeCaption = "";
	var typeTip = "";
	typeCaption = "字符串";
	typeTip = "江山如此多娇";
	if (fieldCaption != "") {
		fieldCaption = "在["+fieldCaption+"]中";
	}

	var inputValue = value;
	if ( inputValue == "") {
		inputValue = "当前没有输入相关信息";
		alert("请"+fieldCaption+"输入["+typeCaption+"]型数据\n\n"+inputValue+" \n\n正确输入示例：["+typeTip+"]");
		return false;
	}

	if(isAcceptSpecialStr==false) {
		if(isSpecialString(inputValue,specialStr)) {
			alert("请不要"+fieldCaption+"输入非法字符\n\n正确输入示例：["+typeTip+"]\n\n"+"非法字符："+specialStr);
			return false;
		}
	}
	
	if(isAcceptZhCN == false) {
		if(isZhCN(inputValue)) {
			alert("抱歉！"+fieldCaption+"不能输入中文\n\n"); 
			return false;
		}
	}
	return true;
} 

function isSpecialString(string,specialString) {
    if ((string==null) || (specialString==null) ) {
        alert('function specialString(string,specialString) error');
        return true;
    }
    for (var i=0;i<string.length;i++) {
        if (specialString.indexOf(string.charAt(i)) !=-1)
            return true;
    }
    return false;
}

function isZhCN(string) {
	if(string.length==0) {
		return false;
	}else {
		for(i=0;i<string.length;i++) {
			if(string.charCodeAt(i)>128) {
				return true;
			}
		}
		return false;
	}
}

/**
检查对象的字符串的值，是否符合目标类型
**/
function logicalValue(object,objType) {
	return logicalInput(object, objType, '');
}


/**
logicalValue:用于判断对象的值是否符合条件，现已提供的选择有：
integer：整型，还可判断正整型和负整型
number ：数值型，同样可判断正负
date ：日期型，可支持以自定义分隔符的日期格式，缺省是以'-'为分隔符
string ：判断一个字符串包括或不包括某些字符
返回值：
true或false

参数：
ObjStr ：对象标识符——对象名；
ObjType：对象类型('integer','number','date','string'之一)

其他说明：
当对象值为空时，则返回错误。

Author:PPDJ

例子：
example 1:要求检验输入框text1的输入数据是否是“整型”数据，若不是，则提示
if (!logicalValue('text1','integer')) alert('Error: Your must input a integer number');
example 2:要求检验输入框text1的输入数据是否是“正整型”数据，若不是，则提示
if (!logicalValue('text1','integer','+')) alert('Error: Your must input a positive integer number');
example 3:要求检验输入框text1的输入数据是否是“负整型”数据，若不是，则提示
if (!logicalValue('text1','integer','-')) alert('Error: Your must input a negative integer number');
exmaple 4:要求检验输入框text1的输入数据是否是数值，若不是，则提示
if (!logicalValue('text1','number')) alert('Error: Your must input a number');
exmaple 5:要求检验输入框text1的输入数据是否是“正”数值，若不是，则提示
if (!logicalValue('text1','number','+')) alert('Error: Your must input a number');
exmaple 6:要求检验输入框text1的输入数据是否是“负”数值，若不是，则提示
if (!logicalValue('text1','number','-')) alert('Error: Your must input a number');
example 7:要求检验输入框text1的输入数据是否是日期型，若不是，则提示
if (!logicalValue('text1','date')) alert('Error: Your must input a logical date value');
若它的分隔符为A，“A”是一个变量，如常用的'-'和'/'，则用如下语法
if (!logicalValue('text1','date',A)) alert('Error: Your must input a logical date value');
或当分隔符为'/'时
if (!logicalValue('text1','date','/')) alert('Error: Your must input a logical date value');
当分隔符为'-'时，可不要参数'-'，可带上
example 8:要求检验输入框text1的输入表示颜色的字符串是否合理，若不合理，则提示
if (!logicalValue('text1','string','0123456789ABCDEFabcdef')) alert('Error: Your must input a logical color value');
example 9:要求检验输入框text1的输入表示密码的字符串是否不含“'"@#$%&^*”这些字符，若含有，则提示
if (!logicalValue('text1','string','\'"@#$%&^*',false)) alert('Error: Your password can not contain \'"@#$%&^*');
其中false表示不包含有某些字符，true表示必须是哪些字符，缺省值为true
*/
function logicalObjectValue(object,objType) {
  	if (typeof object == "undefined"){
  	 		return true;
   	}
   	var str = jtrim(object.value);
   	var temp = objType.toLowerCase();
   	if (temp=='integer' || temp=="int" ) {
   			return isInteger(str);
    } else if (temp=='number') {
        return isNumber(str);
    } else if (temp=='string') {
   			//Edited By ZhangYM 2005-01-13
    		return !isEmpty(str) && specialString(str,'!#~$^&*% ()\'\<>\"',false);
      	//return !isEmpty(str);
    } else if (temp=='date'  || objType == "datetime") {
        return isDate(str);     }
    else {
        alert('"'+temp+'"类型在现在版本中未提供');
    		return false;
    }
}

/**
判断value是否为空
**/
function isEmpty(value) {
	if ( value == ""){	
		return true;
	} else {
		return false;
	}
}

function isInteger(string ,sign) {
    var integer;

    if ((sign!=null) && (sign!='-') && (sign!='+')) {
        alert('IsInter(string,sign)Error：\nsign is null or "-" or "+"');
        return false;
    }

    integer = parseInt(string);

    if (isNaN(integer)) {
        return false;
    } else if (integer.toString().length==string.length) {
        if ((sign==null) || (sign=='-' && integer<0) || (sign=='+' && integer>0)) {
            return true;
        }
        else
            return false;
    } else
        return false;
}

function isDate(DateString , Dilimeter) {
    if (DateString==null) return false;
    if (Dilimeter=='' || Dilimeter==null)
        Dilimeter = '-';
    var tempy='';
    var tempm='';
    var tempd='';
    var tempArray;
    if (DateString.length<8 && DateString.length>30)
        return false;
    tempArray = DateString.split(Dilimeter);
    if (tempArray.length!=3)
        return false;
    if (tempArray[0].length==4) {
        tempy = tempArray[0];
        tempd = tempArray[2];
    } else {
        tempy = tempArray[2];
        tempd = tempArray[1];
    }
    tempm = tempArray[1];
	//下面的判断原来是：var tDateString = tempy + '/'+tempm + '/'+' 8:0:0';//加八小时是因为我们处于东八区
	//这样就不能对有分秒设定的时间作出正确判断。现在改成下面的样式，可对Timestamp型作出正确的判断
    var tDateString = tempy + '/'+tempm + '/'+tempd;//+' 8:0:0';//加八小时是因为我们处于东八区
	//alert(tDateString);
    var tempDate = new Date(tDateString);
	//alert(tempDate);

    if (isNaN(tempDate))
        return false;
	return true;
	/*
    if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd))) {
        return true;
    } else {
        return false;
    }
	*/
}

function isNumber(string,sign) {
    var number;
    if (string==null) return false;
    if ((sign!=null) && (sign!='-') && (sign!='+')) {
        alert('isNumber(string,sign) Error \nsign is null or "-" or "+"');
        return false;
    }
    number = new Number(string);
    if (isNaN(number)) {
        return false;
    } else if ((sign==null) || (sign=='-' && number<0) || (sign=='+' && number>0)) {
        return true;
    } else
        return false;
}

function specialString(string,compare,BelongOrNot) {
    if ((string==null) || (compare==null) || ((BelongOrNot!=null) && (BelongOrNot!=true) && (BelongOrNot!=false))) {
        alert('function specialString(string,compare,BelongOrNot) error');
        return false;
    }
    if (BelongOrNot==null || BelongOrNot==true) {
        for (var i=0;i<string.length;i++) {
            if (compare.indexOf(string.charAt(i))==-1)
                return false
            }
            return true;
    } else {
        for (var i=0;i<string.length;i++) {
            if (compare.indexOf(string.charAt(i))!=-1)
                return false
            }
            return true;
    }
}

function isCheck(obj,caption){
    var leng=obj.length;
    for(var i=0;i<leng;i++){
        if (obj[i].checked) return true;
    }
    alert(caption+" 为必选项，请选择！");
    return false;
}

/************************** 以下是Orchis系统的特殊函数 **********************/
/**
确认用户要删除记录
**/
function confirmDelete() {
	return confirm('真要删除吗？');
}

/**
检查翻页定义是否正确
**/
function checkPageNumber() {
	return logicalInput( page.currentPage, 'int', '页码' );
}

/***
兰亭专用的删除触发函数
**/
function removeRecord(object, url) {
	if (!confirmDelete())
		return false;
	object.location=url;
}

//重置缓冲
function resetPool() {
	var url = "../common/resetpool.jsp";
  return window.showModalDialog(url,0,"dialogWidth:455px;dialogHeight:410px;resizable=yes;");
}


function openHomePage() {
	var currentLanguage = "gb";

	if ( typeof language == "undefined" ) {
		currentLanguage = "gb";
	} else {
		currentLanguage = language;
	}
	var url = "../main/index.jsp?language=" + currentLanguage;

	top.location.href= url;
}


	//显示日期 主页使用
	function homepageshowdate()
	{
		Today=new Date();
		var NowMonth=Today.getMonth()+1;
		var NowDate=Today.getDate();
		var NowYear=Today.getYear();
		var NowDay=Today.getDay();
		var xingqi;
		var datestr=""
		if (NowDay=='1') {xingqi='一'};
		if (NowDay=='2') {xingqi='二'};
		if (NowDay=='3') {xingqi='三'};
		if (NowDay=='4') {xingqi='四'};
		if (NowDay=='5') {xingqi='五'};
		if (NowDay=='6') {xingqi='六'};
		if (NowDay=='0') {xingqi='日'};
		datestr+=NowYear+'年'+NowMonth+'月'+NowDate+'日 星期'+xingqi;
		document.write(datestr);
	}

function color(colorV)
{//调色盘

	var colorValue=window.showModalDialog("/cenweb/about/sub_color.htm",colorV.value,"dialogHeight:270px;dialogWidth:230px;center:yes;help:no;resizable:no;status:no;scroll:no");
	if(colorValue)
	{
		colorV.value = colorValue;
	//	Template.currSelectedDiv.style.backgroundColor = colorValue;
	//	Template.currSelectedDiv.style.backColor = colorValue;
	}
}


function openAnswer(answerId)
{
	//问题解答显示
	var url="/cenweb/portal/user/anon/page/qaanswer.page?answerId="+answerId;
	//alert(url);
	window.open(url,0,'');
}

/**
iframe自动调整高度的函数代码
**/

 //定义iframe的ID
 var iframeids=[""];

 //如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏，no表示不隐藏
 var iframehide="yes";

 function dyniframesize(iname) 
 {
 	
  iframeids=[iname];
  var dyniframe=new Array();
  for (i=0; i<iframeids.length; i++)
  {
   if (document.getElementById)
   {
    //自动调整iframe高度
    dyniframe[dyniframe.length] = document.getElementById(iframeids[i]);
    if (dyniframe[i] && !window.opera)
    {
     dyniframe[i].style.display="block"
     if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) //如果用户的浏览器是NetScape
      dyniframe[i].height = dyniframe[i].contentDocument.body.offsetHeight; 
     else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) //如果用户的浏览器是IE
      dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;
    }
   }
   //根据设定的参数来处理不支持iframe的浏览器的显示问题
   if ((document.all || document.getElementById) && iframehide=="no")
   {
    var tempobj=document.all?document.all[iframeids[i]] : document.getElementById(iframeids[i])
    tempobj.style.display="block"
   }
  }
 }
