
if (typeof MVD.CMS === 'undefined') {
	MVD.CMS = {};
}

Array.prototype.find = function(e) {
		for(var i=0;i<this.length;i++) {
			if (this[i] === e) {
				return i;
			}
		}
		return -1;
};

MVD.filter = function (list, func) {
		var res = [];
		for (var i=0; i<list.length; i++) {
			if (func(list[i])) {
				res.push(list[i]);
			}
		}
		return res;
};


MVD.CMS.NotVot = function() {
	var URL_VOT = 'anvotarnoticia';
	var nnotId = 0;
	var elem_res;
	var elem_vot;
	var re = /.*#([0-9])/;
	var imgsPath = '';
	var imgs = {}; // on,off,mid,sel,prog

	var query = [];
	var opcs = [];
	var idPrefix;

	var show = function (elem) {
		elem.style.display = (elem.nodeName == 'SPAN') ? 'inline' : 'block';
	};

	var votar = function() {
		var voto = opcs.find(this);
		if (voto > 0) {
			sendVote(voto*2);
		}
		return false;
	};

	var starSelected = function() {
		var voto = opcs.find(this);
		if (voto > 0) {
			for(var i=1;i<= voto;i++) {
				opcs[i].firstChild.src = imgs.on.src;
			}
		}
		return false;
	};

	var starUnselected = function() {
		var voto = opcs.find(this);
		if (voto > 0) {
			for(var i=voto; i >= 1; i--) {
				opcs[i].firstChild.src = imgs.sel.src;
			}
		}
		return false;
	};

	var showResult = function(elem, value, quant) {
		var i;
		var c = elem.getElementsByTagName('img');
		for(i=1;(i*2)<=value;i++) {
			c[i-1].src = imgs.on.src;
		}
		if ((Math.floor(value/2)*2) < value) {
			c[i-1].src = imgs.mid.src;
			i++;
		}
		for(;i<=5;i++) {
			c[i-1].src = imgs.off.src;
		}
		c = elem.getElementsByTagName('span');
		c = MVD.filter(c, function(e) { return (e.className === "cantvotos"); });
		c[0].innerHTML = '' + quant;
		show(elem);
	};

	var enable = function() {
		if (elem_vot) {
			var res;
			var c = elem_vot.getElementsByTagName('a');
			for (var i=0; i<c.length; i++) {
				res = re.exec(c[i].href);
				if (res) {
					var valor = res[1];
					opcs[valor] = c[i];
					c[i].onclick = votar;
					c[i].onmouseover = starSelected;
					c[i].onmouseout = starUnselected;
					c[i].firstChild.border = '0';
					c[i].firstChild.src = imgs.sel.src;
				}
			}
			show(elem_vot);
		}
	};

	var processResults = function(txt) {
		var elem, v, res = txt.split(';');
		if (res.length == query.length) {
			for (var i=0; i<query.length; i++) {
				elem = document.getElementById(idPrefix + query[i]);
				if (elem && res[i]) {
					v = res[i].split(',');
					showResult(elem, v[0], v[1]);
				}
			}
		}
	};

	var onSuccess = function(txt) {
		var res = txt.split(',');
		if ((res.length == 3) && ((res[0] == 0) || (res[0] >= 3))) {
			showResult(elem_res, res[1], res[2]);
			if (res[0] == 0) {
				enable();
			} else {
				elem_vot.innerHTML = (res[0] == 9) ? 'Gracias por tu voto.' : '';
				show(elem_vot);
			}
		}
	};

	var onError = function() {
		elem_res.innerHTML = 'Error comunicaci&oacute;n.';
	};

	var getVoteState = function() {
		MVD.Ajax.postGX(URL_VOT, {NNotId: nnotId}, onSuccess, onError);
	};

	var sendVote = function(voto) {
		MVD.Ajax.postGX(URL_VOT, {NNotId: nnotId, voto:voto}, onSuccess, onError);
	};

	return {
		setImagesPath : function (path) {
			imgsPath = path;
			return this;
		},

		setImages: function(newimgs) {
			for(var i in newimgs) if (newimgs.hasOwnProperty(i)) {
				imgs[i]=new Image();
				imgs[i].src = imgsPath + newimgs[i];
			}
			return this;
		},

		getVote : function(nnot_id, res_id, vot_id) {
			nnotId = nnot_id;
			elem_res = document.getElementById(res_id);
			elem_vot = document.getElementById(vot_id);
			if (elem_res) {
				getVoteState();
			}
		},

		qAdd : function(nnot_id) {
			query.push(nnot_id);
		},

		setQuery: function(notlist) {
			query = notlist;
			return this;
		},

		getResults: function(id_prefix) {
			idPrefix = id_prefix;
			if (query.length > 0) {
				MVD.Ajax.postGX('angetnotresultvot', {ucs: query.join(',') }, processResults);
			}
			return this;
		}
	};
} ();



