﻿jQuery.fn.dialogTrigger = function(virtualRoot, dialogUrl, triggerDataID, hiddenID, persistence, clientpick, postback, dialogHeight , dialogWidth) {
	var autoPostback = false;
	clientpick = typeof clientpick == "function" ? clientpick : function(){};	
	dialogHeight = null ? 600 : dialogHeight;
	dialogWidth = null ? 400 : dialogWidth;
	if (typeof postback == "function") {
		autoPostback = true;
	} else {
		postback = function() {};
	}	
	this.click(function() {	
		var triggerData = $("#" + triggerDataID).val();
		var hiddenData = $("#" + hiddenID).val();
		if (dialogUrl.indexOf('?') == -1) {
			dialogUrl +="?";
		} else {
			dialogUrl +="&";
		}
		var url = dialogUrl + "s=" + Math.random() + "&persistence=" + persistence + "&triggerData=" + escape(triggerData);
		var eLoading = $("<img src='" + virtualRoot + "image/Loading.gif' class='eLoading' />")
			.insertAfter(this).css({position:"absolute", zIndex:"500"});
		eLoading.show();
		var sFeature = "dialogHeight:" + dialogHeight + "px; dialogWidth:" + dialogWidth + "px; resizable:yes; status:no; center:yes";		
		var oResult = window.showModalDialog(url, {"opener":window, "hiddenData":escape(hiddenData)} , sFeature);				
		
		eLoading.remove();
		if (oResult != null) {
			$("#" + hiddenID).val(oResult);
			postback.apply(this);
		}
		if (autoPostback == false && oResult!=undefined) {			
			var res = null;
			try {				
				//res = eval(oResult);
				res = $.parseJSON(oResult);
			} catch(e) {}
			clientpick.apply(this,[res]);
		}
	});
}