/** 
 * Created on Tue Nov 24 21:46:16 CET 2009
 * @copyright Copyright © 2009, Espen Hovlandsdal. All rights reserved.
 * @author Espen Hovlandsdal (mail@rexxars.com)
 * @package onskerseg.no
 **/
wish = {

	onLoad: function() {
		// Logged in?
		var loginBox = $('loginDropdown');
		if(loginBox) {
			var wrapper = $('loginDropdownWrapper');
			wish.loggedIn = false;
			wish.loginSlide = new Fx.Slide(loginBox, { 'wrapper': 'loginDropdownWrapper' }).hide();
			wrapper.removeClass('hidden');
			
			// Bind the login button to the login dropdown
			$('wishLogin').addEvent('click', function(e) { 
				e.stop();
				wish.loginSlide.toggle().chain(function() {
					if(!this.open) return;
					var w = this.wrapper;
					w.setStyle('height', w.getStyle('height').toInt() + 10);
				});
			});
			
			// Load required facebook stuff
			new Asset.javascript('http://static.new.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/nb_NO', {
				onload: function() {
					// Bind the facebook login button
					$('fbLoginLink').addEvent('click', function(e) {
						e.stop();
						FB.init("042030ac36da6b2530d45168ec631ec4", "/connect/xd_receiver.htm", {"reloadIfSessionStateChanged":true});
						FB.ensureInit(function() { FB.Connect.requireSession(); });
					});
				}
			});

		} else {
			// Send keepalive heartbeats
			wish.heartbeat = new Request({ method: 'get', url: BASE_URL + '/data/heartbeat.php', initialDelay: 10000, delay: 30000 }).startTimer();
		}
		
		// Load registration
		if(WISH_SECTION == 'user/register') wish.register.bind();
		if(WISH_SECTION == 'user/bindfb') wish.register.bindUsernameCheck();
	},
	
	register: {
		usernameRequest: new Request.JSON({
			url: BASE_URL + "/data/usernameTaken.php",
			link: "cancel",
			onSuccess: function(res) {
				var	un = $('register_username'), url = $('register_url');
				if(res.available) {
					un.removeClass('taken').addClass('available');
					url.set('text', un.value);
				} else {
					un.removeClass('available').addClass('taken');
					url.set('text', '');
				}
			}
		}),
		
		checkUsername: function() {
			wish.register.usernameRequest.get({username: this.value});
		},
		
		bindUsernameCheck: function() {
			var un = $('register_username');
			wish.register.observer = new Observer(un, wish.register.checkUsername.bind(un), { delay: 250 });
			if(un.value.length) wish.register.checkUsername.run(null, un);
		},
		
		bind: function() {
			new FormCheck('registerUserForm');
			wish.register.bindUsernameCheck();
			var pass = $('register_password'), conf = $('register_password_confirm'), mail = $('register_email');
			conf.addEvent('keyup', function() {
				if(this.value == pass.value) {
					this.addClass('available');
					pass.addClass('available');
				} else {
					this.removeClass('available');
					pass.removeClass('available');
				}
			});
			mail.addEvent('keyup', function() {
				if(this.value.test(/^[a-z0-9._%-\+]+@[a-z0-9.-]+\.[a-z]{2,4}$/i)) {
					this.addClass('available');
				} else {
					this.removeClass('available');
				}
			}).fireEvent('keyup');
		}
	},
	
	heartbeat: null
	
};

window.addEvent('domready', wish.onLoad);