var Browser = Class.create({
  initialize: function() {
    var userAgent = navigator.userAgent.toLowerCase();
    this.version = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1];
    this.safari = /webkit/.test( userAgent );
    this.opera = /opera/.test( userAgent );
    this.msie = /msie/.test( userAgent ) && !/opera/.test( userAgent );
    this.mozilla = /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent );
  }
});

function initKeyListener (event) {
	var key=(event.which) ? event.which : event.keyCode;
	switch (key)
	{
	case 27:
		UnloadOver();
		break;
	}
}
bind_initKeyListener = initKeyListener.bindAsEventListener();

function ShowOver (_top,_left) {
	arrayPageSize=getPageSize();
	
	$('cnt').insert({after: '<div id="wOver_overlay" style="display: none;"></div>'});	

	$('wOver_overlay').style.width=arrayPageSize[0]+'px';
	$('wOver_overlay').style.height=arrayPageSize[1]+'px';	
	$('wOver_overlay').appear({from:0, to: 0.5, duration: 0.2 });
	
	//SET WAIT
	$('cnt').insert({top: '<div id="wOver" style="display:none;"><div id="wOverContainer"><img src="/images/loader2.gif" width="16" height="16" border="0" align="absmiddle" /> loading...</div></div>'});
	//SET POS
	$('wOverContainer').setStyle({ 
		top: (_top?_top:(document.viewport.getScrollOffsets().top+Math.ceil((arrayPageSize[3]-$('wOverContainer').getHeight())/2)))+'px', 
		marginLeft: (_left?_left+'px':(document.viewport.getScrollOffsets().left+Math.ceil((arrayPageSize[2]-300)/2))+'px')
	});	

	$('wOver').appear({duration: 0.2});
}

function OpenPlayer(e,ID,_action,_type,_selected) {
	var src=Event.element(e);
	if (src.tagName.toLowerCase()!='a')
		src=src.up('a');

	ShowPlayer (src,ID,_action,_type,_selected);
		
	return false;
}

function ShowPlayer (src,ID,_action,_type,_selected) {
	ShowOver();
	var bro=new Browser;
	
	var objHash = {};
	objHash.id=ID;
	objHash.action=(_action==undefined?"EVENTDET":_action);
	objHash.type=(_type==undefined?"I":_type);
	objHash.selected='';
	if (src.readAttribute('rel')) {
		objHash.info_label=src.readAttribute('rel');
		//objHash.selected=src.readAttribute('href').split('/').last();
		objHash.selected=src.readAttribute('id');
	} else {
		objHash.selected=src.readAttribute('id');
	}		
	 
	new Ajax.Request('/include/player.php', {
		method: 'post', 
		parameters: objHash, 
		onSuccess: function(transport) {
			res=transport.responseText;
			if (res.startsWith('#')) {
				PrintError (res);
				CloseOver();
			}
			else {				
				arrayPageSize=getPageSize();
				$('wOver').remove();
				$('cnt').insert({top: '<div id="wOver" style="display: none; height: '+arrayPageSize[1]+'px;"><div id="wOverContainer" style="width: 880px;">'+res+'</div></div>'});				
				var _top=document.viewport.getScrollOffsets().top+Math.ceil(arrayPageSize[3]/2-280);
				if (Prototype.Browser.IE && bro.version<7) {
					var _left=document.viewport.getScrollOffsets().left+Math.ceil(arrayPageSize[2]/2-460);
					$('wOverContainer').setStyle({ 
						top: _top+'px', 
						left: _left+'px'
					});	
				} else {
					$('wOverContainer').setStyle({ 
						top: _top+'px'
					});
					$('wOver').setStyle({
						backgroundImage: 'url(/images/player_shadow.png)', 
						backgroundPosition: 'center '+(_top-75)+'px'
					});
				}
				
				InitScroll('gallery_slide',0,false,true,false);				
				$('wOver').appear({duration: 0.3, afterFinish: function() {
					InitPlayer (_type,objHash.selected);
				}});
				Event.observe(window.document, "keyup", bind_initKeyListener);
			}				
		},
		onFailure: function (transport) {
			PrintError(transport.responseText);
			CloseOver();
		},
		onException: function (request, exception) {
			PrintError("Js Exception: " + exception);
			CloseOver();
		}
	});
	
	return false;
}

