$(document).ready(function() {       
  
  $('#login_fields input[type="text"], #login_fields input[type="password"], #send_new input[type="text"]')
  .each(function(){
    $(this).data('value', $(this).val());
  })
  .blur(function(){
    if ($(this).val() == '')
      $(this).val($(this).data('value'))
  })
  .focus(function(){
    if ($(this).val() == $(this).data('value'))
      $(this).val('')
  });

    
    
  /*  forgot password functions functions   */
    
  $.loginboxtimeout = function(type) {
    if (type == 'set' && !$('form#send_new input[type=text]').data('infocus')) {
      $.loginboxtimeout.timeout = setTimeout(function(){
        $.togglelogin()
      }, 5000);
    } else if (typeof ($.loginboxtimeout.timeout) != 'undefined' ) {
      clearTimeout($.loginboxtimeout.timeout);
    }
  }
    

      
  $.togglelogin = function(dir) {
    if (dir == 'show') {
      $('div#login_head, form#login_fields').slideUp("normal");
      $('form#send_new, div#log_note').slideDown("normal");
    } else {
      $('div#login_head, form#login_fields').slideDown("normal");
      $('form#send_new, div#log_note').slideUp("normal");
    }
  }
  $('a#ask_new_pw').click(function() {
    $.togglelogin('show');
    $.loginboxtimeout('set');
    return false;
  });
    
  $('form#send_new')
  .data('over', false)
  .mouseenter(function(){
    $.loginboxtimeout('')
    $(this).data('over', true)
  })
  .mouseleave(function(){
    $.loginboxtimeout('set')
    $(this).data('over', false)
  });
         
  $('form#send_new input[type=text]')
  .data('infocus', false)
  .focus(function(){
    $.loginboxtimeout('');
    $(this).data('infocus', true)
  })
  .blur(function(){
    $(this).data('infocus', false);
    if (!$('form#send_new').data('over'))
      $.loginboxtimeout('set');
  });

  $('form#send_new input[type=submit]').click(function(){
    $.loginboxtimeout('');
    var textinput = $('form#send_new input[type=text]');
    var val = $.trim($(textinput).val());
         
    if (val == '') {
      $(textinput).css('border-color', 'red');
      return false;
    }
    $(textinput).css('border-color', '');
    $.json('user', 'newpassword', {
      email:val
    }, null, function(type, value){
      $('#log_note p.note').text(value);
      if (type != 'error') {
        $('form#send_new').slideUp("normal");
        setTimeout(function(){
          $('div#login_head, form#login_fields').slideDown("normal");
          $('#log_note p.note').text('');
        }, 5000);
      }
    });
         
    return false;
  });
        
  /*  END forgot password functions functions   */
            
      
  $('#top_mm li:last, #footer li:last, .side_menu ul li:last').addClass('last');
  $('#footer li.we').prev().addClass('last');
  
  
  $('a.thick_close').click(function() {
    tb_remove();
    return false;
  });
  

 
  $.unique_id = function() {
    return ((new Date()).getTime() + "" + Math.floor(Math.random() * 1000000)).substr(0, 18);
  };


  $.show_message = function(messagetype, value) {
    if ($('.messageparent').length > 0 || $('.messageprev').length > 0) {
      var uid = $.unique_id();
      var html = '<div id="' + uid + '" class="msg_' + messagetype + ' hidden"><p>'+ value +'</p></div>';
      if ($('.messageparent').length > 0)
        $('.messageparent').prepend(html);
      else
        $('.messageprev').after(html);
      $('#' + uid ).slideDown("normal",  function () {
        setTimeout("$('#" + uid + "').slideUp('normal', function (){$(this).remove()});", 10000);
      });
    } else {
      var text = messagetype + " message\n"
      + "\t" + value;
      alert(text);
        
    }
    
  }
    
  $.loading_indicator = function (boolInit, track, initialE) {
    if (boolInit) {
      $('#loading_indicator').show();
      if (track && $('#loading_indicator').length > 0) {
        $('#loading_indicator').data('track', true);
        indicator = $('#loading_indicator').get(0);
        indicator.track = function(e) {
          $('#loading_indicator').css({
            'top'  : (e.clientY + 10) + 'px',
            'left' : (e.clientX + 25) + 'px'
          });
        }
        if (initialE && initialE.clientY & initialE.clientX)
          indicator.track(initialE);
        $().mousemove(indicator.track);
                
      }
    } else {
      $('#loading_indicator').hide().css({
        'top' : '50%',
        'left': '50%'
      });
      if ($('#loading_indicator').data('track')) {
        $().unbind('mousemove', indicator.track);
        $('#loading_indicator').data('track', false);
      }
    }
  }
    
  
  $.json = function(controller, action, data, callback, show_message) {
    $.loading_indicator('init');
    var base = $('head base').attr('href');
    if (typeof(show_message) != 'function') {
      show_message = $.show_message;
    }

    $.post(base + '/json.php',
      $.extend(false, {
        controller : controller,
        action : action
      }, data) ,
      function(j, textStatus) {
        try {
          if (textStatus != 'success')
            throw new Error (textStatus);
                       
          else if (j.status == 'failure')
            throw new Error (j.error);
                       
          if (j.note)
            show_message('note', j.note);
                       
          if (j.success)
            show_message('success', j.success);
    
          if (typeof(callback) == 'function') {
            callback(j.params);
          }
        } catch(e) {
          if (e.message == 'no_auth' || e.message == 'illegal_request')
            location.reload(true);
          else
            show_message('error', e.message);
        }
        $.loading_indicator();
        
      },
      'json'
      );
  };

  $('#tools a.print').click(function(e) {
    e.preventDefault();
    window.print();
  });

  $('#tools a.bookmark').click(function() {
    var element = this;
    switch (true) {
      case ($.browser.mozilla):
      case ($.browser.safari):
      case ($.browser.opera):
        if ($._bookmarking_translations) {
          $.show_message('note', $._bookmarking_translations.press + ' Ctrl + D');
        } else {
          $.json('general', 'translate',
          {
            path : 'general/bookmarking',
            words : 'press,can_not_help_you_are_using_unknown_browser'
          },
          function(r) {
            $._bookmarking_translations = r.translations;
            $.show_message('note', $._bookmarking_translations.press + ' Ctrl + D');
          }
          );
        }
        break;
      case ($.browser.msie):
        window.external.AddFavorite(document.location.href, $('head title').text())
      default:
        if ($._bookmarking_translations) {
          $.show_message('note', $._bookmarking_translations.can_not_help_you_are_using_unknown_browser + ' Ctrl + D');
        } else {
          $.json('general', 'translate',
          {
            path : 'general/bookmarking',
            words : 'press'
          },
          function(r) {
            $._bookmarking_translations = r.translations;
            $.show_message('note', $._bookmarking_translations.can_not_help_you_are_using_unknown_browser + ' Ctrl + D');
          }
          );
        }
        break;
    }
        
    return false;
  });

  $.allow_only_symbols = function(val, symbols){
    var result = '';
    if (val == '')
      return false;
           
    for (var i = 0; i < val.length; i++) {
      temp = "" + val.substring(i, i+1);
      if (symbols.indexOf(temp) != '-1')
        result += temp;
    }
    return result;
  }

  $.fn.allow_only_digits = function(add) {
    $(this).keyup(function(e){
      $(this).val($.allow_only_symbols($(this).val(), (add)? "0123456789" + add : "0123456789"));
    });
  }
    
  $.is_valid_email_address = function(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
  }
    
  $('#top_mm a.findbooking').click(function() {
    tb_show('', '#TB_inline?height=110&width=370&inlineId=findbooking&modal=true');
    $(this).blur();
    return false;
  });
    
  $('#findbooking form').submit(function() {
    var id = $.trim($(this).find('input[name=id]').val());
    var pincode = $.trim($(this).find('input[name=pincode]').val());
    if (id == '') {
      $(this).find('input[name=id]').prev().css('color', 'red');
    } else if (pincode == '') {
      $(this).find('input[name=pincode]').prev().css('color', 'red');
    } else {
      $.json('booking', 'authorize',  {
        id :id,
        pincode : pincode
      }, function(j) {
        if (j.href) {
          document.location.href = j.href;
        } else {
          $.show_message('error', j.error);
        }
      });
    }
    return false;
  });
    
  $('a.back').click(function(){
    if ($(this).attr('href').length > 1) {
      return true;
    } else {
      window.history.back();
      return false;
    }
  });
  $.fn.textarea_maxlength = function() {
    $(this).keyup(function(){
      var max = parseInt($(this).prev().attr('maxlength'));
      var val = $(this).val();
      if(val.length > max){
        $(this).val(val.substr(0, max));
      }
      $(this).parent().find('span.counter span, span.counter2 span').text(val.length +  '/' + max)
    });
    return this;
  }
  $('input[maxlength]:not(.ignore) + textarea').textarea_maxlength();
  if ($("a.helpicon").length) {

    if (typeof($('.helpicon').tooltip) == 'function') {
      $('.helpicon').tooltip({
        delay: 300,
        showURL: false,
        bodyHandler: function() {
          return $(this).next('.help').html();
        }
      }).click(function(e){
        e.preventDefault();        
      });
    }
  }
});

onerror = function(msg, url, line_no) {
  return;
  errorMsg = "Error: " + msg + "\n";
  errorMsg += "URL: " + url + "\n";
  errorMsg += "Line: " + line_no + "\n\n";
  if (typeof ($.show_message) == 'function')
    $.show_message('error', errorMsg);
  else
    alert(errorMsg);
}

function gup(href, name ) {
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = href;
  var results = regex.exec( tmpURL );
  if( results == null )    return "";  else    return results[1];
}

function getCookie(name) {
  var value, p = document.cookie.split(';'), i, l, sp;
  for (i = 0, l = p.length; i < l; i++ ) {
    sp = p[i].split('=');
    if ($.trim(sp[0]) == name) {
      value = unescape($.trim(sp[1]));
      break;
    }
  }
  return value;
}

function setCookie(name, value, days) {
  var expires = ""
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    expires = "; expires="+date.toGMTString();
  }
  document.cookie = name + "=" + value + expires + "; path=/";
}

