document.observe("dom:loaded", function() { 
    
    if($('login-note')) {
        $('login-note').hide();
    }
    
    if($('login-email')) {
        init_login_display();   
    }
            
    if($('viewport')) {
        $$('a.mark-promotion-link', 'a.mark-promotion').invoke('observe', 'click', show_login_note);
        $('comment-link').observe('click', show_login_note);
        $$('a.close-login-note').invoke('observe', 'click', hide_login_note);
        $$('a.a_view_promo').invoke('observe', 'click', load_promotion);
        $$('a.a_promotion_content').invoke('observe', 'click', load_promotion_content);
        $('login-note-link').observe('click', focus_login_field);    
    }
       
});

function focus_login_field(event) {
    Event.stop(event);
    
    var field = $('login-email');
    field.value = "Type e-mail address";
    field.activate();
    
}

function init_login_display() {

    var pwd = $('login-password');
    var element = new Element('input', {'type': 'text', 'size': '32', 'maxlength': '32', 'value': 'Password', 'class': 'login-textfields', 'id': 'login-shadow'});

    pwd.replace(element);
    $('login-email').value = "E-mail";
    
    $('login-email').observe('focus', select_login_email);
    $('login-shadow').observe('focus', function(){
        $('login-shadow').replace(pwd);
        $('login-password').activate();
    });

}

function select_login_email() {
    this.clear();
}

// Loads a single promotion into the promotion viewer
function load_promotion(event) {
    Event.stop(event);
    
    var url = this.href;
    new Ajax.Request(url, {
      method: 'get',
      onSuccess: function(transport) {
          $('viewport_content').replace(transport.responseText);
          assign_click_promotion_options();
      }
    });
}

// Loads description, terms of use and map into the current promotion
function load_promotion_content(event) {
    Event.stop(event);

    var url = this.href;    
    new Ajax.Request(url, {
      method: 'get',
      onSuccess: function(transport) {
          $('viewport_content').replace(transport.responseText);
          assign_click_promotion_options();
      }
    });
}

function assign_click_promotion_options() {
    $('comment-link').observe('click', show_login_note);
    $$('a.mark-promotion').invoke('observe', 'click', show_login_note);
    $$('a.a_promotion_content').invoke('observe', 'click', load_promotion_content);
}

function show_login_note(event) {

    Event.stop(event);
    var note_type = this.rel;
    var note_message = '';
    var note_message_element = $('note-message');
    var cords = this.cumulativeOffset();
    var note = $('login-note');
    
    $(note).setStyle({
        left: (cords[0]-120)+'px',
        top: (cords[1]-80)+'px'
    });
    
    switch(note_type) {
        case "comment":
            note_message = "You must be logged in to comment a promotion.";
        break;
        case "share":
            note_message = "You must be logged in to share a promotion.";
        break;
        default:
            note_message = "You must be logged in to bookmark a promotion as a favorite.";
    }
    
    note_message_element.update(note_message);
    note.show();
}

function hide_login_note(event) {
    
    Event.stop(event);
    $('login-note').hide();
    if($F('login-email')) {
        $('login-email').clear();
    }
    
}
