//constants
var ajaxUrl  = "ajax-query";
var form     = "#compet";
var name     = "#name";
var mobNum   = "#mobNum";
var email    = "#email";
var question = "#question";
var submit   = "#submit";

var nErr   = "#nError";
var mnErr  = "#mnError";
var emlErr = "#emlError";
var qErr   = "#qError";

var nErrMsg   = "#nErrorMsg";
var mnErrMsg  = "#mnErrorMsg";
var emlErrMsg = "#emlErrorMsg";
var qErrMsg   = "#qErrorMsg";

var thanks = "#thanks";

var loaderImage = "#loader";


// validate text form
function validateCompForm()
{
  var n   = $(name).attr('value');
  var eml = $(email).attr('value');
  var q   = $(question).attr('value');

  return ((n.length > 0)&&(checkEmail(eml))&&(q.length > 0));
}


//validate eMail
function checkEmail(str)
{
 var filter = /^.+@.+\..{2,3}$/
 var retValue = false;
 if (filter.test(str))
    retValue = true;
 return retValue;
}


// get error html
function showErrorMessages()
{
  var n   = $(name).attr('value');
  var mn  = $(mobNum).attr('value');
  var eml = $(email).attr('value');
  var q   = $(question).attr('value');

  if (n.length == 0){
    $(nErr).show();
    $(nErrMsg).html('Please Enter Your Name.');
  }
  else {
    $(nErr).hide();
    $(nErrMsg).html('');
  }

  if (eml.length == 0){
    $(emlErr).show();
    $(emlErrMsg).html('Please Enter Your Email Address.');
  }
  else if (!checkEmail(eml)){
    $(emlErr).show();
    $(emlErrMsg).html('Please Enter a valid email address, e.g. user@example.com.');
  }
  else {
    $(emlErr).hide();
    $(emlErrMsg).html('');
  }

  if (q.length == 0){
    $(qErr).show();
    $(qErrMsg).html('Please Enter Your Question.');
  }
  else {
    $(qErr).hide();
    $(qErrMsg).html('');
  }
}


// limit characters in textarea
function limitChars()
{
  var text = $(question).val();
  var textlength = text.length;
  if(textlength > 254) {
    $(question).val(text.substr(0,254));
    return false;
  }
  else
    return true;
}


//ajax save entry function
function saveEntry(map)
{
  $(thanks).load(ajaxUrl, map,
     function (rt)
     {
       if (rt == 'ok') { // email sent ok
         $(thanks).html('Thanks you for contacting us.<br/> Somebody will contact you as soon as possible regarding your query.<br/>You will be contacted on the email address entered here.<br/>Thanks for your interest in askmoby.<br/><br/>Best Regards,<br/>askmoby team.');
         $(thanks).show();
       } // email sent ok
       else { // email failed to send
         $(thanks).html('Error!. There was a technical difficulty in processing your query.<br/>Please try again or use the above contact details to get in touch.<br/><br/>Best regards,<br/>askmoby team.');
         $(thanks).show();
       } // email failed to send
     });
}


//run this, when page loads
$(document).ready(
  function ()
  {
       $(mobNum).bind('keypress', function(e) {
         return ( e.which!=8 && e.which!=43 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
       });

       $(function(){
         $(question).keyup(function(){
           limitChars();
         })
       });
       
       $(submit).hover(  function(){$(this).css("cursor", "pointer")},
                              function(){$(this).css("cursor", "default");
       });



       var offsetLeft = ($(submit).offset().left + $(submit).width() + 20) - $(loaderImage).offset().left;
       var offsetTop  = ($(submit).offset().top - (($(loaderImage).height() - $(submit).height())/2)) - $(loaderImage).offset().top;
       $(loaderImage).css('top', offsetTop);
       $(loaderImage).css('left', offsetLeft);
       
       $(loaderImage).hide();
       $(loaderImage).ajaxStart(function(){
         $(this).fadeIn();
         $(thanks).hide();
         $(submit).unbind('click');
       });
       $(loaderImage).ajaxStop(function(){ 
         $(this).hide();
         
         $(submit).bind('click', function () {
           if (validateCompForm()) {
             showErrorMessages();
             var n   = $(name).attr('value');
             var mn  = $(mobNum).attr('value');
             var eml = $(email).attr('value');
             var q   = $(question).attr('value');

             var map = {action:8,name:n,mn:mn,eml:eml,question:q};
             saveEntry (map);
           }
           else {
             showErrorMessages();
             $(thanks).hide();
           }
         });

       });

       // competition entry form
       $(submit).click(function(){
         if (validateCompForm()) {
             showErrorMessages();
             var n   = $(name).attr('value');
             var mn  = $(mobNum).attr('value');
             var eml = $(email).attr('value');
             var q   = $(question).attr('value');

             var map = {action:8,name:n,mn:mn,eml:eml,question:q};
             saveEntry (map);
           }
           else {
             showErrorMessages();
             $(thanks).hide();
           }
       });
  });
