/**
 * Adcopy Captcha
 *
 * @author Jeremy Schultz (from Boz Carve A Pumpkin app)
 * @classDescription Handles the SolveMedia adcopy captcha.
 **/

mdp.app.AdCopyCaptcha = function() {
    /* ---[ CLASS VARIABLES ]--- */

    /* public */
    this.locked = false;
    mdp.adcopyFlag = false;
    var adcopy_response = $("#adcopy_response").val();

    /* private */
    var self = this;

    /* ---[ CONSTRUCTOR ]--- */
    function adcopycaptcha() {

        /* initialization code */
        setupEventListeners();

    }

    /* ---[ PUBLIC METHODS ]--- */


        function showPopup(el,options){
            var settings = {
                position:"left",
                width:395,
                height:380,
                offsetX:265,
                offsetY:0,
                coverAll:true
            };
            var html;
          
            if(typeof(el)=='object'){
                html = $(el).clone().removeClass("hide");
            }else if(typeof(el)=='string'){
                html = el;
            }
            $.extend(settings,options || {});

            new mdp.app.Dialog(html,settings);
            return html;
        }

        function attachHideOnShare(){
            $(".dialog-msg a:first").click(function(){
                $("#mdpdialog").remove();
            });
        }

    function fireValidation(){
        if(!self.locked){
            self.locked = true;
            /* Drop error messages */
            var adcopy_error = $("#adcopy_error");
            if(adcopy_error){
                adcopy_error.remove();
            }
            $.ajax({
                url:"/common/socialmedia/secure/adcopyCheckAnswer.jsp",
                data:{
                    adcopy_response:$('iframe[name=adcopy]').contents().find('#adcopy_response').val(),
                    adcopy_challenge:$('iframe[name=adcopy]').contents().find('#adcopy_challenge').val()
                },
                success:function(data){
                data = $.parseJSON(data);
                if(data.RemoteResult.statusCode == "0"){
                    /* Success, now submit vote */
                    var adcopy_error = $("#adcopy_error");
                    if(adcopy_error){
                        adcopy_error.remove();
                    }
                    mdp.adcopyFlag = true;
                    $(".profileSubmit input").click();
                    $("#mdpdialog").remove();
                    self.locked = false;
                }else{
                    window.frames["adcopy"].location.reload();
                    $('div[id=dialogmsg]').contents().find('#adcopy_heading').css("color","red");
                    $('div[id=dialogmsg]').contents().find('#adcopy_heading').contents().replaceWith("Your answer did not match. Please try again.");
                    self.locked = false;
                }
            }});
        }
    }

    /* ---[ PRIVATE METHODS ]--- */

    /* ---[ EVENT LISTENERS ]--- */
    function setupEventListeners() {

        /* contest button */
            $("#contestform").submit(function(event){
                if (!mdp.adcopyFlag) {
                    event.preventDefault();
                    var popup = showPopup($(".adcopy_popup:first"),{
                        width:395,
                        height:380,
                        offsetX:265,
                        offsetY:0
                    });
                    $('#dialogmsg').contents().find('#adcopy_captcha').replaceWith('<iframe name="adcopy" class="ad_copy" src="/common/socialmedia/secure/adcopyFrag.jsp"></iframe>');
                    mdp.adcopyFlag = false;
                    $(".btnSubmitCaptcha").click(fireValidation);
                }
            });
    }

    /* ---[ RUN ]--- */
    adcopycaptcha();
};
