/* Estrae i parametri da una stringa, dalla query o dall'hash dell'url.
 * I parametri devono essere codificati come nella query delle url: nome1=valore1&nome2=valore2
 * Se un parametro non ha valore, nell'array viene impostato come valore true.
 */
function getParams(s) {
	if (s == null) {
		s = document.location.search;
		if (s == null || s == '') {
			s = document.location.hash;
		}
	}
	if (s.match(/^\?/) || s.match(/^#/)) {
		s = s.substring(1);
	}
	var strParams = s.split('&');
	var params = {};
	var i = 0;
	for (i in strParams) {
		var name = strParams[i];
		var value = true;
		var pos = name.indexOf('=');
		if (pos>0) {
			value = decodeURIComponent(name.substring(pos+1));
			name = name.substring(0, pos);
		}
		params[name] = value;
	}
	return params;
};
function getParam(name, string) {
	var params = getParams(string);
	return params[name] || false;
}

/* funzioni di debug:
 * se e' possibile scrive nella console
 * (sempre disponibile in chrome, disponibile in firefox
 * solo se firebug e' aperto gia' al caricamento della pagina),
 * altrimenti esegue gli alert (solo se DEBUG e' true). */
if (typeof(DEBUG)=='undefined') {
	DEBUG = false;
	(function() {
		var d = getParam('debug'); // cerca nella query o nell'hash (in quest'ordine)
		if (d === true || d == 'true' || d == 'debug') {
			DEBUG = true;
		}
	})();
}
if (typeof(console) == 'undefined') {
	console = {};
}
if (typeof(console.log) == 'undefined') {
	console.log = function(msg) {
		if (DEBUG || DEBUGRAITV) {
			alert(msg);
		}
	};
}
debug = function(msg) {
	try {
		console.log(msg);
	} catch (e) {
		if (DEBUG || DEBUGRAITV) {
			alert(msg);
		}
	}
	return true;
}



function createFlash(variabili) {
	if ($.browser.msie) {
		var flash = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+variabili.width+'" height="'+variabili.height+'" id="'+variabili.id+'" align="middle">'
					+'<param name="allowScriptAccess" value="always" />'
					+'<param name="allowFullScreen" value="true" />'
					+'<param name="movie" value="'+variabili.src+'.swf" />'
					+'<param name="quality" value="high" />'
					+'<param name="wmode" value="transparent" />'
					+'<param name="flashvars" value="'+variabili.flashvars+'" />'
					+'</object>';
	} else {
		var flash = '<embed src="'+variabili.src+'.swf" quality="high" wmode="transparent" width="'+variabili.width+'" height="'+variabili.height+'" name="'+variabili.name+'" align="middle" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+variabili.flashvars+'" />';
	}

	$(variabili.elHtml).html(flash);
}

var RaiCinema = function() {
};

RaiCinema.prototype.initSearch = function() {
	// basic search
	$('#formSearch,.formSearch').each(function() {
		var form = $(this);
		$("input[@type='text']").bind('focus', function() {
			$this = $(this);
			if ($this.attr('defaultValue') == $this[0].value) {
				$this[0].value = '';
			}
		});
		$('.submit').click(function() {
			form.trigger('submit');
		});
	});
	// advanced search
	$('form#advancedSearch').each(function() {
		var $this = $(this);
		$(':input[name^="google-"]', $this).removeAttr('disabled');
		
		var type = getParam('t');
		var section = getParam('s');
		var subSection = getParam('b');
		
		if (type) {
			type = $.trim(type);
			var requiredFields = type.replace(/ /g, "+");
			// limita la ricerca al solo tipo indicato (cinema/documentari/tv etc)
			requiredFields = 'google-tipology:'+encodeURIComponent(requiredFields);
			$(':input[name="requiredfields"]', $this).setValue(requiredFields);
		}
		if (section) {
			section = $.trim(section);
			// modifica il titolo della ricerca
			$('.mainBox .Main>h2').html(section);
			if (subSection) {
				subSection = $.trim(subSection);
				$('.mainBox .Main>h2').append(' / <span class="sub">'+subSection+'</span>');
			}
		}
		
		
		var f = function() {
			var inputs = $('.partialfields :input[name^="google-"]', $this);
			var partialFields = [];
			inputs.each(function() {
				var n = $(this).attr('name');
				var v = $(this).getValue() || '';
				v = $.trim(v);
				v = v.replace(/ /g, "+");
				n = n.replace(/ /g, "+");
				
				if (v != '') {
					partialFields.push( '('+encodeURIComponent(n)+':'+encodeURIComponent(v)+')' );
				}
			});
			partialFields = partialFields.join('.');
			$(':input[name="partialfields"]', $this).setValue(partialFields);
			//alert('submitting\n'+partialFields);
			inputs.attr('disabled', 'disabled');
			$this[0].submit();
			inputs.removeAttr('disabled');
			return false;
		};
		//$this.bind('submit', f);
		$('div.submit a', $this).bind('click', f);
	});
};

RaiCinema.prototype.initSubMenus = function() {
	$('.Menu .sMenu ul.bullet>li').each(function() {
		var $this = $(this);
		var subMenu = $('div.sottoMenu', $this);
		$this.addClass('espanso');
		if (subMenu.length == 0) {
			$this.addClass('noSubmenu');
		} else {
			$this.addClass('noSubmenu');
			var l = $('<a class="toggle"></a>');
			$this.prepend(l);
			l.click(function() {
				$this.toggleClass('espanso');
				if ($this.is('.espanso')) {
					subMenu.show();
				} else {
					subMenu.hide();
				}
				return false;
			});
			l.click();
			
			$('>a', $this).click(function() {
				return true; // disattivo il collapse per lasciare il link attivo... %_%
				
				$this.toggleClass('espanso');
				if ($this.is('.espanso')) {
					subMenu.show();
				} else {
					subMenu.hide();
				}
				return false;
			});
		}
	});
	$('.Menu .sMenu ul.bullet>li a').each(function() {
		if ($(this).attr('href') == document.location) {
			$(this).parents('li').find('.toggle').click();
		}
	});
};

RaiCinema.prototype.initEdizioniPrecedenti = function() {
	$('li.edizione select').each(function() {
		var $this = $(this);
		var f = function() {
			var v = $this.getValue();
			v = $.trim(v);
			if (v != '') {
				document.location = v;
			}
		};
		$this.bind('change', f);//.bind('click', f);
	});
};

RaiCinema.prototype.initLang = function() {
	$('.Main').each(function() {
		var $this = $(this);
		
		var filterFunction = function() {
			var t = $(this).text();
			t = $.trim(t);
			return t != '';
		};
		
		var titles = $('>h1.ita,>h1.eng', $this).filter(filterFunction);
		var subTitles = $('>h4.ita,>h4.eng', $this).filter(filterFunction);
		var texts = $('>div.ita,>div.eng', $this).filter(filterFunction);
		
		var showLangSelection = (titles.length>1) || (subTitles.length>1) || (texts.length>1);
		
		var langSelection = $('<ul class="lang"><li><a class="eng" href="#">English</a></li><li><a class="ita" href="#">Italiano</a></li></ul>');
		
		var showLang = function() {
			var l = $(this).attr('class');
			var o = '';
			if (l == 'eng') {
				o = '.ita';
				l = '.eng';
			} else {
				o = '.eng';
				l = '.ita';
			}
			var f = function(n) {
				if (n.filter(l).length>0) {
					n.filter(l).show();
					n.filter(o).hide();
				} else {
					n.filter(l).hide();
					n.filter(o).show();
				}
			};
			f(titles);
			f(subTitles);
			f(texts);
			return false;
		};
		if (showLangSelection) {
			//$('.Page').prepend(langSelection);
			$('.mainPage .boxOptions').after(langSelection);
			langSelection.find('a').click(showLang);
			langSelection.show();
		}
		
	});
};

RaiCinema.prototype.initPage = function() {
	this.initSearch();
	this.initEdizioniPrecedenti();
	this.initLang();
	this.initSubMenus();
};

var objRaiCinema = new RaiCinema();


var Ticker = function(n) {
	var t = this;
	
	t.tempo = 5000;
	
	t.timer = false;
	
	t.autoadvance = true;
	
	t.fadeTime = 500;
	
	t.obj = $(n);
	t.curr = 0;
	t.display = t.obj.find('.display');
	t.linkReadAll = t.obj.find('div.all a');
	t.elements = t.display.find('li');
	t.count = t.elements.length;
	t.elements.hide();
	t.elements.slice(t.curr, 1).show();
	
	function next() {
		// debug('next');
		t.elements.slice(t.curr, t.curr+1).fadeOut(t.fadeTime, function() {
			t.curr = (t.curr + 1) % t.count;
			var href = t.elements.slice(t.curr, t.curr+1).fadeIn(t.fadeTime).find('a').attr('href');
			t.linkReadAll.attr('href', href);
			setTimer();
		});
		return false;
	}
	function prev() {
		// debug('prev');
		t.elements.slice(t.curr, t.curr+1).fadeOut(t.fadeTime, function() {
			t.curr = (t.count + t.curr - 1) % t.count;
			var href = t.elements.slice(t.curr, t.curr+1).fadeIn(t.fadeTime).find('a').attr('href');
			t.linkReadAll.attr('href', href);
			setTimer();
		});
		return false;
	}
	function disableTimer() {
		// debug('disableTimer');
		t.autoadvance = false;
		if (t.timer) {
			window.clearTimeout(t.timer);
			t.timer = false;
		}
	}
	function enableTimer() {
		// debug('enableTimer');
		t.autoadvance = true;
		setTimer();
	}
	function setTimer() {
		// debug('setTimer');
		if (t.timer) {
			window.clearTimeout(t.timer);
			t.timer = false;
		}
		if (t.autoadvance) {
			t.timer = window.setTimeout(next, t.tempo);
		}
	}
	if (t.count > 1) {
		$('.nav .prev', t.obj).click(prev);
		$('.nav .next', t.obj).click(next);
		t.display.hover(disableTimer, enableTimer);
		enableTimer();
	} else {
		$('.nav .prev', t.obj).click(function(){return false;});
		$('.nav .next', t.obj).click(function(){return false;});
		var href = t.elements.slice(0, 1).fadeIn(t.fadeTime).find('a').attr('href');
		t.linkReadAll.attr('href', href);
	}
};
var ticker = false;

function initTickerNews() {
	var n = $('#Ticker');
	if (n.length > 0) {
		ticker = new Ticker(n);
	}
}

$(function(){
	objRaiCinema.initPage();
	initTickerNews();
});
