var App = window.App||{};


function getStyle(e,p){
	var s;
	if(typeof e=='string'){
		e=document.getElementById(e);
	}
	if(e.currentStyle){
		p=p.camelize();
		s = e.currentStyle[p];
		if(s=='auto'&&p=='height'){
			s=e.offsetHeight;
		}
		if(s=='auto'&&p=='width'){
			s=e.offsetWidth;
		}
	}else if(document.defaultView && document.defaultView.getComputedStyle){
		s = document.defaultView.getComputedStyle(e,"").getPropertyValue(p);
	}
	return s;
}

App.ReplaceImages = function(){
	return {
		url : "/img/site/headings/headings.php",
		initialize : function(){
			/*this.replace($$('.h10'), {size: 10, font: "FolioBTBolCon.ttf"});
			this.replace($$('.h10a'), {size: 10, font: "FolioBTBolCon.ttf", width: "auto"});
			this.replace($$('.h11a'), {size: 11, font: "FolioBTBolCon.ttf", width: "auto"});
			this.replace($$('.h20a'), {size: 20, font: "FolioBTBolCon.ttf", width: "auto"});*/

			$$('.heading').each(function(element){
				var font = "FolioBTBolCon.ttf";
				var bg = null;
				var className = element.className;
				var align = 'l';
				if(className.indexOf(' b')!=-1){
					var bg = className.split(' ')[2].replace('b', '');
				}

				if(className.indexOf('alignRight')!=-1){
					align = 'r';
				}

				if(className.indexOf('h10')!=-1){
					this.replace(element, {size: 10, font: font, background: bg});
					return;
				}
				if(className.indexOf('h11')!=-1){
					this.replace(element, {size: 11, font: font, background: bg});
					return;
				}							
				if(className.indexOf('h12')!=-1){
				    var size = (LOCALE=="en"||LOCALE=="us"||LOCALE=="au") ? 10 : 11;
				    var tracking = (LOCALE=="en"||LOCALE=="us"||LOCALE=="au") ? 2 : 1;
					this.replace(element, {size: size, font: font, background: bg, tracking: tracking});
					return;
				}				
				if(className.indexOf('h13')!=-1){
					this.replace(element, {size: 11, font: font, background: bg});
					return;
				}				
				if(className.indexOf('h14')!=-1){
					this.replace(element, {size: 14, font: font, background: bg});
					return;
				}
				
				if(className.indexOf('h20')!=-1){
					this.replace(element, {size: 20, font: font, background: bg});
					return;
				}
				
				if(className.indexOf('c10')!=-1){
					this.replace(element, {size: 9, font: "COMICPRO.TTF", background: bg, align: align, tracking: "1"});
					return;
				}	

			}, this);

		},
		replace : function(element, options){
			if(!Element.hasClassName(element, 'replaced')){
				Element.addClassName(element, 'replaced');
				var color = element.getStyle('color').parseColor('#000000').replace('#','');
				if(options.background){
					var bgcolor = options.background;
				}else{
					var bgcolor = element.getStyle('background-color').parseColor('#000000').replace('#','');
				}
				element.style.backgroundColor = 'transparent';
				
				//alert(element.scrollWidth);
				
				//var width = element.offsetWidth-parseInt(element.getStyle('padding-left'), 10)-parseInt(element.getStyle('padding-right'), 10);
				
				var width = element.offsetWidth-parseInt(element.getStyle('padding-left'), 10)-parseInt(element.getStyle('padding-right'), 10);
				var width = parseInt(element.getStyle('width'), 10);        

        if(window.opera){
          width = width||132;
        }
        

				if(document.all){
					var padding = parseInt(element.getStyle('padding-left'), 10)+parseInt(element.getStyle('padding-right'), 10);
				}else{
					var padding = 0;
				}

				//var d = "Width: "+width+" / Padding: "+padding+" / Total: "+(width-padding)+"<br />";

				//var debug = $('debug');
				//debug.innerHTML = debug.innerHTML +d;


				//-parseInt(element.getStyle('padding-left'), 10)-parseInt(element.getStyle('padding-right'), 10);

				var text = this.getText(element);
				for(var j=0; j<element.childNodes.length; j++){
					element.removeChild(element.firstChild);
				}
				//alert(text);
				var url = this.url+"?t="+escape(text.toUpperCase())+"&c="+color+"&b="+bgcolor+"&s="+options.size+"&f="+options.font;
				if(!options.width){
					url=url+'&w='+parseInt((width),10);
				}
				if(options.align){
					url=url+'&a='+options.align;
				}
				if(document.all){
					url=url+'&br=ie';
				}
				if(options.tracking){
				    url=url+'&tr='+options.tracking;
				}

				//debug.innerHTML = debug.innerHTML + url +"<br />";


				var holding = new Image();
				
				//alert(url);

				if(Client.browser=="Explorer" && Client.version=="6"){
					App.ReplaceImages.drawIE(url, element, text, width);
				}else{
					holding.onload = function(){
						App.ReplaceImages.draw(url, element, text, width, this.height);
					}
					/* Debug stuff removed */
					holding.src=url;
				}



			}
		},
		getText : function(element){
			if(typeof element == "string"){
				return element;
			}else{
				if(typeof element == "undefined"){
				return element;
			}
	    	}
	    	var text = "";
	    	var kids = element.childNodes;
	    	for(var i=0;i<kids.length;i++) {
	    		if(kids[i].nodeType == 1){
	    			text += this.getText(kids[i]);
		    	}else{
	  	  		if(kids[i].nodeType == 3){
	    				text += kids[i].nodeValue;
	    			}
	    		}
		  }
		  return text;
		},
		drawIE : function(src, element, text, width, height){
			var image = document.createElement('img');
			image.width=width;
			image.style.width=width+'px';
			image.style.display='block';
			image.alt = text;
			image.src = src;
			element.appendChild(image);
			element.style.visibility = 'visible';
		},
		draw : function(src, element, text, width, height){
			var image = document.createElement('strong');
			image.style.backgroundPosition = '0 0';
			image.style.backgroundRepeat = 'no-repeat';
			image.style.backgroundImage = "url("+src+")";
			image.style.width = width+'px';
			image.style.height = height+'px';
			image.style.display='block';
			image.style.overflow='hidden';
			image.style.textIndent='-5000px';
			image.innerHTML = text;
			element.appendChild(image);
			element.style.visibility = 'visible';
		}
	};
}();

