
var currentEmailBox = null;

function addReminder(anchor, toStopObserve, email, onsuccess) {
    var tr = anchor.up('tr');
    var templateId = parseInt(tr.id.substr(8), 10);
    var oldHtml = anchor.innerHTML;
    var onsuccessCallback = onsuccess;
    anchor.innerHTML = 'adding...';
    anchor.removeAttribute('href');
    showAjaxLoader(anchor);
    new Ajax.Request('addfromtemplate', { method: 'post', parameters: {'template':templateId, 'tzoffset': tzoffset, 'email': email}, onSuccess: function(transport) { 
            var result = transport.responseText.evalJSON()
            anchor.innerHTML = 'Edit reminder';
            anchor.href = 'editreminder?taskid=' + String(result['taskid']);
            anchor.stopObserving('click', toStopObserve);
            $('userid').innerHTML = String(result['userid']);
            var username = $('username');
            if (username.innerHTML.match(/Already a user/))
                $('username').innerHTML = result['email'] + '&nbsp;|&nbsp;<a href="logout">logout</a>';
            var usercount = result['usercount'];
            anchor.up('tr').down('.narrow1').innerHTML = String(usercount) + ' users';
            if (onsuccessCallback)
                onsuccessCallback();
            removeAjaxLoader(anchor);
        },
        onFailure: function(transport) { 
            alert('failed to add reminder');
            anchor.innerHTML = oldHtml;
            anchor.href = '#';
            removeAjaxLoader(anchor); 
        }
    });
    anchor.blur();
    return false;
}

function clickAddReminder(e) {
    Event.extend(e).stop();
    if ($('userid').innerHTML == '')
        return clickAddReminderNewUser(e);
    var anchor = Event.extend(e).element()
    return addReminder(anchor, clickAddReminder, '', null);
}

function emailBoxKeyPressed(e) {
    var element = Event.extend(e).element();
    if (e.keyCode == 13) {
        if ((element.value.indexOf('@') != element.value.lastIndexOf('@')) ||
            (element.value.indexOf('@') == -1) ||
            (element.value.indexOf(' ') != -1)) {
            alert('Bad email address');
            return false;
        }
        var anchor = element.up('td').down('a');
        addReminder(anchor, clickAddReminder, element.value, function() {
                if (!$('greenbox')) {
                    var greenbox = new Element('div', {className: 'greenbox', id: 'greenbox'});
                    greenbox.innerHTML = '<p>An account confirmation email has been sent to ' + element.value + '</span>.</p><a class="smallx" href="#" onclick="return closeBox(event,\'greenbox\')"></a>';
                    $('centered').appendChild(greenbox);
                }
            });
        element.up('div').remove();
        currentEmailBox = null;
    }
    else if (e.keyCode == 27) {
        element.up('div').remove();
        currentEmailBox = null;
    }
}

function clickAddReminderNewUser(e) {
    var anchor = Event.extend(e).element()
    var tr = anchor.up('tr');
    var td = anchor.up('td');
    var templateId = parseInt(tr.id.substr(8), 10);
    var newdiv = new Element('div', {'class': 'enteremail'});
    if (currentEmailBox)
        currentEmailBox.up('div').remove();
    var emailInput = new Element('input', {type:'text', value:'Enter your email'});
    emailInput.className = 'instantemail';
    emailInput.observe('keypress', emailBoxKeyPressed);
    newdiv.appendChild(emailInput);
    td.insert(newdiv, {after: anchor});
    emailInput.select();
    emailInput.focus();
    currentEmailBox = emailInput;
    return false;
}

function hotRemindersLoad() {
    var addLinks = $('hotlist').select('.narrow2>a');
    for (i=0; i<addLinks.length; i++)
        addLinks[i].observe('click', clickAddReminder);
}

Event.observe(window, 'load', hotRemindersLoad);
