function closeLogin() {
    document.getElementById('light').style.display='none';
    Effects.fade('fade', 60, 10, 200, 'Effects.onFaded()');
    document.getElementById('fade').style.display='none';
    set_misbehaving_element_visibilities( 'visible' );
}

function showLogin( event ) {
    event.preventDefault();
    set_misbehaving_element_visibilities( 'hidden' );
    document.getElementById('fade').style.display='block';
    Effects.fade('fade', 0, 60, 200, 'Effects.onFaded()');
    var light = document.getElementById('light');
    var elementWidth = ( getViewport().width - 400 ) / 2;
    light.style.left = elementWidth + "px"; 
    light.style.display='block';
    document.loginForm.elements[0].focus();
}

function set_misbehaving_element_visibilities( vis ) {
    var os = document.getElementsByTagName('object');
    for (var i in os) {
        if ( os[i].style ) os[i].style.visibility = vis;
    }
    var es = document.getElementsByTagName('embed');
    for (var i in es) {
        if ( es[i].style ) es[i].style.visibility = vis;
    }
}

function nextField(event) {
	if(event.keyCode=='13'){
		document.loginForm.elements[1].focus();
		return false;
	}
	return true;
}

function getViewport() {
	if ( typeof window.innerWidth != 'undefined' ) {
    		return { width : window.innerWidth, height : window.innerHeight };
        }
        else if ( typeof document.documentElement != 'undefined' &&
            typeof document.documentElement.clientWidth != 'undefined' &&
            document.documentElement.clientWidth != 0 ) {
	    	return { width : document.documentElement.clientWidth, height : document.documentElement.clientHeight };
        }
        else {
	    	return { width : document.getElementsByTagName('body')[0].clientWidth, height : document.getElementsByTagName('body')[0].clientHeight };
        }
}
        
Effects = {};

Effects.fade = function(id, opacStart, opacEnd, duration, callback) {
	
	Effects.changeOpacity(0, id);
	var speed = Math.round(duration/100);
	var timer = 0;
	
	if(opacStart > opacEnd) {
		for(var i=opacStart; i>=opacEnd; --i) {
			setTimeout("Effects.changeOpacity("+ i +", '"+ id +"', "+ opacEnd +", '"+ callback +"')", (timer*speed));
			timer++;
		}
	}
	else if(opacStart < opacEnd) {
		for(var i=opacStart; i<=opacEnd; ++i) {
			setTimeout("Effects.changeOpacity("+ i +", '"+ id +"', "+ opacEnd +", '"+ callback +"')", (timer*speed));
			timer++;
		}
	}
}

Effects.changeOpacity = function(opacity, id, endPoint, callback) {

	var _style = document.getElementById(id).style;
    _style.opacity = (opacity / 100);
    _style.MozOpacity = (opacity / 100);
    _style.KhtmlOpacity = (opacity / 100);
    _style.filter = "alpha(opacity=" + opacity + ")";

	if(opacity == endPoint && callback != null) {
		eval(callback);
	}
}

Effects.onFaded = function() {
	// Add callback code here
}

function customLoginSubmitEvent( event ) {
        var container = dojo.byId('login_return_message_container');
        if ( container ) {
            container.innerHTML = '';
            container.style.display = 'none';
        }
        event.preventDefault();
        dojo.io.bind({
            url: '/rpc_login/',
            handle: function(type, data, evt){
                if ( data.success ) {
                    window.location = data.location;
                }
                else {
                    var container = dojo.byId('login_return_message_container');
                    if ( container ) {
                        container.style.display = 'block';
                        var reason = data.reason ? data.reason : 'Unknown error. Please check your internet connection and try again.';
                        container.innerHTML = data.reason;
                    }
                    var pass = dojo.byId('login_password');
                    if ( pass ) pass.value = '';
                }
            },
            mimetype: "text/json",
            formNode: dojo.byId("loginForm")
       });

}

dojo.addOnLoad( function() {
    var lightb = dojo.byId('rte_login_link');
    dojo.event.connect( lightb, 'onclick', 'showLogin' );
    dojo.event.connect( dojo.byId('rte_participate_link'), 'onclick', 'showLogin' );
    
    var fade = dojo.byId('fade');
    dojo.event.connect( fade, 'onclick', 'closeLogin' );
    
    dojo.event.connect( dojo.byId('login_password'), 'onkeypress', function( event ) {
        if(event.keyCode=='13'){
            customLoginSubmitEvent( event );
        }
    } );
    dojo.event.connect( dojo.byId('light_login_button'), 'onclick', function( event ) {
        customLoginSubmitEvent( event );
    } );
} );