App.Lightbox = function(){
	return {
		initialize : function(options){
			this.images = $$('a.lightbox');
			if(this.images.length!=0){
				this.lightbox = Element.fromHTML('<div><div class="lightbox"><table cellpadding="0" cellspacing="0"><tr><td class="tl"></td><td class="h"></td><td class="tr"></td></tr><tr><td class="cl"></td><td class="c"><div class="dialogue_inner"><div class="image"><div class="image_inner"><div class="loader"></div><img /></div></div><div class="controls"><a href="#" class="previous">Previous</a><a href="#" class="next">Next</a><a href="#" class="rad">'+RAD_VOTE+'</a></div><div class="title">Title</div><div class="close"><a href="#" class="close">Close</a></div></div></td><td class="cr"></td></tr><tr><td class="bl"></td><td class="b"></td><td class="br"></td></tr></table></div></div>');
				this.lightbox.id = 'lightbox';
				document.body.appendChild(this.lightbox);
				$(this.lightbox).hide();
				this.image = this.lightbox.getElementsByTagName('img')[0];
				$(this.image).hide();
				this.controls = this.lightbox.getElementsByClassName('controls')[0];
				this.controls.hide();
				this.title = this.lightbox.getElementsBySelector('div.title')[0];
				this.title.hide();
				this.close = this.lightbox.getElementsBySelector('a.close')[0];
				this.next = this.lightbox.getElementsByClassName('next')[0];
				this.prev = this.lightbox.getElementsByClassName('previous')[0];
				this.rad = this.lightbox.getElementsByClassName('rad')[0];
				this.imageDiv = this.lightbox.getElementsByClassName('image_inner')[0];
				this.loader = this.lightbox.getElementsByClassName('loader')[0];
				this.loader.hide();
				this.overlay = new Element('div', {id: 'overlay'});
				this.overlay.hide();
				document.body.appendChild(this.overlay);

				this.options = Object.extend({
					defaultGroup: "default"
				}, options||{});
				this.groups = $H({});
				this.addListeners();

				$A(['/img/site/layout/lightbox_r.png',
					'/img/site/layout/lightbox_tr.png',
					'/img/site/layout/lightbox_tr.png',
					'/img/site/layout/lightbox_b.png',
					'/img/site/layout/lightbox_bl.png',
					'/img/site/layout/lightbox_br.png',
					'/img/site/layout/lightbox_close.png'
				]).each(function(image){
					var img = new Image();
					img.src = image;
				});
			}


		},
		addListeners : function(){
			this.nextListener = this.showNext.bindAsEventListener(this);
			this.prevListener = this.showPrev.bindAsEventListener(this);
			this.hideListener = this.hide.bindAsEventListener(this);
			this.showListener = this.show.bindAsEventListener(this);
			this.next.observe('click', this.nextListener);
			this.prev.observe('click', this.prevListener);
			this.close.observe('click', this.hideListener);
			var images = $$('a.lightbox');
			this.addImages(images);
			if(this.rad){
				this.rad.observe('click', App.Rad.send.bindAsEventListener(App.Rad));
			}
		},
		addImages : function(images){
			$A(images).each(function(image, i){
				image.identify();
				var rel = image.rel||this.options.defaultGroup;
				if(!this.groups.get(rel)){
					this.groups.set(rel, $H({}));
				}
				this.groups.get(rel).set(image.id, $H({
					group : rel,
					href : image.href,
					title : image.title,
					index: this.groups.get(rel).size()
				}));
				image.observe('click', this.showListener);
			}, this);
		},
		removeImages : function(images){
			$A(images).each(function(image, i){
				var rel = image.rel||this.options.defaultGroup;
				this.groups.get(rel).unset(image.id);
				image.stopObserving('click', this.showListener);
			}, this);
		},
		addGroup : function(group, images){
			this.groups.set(group, $H(images));
		},
		show : function(e){
			Event.stop(e);
			this.hideSelects();
			this.lightbox.setStyle({
				opacity : 1
			});
			this.imageDiv.setStyle({
				width: '200px',
				height: '170px'
			});
			this.image.hide();
			this.loader.show();
			this.lightbox.show();

			var width = Client.width();
			var height = Client.height();
			var dimensions = this.lightbox.getDimensions();

			var l = (width/2)-(dimensions.width/2)+'px';
			var t = (height/2)-(dimensions.height/2)+Client.scrollTop()+'px';

			this.lightbox.setStyle({
				top : t,
				left : l
			});
			var image = Event.findElement(e, 'a');
			var rel = image.rel||this.options.defaultGroup;
			var id = image._id||image.id;
			var image = this.groups.get(rel).get(id);
			this.lightbox.show();
			this.update(image);
		},
		showNext : function(e){
			Event.stop(e);
			var image = this.groups.get(this.current.get('group')).find(function(img){
				return img.value.get('index') == (this.current.get('index')+1);
			}, this);
			this.update(image.value);
		},
		showPrev : function(e){
			Event.stop(e);
			var image = this.groups.get(this.current.get('group')).find(function(img){
				return img.value.get('index') == (this.current.get('index')-1);
			}, this);
			this.update(image.value);
		},
		update : function(image){
			this.current = image;
			this.title.hide();
			this.controls.hide();
			new Effect.Opacity(this.image, {duration: 0.5, from: 1, to :0});
			var img = new Image();
			img.onload = function(){
				image.set('width', img.width);
				image.set('height', img.height);
            	this.onload(image);
            }.bind(this);
		    img.src=image.get('href');
		},
		onload : function(image){
			var dimensions = this.lightbox.getDimensions();
			var _dimensions = this.imageDiv.getDimensions();

			var left = (Client.width()/2)-((dimensions.width-_dimensions.width+image.get('width'))/2);
			var top = (Client.height()/2)-((dimensions.height-_dimensions.height+image.get('height'))/2);

			top = top + Client.scrollTop();

			if(top<10){
				top=10;
			}
			if(left<10){
				left=10;
			}

			var str = 'left : '+left+'px; top: '+top+'px;';
			var _str = 'width : '+image.get('width')+'px; height : '+image.get('height')+'px;';

			new Effect.Parallel([new Effect.Morph(this.lightbox, {style : str}), new Effect.Morph(this.imageDiv, {style: _str})],
				{
					afterFinish : function(){
						(image.get('index')>0) ? this.prev.show() : this.prev.hide();
						(image.get('index')<(this.groups.get(image.get('group')).size()-1)) ? this.next.show() : this.next.hide();
						this.controls.show();

						var id = image.get('href').split('/');
						id = id[id.length-1].split('_')[0];

						App.Rad.bind(id, 'images', this.rad);

						this.title.innerHTML = COUNT.evaluate({
							index: image.get('index')+1,
							total : this.groups.get(image.get('group')).size(),
							caption : image.get('title')
						});
						this.title.show();
						this.image.src=image.get('href');
						this.image.setStyle({opacity : 0});
						this.loader.hide();
						this.image.show();
						new Effect.Opacity(this.image, {duration: 0.5, from: 0, to: 1});
					}.bind(this)
				}
			);
		},
		hide : function(e){
			if(e){
				Event.stop(e);
			}

			new Effect.Opacity(this.lightbox, {
				duration: 0.5,
				from: 1,
				to: 0,
				afterFinish : function(){
					this.lightbox.hide();
					this.showSelects();
				}.bind(this)
			});
		},
		hideSelects : function(){
			if(!document.all) return;
			$A(document.getElementsByTagName('select')).each(function(select){
				$(select).hide();
			});
		},
		showSelects : function(){
			if(!document.all) return;
			$A(document.getElementsByTagName('select')).each(function(select){
				$(select).show();
			});
		}
	}
}();

