YAHOO.namespace('gaia.app.Login');
YAHOO.gaia.app.Login._processing = false;

YAHOO.gaia.app.Login.removeOldError = function() {
	var row = document.getElementById('usernamerow');
	var oldError = document.getElementById('loginerror');
	if (oldError) {
		YAHOO.util.Event.purgeElement(oldError);
		span = row.removeChild(oldError);
		var tmp;
		while (tmp = span.firstChild){
			span.removeChild(tmp);
		}
		return span;
	}
	return false;
};
YAHOO.gaia.app.Login.showError = function(errTxt) {
	var span;
	var row = document.getElementById('usernamerow');
	var span = YAHOO.gaia.app.Login.removeOldError();
	if (!span) {
		span = document.createElement('span');
		span.id = 'loginerror';
	}
	span.className = 'generalerror error';
	span.appendChild(document.createTextNode(errTxt));
	/**
	 * There's a bug in IE6 that will render content without a
	 * background specified heavily distorted. Since this is on
	 * a semi-transparent bg, we can't set its bg color here
	 */
	if (!(YAHOO.env.ua.ie==6)) {
		span.style.opacity = 0;
		span.style.filter = 'alpha(opacity = 0)';
		row.appendChild(span);
		var attributes = {opacity:{from:0,to:1}};
		var anim = new YAHOO.util.Anim(span,attributes,1);
		anim.animate();
	} else {
		row.appendChild(span);
	}
};

YAHOO.gaia.app.Login.toggleForm = function() {
	YAHOO.gaia.app.Login._processing = !YAHOO.gaia.app.Login._processing;
};
YAHOO.gaia.app.Login.hijackForm = function(evt) {
	YAHOO.util.Event.stopEvent(evt);	
	if (this.username.value == '') {
		YAHOO.gaia.app.Login.showError('Enter your username');
		return false;
	}
	if ((this.password && this.password.value == '') ||
	    (this.staffpassword && this.staffpassword.value == '')) {
		YAHOO.gaia.app.Login.showError('Enter your password');
		return false;
	}
	
	var originalPw = '';
	var isStaff = false;
    if(this.password) {
        originalPw = this.password.value;
        isStaff = false;
    } else {
        originalPw = this.staffpassword.value;
        isStaff = true;
    }
    
	/* Make sure a token was passed. This is for CHAP login */
	if (this.token && this.token.value) {
		try {
			var pw = YAHOO.gaia.util.Dom.addSlashes(originalPw);
			this.password.value = '';
			if (!this.chap) {
				var chap = document.createElement('input');
				chap.name = 'chap';
				chap.id = 'chap';
				chap.type = 'hidden';
				this.appendChild(chap);
			}
			/* Make sure both values are strings, otherwise the MD5 will differ from PHP's */
			pw += '';
			this.token.value += '';
			pw = MD5.hex(pw);		
			this.chap.value = MD5.hex(pw + this.token.value);
		} 
		/* In case something with the CHAP fails, we still want to do the login */
		catch(e) {
			if (this.chap) {
				this.removeChild(this.chap);
			}
			if(isStaff)
    			this.staffpassword.value = originalPw;
			else
    			this.password.value = originalPw;
		}
	}
	this.submit();
};


YAHOO.gaia.login.init = (function(){
    var EVENT = YAHOO.util.Event,
    DOM = YAHOO.util.Dom,
    MENUBAR = YAHOO.widget.MenuBar,
    MODULE = YAHOO.widget.Module,
    GET = YAHOO.util.Get;
    
    
    var reset = function(type){
        if(type == 'login'){
            var login = document.getElementById('login');
            login.className = '';
            document.getElementById('memberLoginBox').style.display = 'none';
        }else if(type == 'fb'){
            var fb = document.getElementById('fb');
            fb.className = '';
            document.getElementById('fb_box').style.display = 'none';
        }

    };
    
    EVENT.addListener('fb', 'click', function(e){
			EVENT.preventDefault(e);
            var fb = document.getElementById('fb');
            fb.className = 'selected';
            document.getElementById('fb_box').style.display = 'block';
            reset('login');
        });        
    EVENT.addListener('login', 'click', function(e){
            EVENT.preventDefault(e);
            var login = document.getElementById('login');
            login.className = 'selected';
            document.getElementById('memberLoginBox').style.display='block';
            reset('fb');
        });

    yShort('#username, #password').bind('focus', function(){
        if(this.value == this.defaultValue){
            yShort(this).removeClass('default-value');
        }
    });
    yShort('#username, #password').bind('blur', function(){
        if(this.value == this.defaultValue){
            yShort(this).addClass('default-value');
        }
    });
});

YAHOO.gaia.facebookRegistration.init = (function(api_key){
    var a_tag_fbconnect = document.getElementsByTagName("a");
    var a_tag_fbconnect_length = a_tag_fbconnect.length;
    
    for (var i=0;i<a_tag_fbconnect_length;i++) {
        if(a_tag_fbconnect[i].href.indexOf('register') > -1){
            //var query_params = a_tag_fbconnect[i].href.substr(a_tag_fbconnect[i].href.indexOf('register')+10,a_tag_fbconnect[i].href.length);
            a_tag_fbconnect[i].href = '#';
            a_tag_fbconnect[i].onclick = function(){YAHOO.gaia.facebook_connect_button.openFBLogin(api_key);};
        }
    }


});


YAHOO.util.Event.onAvailable('memberloginForm',function() {
	YAHOO.gaia.app.Login.loginForm = this;
	YAHOO.util.Event.addListener(this,'submit',YAHOO.gaia.app.Login.hijackForm);
	YAHOO.util.Event.addListener(this.signInButton,'mouseover',function() {YAHOO.util.Dom.addClass(this,'hover');},this.signInButton);
	YAHOO.util.Event.addListener(this.signInButton,'mouseout',function() {YAHOO.util.Dom.removeClass(this,'hover');},this.signInButton);
	YAHOO.gaia.login.init();
});

