CBSi.namespace("app.Email.SendPanel");(function(){var Dom=YAHOO.util.Dom;var JSON=YAHOO.lang.JSON;var Connect=YAHOO.util.Connect;var debug=0;CBSi.app.Email.SendPanel={init:function(args){if(typeof(args)=="undefined"){args={};}this.panelType=(typeof(args.panelType)!="undefined")?args.panelType:1;this.panelTitle=(typeof(args.panelTitle)!="undefined")?args.panelTitle:"E-mail this to a Friend";this.location=(typeof(args.location)!="undefined")?args.location:"";this.title=(typeof(args.title)!="undefined")?args.title:"";this.email=(typeof(args.email)!="undefined")?args.email:"";if(debug==1){this._debug("panelType",this.panelType);this._debug("panelTitle",this.panelTitle);this._debug("email",this.email);this._debug("location",this.location);this._debug("title",this.title);}this.emailFriendFormState=new Array();this.containerID=args.containerID;var panelContainer=this._createPanelContainer(this.containerID);this.emailFriendPanel=CBSi.panel.create("emailPanel",{width:"360px",underlay:"shadow",visible:false,draggable:true,constraintoviewport:true,zIndex:5001,close:true});this.emailFriendPanel.setHeader(this.panelTitle);this.emailFriendPanel.setBody('<div id="emailLoading"><div align="center"><div class="loadingImg"></div><p>Loading...</p></div></div>');this.emailFriendPanel.render(panelContainer);this.emailFriendPanel.show();this.emailFriendPanel.center();this.load(this.panelType);return false;},_createPanelContainer:function(el){var divContainer=Dom.get(el);if(!divContainer){divContainer=document.createElement("div");divContainer.id=el;divContainer.className="yui-skin-spln";document.body.appendChild(divContainer);Dom.setStyle(divContainer,"min-height","120px");}return divContainer;},_toggleDisplay:function(el,state){var element=Dom.get(el);if(typeof(element)=="undefined"){return"";}if(state){Dom.setStyle(el,"display",state);}else{element.style.display=(element.style.display=="none"||element.style.display==""?"block":"none");}return;},_displayProcessingMsg:function(str){var processStr=(typeof(str)!="undefined")?str+"...":"Processing...";var html='<div id="emailLoading"><div align="center"><div class="loadingImg"></div><p>'+processStr+"</p></div></div>";this._toggleDisplay("emailHeader","none");this._toggleDisplay("emailError","none");this._toggleDisplay("emailDisclaimer","none");Dom.get("emailContent").innerHTML=html;return;},submitEmailForm:function(form){Connect.setForm(form);this._displayProcessingMsg();var loadUrl="/data/email/send-friend";var callback={success:this._showSendResponse,failure:this._displayError,scope:this};var transaction=Connect.asyncRequest("POST",loadUrl,callback,null);return false;},_showSendResponse:function(response){response.responseText=response.responseText.replace(/<!--.*-->/g,"");var json_response;try{json_response=JSON.parse(response.responseText);}catch(e){json_response={code:-1,desc:"error",msg:"Invalid JSON response"};}if(json_response.code==1){var html='<div align="center"><p><strong>Thank You!</strong></p><p>Your e-mail has been sent.</p><p><a href="#" onclick="CBSi.app.Email.SendPanel.load(1,1); return false;"><strong>Send to another recipient</strong></a></p><p><a href="#" onclick="CBSi.app.Email.SendPanel.close(); return false;"><strong>Close</strong></a></p></div>';}else{var html='<div align="center"><p><strong>We\'re Sorry!</strong></p><p>There was an error sending your e-mail.</p><p><a href="#" onclick="CBSi.app.Email.SendPanel.load(1); return false;"><strong>Please try again.</strong></a></p></div>';}Dom.get("emailPanelContent").innerHTML=html;},close:function(){this.emailFriendPanel.hide();},load:function(view,state){if(debug==1){this._debug("load with default view",view);}if(typeof(view)=="undefined"){if(this.panelType==1){view=1;}else{if(this.panelType==2){view=2;state=2;}}}if(view==2){this._saveFormState();}if(state==2){this.close();}if(state==1){this.emailFriendFormState.emails="";this.emailFriendFormState.message="";}var html='<div id="emailPanelContent">';html+='<div id="emailHeader"></div>';html+='<div id="emailError" class="warn"></div>';html+='<div id="emailContent"></div>';html+='<em id="emailDisclaimer">E-mail addresses provided will not be used for solicitation.</em>';html+="</div>";this.emailFriendPanel.setBody(html);this.displayPanel(view);return false;},displayPanel:function(view,args){if(debug==1){this._debug("displayPanel");}if(typeof args=="undefined"){args={};}this._displayProcessingMsg("Loading...");Dom.get("emailError").innerHTML="";switch(view){case 1:this._getEmailFormHTML();break;case 2:this._contactListHTML();break;case 3:this._addContactFormHTML();break;case 4:this._editContactFormHTML(args);break;case 5:this._deleteContactFormHTML(args);break;}},_renderForm:function(responseText,headerText){if(debug==1){this._debug("_renderForm");}this._toggleDisplay("emailHeader","block");this._toggleDisplay("emailError","block");this._toggleDisplay("emailDisclaimer","block");this._insertHeader(headerText);Dom.get("emailContent").innerHTML=responseText;if(this.panelType==1){this._loadFormState();}},loadContacts:function(form){if(debug==1){this._debug("loadContacts");}var result="";for(i=0;i<form.length;i++){var formelm=form.elements[i];if(formelm.type=="checkbox"&&formelm.checked==true){if(this.emailFriendFormState.emails.search(formelm.value)==-1){if(result){result+=","+formelm.value;}else{result=formelm.value;}}}}if(typeof(this.emailFriendFormState.emails)!="undefined"&&this.emailFriendFormState.emails.length>0){this.emailFriendFormState.emails+=","+result;}else{this.emailFriendFormState.emails=result;}if(this.panelType==1){this.displayPanel(1);}else{this._loadFormState();this.emailFriendPanel.hide();}},manageContacts:function(form,task){Connect.setForm(form);var loadUrl="";switch(task){case"create":loadUrl="/emailafriend/add_contact";break;case"update":loadUrl="/emailafriend/update";break;case"delete":loadUrl="/emailafriend/delete";break;}var callback={success:function(o){var response=o.responseText.replace(/<!--.*-->/g,"");if(response==1){this.displayPanel(2);}else{this._displayError(response);}},failure:function(o){this._displayError();},scope:this};var transaction=Connect.asyncRequest("POST",loadUrl,callback,null);return false;},_displayError:function(str){var defaultText="There was an error processing your request please close this window and try to send again";var text=(typeof(str)=="undefined")?defaultText:str;Dom.get("emailError").innerHTML="<p>"+text+"</p>";return false;},_insertHeader:function(str){var divHeader=Dom.get("emailHeader");if(typeof(divHeader)!="undefined"&&typeof(str)!="undefined"){content="<h5>"+str+"</h5>";divHeader.innerHTML=content;}return;},_getEmailFormHTML:function(){var loadUrl="/emailafriend/email-panel?location="+this.location+"&email="+this.email+"&title="+this.title;var html;var callback={success:function(o){this._renderForm(o.responseText);},failure:function(o){this._displayError();},scope:this};var transaction=Connect.asyncRequest("GET",loadUrl,callback,null);return false;},_contactListHTML:function(){var loadUrl="/emailafriend/contact_list";var html;var callback={success:function(o){this._renderForm(o.responseText,"Contact List");},failure:function(o){this._displayError();},scope:this};var transaction=Connect.asyncRequest("GET",loadUrl,callback,null);return false;},_addContactFormHTML:function(){var loadUrl="/emailafriend/create";var html;var callback={success:function(o){this._renderForm(o.responseText,"Create New Contact");},failure:function(o){this._displayError();},scope:this};var transaction=Connect.asyncRequest("GET",loadUrl,callback,null);return false;},_editContactFormHTML:function(args){if(typeof(args)=="undefined"){args={};}var loadUrl="/emailafriend/edit?nickname="+args.nickname+"&email="+args.email;var html;var callback={success:function(o){this._renderForm(o.responseText,"Edit Contact");},failure:function(o){this._displayError();},scope:this};var transaction=Connect.asyncRequest("GET",loadUrl,callback,null);return false;},_deleteContactFormHTML:function(args){if(typeof(args)=="undefined"){args={};}var loadUrl="/emailafriend/deleteconf?nickname="+args.nickname+"&contact_email="+args.email;var html;var callback={success:function(o){this._renderForm(o.responseText,"Delete Contact");},failure:function(o){this._displayError();},scope:this};var transaction=Connect.asyncRequest("GET",loadUrl,callback,null);return false;},_saveFormState:function(){if(debug==1){this._debug("_saveFormState");}if(typeof(document.emailfriendform)!="undefined"){this.emailFriendFormState.emails=document.emailfriendform.emails.value;this.emailFriendFormState.self_email=document.emailfriendform.self_email.value;this.emailFriendFormState.subject=document.emailfriendform.subject.value;this.emailFriendFormState.message=document.emailfriendform.message.value;}},_loadFormState:function(){if(debug==1){this._debug("_loadFormState");}if(Dom.inDocument("emailfriendform")==1){if(debug==1){this._debug("emailfriendform exists");}if(typeof(this.emailFriendFormState.emails)!="undefined"){document.emailfriendform.emails.value=this.emailFriendFormState.emails;}if(typeof(this.emailFriendFormState.self_email)!="undefined"){document.emailfriendform.self_email.value=this.emailFriendFormState.self_email;}if(typeof(this.emailFriendFormState.subject)!="undefined"){document.emailfriendform.subject.value=this.emailFriendFormState.subject;}if(typeof(this.emailFriendFormState.message)!="undefined"){document.emailfriendform.message.value=this.emailFriendFormState.message;}}},_debug:function(str,value){var ua=navigator.userAgent.toLowerCase();var valueStr="";if(typeof(str)!="undefined"){if(typeof(value)!="undefined"){valueStr=" = "+value;}if(ua.indexOf("firefox")!=-1){console.log(str+valueStr);}else{alert(str+valueStr);}}return;}};})();