function InitPlayer (_type,_selected) {		
	//IMAGES
	if ($('show_images')) {
		Event.observe($('show_images'), 'click', bind_imgLoad);		
	
		$$('#gallery_slide_cnt a').each(function (s) {
			Event.observe(s, 'click', bind_imgScrollLoad);
		});
		if ($('gallery_slide_arrows')) {
			$$('#gallery_slide_arrows a').each(function (s) {
				Event.observe(s, 'click', bind_imgScrollPN);
			});
			$$('#gallery_slide_arrows a img').each(function (s) {
				Event.observe(s, 'click', bind_imgScrollPN);
			});
		}
	}
	
	//VIDEO
	if ($('play_video')) {
		Event.observe($('play_video'), 'click', bind_videoLoad);
	}
	//TEXT
	if ($('read_info')) {
		Event.observe($('read_info'), 'click', bind_infoLoad);
	}
	//PHOTO INFO
	if ($('read_photo_info')) {
		Event.observe($('read_photo_info'), 'click', bind_photoInfoLoad);
	}

	//INIT SECTION
	if (_type=='I' || _type==undefined)
	{			
		if ($('gallery_slide')) {			
			setActive ('show_images');
		
			if (_selected=='')
				LoadImage($$('#gallery_slide_cnt img')[0]);
			else
				LoadImage($(_selected).firstDescendant());
		} else 
			_type='V';
	}

	if (_type=='V') {
		if ($('play_video')) {
			setActive('play_video');
			printVideo($('play_video').readAttribute('href').split('/').last());
		}
		else 
			_type='T';
	}
	if (_type=='T') {
		setActive ('read_info');
		printInfo ();
		//wait for init scroll
		new PeriodicalExecuter(function(pe) {
			if ($('player_txt').getWidth())
				pe.stop();
				InitScroll('player_txt',0,true);
		}, 1);
	}
}
function setActive (id) {	
	var act_id=($$('#player_right .active')[0]?$$('#player_right .active')[0].id:'');		
	if (act_id==id)
	{		
		return false;
	}
	var _set=true;
	switch (act_id)
	{
	case 'show_images':	
		if ($$('#gallery_slide_cnt img.zoomed')[0])
			$$('#gallery_slide_cnt img.zoomed')[0].setOpacity(1.0);
		break;
	case 'play_video':
		break;
	case 'read_info':
		$('player_txt').hide();
		if ($('track_player_txt'))
			$('track_player_txt').hide();
		$('player_cnt').show();
		break;
	case 'read_photo_info':
		$('player_txt').hide();
		if ($('track_player_txt'))
			$('track_player_txt').hide();
		$('player_cnt').show();
		break;
	case 'read_other_info':
		_set=false;
		$('player_txt').hide();
		if ($('track_player_txt'))
			$('track_player_txt').hide();
		$('player_cnt').show();
		break;
	}	
	
	if (_set)
	{
		if (act_id)
			$(act_id).removeClassName('active');
	}
	
	$(id).addClassName('active');	
	
	return true;
}

/*************************************************************/
function toggleImageSilde(_show) {
	if (_show) {
		if ($('gallery_slide').getHeight()==0) {
			new Effect.Morph('gallery_slide', {
				style: {
					height: '46px'
				},
				duration: 0.3
			});
			if ($('gallery_slide_arrows'))
				$('gallery_slide_arrows').show();
		}
	} else {
		if ($('gallery_slide').getHeight()>0) {
			new Effect.Morph('gallery_slide', {
				style: {
					height: '0px'
				},
				duration: 0.3
			});
			if ($('gallery_slide_arrows'))
				$('gallery_slide_arrows').hide();
		}
	}
}
function imgLoad (event) {	
	event.stop();

	setActive('show_images');
	toggleImageSilde(true);

	if ($$('#gallery_slide_cnt img.zoomed')[0]) {
		src=$$('#gallery_slide_cnt img.zoomed')[0];
		src.removeClassName('zoomed');		
	} else {
		src=$$('#gallery_slide_cnt img')[0];
	}
	LoadImage(src);
	
	return false;
}
bind_imgLoad=imgLoad.bindAsEventListener();

