var VideoBox = Page.extend
({
	init: function (settings, videoGallery, domain, path, opt, maxVote){
		this._super(settings);
		this.videoGallery = videoGallery;
		this.domain = domain;
		this.path = path;
		this.maxVote = maxVote;
		this.arrayObj = new Object;
		this.arrayObjHtml = new Array();
		this.opt = opt;
	},
	getDomain: function ()
	{
		return this.domain;
	},
	/* unused */
	getPath: function ()
	{
		return this.path;
	},
	getVideoGallery: function ()
	{
		return this.videoGallery;
	},
	getMaxVote: function ()
	{
		return this.maxVote;
	},
	setMaxVote: function (maxVote)
	{
		this.maxVote = maxVote;
	},
	getArrayObj: function ()
	{
		return this.arrayObj;
	},
	getOpt: function ()
	{
		return this.opt;
	},
	setArrayObj: function (index, content)
	{
		this.arrayObj[index] = content;
	},
	loadVoti: function (media)
	{
		var htmlVoti = '';
		for (var k = 1; k <= this.getMaxVote(); k++) 
		{
			htmlVoti += (k <= media) ? '<img class="stellaOn fixmypng" alt="" src="/static/images/sito/spacer.gif"/>' : '<img class="stellaOff fixmypng" alt="" src="/static/images/sito/spacer.gif"/>';
		}
		return htmlVoti;
	},
	getDivNumber: function (tag)
	{
		return parseInt(tag.substring(4, 5));
	},
	
	getVideoTable: function (data, row, x, y, tag)
	{
		var htmlTemp = new Array();
		var inner = "";
		var cont = 0;
		var currentPage = 0;
		var currentPageNumber = this.getOpt() == 'home' ? this.getDivNumber(tag) : this.getCurrentPage();
		for (var k = 0; k < row; k++)
		{
			inner = ''
			for (var i = 0; i < x; i++)
			{
				inner +='	<tr>' ;
				for (var j = 0; j < y; j++)
				{
					if (cont < data.length)
					{
						
						var uname = this.getObjectValue(data[cont], 'USERNAME');
						if (uname=='skyitalia'){
							var unote = this.getObjectValue(data[cont], 'NOTE');
							var namenote = unote.split('@@@');
							if (namenote.length>1){
								uname='Da: '+ namenote[1];
							}else{
								uname='Da: '+ uname;
							} 
						}else{
							uname='Da: '+ uname;
						}
						
						inner +='		<td>';
						inner +='			<a href="' + this.getVideoGallery() + '?' + this.idVideo + this.getObjectValue(data[cont], 'ENCODED_VIDEO_ID') + '&' + this.idVideoPage + currentPageNumber + '&' + this.idVideoPosition + currentPage + '"><img class="boxedImage" alt="" src="'+ this.getDomain() + this.getObjectValue(data[cont], 'THUMB').replace('.flv.','.') +'"/></a>';
						inner +='			<p>' + this.getObjectValue(data[cont], 'TITLE') + '<br /> '+ uname +'</p>';
						inner +='			<div class="stelleBoxed fixmypng">';
						inner +=	 			this.loadVoti(Math.round(this.getObjectValue(data[cont], 'MEDIAVOTI')));
						inner +='			</div>';
						inner +='		</td>';
						cont++;
					}
					else
					{					
						inner +='		<td>';
						inner +='			<a class="empty" href="' + this.getVideoGallery() + 'id_page=' + this.getDivNumber(tag) + '"></a>';
						inner +='			<p></p>';
						inner +='			<div class="empty" ></div>';
						inner +='		</td>';
					}
				}
				inner +='	</tr>';				
			}
			htmlTemp[k] = inner;
			++currentPage;
		}
		return htmlTemp;
	},
	
	getVideoSettings: function (dataLength, x, y)
	{
		var area = x * y;
		var row = '';
		if ((dataLength % area) == 0)
		{
			row = dataLength / area;
		}
		else
		{
			row = parseInt(dataLength / area) + 1; 
		}
		return row;
	},
	setVideo: function (tag, position)
	{
		this.setInnerTarget('#' + tag, this.arrayObjHtml[tag][position]);
	},
	getCurrentPagePosition: function ()
	{
		var pos = this.getQueryStringValue(this.idVideoPosition);
		return  pos != -1 ? pos : 0;
	},
	initializeVideoButtonOnCall: function (tag)
	{
		var value = this.getCurrentPagePosition();
		var forward = (value < this.arrayObjHtml[tag].length - 1) ? parseInt(value) + 1 : this.arrayObjHtml[tag].length - 1;
		this.setTagAttributes($('#' + tag + '_arrowButton_right input'), {value: this.arrayObjHtml[tag].length == 1 ? 0 : forward });
		var back = (value > 0) ? parseInt(value) - 1 : 0;
		this.setTagAttributes($('#' + tag + '_arrowButton_left input'), {value: back});
	},
	setVideoBoxButton: function (tag, value)
	{
		this.setVideo(tag, value);
		var forward = (value < this.arrayObjHtml[tag].length - 1) ? parseInt(value) + 1 : this.arrayObjHtml[tag].length - 1;
		this.setTagAttributes($('#' + tag + '_arrowButton_right input'), {value: this.arrayObjHtml[tag].length == 1 ? 0 : forward });
		var back = (value > 0) ? parseInt(value) - 1 : 0;
		this.setTagAttributes($('#' + tag + '_arrowButton_left input'), {value: back});
	},
	isCalled: function()
	{
		return this.getQueryStringValue(this.idVideoPage) != -1;
	},
	getCurrentPage: function ()
	{
		var page = this.getQueryStringValue(this.idVideoPage);
		return  page != -1 ? page : 0;
	},
	setNovideoText: function(div)
	{
		this.getTag('#' + div + ' tr td div.loader').addClass("alert").html('Siamo spiacenti,<br /> nessun video &egrave; stato caricato.');
	},
	/* new 
	setVideoBoxButton: function (tag)
	{
		$("tag th:eq(2)").
	}
	 new */
	setVideoBox: function()
	{
		var current = this;
		if (this.getOpt() == 'gallery')
		{
			var galleryBox = this.getSettings()['div_' + this.getCurrentPage()];
			var json = galleryBox.json;
			var x = galleryBox.x;
			var y = galleryBox.y;
			this.setInnerTarget('table.boxedVideoContainer table thead tr th span.title', galleryBox.label);
			var div = 'div_0';
			$.getJSON(json+"?t="+ Math.random(100000), function(obj)
			{
				if (obj.length == 0)
				{
					current.setNovideoText(div);
				}
				var row = current.getVideoSettings(obj.length, x, y);
				var htmlTemp = current.getVideoTable(obj, row, x, y, div);
				current.arrayObjHtml[div] = htmlTemp;
				var currentPos = current.getQueryStringValue(current.idVideoPage) == current.getDivNumber(div) ? current.getCurrentPagePosition() : 0;
				current.setInnerTarget('#' + div, current.arrayObjHtml[div][currentPos]);
				if (current.isCalled())
					current.initializeVideoButtonOnCall(div);
				$('#' + div + '_arrowButton_right input').bind("click", function(){
					current.setVideoBoxButton(div, this.value);
				});
				$('#' + div + '_arrowButton_left input').bind("click", function(){
					current.setVideoBoxButton(div, this.value);
				});
			});
		}
		else if (this.getOpt() == 'home')
		{
			jQuery.each(current.getSettings(), function(hashIndex, content) 
			{
				var json = content.json;
				var x = content.x;
				var y = content.y;
				var div = hashIndex;
				$.getJSON(json+"?t="+ Math.random(100000), function(obj)
				{
					if (obj.length == 0)
					{
						current.setNovideoText(div);
					}
					var row = current.getVideoSettings(obj.length, x, y);
					var htmlTemp = current.getVideoTable(obj, row, x, y, div);
					current.arrayObjHtml[div] = htmlTemp;
					var currentPos = current.getQueryStringValue(current.idVideoPage) == current.getDivNumber(div) ? current.getCurrentPagePosition() : 0;
					if (currentPos != 0)
						current.initializeVideoButtonOnCall(div);
					current.setInnerTarget('#' + div, current.arrayObjHtml[div][currentPos]);
					$('#' + div + '_arrowButton_right input').bind("click", function(){
						current.setVideoBoxButton(div, this.value);
					});
					$('#' + div + '_arrowButton_left input').bind("click", function(){
						current.setVideoBoxButton(div, this.value);
					});
				});
			});
		}
	}
});