﻿function getHost(){var location=window.location||document.location;var port=location.port;var host=location.protocol+"//"+location.host;if(port==""){return host}else{return host+":"+port}}var Zii={};Zii.Resize=function(zb){var zbh=zb.height();var bodyh=$(window.document.body).height();var doc=document.documentElement;var winh=window.innerHeight||self.innerHeight||(doc&&doc.clientHeight)||document.body.clientHeight;if(bodyh<winh){zb.height(winh-bodyh+zbh)}else{if(bodyh>winh){var minh=parseInt(zb.css("min-height"));minh=isNaN(minh)?zbh:minh;if(minh<zbh){bodyh-=(zbh-minh);if(bodyh>=winh){zb.height(minh)}else{zb.height(winh-bodyh+minh)}}}}};Zii.ResizeDynamic=function(zb){var zbh=zb.css("height","auto").height();var bodyh=$(window.document.body).height();var doc=document.documentElement;var winh=window.innerHeight||self.innerHeight||(doc&&doc.clientHeight)||document.body.clientHeight;if(bodyh<winh){zb.height(winh-bodyh+zbh)}};Zii.EditableDialog=(function(){var $=jQuery;var nexts=[];var dgDiv=$('<div id="cont-dg-'+(new Date()).getTime()+'" class=""></div>').get(0);var loading='<div id="cont-dg-load"><img src="'+getHost()+'/images/account/loading.gif"/><span>Loading......</span></div>';var optData={};var isPost=false;var defaultOpt={title:"Zii Window",width:636,ajaxCache:false,onSuccess:function(){},onError:function(){}};function _create(){if(!document.getElementById(dgDiv.id)){$("body").append(dgDiv);$(dgDiv).dialog({autoOpen:true,modal:true,resizable:false,title:defaultOpt.title,width:defaultOpt.width,height:defaultOpt.height,position:"center",overlay:{opacity:0.5,background:"black"},close:function(){nexts=[];optData={};isPost=false}});return true}}function _init(url,data,opt,btns){_create();opt=$.extend({},defaultOpt,opt);optData=data;$(dgDiv).dialog("option","buttons",{}).dialog("option","title",opt.title);if(!isPost){$(dgDiv).dialog("option","width",opt.width).dialog("option","height",opt.height).dialog("option","position","center").dialog("size");isPost=true}_ajaxform(url,data,opt,btns);$(dgDiv).dialog("open")}function _ajaxform(url,data,opt,btns){$.ajax({type:"POST",url:url,data:data,cache:opt.ajaxCache,dataType:"text",beforeSend:function(){_loading()},dataFilter:function(data,type){return data},success:function(datainfo){opt.onSuccess(datainfo);$(dgDiv).dialog("option","buttons",btns||{});$(dgDiv).empty().append(datainfo);$(dgDiv).dialog("option","position","center")},error:function(){opt.onError();$(dgDiv).empty().append(error)}})}function _loading(){$(dgDiv).empty();$(dgDiv).append(loading)}return{data:function(){return optData},generate:function(url,data,opt,btns){data=data||{};opt=opt||{};btns=btns||{};_init(url,data,opt,btns);return false},detail:function(urls,opt,events){var my=this;var arg=arguments;nexts=[];events=events||{};var title=opt.detailTitle||(opt.title||"Detail Information");var nOpt=$.extend({},opt,{title:title});if(nOpt.noEditBtn&&nOpt.noEditBtn==true){this.generate(urls.detailUrl,urls.data,nOpt)}else{this.generate(urls.detailUrl,urls.data,nOpt,{Edit:function(){my.edit(urls,opt,events);nexts.push({obj:my.detail,arg:arg})}})}},edit:function(urls,opt,events){var my=this;var arg=arguments;events=events||{};opt=opt||{};var title=opt.editTitle||(opt.title||"Edit Information");var nOpt=$.extend({},opt,{title:title});this.generate(urls.editUrl,urls.data||{},nOpt,{Save:function(){if($.validator){if(!$("form",$(dgDiv)).validate().form()){return false}}my._save(urls.saveUrl,urls.data,opt,events);nexts.push({obj:my.edit,arg:arg})},Cancel:function(){my.cancel()}});return false},_save:function(url,data,opt,events){var my=this;events=events||{};var fdata=$("form",$(dgDiv)).serialize();var title=opt.saveTitle||(opt.title||"Result Information");var nOpt=$.extend({},opt,{title:title,onSuccess:(events.saveSuccess||defaultOpt.onSuccess),onError:(events.saveError||defaultOpt.onError)});if(data&&data.id){url=url+"?id="+data.id}_init(url,fdata,nOpt,{Close:function(){my.close()}});return false},cancel:function(){var o=nexts.pop();if(o&&o.obj){o.obj.apply(this,o.arg)}else{this.close()}},close:function(){$(dgDiv).dialog("close")}}})();