// refactored 20090303 for more efficient wiring of events

var Site = {

	start: function(parent){		
		if ($('nav')) Site.sfHover(parent);	
		Site.rollOver(parent);
		if (window.gecko) Site.formLayoutFix(parent);
		Site.ajax(parent);
		Site.fetch(parent);
		Site.update(parent);
		Site.inputStyle(parent);
	},

	tracker: function(code) {
		new Asset.javascript('https://ssl.google-analytics.com/ga.js', {
			id: 'gaTracker',
			onload: function() {
				var pageTracker = _gat._getTracker(code);
				pageTracker._initData();
				pageTracker._trackPageview();	
			}
		});
	},
	
	inputStyle:function(parent) {
	$(parent).getElements(".input").addEvents({
			'focus' : function() { this.addClass("focus"); },
			'blur' : function() { this.removeClass("focus"); }
		});
	},
	
	rollOver : function(parent) {
		$(parent).getElements("img").each( function(el) {
			if (el.hasClass("rollover")) {
			el.setAttribute("xsrc",el.getAttribute("src"));
			el.addEvents({
				'mouseover' : function() { this.setAttribute('src',this.className.match(/rollover (\S+)/)[1]); },
				'mouseout' : function() { this.setAttribute('src',this.getAttribute("xsrc")); }
			});
			}
		});
	},	

	formLayoutFix : function(parent) {
	$(parent).getElements('.form label').each( function(el) {
		var content = el.getText();
		el.empty();
		el.adopt(new Element('span', {
			'styles' : {
				'display' : 'block',
				'width' : el.getStyle('width')
			}		
		}).setText(content));
		el.setStyle('display','-moz-inline-box');
		});	
	},
		
	sfHover: function(parent){
		$(parent).getElements("#nav li").addEvents({
			'mouseover' : function() { this.addClass("sfhover"); },
			'mouseout' : function() { this.removeClass("sfhover"); }
		});
	},
	
		video: function() {
		
		var obj = new Swiff('/assets/swf/wiab_network_map.swf', {
		container: 'video',
		id:'ssp',
		width: 550,
		height: 400,
		params: {
		    wmode: 'transparent',
		    base: ".",
			quality: "best",
			bgcolor: "#333639",
			allowfullscreen: "true",
			allowScriptAccess: "always"
		    },
		vars: {
			useExternalInterface: "true",
						expressinstall : "/assets/swf/expressInstall.swf",
			version : "10"
		}
		});
	},
        
        
	ajax:function(parent) {
			
		$(parent).getElements('.ajax').each(function(el) {
			var id = el.id;
			var container = el.getParent('div.container');
			if (container) {
				var options = el.className.match(/ajax \[(.*)\] (\S+)/);
				el.addEvent(options[1], function(e) {
				e = new Event(e).stop();
				if (el.getProperty('type') == 'button') el.setProperty('disabled','disabled');
				var log = $('log').empty().addClass('ajax-loading');
				var request = new Request.HTML({
					url:options[2],
					update: container,
					onSuccess :  function() {
						Site.start(container);
					},
					onComplete : function() {
						log.removeClass('ajax-loading');
					}
					}).post(container);
				});
			}
		});
	},
	

	fetch:function(parent) {	
		$(parent).getElements('.fetch').each(function(el) {
				var options = el.className.match(/fetch \[(.*)\] (\S+)/);
				el.addEvent('click', function(e) {
				e = new Event(e).stop();
				var log = $('log').empty().addClass('ajax-loading');
				var request = new Request.HTML({
					url:options[2],
					evalScripts:true,
					update: options[1],
					onSuccess :  function() { 
						Site.start(options[1]);
					},
					onComplete : function() {
						log.removeClass('ajax-loading');
					}
					}).get();
				});
		});
	},

	update:function(parent) {	
		$(parent).getElements('.update').each(function(el) {
			var id = el.id;
			var container = el.getParent('div.container');
			if (container) {
				var options = el.className.match(/update \[(.*)\] (\S+)/);
				el.addEvent('change', function(e) {
				e = new Event(e).stop();
				var log = $('log').empty().addClass('ajax-loading');
				var request = new Request.HTML({
					url:options[2],
					evalScripts:true,
					update: options[1],
					onSuccess :  function() {
						Site.start(options[1]);	
					},
					onComplete : function() {
						log.removeClass('ajax-loading');
					}
					}).post(container);
				});
			}
		});
	}

	
}


window.addEvent('domready', function() {Site.start(document.body)});







