﻿function exportFile(url){
	var id = 'jqFormIO' + (new Date().getTime());
    var $io = $('<iframe id="' + id + '" name="' + id + '" src="about:blank" />');
    var io = $io[0];

    $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
    $io.appendTo('body');
    $io.attr('src',url);
}

function fnGetWindowWidth(){
	var vw = 0;
	var _dEt = document.documentElement;
	var _dBy = document.body;
	if(typeof window.innerWidth=='number')vw = window.innerWidth;
	else{
		if(_dEt&&_dEt.clientWidth)vw = _dEt.clientWidth;
		else{
			if(_dBy&&_dBy.clientWidth)vw = _dBy.clientWidth;
		}
	}
	if(!vw||vw<100)vw = 100;
	return vw;
}
function fnGetWindowHeight(){
	var vh = 0;
	var _dEt = document.documentElement;
	var _dBy = document.body;
	if(typeof window.innerHeight=='number')vh = window.innerHeight;
	else{
		if(_dEt&&_dEt.clientHeight)vh = _dEt.clientHeight;
		else{
			if(_dBy&&_dBy.clientHeight)vh = _dBy.clientHeight;
		}
	}
	if(!vh||vh<100)vh = 100;
	return vh;
}

function toUTF8(szInput) {
	var wch, x, uch = "", szRet = "";
	for (x = 0; x < szInput.length; x++) {
		wch = szInput.charCodeAt(x);
		if (!(wch & 0xFF80)) {
			szRet += szInput.charAt(x);
		} else if (!(wch & 0xF000)) {
			uch = "%" + (wch >> 6 | 0xC0).toString(16) + "%"
					+ (wch & 0x3F | 0x80).toString(16);
			szRet += uch;
		} else {
			uch = "%" + (wch >> 12 | 0xE0).toString(16) + "%"
					+ (((wch >> 6) & 0x3F) | 0x80).toString(16) + "%"
					+ (wch & 0x3F | 0x80).toString(16);
			szRet += uch;
		}
	}
	return (szRet);
} 

function loadIframe(iframeId, src) {
	var _iframe = $("#" + iframeId);
	_iframe.attr("src", src);
}

function closeWindow() {
	if (parent && typeof parent.closeWindow == "function") {
		parent.closeWindow();
	}
}

function reloadMainFrame() {
	if (parent && typeof parent.reloadMainFrame == "function") {
		parent.reloadMainFrame();
	}
}

$(document).ready( function() {
	var _nameClose = $('[name="close"]');
	if(_nameClose) {
		_nameClose.click( function() {
			parent.closeWindow();
		});
	}

	if ($.datepicker) {
		$.datepicker.setDefaults( {
			changeMonth :true,
			changeYear :true,
			showOn :'button'
		})
	}

	var _listTableTr = $(".list_table tr");
	if(_listTableTr){
		_listTableTr.hover( function() {
			$(this).addClass("over");
		}, function() {
			$(this).removeClass("over");
		})
	}
	
	//使用jquery里load方法或者ajax调用页面的时候会存在cache的问题，清除cache的方法
	jQuery.ajaxSetup ({cache:false})
});

function createLoadingBox() {
	var loadingBox = document.createElement("span");
	loadingBox.id = "loadingBox";
	var loadingImg = document.createElement("img");
	$(loadingImg).attr("src", "../images/icon/small_loading.gif");
	$(loadingBox).css("margin-left", "5px");
	$(loadingBox).append(loadingImg);
	return loadingBox;
}

function removeLoadingBox() {
	$("span[id='loadingBox']").remove();
}

function showLoading() {
	var loadingPane = document.getElementById("ajax_loading");
	if (loadingPane == null) {
		var el = document.createElement("DIV");
		el.setAttribute("id", "ajax_loading");
		el.style.cssText = "display:none;font-family:Verdana;font-size:11px;border:1px solid #00CC00;background-color:#A4FFA4;padding:1px;position:absolute;right:2px;top:1px;height:14px;z-index:10000";
		el.innerHTML = "\u6b63\u5728\u52a0\u8f7d...";
		document.body.appendChild(el);
		loadingPane = el;
	}
	loadingPane.style.display = "";
	loadingPane.style.top = document.body.scrollTop + 1;
}
function unShowLoading() {
	var loadingPane = document.getElementById("ajax_loading");
	loadingPane.style.display = "none";
}

function showError(event, XMLHttpRequest, ajaxOptions, thrownError) {
	if (XMLHttpRequest.status == 200) { // ！！！！
		return;
	}
	if(XMLHttpRequest.responseText == ""){
		unShowLoading();
		return;
	}
	var errorPane = document.getElementById("ajax_error");
	if (errorPane == null) {
		var el = document.createElement("DIV");
		el.setAttribute("id", "ajax_error");
		el.style.cssText = "font-family:Verdana;font-size:11px;border:1px solid #00CC00;background-color:#fff;padding:1px;position:absolute;overflow:auto; right:1px; top:1px; width:500px; height:300px; z-index:1";
		el.innerHTML = XMLHttpRequest.responseText;
		document.body.appendChild(el);
		errorPane = el;
	}
}
$().ajaxError(showError);
$().ajaxStart(showLoading).ajaxStop(unShowLoading);

function lockForm() {
	var submitButton = $(":submit");
	submitButton.attr("disabled", "disabled");

	if (false) {
		submitButton.after(loadingBox());
	}
}

function hasErrors(reply) {
	if(reply.status && reply.status != 200){
		alert("错误代码：" + reply.status);
		return true;
	}
	if (reply.actionError && reply.actionError.length > 0) {
		return true;
	}
	if (reply.fieldError) {
		for ( var prop in reply.fieldError) {
			return true;
		}
	}
	return false;
}