App.ImageViewer = Class.create();
App.ImageViewer.prototype = {
	initialize : function(element, options){
		if(!element){
			return false;
		}
		this.index = 1;
		this.element = $(element);
		this.element.identify();
		var _id = this.element.id;
		this.options = options;
		this.locked = false;
		this.parentNode = this.element.up();
		//this.images = this.element.getElementsBySelector('a.'+options.className);
		this.ul = this.element.getElementsBySelector('ul').first();
		this.images = $A(this.ul.getElementsByTagName('a'));
		this.ul.setStyle({
			marginTop: 0,
			marginLeft: 0
		});
		this.totalEl = this.element.getElementsBySelector('p.total').first();

		this.width = 0;
		this.height = 0;
		this.images.each(function(node, i){
			$(node).identify();
			var image = node.getElementsByTagName('img')[0];
			this.width += image.offsetWidth+this.options.imagePadding;
			this.height += image.offsetHeight;
			node.index = i;
		}.bind(this));
		
		this.width = this.images.length*(this.options.imageWidth+this.options.imagePadding);

		if(this.images.length>3){
			this.addListeners();
		}else{
		   if( typeof( this.element.getElementsBySelector('div.controls') ) != 'undefined' &&
			typeof( this.element.getElementsBySelector('div.controls').first() ) != 'undefined' )
			this.element.getElementsBySelector('div.controls').first().hide();
		}

		if(_id == 'chooser'){
			var images = $H({});
			this.images.each(function(image, i){
				if(image.href.indexOf('.')!=-1){
					href = image.select('img')[0].src.replace('scrollersmall', 'lightbox');
				}else{
					href = image.href;
				}
				image.rel = _id;
				images.set(image.id, $H({
					group : 'scroller_'+_id,
					href : href,
					title : image.title,
					index: i
				}));
			}, this);
			App.Lightbox.addGroup('scroller_'+_id, images);
			$('chooser_image_link')._id = this.images[0].id;
			$('chooser_image_link').rel = 'scroller_'+_id;
		}

		/*this.images.each(function(node, i){
			$(node).addClassName('lightbox');
		}, this);*/
		if(this.options.centre===true){
			this.ul.setStyle({
				marginLeft: -(this.width/2)+"px"
			});
		}
		if(this.options.callback){
			Event.observe(this.ul, 'click', this.onclick.bindAsEventListener(this));
		}
		if(this.options.tooltip){
			var _tooltip = Element.fromHTML('<div class="tooltip"><div class="t"></div><div class="c"></div><div class="f"></div></div>');
			this.tooltip = $(_tooltip);
			this.tooltipInner = this.tooltip.select('div.c')[0];
			this.tooltip.hide();
			document.body.appendChild(this.tooltip);
			this.images.each(function(t){
				var tooltip = $(t).select('img')[0];
				Event.observe(tooltip, 'mouseover', this.showTooltip.bindAsEventListener(this));
				Event.observe(tooltip, 'mouseout', this.hideTooltip.bindAsEventListener(this));
				Event.observe(tooltip, 'mousemove', this.moveTooltip.bindAsEventListener(this));
			}.bind(this));
		}
	},
	addListeners : function(){
		Event.observe(this.element.getElementsBySelector('a.next').first(), 'click', this.scroll.bindAsEventListener(this));
		Event.observe(this.element.getElementsBySelector('a.prev').first(), 'click', this.scroll.bindAsEventListener(this));
	},
	showTooltip : function(e){
		Event.stop(e);
		var element = Event.element(e);
		if(element.tagName.toLowerCase()=='img'){
			if(element.title){
				this.tooltipInner.innerHTML = element.title;
				this.moveTooltip(e);
				this.tooltip.show();
			}
		}
	},
	hideTooltip : function(e){
		Event.stop(e);
		var element = Event.element(e);
		if(element.tagName.toLowerCase()!='a'){
			this.tooltip.hide();
		}
	},
	moveTooltip : function(e){
		Event.stop(e);
		var mouse_x = Event.pointerX(e);
		var mouse_y = Event.pointerY(e);
		var dimensions = Element.getDimensions(this.tooltip);
		var element_width = dimensions.width;
		var element_height = dimensions.height;
	  	if ((element_width + mouse_x)>=(this.getWindowWidth() - this.options.min_distance_x)){
			mouse_x = mouse_x - element_width;
			mouse_x = mouse_x - 5;
	  } else {
		  mouse_x = mouse_x + 5;
	  }

	  if ( (element_height + mouse_y) >= ( this.getWindowHeight() - this.options.min_distance_y) ){ // too big for Y
		  mouse_y = mouse_y - element_height;
	    // apply min_distance to make sure that the mouse is not on the tool-tip
		  mouse_y = mouse_y - 5;
	  } else {
		  mouse_y = mouse_y + 5;
	  }

	  // now set the right styles
		this.tooltip.setStyle({
			position:'absolute',
			top: mouse_y + 0 + "px",
			left: mouse_x + 0 + "px",
			zindex: 100
		});
	},
  	getWindowHeight: function(){
    	var innerHeight;
	  	if (navigator.appVersion.indexOf('MSIE')>0) {
		  	innerHeight = document.body.clientHeight;
    	} else {
		  	innerHeight = window.innerHeight;
    	}
    	return innerHeight;
  	},
	getWindowWidth: function(){
    	var innerWidth;
	  	if (navigator.appVersion.indexOf('MSIE')>0) {
		  innerWidth = document.body.clientWidth;
    	} else {
			innerWidth = window.innerWidth;
		}
    	return innerWidth;
  	},
	scroll : function(e){
		var anim, property;
		Event.stop(e);
		if(this.locked===false){
			this.locked = true;
			var direction = Event.element(e).className;
			property = 'margin-left';
			var offset = this.options.imageWidth+this.options.imagePadding;
			var maxOffset = offset*this.options.imageCount;
			
			if(direction=='next'){
				anim=parseInt(this.ul.style.marginLeft)-(offset*this.options.imageCount);
				if(-anim>parseInt(this.width)-maxOffset){
					anim=-(parseInt(this.width)-maxOffset);
				}else{
					this.index = this.index+1;
				}
			}else if(direction=='prev'){
				anim=parseInt(this.ul.style.marginLeft)+(offset*this.options.imageCount);
				if(anim>0){
					anim=0;
				}else{
					this.index = this.index-1;
				}
			}
			var str = property+':'+anim+'px;'
			new Effect.Morph(this.ul, {
				style : str,
				afterFinish : function(){
					this.locked = false;
				}.bind(this)
			});
			if(this.totalEl){
				this.totalEl.innerHTML = COUNT.evaluate({
					index: this.index,
					total : this.images.length
				});
			}

		}
	},
	onclick : function(e){
		Event.stop(e);
		var element = Event.element(e);
		while(element.tagName.toLowerCase()!='a'){
			element = element.parentNode;
		}
		this.options.callback(element, element.index, this.images.length);
	}

};