function imgScrollLoad (event) {
	event.stop();
	
	if (!$('show_images').hasClassName('active'))
		setActive('show_images');
	
	var src=Event.element(event);

	$('player_cnt').innerHTML='<center><img src="/images/loader3.gif" width="16" height="16" border="0" style="margin-top: 200px;" /></center>';
	if ($$('#gallery_slide_cnt img.zoomed')[0]) {
		var att_id=$$('#gallery_slide_cnt img.zoomed')[0].up('a').id;
		if ($(att_id).readAttribute('rel')=='insegnante') {
			if ($('icm_'+att_id.split('_').last()))
				$('icm_'+att_id.split('_').last()).hide();
		}
		$(att_id).down('img').setOpacity(1.0);
		$(att_id).down('img').removeClassName('zoomed');		
	}
	LoadImage(src);
	
	return false;
}

function getThumbPos (img) {
	var pos=0;
	var img_id=img.up('a').id;	
	$$('#gallery_slide_cnt a.rightThumb').each (function (a,index) {
		if (a.id==img_id) {
			pos=index;
			return;
		}		
	});	
	
	if (pos>0) {		
		$('gallery_slide').scrollLeft=(46*(pos-1));
	}
	
	return (pos);
}

function LoadImage (_src) {	
	if (_src.up('a').id.startsWith('i_')) {		
		_src=$('it_'+_src.up('a').id.split('_').last()).down('img');
	} else if (_src.up('a').id.startsWith('event_')) {
		_src=$$('#gallery_slide_cnt a')[0].down('img');
	}	
	
	var offsetPos=($('gallery_slide_cnt').cumulativeOffset().left-_src.up('a').cumulativeOffset().left);
	_src.setOpacity(0.5);
	_src.addClassName('zoomed');	
	var attImgName=''; //$('player_cnt').down('img').readAttribute('src').split('/').last().split('.')[0];
	var srcImgName=_src.readAttribute('src').split('/').last().split('.')[0];
		if (attImgName==srcImgName)
		return;
		
	getThumbPos(_src);
	
	var img = document.createElement('img');	
	//img.onload = function (evt) {		
	Event.observe(img, 'load', function () {
		$('player_cnt').innerHTML='';
		$('player_cnt').insert({top: img});		
		img.setStyle({
			'margin': Math.ceil(($('player_cnt').getHeight()-img.height)/2)+'px '+Math.ceil(($('player_cnt').getWidth()-img.width)/2)+'px'
		});	
		if (_src.up('a').readAttribute('rel')=='insegnante')
			$('player_title').innerHTML=_src.up('a').readAttribute('title');
		else
			$('player_info').innerHTML=_src.up('a').readAttribute('title');
	});
	
	//alert (_src.up('a').readAttribute('href'));
	/*var path=_src.readAttribute('src').gsub('thumbs/','').split('/');	
	path.pop();	
	path.push('/'+srcImgName+'.'+_src.up('a').readAttribute('href').split('.').last());
	img.src=path.join('/');	*/
	img.src=_src.up('a').readAttribute('href');
	//alert (img.src);	

	//dida
	if (_src.up('a').next('span') && $('read_photo_info')) {
		if (_src.up('a').next('span').innerHTML!='')
			$('read_photo_info').removeClassName('disabled');
		else
			$('read_photo_info').addClassName('disabled');
	}	
	
	//altro	
	if (_src.up('a').readAttribute('rel')=='insegnante') {		
		var id_ins=_src.up('a').id.split('_').last();		
		if ($('icm_'+id_ins))
			$('icm_'+id_ins).show();
	}
	

	//set pos
	/*if (offsetPos<-46) { //right
		//$('gallery_slide').scrollLeft+=46;
		ScrollLeft(46);
	} else if (offsetPos>=0) { //left
		//$('gallery_slide').scrollLeft-=46;
		ScrollLeft(-46);
	}*/
}
bind_imgScrollLoad=imgScrollLoad.bindAsEventListener();

