/*******************************************

描述：本文件是通用函数集

创建者：叶文彪

创建时间：2002年08月31日

最新修订：2002年09月03日
版本：0.1

 ********************************************/
//add banxn
  var appurl = window.location.href;
  var appName1 = appurl.split("/");
  var webappName = appName1[3];
//end add banxn


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;



var specialStr="`!#~$^&*% ()\'\<>\",/?;:[]{}\\=-_";

var specialUrlStr="`!#~$^&*% ()\'\<>\",?;[]{}\\=-_";

//本方法须紧密配合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) {
        //alert('objType= '+objType);
	var typeCaption = "";

	var typeTip = "";

	objType = objType.toLowerCase();

	if ( objType == "integer" || objType == "int" ){

		typeCaption = "整数";

		typeTip = "123";

	} else if ( objType == "string" ) {

		typeCaption = "字符串";

		typeTip = "江山如此多娇(不包含"+specialStr+"等怪字符)";

	} 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";

	} else if ( objType == "url" )	{

		typeCaption = "字符串";

		typeTip = "江山如此多娇(不包含"+specialUrlStr+"等怪字符)";

	}



	if ( logicalObjectValue(object, objType) ){

		return true;

	} else {
		if(object.style.visibility)
			object.focus();

		var inputValue = jtrim(object.value);

		if ( inputValue == "") {

			inputValue = "当前没有输入相关信息";

		} else {

			inputValue = "您当前输ssdas入的是：["+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,specialStr,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','url'之一)



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


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,specialStr,false);
      	//return !isEmpty(str);
    } else if (temp=='date'  || objType == "datetime") {
        return isDate(str);     }
      else if (temp=='url') {
        return !isEmpty(str) && specialString(str,specialUrlStr,false);
    } 
    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[0];

    }

    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;
    }
     
   ////added by libo-2007.2.6--增加对日期的检查,日期的范围必须在当月应有的天数之内
   //// alert("增加对日期的检查,日期的范围必须在当月应有的天数之内");
   var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
   if (((tempy % 4 == 0) && (tempy % 100 != 0)) || (tempy % 400 == 0)) iaMonthDays[1]=29;
   if (tempd < 1 || tempd > iaMonthDays[tempm - 1]) return false
      
	return true;

	/*

    if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd))) {

        return true;

    } else {

        return false;

    }

	*/

}


////added by libo-2007.2.6--比较开始日期和结束日期，防止用户输入的开始日期晚于结束日期
function dateCompare(beginDate,endDate) { 

    if (typeof beginDate == "undefined" || typeof endDate == "undefined") {
  	 		return false;
   	}
   	var beginStr = jtrim(beginDate.value);
   	var endStr = jtrim(endDate.value);

    var beginY = '';
    var beginM = '';
    var beginD = '';
    var endY = '';
    var endM = '';
    var endD = '';      
    var beginDateArray;
    var endDateArray;

    beginDateArray = beginStr.split('-');

    if (beginDateArray[0].length==4) {
        beginY = parseInt(beginDateArray[0]);
        beginD = parseInt(beginDateArray[2]);
    } else {
        beginY = parseInt(beginDateArray[2]);
        beginD = parseInt(beginDateArray[0]);
    }
    beginM = parseInt(beginDateArray[1]);

    endDateArray = endStr.split('-');
    if (endDateArray[0].length==4) {
        endY = parseInt(endDateArray[0]);
        endD = parseInt(endDateArray[2]);
    } else {
        endY = parseInt(endDateArray[2]);
        endD = parseInt(endDateArray[0]);
    }
    endM = parseInt(endDateArray[1]);

    //进行比较
    if(beginY > endY) {
     	alert("开始日期不能晚于结束日期");
     	return false;
    } else if(beginY == endY) {
    	  if(beginM > endM) {
    		 	alert("开始日期不能晚于结束日期");
          return false;
      } else if(beginM == endM) {
        if(beginD > endD) {
         	alert("开始日期不能晚于结束日期");
          return false;
        }         
      }      
    }

return true;

}



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 isUrl(str) { 
    
    if (str==null) return false;
    
   // alert(str.indexOf('http',0));
    if ((str.indexOf('http',0))==0 || str.indexOf('portal',0)==0 || str.indexOf('website',0)==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("/"+webappName+"/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="/"+webappName+"/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"
   }
  }
 }