App.Accordion = Class.create();
App.Accordion.prototype = {
	initialize : function(element, options) {
		this.element = $(element);
		if(this.element){
			var selected = null;
			var lis = this.element.getElementsBySelector('li.children');
			lis.each(function(li){
				if(li.parentNode==this.element){
					var s = li.getElementsByTagName("ul")[0];
					Element.hide(s);
					var link = li.getElementsByTagName('a')[0];
					Event.observe(link, 'click', function(event){
						Event.stop(event);
						if(selected){
							if(s!=selected){
								new Effect.Parallel([
									new Effect.BlindUp(selected),
									new Effect.BlindDown(s)
									], {
									duration: 0.5
								});
								Element.removeClassName(selected.parentNode, "open");
								Element.addClassName(s.parentNode, "open");
								selected = s;
							}else{
								Element.removeClassName(s.parentNode, "open");
								new Effect.BlindUp(s, {duration: 0.5});
								selected = false;
							}
						}else{
							new Effect.BlindDown(s, {duration: 0.5});
							Element.addClassName(s.parentNode, "open");
							selected = s;
						}

					}, false);
				}
			}.bind(this));
		}else{
			return false;
		}
	}
};

App.Subnav = Class.create({
	initialize : function(element, options){
		this.element = $(element);
		if(this.element){
			var lis = this.element.select('li.children');
			lis.each(function(li){
				var a = $(li.getElementsByTagName('a')[0]);
				var ul = $(li.getElementsByTagName('ul')[0]);
				var selected = li.getElementsByClassName('selected');
				if(selected.length>0){
					ul.up().addClassName('open');
				}else{
					if(li.hasClassName('selected')){
						ul.addClassName('open');
					}else{
						ul.hide();
					}
				}
				a.observe('click', function(e){
					Event.stop(e);
					//ul.toggle();
					Effect.toggle(ul, 'blind', {duration: 0.5});

				});
			});
		}else{
			return false;
		}
	}
});

