/*******************************************
描述：本文件是通用函数集
创建者：叶文彪
创建时间：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 );
}



/**
logicalValue:用于判断对象的值是否符合条件，如果不符合条件，将输入焦点跳到该输入控件中，并给出提示。现已提供的选择有：
integer：整型，还可判断正整型和负整型
naturalnumber ：自然数，包括0
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，78";
	} else if ( objType == "naturalnumber" ) {
		typeCaption = "自然数";
		typeTip = "23";
	} 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 {
		object.focus();
		var inputValue = object.value;
		if ( inputValue == "") {
			inputValue = "当前没有输入相关信息";
		} else {
			inputValue = "您当前输入的是：["+inputValue+"]";
		}
		if (fieldCaption != ""){
			fieldCaption = "在["+fieldCaption+"]中";
		}
		alert("请"+fieldCaption+"输入["+typeCaption+"]型数据\n\n"+inputValue+" \n\n正确输入示例：["+typeTip+"]");
		return false;
	}
}

/**
检查对象的字符串的值，是否符合目标类型
**/
function logicalValue(object,objType) {
	return logicalInput(object, objType, '');
}


/**
logicalValue:用于判断对象的值是否符合条件，现已提供的选择有：
integer：整型，还可判断正整型和负整型
naturalnumber :自然数，包括0
number ：数值型，同样可判断正负
date ：日期型，可支持以自定义分隔符的日期格式，缺省是以'-'为分隔符
string ：判断一个字符串包括或不包括某些字符
返回值：
true或false
*/
function logicalObjectValue(object,objType) {

	if (typeof object == "undefined"){
		return true;
	}

	var str = object.value;
	var temp = objType.toLowerCase();

    if (temp=='integer' || temp=="int" ) {
		return isInteger(str) ;        
    }else if (temp=='naturalnumber') {
        return isInteger(str) && (str!=null && str.charAt(0)!='-'); 
    }else if (temp=='number') {
        return isNumber(str);
    } else if (temp=='string') {
        //return specialString(str);
		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 isNaturalNumber(string ,sign) {
    var integer;

    if ((sign!=null) && (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 checkPageNumber() {
	return logicalInput( page.currentPage, 'naturalnumber', '页码' );
}

/*** 兰亭专用的删除触发函数 ***/
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 openDateBrowse(textField,jspPath) {
  if (typeof jspPath == 'undefined')
      jspPath="";
  var xCoord=event.clientX;
  var yCoord=event.clientY;
  if (xCoord+320>=screen.width-50)
      xCoord=xCoord-50;
  if (yCoord+180>=screen.height-100)
      yCoord=yCoord-100;
  tmp=open(jspPath+'../smartdate/calendar1.jsp?formname='+textField.form.name+'&textname='+textField.name+'&textvalue='+textField.value,'Calendar','top='+ yCoord +',left=' + xCoord +',directories=no,menubar=no,scrollbars=no,resizable=no,location=no,toolbar=no,width=320,height=185');
  tmp.focus();
}

function openDateTimeBrowse(textField,jspPath) {
  if (typeof jspPath == 'undefined')
      jspPath="";
  var xCoord=event.clientX;
  var yCoord=event.clientY;
  if (xCoord+320>=screen.width-50)
      xCoord=xCoord-50;
  if (yCoord+180>=screen.height-100)
      yCoord=yCoord-100;
  tmp=open(jspPath+'../smartdate/calendar2.jsp?formname='+textField.form.name+'&textname='+textField.name+'&textvalue='+textField.value,'Calendar','top='+ yCoord +',left=' + xCoord +',directories=no,menubar=no,scrollbars=no,resizable=no,location=no,toolbar=no,width=320,height=185');
  tmp.focus();
}