function ScrollLeft (_delta) {
	var _inc=0;
	var _sign=(_delta>0?1:-1);
	new PeriodicalExecuter(function(pe) {
		$('gallery_slide').scrollLeft+=(23*_sign);
		_inc+=(23*_sign);
		if (Math.abs(_inc)>=Math.abs(_delta))
			pe.stop();
		}, .05);
}
function imgScrollPN (event) {
	event.stop();
	var src=Event.element(event);
	if (src.tagName.toLowerCase()!='a')
		src=src.up('a');
	//set PN
	switch (src.readAttribute('title').charAt(0)) {
	case 'n':
		delta=1;
		/*$$('#gallery_slide_arrows a')[0].show();		
		if (($('gallery_slide').cumulativeOffset().left-$('gallery_slide_cnt').cumulativeOffset().left)-($('gallery_slide_cnt').getWidth()-184)==0) //last 4 icons
			$$('#gallery_slide_arrows a')[1].hide();
		else
			$$('#gallery_slide_arrows a')[1].show();*/
		break;
	case 'p':
		delta=-1;
		/*$$('#gallery_slide_arrows a')[1].show();
		alert ($('gallery_slide').cumulativeOffset().left+'-'+$('gallery_slide_cnt').cumulativeOffset().left);
		if ($('gallery_slide').cumulativeOffset().left-$('gallery_slide_cnt').cumulativeOffset().left==46) //1 icons
			$$('#gallery_slide_arrows a')[0].hide();
		else
			$$('#gallery_slide_arrows a')[0].show();*/
		break;
	default:		
		return false;
		break;
	}	
	//move
	//new Effect.Move($('gallery_slide_cnt'), { x: (46*delta), duration: 0.2});
	//SetArrows(delta);
	//$('gallery_slide').scrollLeft+=(46*delta);
	ScrollLeft(46*delta);
	
	return false;
}
bind_imgScrollPN=imgScrollPN.bindAsEventListener();

function SetArrows (_type) { //TODO
	if (_type>0) {
		$$('#gallery_slide_arrows a')[0].show();
		if (($('gallery_slide').cumulativeOffset().left-$('gallery_slide_cnt').cumulativeOffset().left)-($('gallery_slide_cnt').getWidth()-184)==0) //last 4 icons
			$$('#gallery_slide_arrows a')[1].hide();
		else
			$$('#gallery_slide_arrows a')[1].show();
	} else {
		$$('#gallery_slide_arrows a')[1].show();
		if ($('gallery_slide').cumulativeOffset().left-$('gallery_slide_cnt').cumulativeOffset().left==46) //1 icons
			$$('#gallery_slide_arrows a')[0].hide();
		else
			$$('#gallery_slide_arrows a')[0].show();
	}	
}

/*************************************************************/

function printVideo(cod) {
	if ($('gallery_slide'))
		toggleImageSilde();
		
	$('player_info').innerHTML='';
	$('player_cnt').innerHTML='<object width="670" height="500"><param name="movie" value="http://www.youtube.com/v/'+cod+'&hl=it&fs=1&rel=0&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/'+cod+'&hl=it&fs=1&rel=0&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowfullscreen="false" width="670" height="500"></embed></object>';
}
function videoLoad (event) {
	event.stop();
	if (!setActive('play_video'))
		return false;

	printVideo($('play_video').readAttribute('href').split('/').last());
	
	return false;
}
bind_videoLoad=videoLoad.bindAsEventListener();

/*************************************************************/

function printInfo () {
	if ($('gallery_slide'))
		toggleImageSilde();
		
	$('player_cnt').hide();
	$('player_cnt').innerHTML='';
	$('player_txt').show();
	$('player_info').innerHTML='';
	if (!$('player_txt').hasClassName('init')) {
		InitScroll('player_txt',0,true);
		$('player_txt').addClassName('init');
	} else if ($('track_player_txt'))
		$('track_player_txt').show();
}
function infoLoad (event) {
	event.stop();
	setActive ('read_info');
	
	printInfo();	
		return false;
}
bind_infoLoad=infoLoad.bindAsEventListener();

function photoInfoLoad (event) {
	event.stop();
	var src=Event.element(event);
	if (src.hasClassName('disabled'))
		return false;
		
	$('player_txt').innerHTML=$$('#gallery_slide_cnt img.zoomed')[0].up('a').next('span').innerHTML;
	setActive ('read_photo_info');
	
	printInfo();
	
	return false;
}
bind_photoInfoLoad=photoInfoLoad.bindAsEventListener();

/*************************************************************/
function loadMateriaDett (e) {
	e.stop();
	var src=Event.element(e);
	
	$('player_txt').innerHTML=src.next('span').innerHTML;
	setActive('read_other_info');
	
	printInfo();
	
	return false;
}