var Connect=YAHOO.util.Connect;var JSON=YAHOO.lang.JSON;owt.connect={};owt.connect.connections=[];owt.connect.isRunning=function(){var aConn=this.connections;for(var i=0;i<aConn.length;i++){if(Connect.isCallInProgress(aConn[i])){return true}}return false};owt.connect.parseCFRequestError=function(oResult){try{var oResponseText=JSON.parse(oResult.responseText)}catch(e){ow.console.log(e);return null}if(oResponseText.CFRequestError){return oResponseText}else{return null}};owt.connect.parseCFRequestMessage=function(oResult){try{var oResponseText=JSON.parse(oResult.responseText)}catch(e){return null}if(oResponseText.CFRequestMessage){return oResponseText}else{return null}};owt.connect.parseCFRequestVariables=function(oResult){try{var oResponseText=JSON.parse(oResult.responseText)}catch(e){return null}if(oResponseText.CFRequestVariables){return oResponseText.CFRequestVariables}else{return null}};owt.connect.parseACLAccessDenied=function(oResult){try{var oResponseText=JSON.parse(oResult.responseText)}catch(e){return null}if(oResponseText.ACLError){return oResponseText.ACLError}else{return null}};owt.connect.parseCFValidationError=function(oResult){try{var oResponseText=JSON.parse(oResult.responseText)}catch(e){return null}if(oResponseText.CFValidationError){return oResponseText.CFValidationError}return null};owt.connect.replaceVar=function(varName,varValue){Dom.getElementsByClassName("var:"+varName,"span",document,function(el){el.innerHTML=varValue});Dom.getElementsByClassName("var:"+varName,"div",document,function(el){el.innerHTML=varValue});Dom.getElementsByClassName("var:"+varName,"input",document,function(el){if(el.type&&el.type=="text"){el.value=varValue}if(el.type&&(el.type=="checkbox"||el.type=="radio")){el.checked=el.value==varValue}});Dom.getElementsByClassName("var:"+varName,"textarea",document,function(el){el.value=varValue});Dom.getElementsByClassName("var:"+varName,"select",document,function(el){if(ow.core.getAttribute(el,"multiple")){for(var i=0;i<el.options.length;i++){el.options[i].selected=false;var arrValues=varValue.split(",");for(var j=0;j<arrValues.length;j++){if(el.options[i].value==arrValues[j]){el.options[i].selected=true}}}}else{for(var i=0;i<el.options.length;i++){el.options[i].selected=el.options[i].value==varValue}}})};owt.connect.parseCallbackFunction=function(str,oResult,form){var isScriptInline=str.split("(").length>0;if(isScriptInline){try{ow.console.log("Evaluating callback function as script inline");eval(str)(oResult)}catch(e){ow.console.log(e.message)}}else{try{ow.console.log("Evaluating callback function as an existing function");var newFunction=new Function("oResult","form",str);newFunction(oResult,form)}catch(e){ow.console.log(e.message)}}};owt.connect.loadInclude=function(el){var el=Dom.get(el);var url=ow.core.getAttribute(el,"owt:url");var useQueryString=eval(ow.core.getAttribute(el,"owt:queryString",false));var queryString=null;if(useQueryString){queryString=document.location.search;queryString=decodeURI(queryString);url+=queryString}var callback={success:function(oResult){el.innerHTML=oResult.responseText;owt.initDynamicForms(el);owt.initDataTables(el);owt.initTabs(el);owt.initEditors(el);owt.initDialogs(el)}};Connect.asyncRequest("GET",url,callback)};owt.connect.globalEvents={};owt.connect.globalEvents.start=function(type,args){if(!owt.connect.isRunning()){owt.loadingOverlay.show()}owt.connect.connections[owt.connect.connections.length]=args[0]};owt.connect.globalEvents.complete=function(type,args){if(!owt.connect.isRunning()){owt.loadingOverlay.hide()}};owt.connect.globalEvents.success=function(type,args){var oResult=args[0];var customArgs=args[0].argument;var form=null;var dialog=null;var skipDefaultValidation=false;var onValidationError=null;var onSuccess=null;var onFailure=null;var cfValidationError=null;var successMessage="";owt.hideLoading();if(customArgs&&customArgs.dialog){var dialog=customArgs.dialog;var form=dialog.form}if(customArgs&&customArgs.form){var form=customArgs.form}if(form!==null){var skipDefaultValidation=eval(ow.core.getAttribute(form,"owt:skipDefaultValidation"),false);var onValidationError=ow.core.getAttribute(form,"owt:onValidationError");var onSuccess=ow.core.getAttribute(form,"owt:onSuccess");var successMessage=ow.core.getAttribute(form,"owt:successMessage","")}var cfValidationError=owt.connect.parseCFValidationError(oResult);if(cfValidationError!==null&&onValidationError!==null){owt.connect.parseCallbackFunction(onValidationError,oResult,form)}if(cfValidationError!==null&&!skipDefaultValidation){if(dialog){dialog.showValidationError(cfValidationError.field,cfValidationError.message)}else{if(form){owt.form.showValidationError(form,cfValidationError.field);var msgEl=document.createElement("div");msgEl.className="owt-formerror";msgEl.innerHTML=cfValidationError.message;var domPosition=Dom.get(ow.core.getAttribute(form,"owt:validationMessageEl",form));domPosition.appendChild(msgEl)}}}var cfMessage=owt.connect.parseCFRequestMessage(oResult);if(cfMessage!==null){message=cfMessage.CFRequestMessage.body;owt.notify(message,{type:cfMessage.CFRequestMessage.type})}var cfVars=owt.connect.parseCFRequestVariables(oResult);for(var thisVar in cfVars){owt.connect.replaceVar(thisVar,cfVars[thisVar])}if(cfValidationError==null){if(successMessage!==""){owt.notify(successMessage,{type:"message",inline:false,timeout:2000})}if(onSuccess!==null){owt.connect.parseCallbackFunction(onSuccess,oResult,form)}}if(dialog&&cfValidationError==null){if(form.innerHTML!==""&&ow.core.getAttribute(form,"owt:hideOnSubmit","true")!="false"){dialog.hide()}}};owt.connect.globalEvents.failure=function(type,args){var customArgs=args[0].argument;var oResult=args[0];var onFailure=null;var failureMessage="";var form=null;owt.hideLoading();if(customArgs&&customArgs.dialog){var dialog=customArgs.dialog;var form=dialog.form}if(customArgs&&customArgs.form){var form=customArgs.form}if(form!==null){onFailure=ow.core.getAttribute(form,"owt:onFailure");failureMessage=ow.core.getAttribute(form,"owt:failureMessage","")}if(onFailure!==null){owt.connect.parseCallbackFunction(onFailure,oResult,form)}else{if(failureMessage!==""){owt.notify(failureMessage,{type:"alert",inline:false,timeout:2000})}else{if(args[0].responseText!==undefined){var message="<b>Server Error: </b>";var cfError=owt.connect.parseCFRequestError(oResult);var ACLError=owt.connect.parseACLAccessDenied(oResult);if(cfError===null&&ACLError===null){message+="<strong>Error "+oResult.status+'</strong><br/><span class="explain">';message+=oResult.statusText;message+="</span>"}else{if(ACLError!==null){message+=ACLError.body}else{message+=cfError.CFRequestError.body}}owt.notify(message,{type:"alert"})}}}};owt.connect.globalEvents.abort=function(type,args){if(!owt.connect.isRunning()){owt.loadingOverlay.hide()}};owt.connect.globalEvents.upload=function(type,args){owt.connect.connections[args[0].tId]=null;if(!owt.connect.isRunning()){owt.loadingOverlay.hide()}owt.hideLoading();var oResult=args[0];var cfError=owt.connect.parseCFRequestError(oResult);var ACLError=owt.connect.parseACLAccessDenied(oResult);if(cfError===null&&ACLError===null){owt.connect.globalEvents.success(type,args)}else{owt.connect.globalEvents.failure(type,args)}};owt.connect.subscribeGlobalEvents=function(){Connect.startEvent.subscribe(this.globalEvents.start);Connect.completeEvent.subscribe(this.globalEvents.complete);Connect.successEvent.subscribe(this.globalEvents.success);Connect.failureEvent.subscribe(this.globalEvents.failure);Connect.abortEvent.subscribe(this.globalEvents.abort);Connect.uploadEvent.subscribe(this.globalEvents.upload);return true};owt.connect.subscribeGlobalEvents();
