document.domain="ask.com";
if (!ask) var ask = {};
if (!ask.nav) ask.nav = {};

ask.nav.QOTDContestController = {

    init : function () {
    },

    showval: function (){
        var message = $('message');
        var textareadiv= $('textAreapdiv');
        if(textareadiv){
            message.value = textareadiv.innerHTML;
        }
        ask.nav.QOTDContestController.setRecaptchaFocusOnTab();
    },

    iframeLoad: function(){
         if (document.getElementById('firstLoad').value == "true") {
             document.getElementById('contestAnswer').focus();
             document.getElementById('firstLoad').value = "false";
         } else {
             ask.nav.QOTDContestController.setRecaptchaFocus();
         }
    },

    setRecaptchaFocusOnTab: function(evt){
        var evt = (evt) ? evt : ((event) ? event : null);
        if(evt.keyCode == 9 && !(evt.shiftKey)) {
            ask.nav.QOTDContestController.setRecaptchaFocus();
            if(a10.browser.isSafari() || a10.browser.isFirefox() || a10.browser.isOpera()){
                evt.stopPropagation();
                evt.preventDefault();
            }else if(a10.browser.isIE()){
                window.event.returnValue = false;
            }
            return false;
        }
    },

    setRecaptchaFocus: function(){
        if (a10.browser.isFirefox() || a10.browser.isOpera())
        {
            $('recaptcha').contentWindow.document.getElementById('recaptcha_response_field').focus();
        } else {
            var fr = frames['recaptcha'].document.forms[0];
            fr['recaptcha_response_field'].focus();
        }
     },

    getContestContent : function (date, path) {
        if(window['emailAjaxRequest'] != null) {
            return; //only allow one ajax request
        }

        //sct(51324);
        window['emailAjaxRequest'] = a10.ajax.get(path + "?rnd=" + new Date().getTime() + (date ? '&date=' + date : ""), ask.nav.QOTDContestController.contestContentRetrieved, ask.nav.QOTDContestController.contestContentFailed)
    },

    contestContentRetrieved : function (request) {
        $('qotdContest').innerHTML='';
        $('qotdContest').innerHTML=request.responseText;
        qotdContestDialog.show();
        window['emailAjaxRequest'] = null;
    },

    contestContentFailed : function () {
        alert("Unable to retrieve providers. Please try again.");
        window['emailAjaxRequest'] = null;
    },

    yourMail : {

        focus : function () {
            if($('contestFrom').value == "i.e, janesmith@ask.com") {
                $('contestFrom').value = "";
                $('contestFrom').style.fontStyle = "";
                $('contestFrom').style.color = "#000000";
            }
        },

        blur : function () {
            if($('contestFrom').value == "") {
                $('contestFrom').value = "i.e, janesmith@ask.com";
                $('contestFrom').style.fontStyle = "italic";
                $('contestFrom').style.color = "#666666";
            }
        }
    },

    emailvalidate : function(email) {
        var at="@";
        var dot=".";
        var comma=","
        var str= email;
        var lat=str.indexOf(at);
        var lstr=str.length ;
        var ldot=str.indexOf(dot);

        if (str.indexOf(comma)!=-1){
            return false;
        }

        if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
           return false;
        }

        if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
            return false;
        }

         if (str.indexOf(at,(lat+1))!=-1){
            return false;
         }

         if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
            return false;
         }

         if (str.indexOf(dot,(lat+2))==-1){
            return false;
         }

         if (str.indexOf(" ")!=-1){
           return false;
         }

         return true;
    },

    createURLParam : function(formid){
        var form = $(formid);
        var urlParam = "";
        var formElements = form.getElementsByTagName("input");
        var k = 0;
        for(var i = 0; i < formElements.length; i++){
            var value = escape(formElements[i].value);
            if(formElements[i].type == 'checkbox') {
                value = formElements[i].checked;
            }

            if(i == 0){
                urlParam = urlParam + formElements[i].name + "=" + value;
            }else{
                urlParam = urlParam + "&" + formElements[i].name + "=" + value;
            }
            k = 1;
        }
        return urlParam;
    },

    cancel : function () {
        qotdContestDialog.hide();
    },

    close : function () {
        qotdContestDialog.hide();
    },

    sendMailContest : function () {
        var form = $('contestForm');
        var from = this.trim(form.From.value);
        var name = this.trim(form.Name.value);
        var answer = this.trim(form.Answer.value);
        var phone = this.trim(form.Phone.value);
        document.domain="ask.com";

        var fromerror = ask.nav.QOTDContestController.emailvalidate(from);

        this.removeError();

        if(!fromerror){
            this.displayError("Email is required");
            form.From.focus();
            ask.nav.QOTDContestController.yourMail.focus();
            ask.nav.QOTDContestController.showError($('yourMail'),$('yourMailWarning'));
            return false;
        } else if(a10.util.trim(name) == '') {
            this.displayError("Name is required");
            form.Name.focus();
            ask.nav.QOTDContestController.showError($('yourName'),$('yourNameWarning'));
            return false;
        } else if(a10.util.trim(answer) == '') {
            this.displayError("Answer is required");
            form.Answer.focus();
            ask.nav.QOTDContestController.showError($('yourAnswer'),$('yourAnswerWarning'));
            return false;
        } else if(a10.util.trim(phone) == '') {
            this.displayError("Phone number is required");
            form.Phone.focus();
            ask.nav.QOTDContestController.showError($('yourPhone'),$('yourPhoneWarning'));
            return false;
        } else if(!form.Terms.checked) {
            this.displayError("Terms and Conditions not accepted");
            form.Terms.focus();
            return false;
        }

        if (a10.browser.isFirefox() || a10.browser.isOpera() )
        {
           if($('recaptcha') && $('recaptcha') != null && $('recaptcha').contentWindow != null && $('recaptcha').contentWindow.document != null )
            {
               try{
                    if($('recaptcha').contentWindow.document.getElementById('recaptcha_response_field') != null && $('recaptcha').contentWindow.document.getElementById('recaptcha_challenge_field') != null){
                            $('recaptchaResponse').value = $('recaptcha').contentWindow.document.getElementById('recaptcha_response_field').value;
                            $('recaptchaImage').value = $('recaptcha').contentWindow.document.getElementById('recaptcha_challenge_field').value;
                      }
                }
                catch(e){
                }
            }
        } else {
           try{
              if(frames['recaptcha'] != null && frames['recaptcha'].document != null && frames['recaptcha'].document.forms != null && frames['recaptcha'].document.forms[0] != null){
                var fr = frames['recaptcha'].document.forms[0];
                if(fr['recaptcha_challenge_field'] != null && fr['recaptcha_response_field'] != null){
                    $('recaptchaImage').value = fr['recaptcha_challenge_field'].value;
                    $('recaptchaResponse').value = fr['recaptcha_response_field'].value;
                 }
              }
            }catch(e){
            }
        }

        var urlParam = this.createURLParam('contestForm') + "&rnd=" + new Date().getTime();

        $('sending').style.display = "block";

        var actionURL = form.action;

        sct(51504);
        a10.ajax.post( actionURL, urlParam, onSuccess, onFailure);

        function onSuccess(response) {
            if(response.responseText.indexOf("success_sendtomail") > -1){
                var resp = response.responseText;
                resp = resp.replace("success_sendtomail","");
                qotdContestDialog.hide();
                $('qotdContest').innerHTML='';
                $('qotdContest').innerHTML=resp;
                qotdContestDialog.show();
                return;
            }else if (response.responseText.indexOf("Recaptcha Failure") > -1){
                ask.nav.QOTDContestController.displayError("Your last try did not match, please try again.");
                ask.nav.QOTDContestController.showError($('antispam'),$('antispamWarning'));
                var f = document.getElementById('recaptcha');
                f.src = f.src;
                return;
            }
            ask.nav.QOTDContestController.displayError("Our email server is currently undergoing<br/> maintenance. Please try again soon.");
        }

        function onFailure(response) {
            ask.nav.QOTDContestController.displayError("Our email server is currently undergoing<br/> maintenance. Please try again soon.");
        }

      return false;
    },

    showError: function(errLabel,errIco) {
        errLabel.className = "T14";
        errIco.style.display = "";
    },

    trim : function(s) {
        return s.replace(/^\s+/g, '').replace(/\s+$/g, '');
    },

    displayError: function(err) {
        if($('stmsaError') != null) {
            $('stmsaError').innerHTML = err;
            $('stmsaError').style.display= "block";
            $('stmsaErrorWarning').style.display = "block";
        }
        $('sending').style.display = "none";
    },

    displayNewStyleFormError: function(err) {
        if($('qotdError') != null) {
            $('qotdError').innerHTML = err;
            $('qotdError').style.display= "block";
            $('qotdErrorWarning').style.display = "block";
        }
    },

    removeError: function() {
        $('stmsaError').style.display= "none";
        $('stmsaErrorWarning').style.display = "none";
        $('antispam').className = "T1";
        $('antispamWarning').style.display = "none";
        $('yourName').className = "T1";
        $('yourNameWarning').style.display = "none";
        $('yourMail').className = "T1";
        $('yourMailWarning').style.display = "none";
        $('yourPhone').className = "T1";
        $('yourPhoneWarning').style.display = "none";
        $('yourAnswer').className = "T1";
        $('yourAnswerWarning').style.display = "none";
        $('sending').style.display = "none";
    },

    removeNewStyleFormError: function() {
        $('qotdError').style.display= "none";
        $('qotdErrorWarning').style.display = "none";
        $('name').className = "T1";
        $('nameWarning').style.display = "none";
        $('email').className = "T1";
        $('emailWarning').style.display = "none";
        $('phone').className = "T1";
        $('phoneWarning').style.display = "none";
    },

    makeHP: function(source) {
        source.style.behavior = 'url(#default#homepage)';
        source.setHomePage("http://uk.ask.com");
        return false;
    },

    submitNewStyleForm : function (confirm) {
        var form = $('qotdCntForm');
        var name = this.trim(form.Name.value);
        var email = this.trim(form.Email.value);
        var phone = this.trim(form.Phone.value);
        document.domain="ask.com";

        var nameError = name == "";
        var phoneError = phone == "";
        var emailError = !ask.nav.QOTDContestController.emailvalidate(email);
        var error = nameError || phoneError || emailError;

        this.removeNewStyleFormError();

        if(nameError){
            form.Name.focus();
            ask.nav.QOTDContestController.showError($('name'), $('nameWarning'));
        }
        if(emailError){
            form.Email.focus();
            ask.nav.QOTDContestController.showError($('email'), $('emailWarning'));
        }
        if(phoneError){
            form.Phone.focus();
            ask.nav.QOTDContestController.showError($('phone'), $('phoneWarning'));
        }
        if (error) {
            this.displayNewStyleFormError("Sorry, please fix the error(s) marked in red.");
            return false;
        }

        if(!form.Terms.checked) {
            this.displayNewStyleFormError("Terms and Conditions not accepted");
            form.Terms.focus();
            return false;
        }

        if (form.QOTD.checked) {
            form.QOTD.value = "yes";
        }
        else {
            form.QOTD.value = "no";
        }

        if(a10.browser.isIE() && form.MakeHP.checked) {
             ask.nav.QOTDContestController.makeHP($('contest'));    
        }

        var urlParam = this.createURLParam("qotdCntForm") + "&rnd=" + new Date().getTime();
        var actionURL = form.action;

        sct(51553);
        a10.ajax.post( actionURL, urlParam, onSuccess, onFailure);

        function onSuccess(response) {
            if(response.responseText.indexOf("success_sendtomail") > -1){
                var contestForm = $('contestForm')
                if (contestForm) {
                    contestForm.style.display = 'none';
                }
                var contestFeedback = $('contestFeedback');
                if (contestFeedback) {
                    contestFeedback.innerHTML = confirm;
                    contestFeedback.style.display = 'block';
                }
                return;
            }
            ask.nav.QOTDContestController.displayNewStyleFormError("Our email server is currently undergoing<br/> maintenance. Please try again soon.");
        }

        function onFailure(response) {
            ask.nav.QOTDContestController.displayNewStyleFormError("Our email server is currently undergoing<br/> maintenance. Please try again soon.");
        }
        return false;
    }
};

ask.nav.QOTDContestController.init();