var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		}
	]			
};

BrowserDetect.init();

window.addEvent('domready', function(){
	
	
	if ((BrowserDetect.browser != "Explorer" || BrowserDetect.version >= 6) &&
   		(BrowserDetect.browser != "Safari" || BrowserDetect.version >= 500))
   {

			var items = $$('div.artist, div.artist1');
			var maxZ = 100;
			
			items.each(function(item){
				if (item.hasClass('artist1'))
				{
					item.getElement('img').setStyles({
							'opacity': 0, 
							'z-index': 10});
				}
				else
				{
					item.getElement('a').setStyle('color', '#000000');
				}
		
				item.getElement('a').addEvents({
					mouseover: function(event){
						if(event!=null && event.target.tagName.toLowerCase()=="img")return;
						
						mFx = this.getParent().getParent().retrieve('effectInstance');
						if (mFx!=null)
						{
							mFx.cancel();
						}
		
						atags = this.getParent().getParent().getElements('a');
						atags.each(function(atag, i){
							atag.setStyle('color', '#848484');
						});
						this.setStyle('color', '#000000');
						
						imgs = this.getParent().getParent().getElements('img');
						cur_img = this.getParent().getElement('img');
						
						mFx = new Fx.Elements(imgs, {wait: false, duration: 750, transition: Fx.Transitions.Quad.easeOut});
						this.getParent().getParent().store('effectInstance', mFx);
						var obj = {};
						imgs.each(function(img, i){
								var old = img.getStyle('opacity');
								if (img.hasClass('hide_link'))
									img.setStyle('z-index', 1000);
								else
									img.setStyle('z-index', 10);
									
								if (img!=cur_img)
								{
									obj[i] = {'opacity': [old, 0], 'visibility': 'visible'};
								}
								else
								{
									obj[i] = {'opacity': [old, 1], 'visibility': 'visible'};
								}
						});
						mFx.start(obj).chain(function() {cur_img.setStyle('z-index', 11);});
					},
					
					mouseleave: function(){
					}
				});
			});
	
  }
});



Slideshow = new Class({
	initialize: function(slideshow, props) {
		this.props = Object.extend(props, {
			randomOrder: 0,
			delay: 6000,
			duration: 2000
		} || {});
		
		this.slideshow = $(slideshow);
		

		if (this.slideshow)
		{
			this.slides = this.slideshow.getElements('div.slide');
			this.slides[0].setStyle('z-index', 0);
			this.maxZIndex = 0;
			this.currentIndex = 0;
			this.currentPosition = 0;

			this.randomArray = [0];
			
			for (var i=1; i<this.slides.length; i++)
			{
				this.randomArray.push(this.randomFunc(this.randomArray, this.slides.length-1));
			}

			this.nextSlide.delay(this.props.delay, this);
		}
	},
	nextSlide: function(){
			prevText = this.slides[this.currentIndex].getElement('div.desc');
			prevImage = this.slides[this.currentIndex].getElement('div.image');
	
			nextIndex = this.getNextIndex();
			nextImage = this.slides[nextIndex].getElement('div.image');
			nextText = this.slides[nextIndex].getElement('div.desc');
	
			nextImage.setStyles({'opacity':0, visibility:'visible'});
			nextText.setStyles({'opacity':0, visibility:'visible'});

			this.slides[nextIndex].setStyles({'z-index':++this.maxZIndex, 'opacity':1, visibility:'visible'});
			this.slides[nextIndex].setStyles({'opacity':1, visibility:'visible'});
			
		if (BrowserDetect.browser != "Explorer" || BrowserDetect.version >= 6){
			nextImage.set('morph', {duration: this.props.duration, transition: Fx.Transitions.Quad.easeIn});
			//nextImage.morph({'opacity':1});
			//if (typeof this.niFx != "undefined" && this.niFx !=null)
			//	this.niFx.cancel();
			niFx = new Fx.Tween(nextImage, {duration: this.props.duration, transition: Fx.Transitions.Quad.easeIn});
			//this.niFx.start('opacity', 1).chain(function () {/*alert("test");*/});
			slsh = this;
			
			ptFx = new Fx.Tween(prevText, {duration: Math.floor(this.props.duration/2), transition: Fx.Transitions.Quad.easeOut});
			ntFx = new Fx.Tween(nextText, {duration: Math.floor(this.props.duration/2), transition: Fx.Transitions.Quad.easeOut});
			ptFx.start('opacity', 0).chain( function() {niFx.start('opacity', 1).chain(function() {prevImage.setStyle('opacity', 0); ntFx.start('opacity', 1).chain(function() {slsh.nextSlide.delay(slsh.props.delay, slsh);});});});
		}
		else
		{
			nextImage.setStyles({'opacity':1, visibility:'visible'});
			nextText.setStyles({'opacity':1, visibility:'visible'});
			prevImage.setStyles({'opacity':0, visibility:'visible'});
			prevText.setStyles({'opacity':0, visibility:'visible'});
			this.nextSlide.delay(this.props.delay+this.props.duration*2, this);
		}
	},
	getNextIndex: function() {
		if (this.props.randomOrder==0)
		{
			if (this.currentIndex==this.slides.length-1)
				this.currentIndex = 0;
			else
				this.currentIndex++;
		}
		else
		{
			if (this.currentPosition==this.slides.length-1)
				this.currentPosition = 0;
			else
				this.currentPosition++;
			
			this.currentIndex = this.randomArray[this.currentPosition];
		}
		return this.currentIndex;
	},
	randomFunc: function(arr, maxval) {
		t = false;
		
		while (!t)
		{
			r = false;
			newval = Math.ceil(Math.random()*maxval);
			for (var j=1; j<arr.length; j++)
			{
				if (arr[j]==newval)
				{
					r = true;
					break;
				}
			}
			if (!r)
			{
				t = true;
				return newval;
			}
		}
	}
});


