// refactored 20090303 for more efficient wiring of events

var Site = {

	start: function(parent){
		if ($('nav')) Site.sfHover(parent);
                if (Browser.Engine.trident) Site.html5();
		Site.rollOver(parent);
		if (window.gecko) Site.formLayoutFix(parent);
		Site.ajax(parent);
		Site.fetch(parent);
		Site.update(parent);
		Site.inputStyle(parent);
		Site.inPlace(parent);
		Site.popup(parent);
		Site.imageTip(parent);
		if ($('sortable')) Site.sortable(parent);
                
	},

    popup: function(parent) {
	$(parent).getElements("a.popup").each(function(el) {
		el.addEvent('click',function(e){
			if (e) e.stop();
				ajaxFace = new LightFace.Request({
					url: el.get('href'),
					draggable:true,
					width: 400,
					height: 200,
					buttons: [
						{ title: 'Close', event: function() { this.close(); }, color: 'green' }
					],
					title: 'Events'
				}).open();
		});
	});
    },
    
    backgroundChange: function(pBackground) {
        var m = $('background');
        var fx = new Fx.Tween(m,{
            duration: 1500,
            onComplete: function(){ 
                    m.setStyle('background-image','url(' + pBackground + ')');
                    m.fade('in');
                }
            });
            fx.start('opacity',1,0);
        },


        html5 : function() {
            var header = new Element('header');
            var nav =  new Element('nav');
            var section =  new Element('section');
            new Element('article');
            new Element('aside');
            new Element('footer');
        },
        
	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"); }
		});
	},

	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);
				});
			}
		});
	},



	thumbs: function(){
		$$(".thumb").addEvents({
			'mouseover' : function() {
					this.getFirst('div').setStyle("display","block");
				},
			'mouseout' : function() {
				this.getFirst('div').setStyle("display","none");
			}
		});
	},


	selections: function() {
		var all = $('selectAll');
		var none = $('selectNone');
		if (all) all.addEvent('click', function(e) {
			e.stop();
			$$('.checkbox').each(function(el) { el.checked = true; });
		});
		if (none) none.addEvent('click', function(e) {
			e.stop();
			$$('.checkbox').each(function(el) { el.checked = false; });
		});
	},

	fader : function() {
		$$('.fader').each(function(el, i) {
			var ExampleFx = new Fx.Style(el, 'opacity', {
			wait: false,
			duration: 400,
			transition: Fx.Transitions.Quart.easeInOut});
				el.addEvent('mouseenter', function() { ExampleFx.start(1, 0.01); });
				el.addEvent('mouseleave', function() { ExampleFx.start(0.01, 1); });
		});
	},


	datePicker: function (parent) {

		new DatePicker('.date', {
		pickerClass: 'dashboard',
		inputOutputFormat: 'd/m/Y'
		});

	},
        
        






	inPlace: function(parent) {

		$(parent).getElements('.place').each(function(el) {
			var options = el.className.match(/place (\S+)/);
			var container = el.getParent('td');
			var content = el.innerHTML;
			el.addEvent('click', function() {
				el.style.display = 'none';
				var content = el.innerHTML;

				//textarea
				var control = new Element('span').injectInside(container);
				var textbox = new Element('input', {'type':'text', 'size':'40', 'class':'input', 'id':'txt', 'name':'txt', 'value': content}).injectInside(control);
				new Element('span').injectInside(control).innerHTML = '&nbsp';
				var save = new Element('input', {type:'button', value:'save'}).injectInside(control);
				var span = new Element('span').injectInside(control); span.innerHTML = ' or ';
				var cancel = new Element('a', {href : 'javascript:;'}).injectInside(control); cancel.innerHTML = 'cancel';


				save.addEvent('click', function() {
					var log = $('log').empty().addClass('ajax-loading');
					var request = new Request({
					url:options[1],
					onSuccess :  function() {
					},
					onComplete : function() {
						log.removeClass('ajax-loading');
					}
					}).post(container);

					el.style.display = 'block';
					el.innerHTML = textbox.value;
					control.dispose();

				});
				cancel.addEvent('click', function() {
					el.style.display = 'block';
					control.dispose();
				});
			});

		});
	},


	imageTip:function(parent) {
		new Tips('.image-tip',{fixed:true, offsets:{x:46, y:46}});
		$(parent).getElements('.image-tip').each(function(el){
			//el.store('tip:title','');
			el.store('tip:text', '<img class="icon" src="' + el.getAttribute('rel') + '"/>');
		});
		//var myTips = new Tips('.image-tip');
	},



	portfolio: function() {
		var obj = new Swiff('assets/swf/portfolio.swf', {
container: 'portfolio',
    width: 335,
    height: 160,
    params: {
        wmode: 'transparent',
        base: ".",
	quality: "best",
	allowfullscreen: "false"
    },
    vars: {
	contentXML: '../xml/content.xml',
	initialURL: escape(document.location)
    }
});


	},





	sortable: function(parent) {

            
		//var so = new Element('input', {type: 'hidden', id: 'sortOrder', name: 'sortOrder'}).inject('#sortable', 'after');
		var sb = new Sortables('#sortable tbody', {
		/* set options */

		handle: '.handle',
		/* initialization stuff here */
		initialize: function() {

		},
		/* once an item is selected */
		onStart: function(el) {
			el.addClass('highlight');
		},
		/* when a drag is complete */
		onComplete: function(el) {
			el.removeClass('highlight');
			var sortOrder = new Array();
			$$('#sortable tbody tr').each(function(el) { sortOrder.push(el.get('rel')); });
			$('sortOrder').value = sortOrder.join(",");

		}
	});
}


}




window.addEvent('domready', function() {Site.start(document.body)});