App.Rad = function(){
	return {
		initialize : function(){
			var rad = Cookie.get('rad');
			if(rad!=null){
				App.Rad.rad = $H(rad.evalJSON());
			}else{
				this.rad = $H({
					"blog_entries" : [],
					"competitions" : [],
					"fan_site_kits" : [],
					"messenger_icons" : [],
					"images" : [],
					"movies" : [],
					"organisations" : [],
					"personnel" : [],
					"podcasts" : [],
					"recons" : [],
					"sightings" : [],
					"wallpapers" : [],
					"weapons" : []
				});
			}
			Event.observe(window, 'load', function(){
				$$('a.rad').invoke('observe', 'click', App.Rad.send.bindAsEventListener(this));
			}.bindAsEventListener(this));
		},
		send : function(e){
			Event.stop(e);
			var element = Event.element(e);
			if(!element.hasClassName('voted')){
				new Ajax.Request(element.href, {
					method : 'get',
					onSuccess : function(transport){
						element.innerHTML = RAD_THANKS;
						element.addClassName('voted');
						var parts = element.href.split('/');
						var type = parts[parts.length-3];
						var id = parts[parts.length-1];
						App.Rad.set(id, type);
					}.bind(this)
				});
			}
		},
		set : function(id, type){
			if(!($A(App.Rad.rad.get(type)).include(id))){
				App.Rad.rad.get(type).push(id);
				//Cookie.set('rad', this.rad.toJSON());
			}
		},
		get : function(id, type){
			return $A(App.Rad.rad.get(type)).include(id+"");
		},
		bind : function(id, type, element){
			if(App.Rad.get(id, type)){
				element.innerHTML = RAD_VOTED;
				element.addClassName('voted');
			}else{
				element.innerHTML = RAD_VOTE;
				element.removeClassName('voted');
				element.href = "/"+LOCALE+"/"+type+"/vote/"+id;
			}
		}
	}
}();
App.Rad.initialize();

