// refactored 20090303 for more efficient wiring of events

var Site = {

	start: function(parent){		
		if ($('nav')) Site.sfHover(parent);
		if ($('feature')) Site.homepage(parent);
		Site.rollOver(parent);
		if (window.gecko) Site.formLayoutFix(parent);
		Site.ajax(parent);
		Site.titles(parent);
		Site.fetch(parent);
		Site.update(parent);
		Site.inputStyle(parent);
		Site.inPlace(parent);Site.tracker("UA-2196454-1");
		 //TB_init();
		 //Site.datePicker(parent);
		 Site.selections(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();	
			}
		});
	},

	album: function(album) {
		var obj = new Swiff('/assets/swf/album.swf', {
container: 'album',
    width: 960,
    height: 750,
    params: {
        wmode: 'transparent',
        base: ".",
	quality: "best",
	allowfullscreen: "false"
    },
    vars: {
	xmlfiletype: "Director",
	xmlfile: "http://www.stefangosatti.com/ssp_director/images.php?album=" + album,
	initialURL: escape(document.location)
    }
});
	},
	
	homepage: function() {
		
var obj = new Swiff('/assets/swf/slideshowpro.swf', {
container: 'feature-left',
    width: 298,
    height: 444,
    params: {
        wmode: 'transparent',
        base: ".",
	quality: "best",
	bgcolor: "#585858",
	allowfullscreen: "false"
    },
    vars: {
        paramXMLPath: "../xml/left_param.xml",
	initialURL: escape(document.location)
    }
});

var obj = new Swiff('/assets/swf/slideshowpro.swf', {
container: 'feature-right',
    width: 662,
    height: 444,
    params: {
        wmode: 'transparent',
        base: ".",
	quality: "best",
	bgcolor: "#585858",
	allowfullscreen: "false"
    },
    vars: {
        paramXMLPath: "../xml/right_param.xml",
	initialURL: escape(document.location)
    }
});
		
	},


	
	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');
				//if (typeof tinyMCE != "undefined") tinyMCE.triggerSave();
				var request = new Request.HTML({
					url:options[2],
					update: container,
					onSuccess :  function() {
						Site.start(container);
						//if (typeof tinyMCE != "undefined") TB_init();
					},
					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();
				});	
			});
			
		});		
	},
	
	titles: function(parent){
		var titles = $(parent).getElements('h1,h2,h3,h4,h5');
 
		var valid_titles = titles.filter(function(elem){
			return elem.get('rel')!=='skip';
		});
 
		valid_titles.each(function(title){
 
			var text = title.get('html');
			var dimension = title.getSize();
			var styles = title.getStyles('text-align',
                                                             'padding-top',
                                                             'padding-bottom',
                                                             'padding-left',
                                                             'padding-right',
                                                             'font-size','color',
                                                             'padding-left',
                                                             'line-height');
 
			var swf_width = dimension['x'].toInt() -
                                              ( styles['padding-left'].toInt() +
                                              styles['padding-right'].toInt() );
			var swf_height = dimension['y'].toInt() -
                                              ( styles['padding-top'].toInt() +
                                              styles['padding-bottom'].toInt() );
 
			var obj = new Swiff('/assets/swf/skia.swf', {
				width: swf_width ,
				height: swf_height ,
				container:title,
				params: {
					wmode: 'transparent'
				},
				vars: {
					txt: text,
					w: swf_width ,
					h: swf_height ,
					textalign: styles['text-align'],
					textcolor: styles['color'],
					offsetTop: styles['padding-top']
				}
			});
		})
	}


	
}



//if (typeof tinyMCE != "undefined") Site.editor();

window.addEvent('domready', function() {Site.start(document.body)});







