/**
 * Enter Compotition in AJAX
 */

/**
 * checkloggedin
 * check whether the user is logged in or not
 *
 * @param anonymous
 */
function checkloggedin(anonymous){
    if(anonymous == 1){
        hideDivs();
        $('msg_nologin').style.display = 'block';
    } else {
        $('comp_display').style.display = 'block';
    }
}

/**
 * sendCompetitionForm
 * submit the form via AJAX 
 *
 * @param form
 * @param url
 * @return false - not submit the form directly
 */
function sendCompetitionForm(form, url){
    loadingSendComp();

    var params = [];
 
    var elem = Form.getElements('post');
    
    // get form elements
    for(var i = 0; i < elem.length; i++){
        if(
                elem[i].name != '' && 
                elem[i].name != 'answer' && 
                elem[i].name != 'optin'
          ){
            if(elem[i].type == 'select-one') // it fixes a problem in IE
                params.push(elem[i].name + '=' + encodeURIComponent(elem[i].options[elem[i].selectedIndex].text));
            else
                params.push(elem[i].name + '=' + encodeURIComponent(elem[i].value));
        }
    }

    // mandatory field
    if(form.ghreader_over50){
        if(!form.ghreader_over50.checked){
           stopLoadingSendComp();
           alert("You must be Good Housekeeper Reader and over 50");
           return false;
        }
    }


    // get optin
    if(typeof(form.optin) != 'undefined'){
        if(form.optin.checked)
            params.push('optin=1');
        else
            params.push('optin=');
    }
    else
        params.push('optin=');

    // get the answer
    if(typeof(form.answer) != 'undefined'){ // Issue 5298
        for(var i = 0; i < form.answer.length; i++)
            if(form.answer[i].checked)
                params.push('answer=' +  form.answer[i].value);
    }
    else
        params.push('answer=1');
    
   new Ajax.Request(url, {
        method: 'post',
        parameters: params.join('&'),
        onComplete: function(req){
            
            stopLoadingSendComp();
            
            var resp = req.responseText;

            if(resp.indexOf('<status>already_entered') != -1){
                    hideDivs();
                    $('comp_display').innerHTML = '<p>Whoops!</p><br /><p>You\'ve already entered this competition and to be fair we can only allow one entry per user. How about trying another of our great <a href="http://www.cosmopolitan.co.uk/competitions_&amp;_offers/competitions_&amp;_offers/channel">competitions</a>?</p>';
            }
            else if(resp.indexOf('<status>no_answer') != -1)
                    alert("Please choose an answer for your chance to win.");
            else if(resp.indexOf('<status>field_missing') != -1)
                    alert("Fields are missing. Check every mandatory field is filled in");
            else if(resp.indexOf('<status>err_saving') != -1)
                    alert("There was a problem saving your details, please try again later.");
            else if(resp.indexOf('<status>system_error') != -1)
                    alert("There was a problem saving your details, please try again later. Remember you can enter each competition only once!");
            else if(resp.indexOf('<status>ok') != -1){
                    hideDivs();
                    $('comp_display').innerHTML = '<p>Thank you for entering. Good luck!</p>';
            }

        }
   }); 

    return false;

}

/**
 * loadingSendComp
 * Show loading text and image
 */
function loadingSendComp(){
    if(!$('loadingComp')){
        var loading = document.createElement('span');
    
        with(loading){
            id = 'loadingComp';
            innerHTML = '<strong>Sending competition...</strong><br /><br /><img src="themes/yyw/images/ajax-loader.gif" />';
        }
        $('competition_q').className = 'compFormWaiting';
        $('divSendComp').appendChild(loading);
    }
}

/**
 * stopLoadingSendComp
 * Destroy loading
 */
function stopLoadingSendComp(){
    $('divSendComp').removeChild($('loadingComp'));
    $('competition_q').className = '';
}

function hideDivs(){
    try{
        $('title_question').innerHTML = '';
        $('option_buttons').innerHTML = '';
    } catch (e) {}
}
