var interval;

window.onload = function() {
    
    var links = document.getElementsByTagName('a');
    for (var i = 0; i < links.length; i++) {
        var href = links[i].getAttribute('href');
        if (href && href.substr(1, 8) == 'footnote') {
            links[i].onclick = fade_footnote(links[i]);
        }
    }
    
    var definition = document.getElementById('definition');
    var response = document.getElementById('response');
    var body = document.getElementsByTagName('body')[0];
    
    if (body.className == 'submit') {
        var form = document.getElementsByTagName('form')[0];
        form.onsubmit = validate_submit;
        document.getElementsByTagName('textarea')[0].focus();
    } else if (response) {
        yellowfade(response);
    }
    
    var chooser = document.getElementById('chooser');
    if (chooser) {
        var button = chooser.getElementsByTagName('input')[0];
        button.style.display = 'none';
        var select = chooser.getElementsByTagName('select')[0];
        select.onchange = function() {
            var id = select.options[select.selectedIndex].value;
            window.location = '/definition/' + id;
        };
    }
    
    var main = document.getElementById('main');
    if (main.className == 'join' || main.className == 'login') {
        var target = document.getElementById(main.className);
        target.getElementsByTagName('input')[0].focus();
    }
    
    var inputs = document.getElementsByTagName('input');
    inputs[inputs.length - 1].onclick = function() {
        form.onsubmit = function() { return true; }
    }
    
}

function validate_submit() {
    
    var name = document.getElementById('name');
    var website = document.getElementById('website');
    var email = document.getElementById('email');
    var definition = document.getElementById('definition');
    
    if (name.value.match(/^\W*$/)) {
        name.value = 'Anonymous';
    }
    
    if (website.value != '' && website.value.substr(0, 7) != 'http://') {
        website.value = 'http://' + website.value;
    }
    
    if (definition.value == '') {
        respond('Oops, you didn&rsquo;t write your definition yet.', 'definition');
        return false;
    } else if (!email.value.match(/.+@.+\..+/)) {
        respond('Oops, please enter a valid email address.', 'email');
        return false;
    }
    
    return true;
}

function yellowfade(target) {
    target.style.background = '#FF9';
    animate.init({
        target: target,
        duration: 1000,
        start_value: 153,
        end_value: 255,
        handler: function(member) {
            var blue = Math.round(member.value);
            target.style.background = 'rgb(255,255,' + blue + ')';
        },
        callback: function() {
            target.style.background = 'transparent';
        },
        motion: animate.tween.quad_in
    });
}

function respond(message, target) {
    var response = document.getElementById('response');
    response.innerHTML = '<span>' + message + '</span>';
    response.style.display = 'block';
    yellowfade(response.firstChild);
    var labels = document.getElementsByTagName('label');
    for (var i = 0; i < labels.length; i++) {
        if (labels[i].getAttribute('for') == target) {
            labels[i].className += ' alert';
        }
    }
}

function fade_footnote(link) {
    return function() {
        var id = link.getAttribute('href').substr(1);
        yellowfade(document.getElementById(id));
        return true;
    }
}

function findPos(obj) {
    // Thanks to ppk / quirksmode
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