App.EmailComic = function(){
	return {
		count : 1,
		initialize : function(){
			this.friends = $('email-comic').select('div.friend');
			this.count = this.friends.size();
			$('email-comic-add').observe('click', this.add.bindAsEventListener(this));
		},
		add : function(e){
			Event.stop(e);
			if(this.count<5){
				var div = new Element('div', {className: 'friend text clearfix friend'+(this.count+1)});
				var label = new Element('label', {htmlFor: 'friend'+(this.count+1)}).appendText('Friend '+(this.count+1));
				var input = new Element('input', {id: 'friend'+(this.count+1), name: 'data[FormData][friends]['+(this.count+1)+']', type: 'text'});
				div.appendChild(label);
				div.appendChild(input);
				this.friends[this.count-1].insert({after:div});
				this.friends.push(div);
				this.count++;
				if(this.count==5){
					$('email-comic-add').setStyle({
						visibility : 'hidden'
					});
				}
			}
		}
	}
}();


App.Recon = function(){
	return {
		id : null,
		recons : {
			'en' : {
			  'ascension_city' : 2,
				'ascension_city_downtown' : 10,
				'ascension_city_park' : 13,
				'trent_industrial_facility' : 23,
				'port_anderson' : 30,
				'the_fissure' : 37
			},
			'us' : {
			  'ascension_city' : 3,
				'ascension_city_downtown' : 11,
				'ascension_city_park' : 14,
				'trent_industrial_facility' : 28,
				'port_anderson' : 35,
				'the_fissure' : 42
			},
			'au' : {
			  'ascension_city' : 4,
				'ascension_city_downtown' : 9,
				'ascension_city_park' : 12,
				'trent_industrial_facility' : 29,
				'port_anderson' : 36,
				'the_fissure' : 43
			},
			'fr' : {
			  'ascension_city' : 8,
				'ascension_city_downtown' : 17,
				'ascension_city_park' : 18,
				'trent_industrial_facility' : 27,
				'port_anderson' : 34,
				'the_fissure' : 41
			},
			'es' : {
			  'ascension_city' : 6,
				'ascension_city_downtown' : 21,
				'ascension_city_park' : 22,
				'trent_industrial_facility' : 24,
				'port_anderson' : 31,
				'the_fissure' : 38
			},
			'de' : {
			  'ascension_city' : 7,
				'ascension_city_downtown' : 14,
				'ascension_city_park' : 16,
				'trent_industrial_facility' : 25,
				'port_anderson' : 32,
				'the_fissure' : 39
			},
			'it' : {
			  'ascension_city' : 5,
				'ascension_city_downtown' : 19,
				'ascension_city_park' : 20,
				'trent_industrial_facility' : 26,
				'port_anderson' : 33,
				'the_fissure' : 40
			}											
		},
		initialize : function(){
			this.element = $('recon');
		},
		load : function(url, id){
			new Ajax.Request(url, {
				method : 'get',
				onSuccess : this.update.bind(this)
			});
		},
		update : function(t){
			var images = App.Recon.element.select('a.lightbox');
			App.Lightbox.removeImages(images);
			App.Recon.element.innerHTML = t.responseText;
			var images = App.Recon.element.select('a.lightbox');
			App.Lightbox.addImages(images);

			if($('rad_button') && App.Recon.id){
				App.Rad.bind(App.Recon.id, "recons", $('rad_button'));
			}
			var font = "FolioBTBolCon.ttf";
			App.Recon.element.select('span.heading').each(function(element){
				App.ReplaceImages.replace(element, {size: 14, font: font, background: null});
			}, this);
		}
	}
}();

