/*
 * Author:   Metronet LTD (http://www.metronet.ie)
 * Requires: Mootools 1.3
 */
var Mnet = new Class();			
	
// Use this method for any duration to allow transitions to be turned off
Mnet.showTransitions = true;
Mnet.getDuration = function(duration) {
	return Mnet.showTransitions && duration > 0 ? duration : 0;
};

// Avoid console log errors if no console
if(!window.console)
	window.console = { log: function() {} };

/* Flash class */
Mnet.Flash = {
	// Flash installed?
	installed: (Browser.Plugins.Flash.version >= 6),
	// Create flash object
	object: function(container, src, width, height, params, vars, events) {
		var _this = Mnet.Flash;
	
		if(!_this.installed)
			return null;
	
		if(params == null) params = {};
		if(vars == null) vars = {};

		//if(!params.wMode)
		//	params.wMode = 'transparent';
		
		var options = {
		    width: width,
		    height: height,
			container: container,
		   	params: params, 
		    vars: vars,
			events: events
		};
	
		if(!src.match(/^\w+:\/\/|^\//))
			src = Mnet.rootUrl + 'flash/' + src + '.swf';
		
		if(params.makeVisible && $(container).getStyle('visibility') == 'hidden')
			$(container).setStyle('visibility', 'inherit');
	
		var o = new Swiff(src, options);
		return o;
	}
};

/* Flash titles */
Mnet.Flash.Titles = {
	// Incremental id variable
	currentId:0,
	// Load title
	loadItem: function(classPath, setup, root) {
		if(!root)
			root = document.body;
		root = $(root);

		if(!setup)
			setup = this.setup[classPath];
		
		var _this = this;
		var elements = root.getElements(classPath);
			
		elements.each(function(element) {
			// Make sure not already updated
			if(element.retrieve('Mnet.Flash.Titles.implemented'))
				return;
				
			if(!element.id)
				element.id = 'ft_auto_'+(++_this.currentId);
			
			var width = element.offsetWidth;
			var height = element.offsetHeight;
			var font = setup.font;
			//var title = element.get('text').replace(/\r/g, ''); // Remove \r to avoid double newlines in flash
			var title = element.get('html').replace(/\r|\n|^\s+|\s+$/g, '').replace(/\s{2,}/g, ' '); // Remove white space
			//console.log(':' + title + ':');
			// No title, skip it
			if(title == '')
				return;

			if(setup.texttransform == 'uppercase')
				title = title.toUpperCase();
			else if(setup.texttransform == 'lowercase')
				title = title.toLowerCase();
			
			var args = {
				title:title
			};
			for(var a in setup) {
				if(a != 'font' && a != 'texttransform' && a != 'setheight')
					args[a] = setup[a];
			}

			// Add link if set
			if(element.get('tag') == 'a')
				args.link = element.href;

			// Remove any padding
			width -= element.getStyle('padding-left').toInt() + element.getStyle('padding-right').toInt();;
			height -= element.getStyle('padding-top').toInt() + element.getStyle('padding-bottom').toInt();;
			
			if(setup.setheight) {
				element.setStyle('height', height + 'px');
			}
			
			if(Mnet.Testing.flashTitles)
				Mnet.Flash.object.delay(1000, Mnet.Flash, [element.id,font,width,height,{makeVisible:true,wMode:'transparent'},args]);
			else
				Mnet.Flash.object(element.id,font,width,height,{makeVisible:true,wMode:'transparent'},args);
			
			// Store so if matched again it won't update title again
			element.store('Mnet.Flash.Titles.implemented', true);
		});
	},
		
	// Load all titles on the page
	scanPage: function(root) {
		var _this = this;
		for(var classPath in this.setup) {
			this.loadItem(classPath, this.setup[classPath], root);
		}
	}
};

/* CSS class */
Mnet.Css = {
	// Get CSS (used by addRules)
	_getCss: function() {
		return (Browser.ie) ? this.style.styleSheet.cssText : this.style.get('text');
	},
	// Set CSS (used by addRules)
	_setCss: function(css) {
		if(Browser.ie)
			this.style.styleSheet.cssText = css;
		else
			this.style.set('text', css);
	},
	// Add styles to head of document
	addRules: function(css) {
		var prevCss = '';
		
		// Init style element if first time
		if(!this.style)
			this.style = new Element('style',{'type':'text/css'}).inject(document.getElement('head'));
		// Otherwise append to existing element
		else
			css = this._getCss() + '\n' + css;
		
		// Set new css
		this._setCss(css);
	}
};

/* Utility methods */
Mnet.Util = {
	// Fix PNG for IE
	pngFix: function(img) {
		if(Browser.ie && img.src.match(/\.png$/i)) {
			img.setStyle('filter', "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='image',src='" + img.src + "')");
		}
	}
};

// Rollover effect
Mnet.Rollovers = {
	add: function(id, values) {
		var el = $(id);
		el.store('Mnet.Rollovers', values);
		
		var _this = this;
		el.addEvents({
			mouseenter: function(e) { _this.over(this) },
			mouseleave: function(e) { _this.out(this) }
		});
	},
	
	getValues: function(el) {
		var values = el.retrieve('Mnet.Rollovers');
		
		if(!values.el) {
			var title = el.getElement('.roi-title');
			var image = el.getElement('.roi-image');
			var text = el.getElement('.roi-text');
			
			values.el = {
				title: title,
				image: image,
				text: text
			};
			
			values.org = {
				title: title.get('html'),
				image: image ? image.src : null,
				text: text.get('html')
			};
			
			el.store('Mnet.Rollovers', values);
		}
		
		return values;
	},
	
	over: function(el) {
		var values = this.getValues(el);
		values.el.title.set('html', values.title);
		if(values.el.image) {
			values.el.image.src = values.image;
		}
		values.el.text.set('html', values.text);
	},
	
	out: function(el) {
		var values = this.getValues(el);
		values.el.title.set('html', values.org.title);
		if(values.el.image) {
			values.el.image.src = values.org.image;
		}
		values.el.text.set('html', values.org.text);
	}	
};

// Init. method
Mnet.init = function(rootUrl, domain) {
	Mnet.rootUrl = rootUrl ? rootUrl : '';
	Mnet.domain = domain ? domain : '';

	// Skip transitions on ipod 
	if(Browser.Platform.ios)
		Mnet.showTransitions = false;

	// Hide galleries while loading
	//Mnet.Css.addRules("#images-holder { height:0; visibility:hidden; }");

	// Hide flash titles
	if(Mnet.Flash.installed && !Mnet.Testing.flashTitles)
		Mnet.Css.addRules(".flash-title { visibility:hidden; }");

	window.addEvent('domready', function() {
		Mnet.Flash.Titles.scanPage();
	});
};

// Testing flags
Mnet.Testing = {
	flashTitles:false // Set to false to avoid delay in setting the flash titles
}

/*
if(!window.sifr_color)
	window.sifr_color = 'darkgreen';
switch(window.sifr_color) {
case "black": 		sifr_color = '#59585e'; break;
case "brown":		sifr_color = '#4d3529'; break;
case "darkgreen": 	sifr_color = '#28722b'; break;
case "red": 		sifr_color = '#780400'; break;
case "yellow": 		sifr_color = '#e78000'; break;
case "grey":		sifr_color = '#095FB3'; break;
case "xmas": 		sifr_color = '#780400'; break;
default:			sifr_color = '#000000';
}
*/

// Flash titles setup
Mnet.Flash.Titles.setup = {
	//'h1 span':{font:"HelveticaLT26",sColour:"#4C4C4C",letterSpacing:-2,setheight:true},
	//'h2.text-g span':{font:"HelveticaLT17",sColour:"#737373",letterSpacing:0,setheight:true},
	//'h2 span':{font:"HelveticaLT17",textcolour:sifr_color,letterSpacing:0,setheight:true}
	// Modal Title
	'.modal-window .title':{font:'ft_myriad_pro',textsize:22,textcolour:'ffffff',textspacing:0,setheight:true},
	// Modal Button
	'.modal-window .flash-title-button':{font:'ft_myriad_pro',textsize:14,textcolour:'ffffff',textspacing:.1,setheight:true}	
};

