/**
 * @author Frederick J Richart
 * @version $Revision: 1.8 $ $Date: 2010/08/15 17:43:12 $ * 
 * @requires xdom.js
 * 
 * Performs AJAX operations on behalf of the forms used
 * on the Fred's Used Websites functionality.  This is implemented as
 * a class to minimize namespace impact.  
 */
function UserAjaxEngine(){this.Zindex=0;this.Registry=new Array();this.TimeoutControl=new Array();this.otherOnLoad=window.onload;window.onload=this.onPageLoad;this.otherOnUnload=window.onunload;window.onunload=this.onPageUnload}UserAjaxEngine.prototype={onPageUnload:function(){if(UserAjax.otherOnUnload){UserAjax.otherOnUnload()}},onPageLoad:function(){if(UserAjax.otherOnLoad){UserAjax.otherOnLoad()}for(var a=0;a<UserAjax.Registry.length;a++){var b=UserAjax.Registry[a];if(b.onPageLoad){b.onPageLoad()}}},addOnLoad:function(a){this.Registry.push(a)}};UserAjax=new UserAjaxEngine();function ServiceTotal(a){this.numServices=a;this.serviceCheckBoxes=new Array();this.serviceAmounts=new Array();UserAjax.addOnLoad(this)}ServiceTotal.prototype={onPageLoad:function(){var g,b,f;g=this.serviceTotal=document.getElementById("serviceTotalAmount");if(!g){return}xdom_findAssociatedLabel(g,false);xdom_setOnsubmitEvent(g,this);xdom_setFormsubmitHandler(g);g=this.differenceAmount=document.getElementById("differenceAmount");if(!g){return}this.checkTotal=this.setBlur("paymentTotalAmount");g=this.extraCheckBox=this.setClick("extra_service_checked");b=this.extraAmount=this.setBlur("extra_service_amt_paid");f=document.getElementById("extra_service_description");if(!f){return}b.checkControl=g;g.amountControl=b;b.descriptionControl=f;for(var e=1;e<=this.numServices;e++){g=this.serviceCheckBoxes[e]=this.setClick("service_id"+e);b=this.serviceAmounts[e]=this.setBlur("payment_amt_id"+e);b.checkControl=g;g.amountControl=b}this.recompute()},setClick:function(b){var a=document.getElementById(b);xdom_setOnclickEvent(a,this);return a},setBlur:function(b){var a=document.getElementById(b);xdom_setOnblurEvent(a,this);return a},getAmount:function(b){if(!b.checkControl){return 0}if(b.checkControl.checked){b.disabled=false;if(b.descriptionControl){b.descriptionControl.disabled=false}var a=parseFloat(b.value);if(isNaN(a)){a=0}return a}b.disabled=true;if(b.descriptionControl){b.descriptionControl.disabled=true}return 0},recompute:function(){if(!this.serviceTotal||!this.differenceAmount){return 0}var c=0;c+=this.getAmount(this.extraAmount);for(var b=1;b<=this.numServices;b++){c+=this.getAmount(this.serviceAmounts[b])}c=parseFloat(this.serviceTotal.value=c.toFixed(2));var a=parseFloat(this.checkTotal.value);if(isNaN(a)){a=0}this.differenceAmount.value=(a-c).toFixed(2);this.checkTotal.value=a.toFixed(2);return(a-c)},onElementBlur:function(a){this.recompute();return true},onElementClick:function(a){this.recompute();return true},onElementSubmit:function(a){var b=this.recompute();if(b!=0){xdom_setElementFailState(a,false,"Service total must match Check Amount!");return false}return true}};function xlinks_submit(c,b){var a=document.getElementById(c);a.requestURL=b;a.masterkey=user_get_password_key(a);if(a.masterkey){return xlinks_submit_master(a)}return false}function xlinks_submit_master(b){var a=b.key.value;if(a){return xlinks_submit_key(b,a)}return user_get_site_key(b)}function xlinks_submit_key(b,a){b.pass.value=AESDecryptCtr(a,b.masterkey,256,true);b.submit()}function user_get_password_key(f,e){var c=new Cookie(document,"fuwdata",175200);if(c.load()&&c.key){return c.key}var g=f;g.fuwdata=c;var h=prompt("The master key has not been set for this browser.  Please enter the password that unlocks the site keys","");if(!h){return false}var d=new XdomAjax(g,"UserPasswordHash",f.requestURL);d.controlHandler=function(j){var l=this.controlElement;var i=this.err=="0";if(i&&this.errmsg){var k=this.errmsg;l.masterkey=k;l.fuwdata.key=k;l.fuwdata.store();xlinks_submit_master(l)}};var a="xdomExtension=user";var b="passwd="+encodeURIComponent(h);d.sendRequest(a,b);return false}function user_get_site_key(f){var c=f.user.value;controlElement=f;var g=prompt("The encrypted password for this site is not yet stored.  Please enter the Control Panel password for site account '"+c+"'","");if(!g){return false}var b=AESEncryptCtr(g,f.masterkey,256,true);f.key.value=b;var e=new XdomAjax(controlElement,"UserSetSiteKey",f.requestURL);e.controlHandler=function(i){var j=this.controlElement;var h=this.err=="0";if(h&&this.errmsg){xlinks_submit_key(j,j.key.value)}};var a="xdomExtension=user&site="+encodeURIComponent(c);var d="key="+b;e.sendRequest(a,d);return false}function server_command_submit(g,f,e,b){var h=g.commandInput.value;if(!h){return false}var d=new XdomAjax(g,"UserExecuteServerCommand",f);d.controlHandler=function(k){var l=this.controlElement;var i=this.err=="0";var j=this.errmsg?this.errmsg:"(no output)\n";if(!i){j="Command returned ERROR!\n"+j}var m=document.getElementById("commandOutput");m.innerHTML+=this.errmsg;m.scrollTop=m.scrollHeight;l.commandInput.value=""};var a="xdomExtension=user";var c="cmd="+encodeURIComponent(h);if(e){c+="&relayHost="+e}if(b){c+="&relaySite="+b}d.sendRequest(a,c);return false}function server_command_keypress(g,f,c,b,a){var d;if(window.event){d=window.event.keyCode}else{if(f){d=f.which}else{return true}}if(d==13){server_command_submit(g.form,c,b,a);return false}return true}function xlinks_select_user(h,b){var g="selectUser="+h.value;var k,l,m=window.location.search,j="?",c="";if(m.substr(0,1)=="?"){m=m.substr(1)}k=m.split("&");for(var f in k){l=k[f];if(l==""){continue}if(l.substr(0,11)=="selectUser="){continue}c+=j+l;j="&"}c+=j+g;window.location.search=c};