function drawMessages(reply) {
	beforeMessage();

	var allMessages = "";

	var actionMessage = reply.actionMessage;
	var actionError = reply.actionError;
	var fieldError = reply.fieldError;

	var hasActionErrors = false;
	var hasActionMessages = false;
	
	var messageBox = document.getElementById("messageBox");

	if (actionMessage && actionMessage.length > 0) {
		var messageUl = document.createElement("ul");

		for (index in actionMessage) {
			allMessages += actionMessage[index] + "\n";

			var messageLi = document.createElement("li");
			messageLi.innerHTML = actionMessage[index];

			messageUl.appendChild(messageLi);
		}

		if(messageBox != null){
			messageBox.append(messageUl);
			messageBox.addClass("actionMessageBox");		

			var position = messageBox.offset();
			window.scrollTo(0, position.top - 20);
		} 
		else {
			window.alert(allMessages);
		}

		hasActionMessages = true;
	}

	if (actionError && actionError.length > 0) {
		var errorUl = document.createElement("ul");

		for (index in actionError) {
			allMessages += actionError[index] + "\n";

			var errorLi = document.createElement("li");
			errorLi.innerHTML = actionError[index];

			errorUl.appendChild(errorLi);
		}

		if(messageBox != null){
			messageBox.append(errorUl);
			messageBox.addClass("actionErrorBox");

			var messageBoxPos = messageBox.offset();
			window.scrollTo(0, messageBoxPos.top - 20);
		} 
		else {
			window.alert(allMessages);
		}

		hasActionErrors = true;
	}

	if (fieldError) {
		var firstField = null;

		for (fieldName in fieldError) {
			var anError = fieldError[fieldName];

			var errorMessages = "";

			for (index in anError) {
				errorMessages += anError[index] + "\n";
				allMessages += anError[index] + "\n";
			}

			var errorBox = document.createElement("div");
			errorBox.id = fieldName + "Error";

			var isIE6 = isBrowserIE6();

			$(errorBox).append("<div>" + errorMessages + "</div>" + (isIE6 ? "<iframe src=\"javascript:false\" style=\"position:absolute; visibility:inherit; top:0px; left:0px; width:100%; height:100%; z-index:-1; filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';\"></iframe>" : ""));
			errorBox.style.position = "absolute";
			errorBox.className = "errorBox";
			errorBox.style.display = "none";

			var field = $("[name='" + fieldName + "']");

			field.after(errorBox);

			if (isIE6) {
				var errorBoxWidth = errorMessages.length * 12 + 30;
				$(errorBox).width(errorBoxWidth);
				var errorBoxHeight = $(errorBox).height();

				var errorBoxIframe = $(errorBox).find("iframe");
				errorBoxIframe.width(errorBoxWidth);
				errorBoxIframe.height(errorBoxHeight);
			}

			field.mouseover( function() {
				var box = $("#" + this.name + "Error");
				if (box.size() != 0) {
					var position = $(this).offset();

					box.css("top", position.top + $(this).height() + 8);
					box.css("left", position.left);

					box.show();
				}
			});

			field.focus( function() {
				var box = $("#" + this.name + "Error");
				if (box.size() != 0) {
					var position = $(this).offset();

					box.css("top", position.top + $(this).height() + 8);
					box.css("left", position.left);

					box.show();
				}
			});

			field.mouseout( function() {
				var box = $("#" + this.name + "Error");
				if (box.size() != 0) {
					box.hide();
				}
			});

			field.blur( function() {
				var box = $("#" + this.name + "Error");
				if (box.size() != 0) {
					box.hide();
				}
			});

			field.addClass("errorField");

			if (firstField == null) {
				firstField = field;
			}
		}

		if (firstField != null && !hasActionMessages && !hasActionErrors) {
			var firstPosition = firstField.offset();
			window.scrollTo(0, firstPosition.top - 20);
		}
	}
	
	if(reply.script) {
		try { 
			eval(reply.script);
		} catch (e) {
			// TODO: handle exception
		}		
	}

}

function alertMessages(reply) {
	beforeMessage();

	var allMessages = "";

	var actionMessage = reply.actionMessage;
	var actionError = reply.actionError;
	var fieldError = reply.fieldError;

	if (actionMessage && actionMessage.length > 0) {
		for (index in actionMessage) {
			allMessages += actionMessage[index] + "\n";
		}
	}

	if (actionError && actionError.length > 0) {
		for (index in actionError) {
			allMessages += actionError[index] + "\n";
		}
	}

	if (fieldError) {
		for (i in fieldError) {
			for (j in fieldError[i]) {
				allMessages += fieldError[i][j] + "\n";
			}
		}
	}
	if (allMessages != "") {
		alert(allMessages);
	}
	
	if(reply.script) {
		eval(reply.script);
	}
}

function beforeMessage() {
	var messageBox = $("#messageBox");
	$(":submit").removeAttr("disabled");
	if (false) {
		removeLoadingBox();
	}

	if(messageBox != null) {
		messageBox.empty();
		messageBox.removeClass();
	}

	var errorFields = $(".errorField");
	errorFields.unbind("mouseover");
	errorFields.unbind("mouseout");
	errorFields.removeClass("errorField");
	$(".errorBox").remove();
}

function isBrowserIE6() {
	var isIE6=false;   
	if(window.XMLHttpRequest){ //Mozilla, Safari, IE7 
		if(!window.ActiveXObject){ // Mozilla, Safari,   
			//alert('Mozilla, Safari');   
		}
		else{   
			//alert('IE7');   
		}   
	}
	else {   
		return true;
	}  
	return false;
}