Array.extend(
{
	toString: function()
	{
		var tmp = [];
		for(var i = 0, l = this.length; i < l; i++)
			tmp.push(this[i].toString());
		return '['+ tmp.join(', ') +']';
	}
});

if(window.ie)
	Array.prototype.indexOf = function(o)
	{
		for(var i = 0, l = this.length; i < l; i++)
			if(this[i] == o)
				return i;
		return -1;
	};


El.extend(
{
	toString: function()
	{
		var props = '', at = this.attributes;
		for(var i = 0; i < at.length; i++)
			props += ' '+ at[i].nodeName +'="'+ at[i].nodeValue +'"';
		return '<'+ this.tagName.toLowerCase() + props +'>';
	}
});

var ISDGallery =
{
	selected: 0,

	setupGallery: function()
	{
		(new Image()).src = 'loading.gif';
		var th = $('content').getByClass('gal-thumb-item');
		this.thumbs = th;
		if(th.length == 0)
			return;
		for(var i = 0, l = th.length; i < l; i++)
		{
			th[i].onclick = function()
			{
				ISDGallery.showImage(this);
			};
		}
		this.el = $('gal-photo-container');
		this.anim = new Anim(this.el, {duration: 300});
		this.disablePrev();
		if(th.length == 1)
			this.disableNext();
		var sel = window.location.hash.slice(1);
		if(sel != '')
		{
			if(th[parseInt(sel)])
				this.showImage(th[parseInt(sel)]);
		}
	},
	
	showImage: function(el)
	{
		if(this.tmpLoader && this.tmpLoader.onload)
			this.tmpLoader.onload = null;
		var i = this.thumbs.indexOf(el);
		if(i == this.selected)
			return;
		
		$('__prev-btn').removeClass('disabled');
		$('__next-btn').removeClass('disabled');
		if($('__count'))
			$('__count').innerHTML = '('+ (i + 1) +' of '+ this.thumbs.length +')';
		if(i == 0)
			this.disablePrev();
		if(i == (this.thumbs.length - 1))
			this.disableNext();
		
		new Anim(this.thumbs[this.selected]).start({opacity: [0.3]});
		this.selected = i;
		new Anim(this.thumbs[this.selected]).start({opacity: [1]});
		var src = $(el).getByTag('img')[0].src.replace('_thumb', '');
		var cap = $(el).getByTag('div')[0].innerHTML;
		var h = this.el.getHeight();
		this.el.style.height = h +'px';
		this.anim.options.onComplete = function(ct)
		{
			ct.style.height = h +'px';
			ct.addClass('loading');
		
			ISDGallery.anim.options.onComplete = function()
			{
			};
			var img = new Image();
			img.onload = function()
			{
				ct.getByTag('img')[0].src = src;
				ct.getByTag('div')[0].innerHTML = cap;
				ct.removeClass('loading');
				ct.style.height = '';
				ISDGallery.anim.start({opacity: [1]});
				$('content').style.height = '';
				if(ct.getByTag('img')[0].width)
					ct.getByTag('div')[0].style.width = ct.getByTag('img')[0].width +'px';
				else
					ct.getByTag('div')[0].style.width = '';
				ISDMain.fixHeight();
			};
			ISDGallery.tmpLoader = img;
			img.src = src;
		};
		this.anim.start({opacity: [0]});
	},
	
	showNext: function()
	{
		$('__prev-btn').removeClass('disabled');
		$('__next-btn').removeClass('disabled');
		
		var sel = this.selected + 1;
		if(sel > (this.thumbs.length - 1))
		{
			this.disableNext();
			return;
		}
		if(sel == (this.thumbs.length - 1))
		{
			this.disableNext();
		}
		this.showImage(this.thumbs[sel]);
	},
	disableNext: function()
	{
		$('__next-btn').addClass('disabled');
	},
	
	showPrev: function()
	{
		$('__prev-btn').removeClass('disabled');
		$('__next-btn').removeClass('disabled');
		
		var sel = this.selected - 1;
		if(sel < 0)
		{
			this.disablePrev();
			return;
		}
		if(sel == 0)
		{
			this.disablePrev();
		}
		this.showImage(this.thumbs[sel]);
	},
	disablePrev: function()
	{
		$('__prev-btn').addClass('disabled');
	},
	
	popup: function(l)
	{
		var h = window.screen.height*.7;
		var link = 'http://www.iowastatedaily.net/galleries/'+ l;
		var w = window.open(link, 'glpopup', 'height='+h+',width=780,dependent=1,scrollbars=1,resizable=1');
		w.focus();
	}
};

window.addEvent(domready, function()
{
	var ct = $('gal-photo-container');
	if(ct && ct.getByTag('img')[0].width)
		ct.getByTag('div')[0].style.width = ct.getByTag('img')[0].width +'px';
});
