var alt = {
	
	setup:function(config){
		$(document).ready(function(){
			config.$css 			= config.cssClass;
			config.popupClass		= config.popupclass;
			alt.scanUrls(config.$css, config);
		});
	},
	
	scanUrls:function(css, config){
		$("."+css).each(function(){		
			var loadingType = $(this).attr('rel');
			var popupContent = "";
			switch(loadingType)
			{
				case "innerload" 	: popupContent = ""+alt.getAltContent(this); break;
				case "ajax" 	: popupContent = ""+alt.getAjaxContent(this); break;
			}
			
			var cur_alt_tekst = $(this).attr('alt');
			var cur_title_tekst = $(this).attr('title');			
			
			$(this).hover(function(e){			
				$("."+config.popupClass).each(function(){
					$(this).remove();
				})
				$(this).css({
					'cursor' : 'pointer'
				});
				alt.createPopup(this, popupContent, config, e.pageX, e.pageY);
				
				var isLeft = $(this).hasClass("left-popup");
				
				$().mousemove(function(e){
					alt.change_pop_pos(this, e.pageX, e.pageY, config, isLeft);
				});

				if ($(this).attr('alt') != null) $(this).attr('alt', '');
				if ($(this).attr('title') != null) $(this).attr('title', '');
				
			},
			function(){
				$("."+config.popupClass).remove();
				if (cur_alt_tekst != null) $("."+config.popupClass).attr('alt', cur_alt_tekst);
				if (cur_title_tekst != null) $("."+config.popupClass).attr('title', cur_title_tekst);
			});
		});
	},
	
	getAjaxContent:function(el){
		var url = $(el).attr('alt');
		
		if (!url) url = $(el).attr('title')
		var retrieved = $.ajax({
			url: url,
			type: 'GET',
			cache: false,
			dataType: 'html',
			timeout: 1000,
			async: false,
			success: function(html){
				// do something with xml				
			 return html;
			}
		});
		return retrieved.responseText;
	},
	
	getAltContent:function(el){
		var output = $(el).attr('alt');
		if (!output) output = $(el).attr('title');
		return output;
	},
	
	createPopup:function(el, input, config, leftpos, toppos){
		var pos = alt.findPos(el);
		
		var isLeft = $(el).hasClass("left-popup");
		
		
		
		$("body").append('<div class="'+config.popupClass+'"></div>');
		/* Set proper css to the div */
		if (isLeft)
		{
			var posleft = ""+$("."+config.popupClass).width();
			$("."+config.popupClass).css({
				'position' : 'absolute',
				'left' : leftpos - posleft,
				'top' : toppos + parseInt(config.offsetHeight)
				//'left' : pos[0] + $(el).width() + parseInt(config.offsetWidth),
				//'top' : pos[1] + parseInt(config.offsetHeight)
			});
		}
		else
		{
			$("."+config.popupClass).css({
				'position' : 'absolute',
				'left' : leftpos + parseInt(config.offsetWidth),
				'top' : toppos + parseInt(config.offsetHeight)
				//'left' : pos[0] + $(el).width() + parseInt(config.offsetWidth),
				//'top' : pos[1] + parseInt(config.offsetHeight)
			});
		}
		$("."+config.popupClass).html(input);
	},
	
	findPos:function(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		
		var output = new Array();
		output[0] = curleft;
		output[1] = curtop;
		
		return output;
	},
	
	change_pop_pos:function(el,left,top, config, isLeft)
	{
		
		if (isLeft)
		{
			var posleft = ""+$("."+config.popupClass).width();
			
			$("."+config.popupClass).css({
				'left' : left - posleft - config.offsetWidth +"px",
				'top' : top + parseInt(config.offsetHeight)
			});
		}
		else
		{
			$("."+config.popupClass).css({
				'left' : left + parseInt(config.offsetWidth),
				'top' : top + parseInt(config.offsetHeight)
			});
		}
	}

}