function loadRecon(i){
	var recon = App.Recon.recons[LOCALE][i];
	if(recon){
		App.Recon.id = recon;
		App.Recon.load("/"+LOCALE+"/recons/view/"+recon);
	}
}

document.observe("dom:loaded", function(){
  
  if($('top10')){
    $('top10').hide();
    var link = $('toggle_top10');
    link.observe('click', function(e){
      Event.stop(e);
      var top10 = $('top10');
      if(top10.visible()){
        top10.hide();
        top10.up('.module').removeClassName('expanded');
        link.update(CLICK_TO_EXPAND);
        link.className = 'expand';
      }else{
        top10.show();
        top10.up('.module').addClassName('expanded');        
        link.update(CLICK_TO_HIDE);        
        link.className = 'hide';        
      }  
    });
  }

	for(flash in App.Flash){
		UFO.create(App.Flash[flash], App.Flash[flash].dom_id);
	}
	new App.Subnav('subnav');
	if(LOCALE!="jp"){
    	App.ReplaceImages.initialize();
    }

	var email_comic = $('email-comic');
	var email_comic_toggle = $('email-comic-toggle');
	if(email_comic && email_comic_toggle){
		App.EmailComic.initialize();
		var email_errors = $$('#email-comic .error');
		if(email_errors.length<1) {
		  email_comic.hide();
		}
		email_comic_toggle.observe('click', function(e){
			Event.stop(e);
			email_comic.toggle();
		});
	}
	
  toggle_gamer_tags('Pc');
  toggle_gamer_tags('Xbox360');
  toggle_gamer_tags('Ps3');    
	

});

