/************************************
* 概要：查询结果最大化屏幕
* 参数说明：resultDiv： 存放查询结果的Div的Id
           thick:当前对象（即拉杆的开关）
* 返回值： true/false
* 备注： 无
*************************************/
function fullScreen(resultDiv,thick,baseUrl){
	if(thick.state=="open"){
		resultDiv.style.top=resultDiv.screenTop;
		resultDiv.style.height=resultDiv.screenHeight;
		thick.src=baseUrl+"pullback.gif";
		thick.alt="最大化";
		thick.state="close";
	}else{
		resultDiv.screenTop=resultDiv.offsetTop;
		resultDiv.screenHeight=resultDiv.offsetHeight;
		resultDiv.style.top=5;
		resultDiv.style.height=resultDiv.parentElement.offsetHeight-10;
		thick.src=baseUrl+"undraw.gif";
		thick.alt="还原";
		thick.state="open";
	}
}

function isEmail (str) {
var atIndex = str.indexOf('@');
var dotIndex = str.indexOf('.', atIndex);
var flag = true;
theSub = str.substring(0, dotIndex+1)

if ((atIndex < 1)||(atIndex != str.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(str.length <= theSub.length))
{ return(false); }
else { return(true); }
}

/************************************
* 概要： 弹出窗口
* 参数说明：vUrl： 联接地址
*         param: 要传递的参数
*         winWidth： 窗口的宽度（px）
*         winHeight: 窗口的高度（px）
* 返回值： 无
* 备注： 无
*************************************/
function showContent(vUrl,param,winWidth,winHeight) {
	if(winWidth==""){
		var diaWidth=600;
	}else{
		var diaWidth=winWidth;
	}

	if(winHeight==""){
		var diaHeight=600;
	}else{
		var diaHeight=winHeight;
	}
	return window.showModalDialog(vUrl,param,"dialogHeight:"+diaHeight+"px;dialogWidth:"+diaWidth+"px;status:no;help:no;unadorned:on;")
	//return window.open(vUrl);
}

function showComponent(componentName) {
	var _component = document.getElementById(componentName);
	if (_component) _component.style.display = "";
}

function hideComponent(componentName) {
	var _component = document.getElementById(componentName);
	if (_component) _component.style.display = "none";
}

/************************************
* 概要： 开始日期和结束日期作比较
* 参数说明：endDate： 结束日期控件的ID
* 参数说明：startDate： 开始日期控件的ID
* 返回值： true/false
* 备注： 无
*************************************/
function compareDate(startDate,endDate) {
	var endDateObj = document.all(endDate);
	var startDateObj=document.all(startDate);

	// 只有在二个日期都有内容时才检查
	// 只有开始日期应该查询开始日期以后的记录
	// 只有结束日期应该查询结束日期以前的记录
	if (startDateObj.value.trim().length > 0 && endDateObj.value.trim().length > 0) {
		if(formatDate(startDateObj.value)>formatDate(endDateObj.value)) {
			var startCaption = startDateObj.caption;
			var endCaption = endDateObj.caption;
			if (startCaption!=null && endCaption!=null) {
				endDateObj.focus();
				alert(endCaption + "不能小于" + startCaption + "！");
			}
			return false;
		}
	}

	return true;
}

/************************************
* 概要： 把字符类型转换为date类型
* 参数说明：dStr： 日期字符串，如：2005-6-6
* 返回值： true/false
* 备注： 无
*************************************/
function formatDate(dStr)
{
	if(dStr==""||dStr==null) return "";
	dStr=dStr.replace(/[^0-9]/ig,"-");
	var strTime=dStr.split("-");
	if(strTime.length==3)
	{
	var strDate=new Date(strTime[0],parseInt(strTime[1],10)-1,strTime[2]);
	strDate.setFullYear(strTime[0]);
	return strDate;
	}

	if(strTime.length==5)
	{
	var strDate=new Date(strTime[0],parseInt(strTime[1],10)-1,strTime[2],strTime[3],strTime[4]);
	strDate.setFullYear(strTime[0]);
	return strDate;
	}
	alert("日期格式不正确！");
	return false;
}

/*
 * 检查grid对象中不允许为空的字段，以及不允许重复的字段
 * @param isEmpty 明细是否允许为空
 * @param options 在这个参数中可以为检验定义事件onRowCheckBefore和onRowCheckAfter
 */
function checkGridValid(gridObj, isEmpty, options) {
	if (isEmpty == null) isEmpty = false;
	options = options || {};
	var _event = {};

	var rows = gridObj.getRows();
    var gridSize = rows.length;
    if (gridSize < 1 && !isEmpty) {
       alert("明细不能为空!");
       return false;
    }

	//获得所有列信息
	var editableColumns = gridObj.getColumnsInfo();
	var notRepeatColumns = getNotRepeatColumns(gridObj);

	for (var i=0;i<rows.length;i++) {
		var row = rows[i];

		_event.index = i + 1;
		_event.row = row;

		// 行校验前触发的事件
		if (options.onRowCheckBefore)
			if (!options.onRowCheckBefore(_event))
				return false;

		for (var j=0;j<editableColumns.length;j++) {
			var column = editableColumns[j];

			var content = gridObj.getPropertyOfRow(row, column.name);
			if ("true" == column.notNull || column.notNull) {
				if (content==null || trim(content.toString())=="" || trim(content.toString())=="null") {
					alert("第" + (i+1) + "行明细中 [" + column.caption + "] 不能为空!");
					return false;
				}
			}
			if ("true" == column.plusValue || true==column.plusValue) {
				if (content==null || trim(content.toString())=="" || parseFloat(content)<=0.0) {
					alert("第" + (i+1) + "行明细中 [" + column.caption + "] 必须输入正数!");
					return false;
				}
			}
		}

		// 行校验后触发的事件
		if (options.onRowCheckAfter)
			if (!options.onRowCheckAfter(_event))
				return false;
	}
	if (notRepeatColumns.length>0) {
		for (var i=0;i<rows.length;i++) {
			for (var j=i+1;j<rows.length;j++) {
				var repeatFlag = true;
				var captionDesc = "";
				for (var k=0;k<notRepeatColumns.length;k++) {
					var content1 = gridObj.getPropertyOfRow(rows[i],notRepeatColumns[k].name);
					var content2 = gridObj.getPropertyOfRow(rows[j],notRepeatColumns[k].name);
					captionDesc += notRepeatColumns[k].caption;

					if (content1!=content2) {
						repeatFlag = false;
						break;
					}
				}
				if (repeatFlag == true) {
					alert("第" + (i+1) + "行明细与第" + (j+1) + "行明细" + captionDesc + "存在重复!");
					return false;
				}
			}
		}
	}
	return true;
}
/*
 * 获得可编辑修改的字段数组
 */
function getEditableColumns(gridObj) {
	if (gridObj.getContext().readonly==true) return new Array();

	var columns = gridObj.getColumnsInfo();
	var j = 0;
	var editableColumns = new Array();
	for(var i=0;i<columns.length;i++) {
		if ("true" == columns[i].readonly || true==columns[i].readonly) {

		} else {
			editableColumns[j] = columns[i];
			j++;
		}
	}
	return editableColumns;
}

/*
 * 获得内容不能重复的字段数组
 */
function getNotRepeatColumns(gridObj) {
	var columns = gridObj.getColumnsInfo();
	var j = 0;
	var notRepeatColumns = new Array();
	for(var i=0;i<columns.length;i++) {
		if ("true" == columns[i].notRepeat || true==columns[i].notRepeat) {
			notRepeatColumns[j] = columns[i];
			j++;
		}
	}
	return notRepeatColumns;
}

/*
 * 检查在grid的选中行中某列是否是相同的值(相同返回 true)
 */
function checkGridSelectedRepeatRow(grid,columnName) {
	var rows = grid.getSelectedRows();
	var rowLength = rows.length;
	var columnValue;
	if (rows.length == 0 || rows.length == 1) {
			return true;
	}
	for (var i=0;i<rowLength;i++) {
		columnValue = rows[i].cells[columnName].getValue();
		for(var j = i + 1; j < rowLength; j++){
			if(columnValue != rows[j].cells[columnName].getValue()){
				return false;
			}
		}
	}
	return true;
}

function printPreview() {

}

/**
*	得到今天日期
*/
function DateDemo(){
	   var d, s = "";
	   d = new Date();
	   s += d.getYear() + "-";
	  if(eval(d.getMonth()+1)<10){
			s += "0" + (d.getMonth() + 1);
	   }else{
			s += (d.getMonth() + 1);
	   }
	   s +="-";
	   if(eval(d.getDate())<10){
			s += "0" + d.getDate();
	   }else{
			s += d.getDate();
	   }
	   return s;
}
/**
 * 打印
 * @param pForm 页面上定义的SigmaForm对象
 * @param pGrid 页面上定义的grid对象
 * @param options 参数(可以设置每行显示的列数headerColumns,footerColumns)
 */
function print(pForm, pGrid, options) {
	var _grid = pGrid || grid;
	var _form = pForm || sForm;

	var p = new ReportPrinter();
	var rMsg = new ReportMessage(_form);
	rMsg.setColumns(options);
	p.setReportMessage(rMsg);
	p.setGrid(_grid);
	p.view();
}

/**
 * 导入Excel模板文件
 */
function importTemplate(type, title, parentName, parentId) {
	var param = new Object();
	param.importType = type;
	param.importTypeName = title;
	param.parentName = parentName;
	param.parentId = parentId;

	var result = showContent("import.action", param, 505, 300);

	return result;
}

/**
 * 禁用工具条按钮
 * @param buttons 为boolean时表示所有按钮都禁用/不禁用
 * 				  为一个对象时则表示对象中指定的几个按钮禁用
 */
function disabledBarButton(buttons, _toolbar) {
	var bar = _toolbar || toolbar;
	if (typeof buttons == "boolean") {
		for (var key in bar.getButtons()) {
			var button = bar.getButton(key);

			if (button && (button instanceof SigmaBarButton))
				button.setDisabled(buttons);
		}

	} else if (typeof buttons == "object") {
		for (var key in buttons) {
			if (typeof key != "function") {
				var button = bar.getButton(key);

				if (button && (button instanceof SigmaBarButton))
					button.setDisabled(buttons[key]);
			}
		}

	}
}

/**
 * 合并参数
 */
function mergeParameter(object, params) {
	if (typeof object == "string") {
		if (!params) return object;

		if (object.indexOf("?") == -1) object += "?";
		for (var key in params) {
			var value = params[key];
			if (typeof value != "function")
				object += "&" + key + "=" + value;
		}

		return object;

	} /*else if (typeof object == "object" && object instanceof AjaxRequest) {
		for (var key in params) {
			var value = params[key];
			if (typeof value != "function")
				object.setParameter(key, value);
		}
	}*/

}

/**
 * 简化后的Ajax请求
 * @param url
 * @param options
 * @param showWait
 * 参数通过options.params传对象
 * Ajax请求的事件处理需要使用options传入
 */
function ajaxRequest(url, options) {
	options = options || {};
	options.sync = options.sync == null ? true : options.sync;
	var _ajax = new AjaxRequest('post', url, options.sync);
	_ajax.waiting = options.waiting;

	for (var key in options.params) {
		var value = options.params[key];
		if (typeof value != "function")
			_ajax.setParameter(key, value);
	}

	_ajax.onresult = function() {
		var result = _ajax.getValue(true);

		var _event = {
			value: result
		};

		// 触发Ajax返回结果
		if (options.onAjaxResult) {
			_event.type = "onAjaxResult";
			options.onAjaxResult(_event);
		}

		if (result.exception == null) {
			// 反回结果正确时触发
			if (options.onSuccess) {
				_event.type = "onSuccess";
				_event.ajax = _ajax;
				options.onSuccess(_event);
			}

		} else {
			// 尚未登录或超时
			if (Exception.NOT_LOGIN == result.exception) {
				alert(result.exception);
				top.location.href = Pages.login;

			// 当前用户不是管理员
			} else if (Exception.NOT_ADMIN == result.exception) {
				top.location.href = Pages.error + "?err=" + Exception.NOT_ADMIN;

			} else {
				// 反回结果错误时触发
				if (options.onFailed) {
					_event.type = "onFailed";
					_event.err = result.exception;
					options.onFailed(_event);

				} else {
					alert(result.exception);
				}
			}
		}
	}

	_ajax.send();
}