/* created by Ontiu Robert */

var jolinks_slide_duration = 500;
var jolinks_image_max_w = 200;
var jolinks_image_max_h = 200;
var jolinks_allow_slide = true;
var jolinks_arrow_h_src = "images/layout/form/arrow_h.png";
var jolinks_arrow_v_src = "images/layout/form/arrow_v.png";
var jolinks_f_clicked;
var jolinks_l_clicked;

function JOntiuLinks (wrapper, elements, admin_mode)
{
	/* elements = [
						{ id, name, elements: [ {id, url, name, image} ] }
					];*/
	this.admin_mode = admin_mode ? admin_mode : false;
	this.wrapper = wrapper;
	this.elements = elements;
	this.onclick = function (url) { window.open(url, "mywnd"); }
	var self = this;
	jQuery(document).ready( function ()
	{
			var elements = self.elements;
			
			var wrapper = $('#'+self.wrapper); if (wrapper.length == 0) { alert("Invalid DIV!"); return; }
			
			var i; var j; var len = elements.length; var len2;
			var h; var l; var el; var ell;
			for (i=0; i<len; i++)
			{
				el = elements[i];
				h = self.createFolder(el.name, i);
				h.div.appendTo(wrapper);
				
				elements[i].interface = h.div;
				
				h = h.holder;
				
				len2 = el.elements.length;
				for (j=0; j<len2; j++)
				{
					ell = el.elements[j];
					l = self.createElement(i, j, ell.name, ell.image.path, ell.id, ell.url).appendTo(h);
					elements[i].elements[j].interface = l;
				}
			}
	});
}

JOntiuLinks.prototype = 
{
	createActionTable : function ()
	{
		var table = $('<table></table>').css({'width' : '97%', 'border' : '1px solid transparent'}); 
		var tr = $('<tr></tr>').appendTo(table); var tdiv = $('<td></td>').appendTo(tr); var ta = $('<td></td>').css('width', '12px').appendTo(tr);
		tdiv.css({'text-align' : 'left'}); ta.css({'text-align' : 'center', 'vertical-align' : 'middle'});
		
		var tb = function () { table.css('border-color', '#123456'); };
		var tub = function () { table.css('border-color', 'transparent'); };
		
		return { table : table, div : tdiv, actions : ta, border : tb, unborder : tub };
	},
	createFolder : function (name, index)
		{
			var self = this;
			var d = $('<div></div>').addClass("joLinks-Folder");
			var table = this.createActionTable();	table.table.appendTo(d);
			if (this.admin_mode) {
			var adiv = $('<div></div>').addClass('trash-button').css('margin', '0 auto').appendTo(table.actions);
				adiv.click ( function ()
					{
						if (confirm("Esti sigur ca vrei sa stergi aceasta categorie de linkuri si toate adresele pe care le contine?"))
						{
							self.elements[index].deleted = true;
							self.elements[index].interface.fadeOut();
							if (jolinks_f_clicked) jolinks_f_clicked(self.elements[index].id);
						}
					});
				adiv.mouseover( table.border );
				adiv.mouseout( table.unborder );
			}
			
			var t = $('<div></div>').addClass("joLinks-Folder-Name").css('cursor', 'default').appendTo(table.div);
			var img = $('<img></img>').attr('src', jolinks_arrow_v_src).addClass('joLinks-Folder-Image').appendTo(t);
			var span = $('<span></span>').html(name).appendTo(t);
			var h = $('<div></div>').addClass("joLinks-Holder").appendTo(d);
			
			if (jolinks_allow_slide) t.css('cursor', 'pointer').click ( function ()
				{
					if (h.css('display') == 'none') 
					{
						h.slideDown(jolinks_slide_duration); 
						img.attr('src', jolinks_arrow_v_src);
					}
					else
					{
						h.slideUp(jolinks_slide_duration);
						img.attr('src', jolinks_arrow_h_src);
					}
				});
			
			return { div : d, holder : h };
		},
	createElement : function (pindex, index, name, image, id, url)
		{
			var self = this;
			var d = $('<div></div>').addClass("joLinks-Element");
			var t = $('<table></table>').appendTo(d);
			var tr = $('<tr></tr>').appendTo(t);
			var td;
			
			td = $('<td></td>').addClass("joLinks-Element-Name").html(name).appendTo(tr);
			
			var td2 = $('<td></td>').addClass("joLinks-Element-Image-Holder").appendTo(tr);
			
			var img = $('<img></img>').css({ "max-width" : jolinks_image_max_w + "px", "max-height" : jolinks_image_max_h + "px", "margin" : "0 auto" }).attr('src', image).appendTo(td2);
			
			var self = this;
			d.css('cursor', 'pointer').click ( function () { self.onclick(url) } );
			
			d.mouseover( function () { td.addClass("joLinks-Element-Name-HOver"); } );
			d.mouseout( function () { td.removeClass("joLinks-Element-Name-HOver"); } );
			
			var table = this.createActionTable(); d.appendTo(table.div);
			
			if (this.admin_mode) {
			var adiv = $('<div></div>').addClass('trash-button').css('margin', '0 auto').appendTo(table.actions);
				adiv.click ( function ()
					{
						if (confirm("Esti sigur ca vrei sa stergi acest link?"))
						{
							self.elements[pindex].elements[index].deleted = true;
							self.elements[pindex].elements[index].interface.fadeOut();
							if (jolinks_l_clicked) jolinks_l_clicked(self.elements[pindex].elements[index].id);
						}
					});
				adiv.mouseover( table.border );
				adiv.mouseout( table.unborder );
			}
			
			var lh = $('<div></div>').css('width', '100%'); table.table.appendTo(lh);
			
			return lh;
		}
}