function toggle_gamer_tags(platform){
	var checkbox = $('UserPlatform'+platform);
	if(checkbox){
	  var gamer_tag = $('UserGamertag'+platform).up('.text');
	  gamer_tag[(checkbox.checked) ? 'show' : 'hide']();	    
	  checkbox.observe('click', function(){
	    gamer_tag.toggle();
	  });
	}
}

Event.observe(window, 'load', function(){
	App.Lightbox.initialize();

	new App.ImageViewer($('gallery'), {
		imageCount : 7,
		imageWidth : 100,
		imagePadding: 12
	});

	if($('chooser')){
		if(typeof window.callback == "undefined"){
			window.callback = function(element){
				if(element.href){
					window.location = element.href;
				}
			};
		}
		new App.ImageViewer($('chooser'), {
			imageCount : 3,
			imageWidth : 100,
			imagePadding: 12,
			centre : false,
			callback : window.callback,
			tooltip : true
		});
	}

	$$('a.popup').each(function(link){
		Event.observe(link, 'click', function(e){
			Event.stop(e);
			window.open(this.href, 'popup', 'status=0,toolbar=0,location=0,menubar=0,directories=0,height=500,width=500');
		});
	});

	$$('a.music_player').each(function(link){
		Event.observe(link, 'click', function(e){
			Event.stop(e);
			window.open(this.href, 'popup', 'status=0,toolbar=0,location=0,menubar=0,directories=0,height=460,width=560');
		});
	});

	$$('a.external').each(function(link){
		Event.observe(link, 'click', function(e){
			Event.stop(e);
			window.open(this.href, 'popup');
		});
	});

	$$('div.equal div.screenshots').each(function(module){
		new App.ImageViewer(module, {
			imageCount : 2,
			imageWidth : 154,
			imagePadding: 0
		});
	});

	$$('div.row:not(.equal) div.screenshots').each(function(module){
		new App.ImageViewer(module, {
			imageCount : 1,
			imageWidth : 150,
			imagePadding: 0
		});
	});

	/*
	$$('a.rad').each(function(link){
		link.observe('click', function(e){
			Event.stop(e);
			new Ajax.Request(this.href, {
				method : 'get',
				onSuccess : function(transport){
					link.replace('<span class="rad_voted">Rad</span>');
				}
			});
		});
	});
	*/



	if($('recon')){
		App.Recon.initialize();
	}

  /*var qs = document.location.search.substring(1).toQueryParams();
  if(qs.mp && qs.mp=="true"){
    window.open('/music_player.php?loc='+LOCALE, 'popup', 'status=0,toolbar=0,location=0,menubar=0,directories=0,height=460,width=560');
  }*/



});

