﻿var ratings = window.ratings = window.rat =
{				
	getSickRat: function(opts)
	{
		opts = $.extend(
		{
			sel: false,
			url: false,
			top: 10,
			onError: false,
			onFinishDraw: false,
			onRowClick: false,
			rowHeight: false,
			ratWidth: false,
			barImage: false
		}, opts);
		
		ratings.requestRating(1, opts);
	},
	
	getMedRat: function(opts)
	{
		opts = $.extend(
		{
			sel: false,
			url: false,
			top: 10,
			sick: false,
			onError: false,
			onFinishDraw: false,
			onRowClick: false,
			rowHeight: false,
			ratWidth: false
		}, opts);
		
		ratings.requestRating(2, opts);
	},
	
	requestRating: function(r, opts)
	{
		var u = (!ratings.checkOption(opts.url)) ? '' : opts.url,
			s = (!ratings.checkOption(opts.sick)) ? '' : opts.sick,
			t = (!ratings.checkOption(opts.top)) ? '' : opts.top;
		$.ajax({
			type: 'post',
			url: opts.url,
			data: [
				{name: 'r', value: r},
				{name: 's', value: s},
				{name: 't', value: t}
			],
			dataType: 'text',
			success: function(data)
			{
				if (r === 1) ratings.drawSickRat(ratings.getData(data), opts);
				if (r === 2) ratings.drawMedRat(ratings.getData(data), opts);
			},
			error: 	 function(data)
			{
				if (opts.onError && $.isFunction(opts.onError)) opts.onError(data);
			}
		});
	},
	
	getData: function(data)
	{
		data = data.substring(0, data.length - 1);
		data = eval('['+data+']');
		return data.length > 0 ? data : new Array();
	},
	
	checkOption: function(o)
	{
		return (o == null || !o) ? false : true;
	},
	
	initSickHandlers: function(ra)
	{
		ra.selectRowByInx = function(inx)
		{
			var row = $(".rbar", this).eq(inx);
			//var row = $(".rbar", this).attr("inx", inx);
			if (!row.hasClass("selected")) row.toggleClass("selected");
			row.siblings().removeClass('selected');
			return row.attr('id');
		},
		
		ra.selectRowById = function(id)
		{
			var row = $("#"+id, this);
			if (!row.hasClass("selected")) row.toggleClass("selected");
			$(".rbar:not(#"+id+")", this).removeClass('selected');
			//return row.attr("inx");
		}
	},
	
	initMedHandlers: function(ra)
	{					
		ra.selectRowById = function(id)
		{
			var row = $("#"+id, this);
			if (!row.hasClass("selected")) row.toggleClass("selected");
			$("div:not(#"+id+")", this).removeClass('selected');
			//return row.attr("inx");
		}
	},
	
	drawSickRat: function(data, opts)
	{
		var elm = (!ratings.checkOption(opts.sel) || opts.sel.length == 0) ? 'body' : opts.sel,
			rh = (!ratings.checkOption(opts.rowHeight) || opts.rowHeight == 0) ? 20 : opts.rowHeight,
			raw = (!ratings.checkOption(opts.ratWidth) || opts.ratWidth == 0) ? 225 : opts.ratWidth,
			bimg = (!ratings.checkOption(opts.barImage) || opts.barImage.length == 0) ? '' : opts.barImage,
			h = '<tbody>', ra, dur = 1000;
		for (var i = 0; i < data.length; i++)
		{
			if (data[i] != undefined)
			{
				h += (i === 0) ? '<tr><td><div inx="'+i+'" id="'+data[i].r+'" class="rbar" style="width: '+raw+'px;" title="'+data[i].rn+'"><span>'+data[i].rn+'</span><img src="'+bimg+'" style="height: '+rh+'px; width: 0%;"></div></td></tr>' : 
					'<tr><td><div inx="'+i+'" id="'+data[i].r+'" class="rbar" style="width: '+(raw*data[i].rr/data[0].rr)+'px;" title="'+data[i].rn+'"><span>'+data[i].rn+'</span><img src="'+bimg+'" style="height: '+rh+'px; width: 0%;"></div></td></tr>';
			}		
		}
		h += '</tbody>';
		ra = $('#'+elm).empty().attr("class", "rat").append(h);
		ratings.initSickHandlers(ra);
		$(".rbar", ra)
			.click(function(){ra.selectRowById($(this).attr('id')); if (opts.onRowClick && $.isFunction(opts.onRowClick)) opts.onRowClick($(this).attr('id'));})
			.hover(function(){$(this).addClass('ie6hover-rbar');}, function(){$(this).removeClass('ie6hover-rbar');});
		$(".rbar img", ra).animate({ width: "100%" }, {queue: false, duration: dur});
		if (opts.onFinishDraw && $.isFunction(opts.onFinishDraw)) opts.onFinishDraw(ra);
	},
	
	drawMedRat: function(data, opts)
	{
		var elm = (!ratings.checkOption(opts.sel) || opts.sel.length == 0) ? 'body' : opts.sel,
			rh = (!ratings.checkOption(opts.rowHeight) || opts.rowHeight == 0) ? 20 : opts.rowHeight,
			raw = (!ratings.checkOption(opts.ratWidth) || opts.ratWidth == 0) ? 225 : opts.ratWidth,
			h = '<tbody>', ra, dur = 800, durh = 150;
		for (var i = 0; i < data.length; i++)
		{
			if (data[i] != undefined)
			{
				var oe = ((i+1) % 2) === 0 ? 'even' : 'odd';
				h += '<tr><td><div inx="'+i+'" id="'+data[i].r+'" class="rline-'+oe+'" style="width: '+raw+'px; height: '+rh+'px;" title="'+data[i].rn+'"><span>'+data[i].rn+'</span></div></td></tr>';
			}
		}
		h += '</tbody>';
		ra = $('#'+elm).empty().attr("class", "rat").append(h);
		ratings.initMedHandlers(ra);
		$(".rline-even, .rline-odd", ra)
			.click(function(){ra.selectRowById($(this).attr('id')); if (opts.onRowClick && $.isFunction(opts.onRowClick)) opts.onRowClick($(this).attr('id'), $("span", this).text());})
			.hover(function(){$(this).addClass('ie6hover-rline');}, function(){$(this).removeClass('ie6hover-rline');});
		//$(".rline-even, .rline-odd", r).animate({"height": "toggle"}, dur);
		$(".rline-even span, .rline-odd span", ra).animate({"height": "toggle"}, dur);
		/*$(".rline-even", r).animate({"left": "-10px", "height": "toggle"}, dur, function()
		{
			$(this).animate({"left": "10px"}, dur, function()
			{
				$(this).animate({"left": "0px"}, dur);
			});
		});
		$(".rline-odd", r).animate({"right": "-10px", "height": "toggle"}, dur, function()
		{
			$(this).animate({"right": "10px"}, dur, function()
			{
				$(this).animate({"right": "0px"}, dur);
			});
		});*/
		//$(".rline-even, .rline-odd", r).hover(function(){$(this).animate({"left": "7px"}, durh);}, function(){$(this).animate({"left": "0px"}, durh);});
		if (opts.onFinishDraw && $.isFunction(opts.onFinishDraw)) opts.onFinishDraw(r);
	}
};