package com.lostphoto.contact { /** * Contact form popup * * @author Yoeun Pen */ import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; import com.lostphoto.Main; import caurina.transitions.Tweener; import caurina.transitions.Equations; import com.yoeunpen.net.Emailer; import com.yoeunpen.net.EmailerEvent; public class ContactPopup extends Sprite { public var closeBtnText:TextField; public var closeBtn:Sprite; // views public var form:ContactForm; public var sendingMsg:Sprite; public var successMsg:Sprite; public var errorMsg:*; // emailer web service URL public static const WS_URL_EMAILER:String = "emailer.php"; /** * Constructor */ public function ContactPopup() { closeBtnText.alpha = 0.5; form.sendBtnText.alpha = 0.5; sendingMsg.visible = false; successMsg.visible = false; errorMsg.visible = false; closeBtn.buttonMode = true; closeBtn.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); closeBtn.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); closeBtn.addEventListener(MouseEvent.CLICK, onCloseClick); form.sendBtn.buttonMode = true; form.sendBtn.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); form.sendBtn.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); form.sendBtn.addEventListener(MouseEvent.CLICK, onSubmitForm); errorMsg.returnBtn.buttonMode = true; errorMsg.returnBtn.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); errorMsg.returnBtn.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); errorMsg.returnBtn.addEventListener(MouseEvent.CLICK, onTryAgainClick); } private function onMouseOver(e:MouseEvent):void { if (e.target==closeBtn) closeBtnText.alpha = 1; else if (e.target==form.sendBtn) form.sendBtnText.alpha = 1; else if (e.target==errorMsg.returnBtn) errorMsg.returnBtnText.alpha = 1; } private function onMouseOut(e:MouseEvent):void { if (e.target==closeBtn) closeBtnText.alpha = 0.5; else if (e.target==form.sendBtn) form.sendBtnText.alpha = 0.5; else if (e.target==errorMsg.returnBtn) errorMsg.returnBtnText.alpha = 0.5; } private function onCloseClick(e:MouseEvent):void { if (parent is Main) Main(parent).hideContactForm(); } private function onTryAgainClick(e:MouseEvent):void { hideErrorMsg(); showForm(); } private function onSubmitForm(e:MouseEvent):void { hideForm(); showSendingMsg(); var email:Emailer = new Emailer(WS_URL_EMAILER); email.requireFromName = true; email.fromName = form.fromName.text; email.fromEmail = form.fromEmail.text; email.message = form.msg.text; email.addEventListener(EmailerEvent.SENT, onEmailSent); email.addEventListener(EmailerEvent.ERROR, onEmailError); email.send(); } private function onEmailSent(e:EmailerEvent):void { hideSendingMsg(); showSuccessMsg(); } private function onEmailError(e:EmailerEvent):void { var errorMsg:String = e.errorMessage; trace(errorMsg); hideSendingMsg(); showErrorMsg(); } public function reset():void { form.fromName.text = ""; form.fromEmail.text = ""; form.msg.text = ""; showForm(); sendingMsg.visible = successMsg.visible = errorMsg.visible = false; sendingMsg.alpha = successMsg.alpha = errorMsg.alpha = 0; } private function showForm():void { form.visible = true; Tweener.addTween(form, {alpha:1, time:0.5, transition:Equations.easeOutCubic}); } private function hideForm():void { Tweener.addTween(form, {alpha:0, time:0.5, transition:Equations.easeOutCubic, onComplete:function() { form.visible = false; } }); } private function showSendingMsg():void { sendingMsg.visible = true; Tweener.addTween(sendingMsg, {alpha:1, time:0.5, transition:Equations.easeOutCubic}); } private function hideSendingMsg():void { Tweener.addTween(sendingMsg, {alpha:0, time:0.5, transition:Equations.easeOutCubic, onComplete:function() { sendingMsg.visible = false; } }); } private function showErrorMsg():void { errorMsg.visible = true; Tweener.addTween(errorMsg, {alpha:1, time:0.5, transition:Equations.easeOutCubic}); } private function hideErrorMsg():void { Tweener.addTween(errorMsg, {alpha:0, time:0.5, transition:Equations.easeOutCubic, onComplete:function() { errorMsg.visible = false; } }); } private function showSuccessMsg():void { successMsg.visible = true; Tweener.addTween(successMsg, {alpha:1, time:0.5, transition:Equations.easeOutCubic}); } private function hideSuccessMsg():void { Tweener.addTween(successMsg, {alpha:0, time:0.5, transition:Equations.easeOutCubic, onComplete:function() { successMsg.visible = false; } }); } } }