var $j = jQuery.noConflict();

function widget_NewsLine(container_, options_)
{
	this.container = container_;
	this.opt = new Array();
	this.opt["itemWidth"] = 543;
	//If animation is not being used itemWidth needs to be a minimum of 543px to stop overlap between articles
	this.opt["itemHeight"] = 32;

	if (options_ != null)
	{
		for (x in options_)
			this.opt[x] = options_[x];
	}

	this.items = new Array();
	this.itemIndex = 0;
	
	this.loadData = function() {
		
		// This is how it should work live:
		if (this.opt["url"] != null)
		{
			var self = this;
			$j.ajax({
				async: true,
				url: this.opt["url"],
				method: "GET",
				cache: false,
				data: "widget=NewsLine",
				dataType: "jsonp",
				timeout: 5000,
				success: function(json) {
					if (json.found != 0){	
						self.items= new Array();
						for (iitem in json.news){
							if (json.news.hasOwnProperty(iitem)) {
								var a = new Array();
								a["content"] = json.news[iitem].content;
								a["url"] = json.news[iitem].url;
								self.items.push(a);
							}
						 }
						 self.displayItems();
					}
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
				}
			});	
		}
	}

	this.displayItems = function() {
		var self = this;

		var initHtml = "<div class='frame'>";
		initHtml += "<div id='news-ticker-title'><p>Latest news:</p></div>";
		initHtml += "<div class='viewport'>";
		initHtml += "<div class='container' style='width:" + this.opt["itemWidth"]*this.items.length + "px;'>";
		initHtml += "</div></div>"
		initHtml += "<div class='news-ticker-buttons'>";
		initHtml += "<button id='btnAnim'><img src='../images/widgets/news-ticker-anim-btn.gif' width='19' height='19' border='0' /></button>"
		initHtml += "<button id='btnPrev'><img src='../images/widgets/news-ticker-prev-btn.gif' width='19' height='19' border='0' /></button>"
		initHtml += "<button id='btnNext'><img src='../images/widgets/news-ticker-next-btn.gif' width='19' height='19' border='0' /></button>"
		initHtml += "</div>"
		$j(this.container).html(initHtml);
		
		$j(this.container + " #btnPrev").bind("click", function() {
			self.prev();
		});
		$j(this.container + " #btnNext").bind("click", function() {
			self.next();
		});
		$j(this.container + " #btnAnim").bind("click", function() {
			self.stoptimer();
		});


		if (this.items != null)
		{
			for(i in this.items)			
			{
				if (this.items.hasOwnProperty(i)) {
					var theItem = this.items[i];
					var itemHtml = "<div class='newsline' style='width:" + this.opt["itemWidth"] + "px;'><p>" + theItem["content"] + "</p></div>";
					$j(itemHtml).appendTo($j(this.container + " .container"));
				}
			}

			$j.each($j(this.container + " .newsline"), function(index, value) { 
				$j(value).bind("click", function() {
					//window.open(self.items[index]["url"]);
					window.location = self.items[index]["url"];
				});
			});

		}
		
		$j(this.container).everyTime(8000, function() {
			self.next();
		});
	}
	this.prev = function () {
		if (this.itemIndex == 0){
			
			
			//alert(this.items.length-1)
			this.itemIndex = this.items.length-1;
			$j(this.container + " .container").css("left", (this.items.length-1) * this.opt["itemWidth"] * -1);
			return;		
		
		};
		
		
		this.itemIndex--;
		$j(this.container + " .container").animate({ 
			left: this.itemIndex * this.opt["itemWidth"] * -1
		}, 500)
	}
	this.next = function() {
		if (this.itemIndex >= this.items.length-1){
			this.itemIndex = 0;
			$j(this.container + " .container").css("left", this.itemIndex * this.opt["itemWidth"] * -1);
			return;
		};
		this.itemIndex++;
			
		$j(this.container + " .container").animate({ 
			left: this.itemIndex * this.opt["itemWidth"] * -1
		}, 500)	
	}
	this.stoptimer = function () {$j(this.container).stopTime();}
		
	$j(this.container).text("please wait, loading...");
	this.loadData();
}

//	WIDGET 2 - Editors picks

var picks_count = 0;
function widget_MiniTicker(container_, options_)
{
	this.container = container_;
	this.opt = new Array();
	this.opt["itemWidth"] = 300;
	this.opt["itemHeight"] = 32;

	if (options_ != null)
	{
		for (x in options_)
			this.opt[x] = options_[x];
	}

	this.items = new Array();
	this.itemIndex = 0;
	
	this.loadData = function() {
		
		// This is how it should work live:
		if (this.opt["url"] != null)
		{
			var self = this;
			
			$j.ajax({
				async: true,
				url: this.opt["url"],
				method: "GET",
				cache: false,
				data: "widget=MiniTicker",
				dataType: "jsonp",
				timeout: 5000,
				success: function(json) {
					if (json.found != 0)
					{
						picks_count = json.found;
						self.items= new Array();
						var i = 0;
						for (iitem in json.miniarticles)
						{	
							if (json.miniarticles.hasOwnProperty(iitem)) {
								var a = new Array();
								a["id"] = i;
								a["header"] = json.miniarticles[iitem].header;
								a["url"] = json.miniarticles[iitem].url;
								a["image"] = json.miniarticles[iitem].image;
								a["linktext"] = json.miniarticles[iitem].linktext;
								self.items.push(a);
								i++;
							}
						}
						
						self.displayItems();
					}
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
				}
			});	
		}
	}


	this.displayItems = function() {
		var self = this;
		
		var initHtml = '<h3>Editors picks</h3>';
		initHtml += '<div class="editors_picks">';
		initHtml += '<div id="bt_up"></div><div id="bt_dw"></div>';
		initHtml += '<div class="content_slide"><div id="moveSlides"></div></div></div>';
		
		$j(this.container).html(initHtml);
		
		$j(this.container + " #bt_up, " + this.container + " #bt_dw").bind("click", function() {
			self.stoptimer();
		});
		
		if (this.items != null)
		{
			for(i in this.items)
			{	
				if (this.items.hasOwnProperty(i)) {
					var theItem = this.items[i];
					var itemHtml = "<div class='slide_pick'>"
					itemHtml += "<div class='image_slide'><img src='" + theItem["image"] + "'></div>"
					//itemHtml += "<div class='image_slide'><img src='" + theItem["image"] + "'></div>"
					itemHtml += "<div class='txt_slide'>"
					itemHtml += "<p>" + theItem["header"] + "</p>"
					itemHtml += "<a href='" + theItem["url"] + "'>" + theItem["linktext"] + "</a></div></div></li>"
									
					$j(itemHtml).appendTo($j(this.container + " #moveSlides"));
				}
			}
			
			/*	MOVE SLIDES	*/
			/*var slideTimerMT = 1;
			$j(this.container).everyTime(6000, function() {
				slideTimerMT ++;
				if(Number(slideTimerMT) == Number(self.items.length + 1)){
					slideTimerMT = 1
				}
							
				var topPositionMT = String('-' + String((Number(slideTimerMT) - 1) * Number(99)));
				$j("#moveSlides").animate({ 
					top: topPositionMT
				}, 500)	
			});*/
			/*	********************	*/

		}
		
		var height_pick = "-" + String((picks_count - 1) * 99) + "px";
		
		var isHandlerActiveUp = false;
		var isHandlerActiveDw = true;
				
		$j('#bt_dw').click(function() {
			
			if ($j('#moveSlides').css("top") == height_pick){
				$j('#moveSlides').animate({
					top: '0px'
				}, 1000, function() {
					// Animation complete.
					isHandlerActiveUp = false;
					isHandlerActiveDw = true;
					return;	
				});
				return;
			}
			
			if(isHandlerActiveUp != true){
				isHandlerActiveUp = true;
				isHandlerActiveDw = false;
				$j('#moveSlides').animate({
					top: '-=99px'
				}, 1000, function() {
					// Animation complete.
					if ($j('#moveSlides').css("top") != height_pick)
						isHandlerActiveUp = false;
				});
			}
			isHandlerActiveUp = true;
		});
		$j('#bt_up').click(function() {
			if ($j('#moveSlides').css("top") == "0px"){
				$j('#moveSlides').animate({
					top: height_pick
				}, 1000, function() {
					// Animation complete.
					isHandlerActiveUp = true;
					isHandlerActiveDw = false;
					return;
				});
				return;
			}
			
			if(isHandlerActiveDw != true){
				isHandlerActiveDw = true;
				isHandlerActiveUp = false;
				$j('#moveSlides').animate({
					top: '+=99px'
				}, 1000, function() {
					// Animation complete.
					if ($j('#moveSlides').css("top") != "0px")
						isHandlerActiveDw = false;	
				});
			}
		});
	}
	
	this.stoptimer = function () {$j(this.container).stopTime();}
	
	this.loadData();
}

//	WIDGET 3
function widget_Ticker(container_, options_)
{
	this.container = container_;
	this.opt = new Array();
	this.opt["itemWidth"] = 300;
	this.opt["itemHeight"] = 32;

	if (options_ != null)
	{
		for (x in options_)
			this.opt[x] = options_[x];
	}

	this.items = new Array();
	this.itemIndex = 0;
	
	this.loadData = function() {
		// This is how it should work live:
		if (this.opt["url"] != null)
		{
			var self = this;
			
			$j.ajax({
				async: true,
				url: this.opt["url"],
				method: "GET",
				cache: false,
				data: "widget=TheTicker",
				dataType: "jsonp",
				timeout: 5000,
				success: function(json) {	
					if (json.found != 0){						
						self.items= new Array();
						var i = 1;
						for (iitem in json.articles){	
							if (json.articles.hasOwnProperty(iitem)) {
								var a = new Array();
								a["id"] = Number(iitem) + 1;
								a["header"] = json.articles[iitem].header;
								a["content"] = json.articles[iitem].content;
								a["url"] = json.articles[iitem].url;
								a["image"] = json.articles[iitem].image;
								self.items.push(a);
							}
						}
						self.displayItems();
					}
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					alert("Error" + errorThrown);
				}
			});	
		}
	}

	this.displayItems = function() {
		
		var self = this;

		var initHtml = '<div id="box_Ticker_content">';
		initHtml += '<div id="box_Ticker_objects"></div>';
		initHtml += '<div id="box_Ticker_bt">';
		initHtml += '<div class="Ticker_bt Ticker_bt_1"><a href="javascript:void(0);" id="Ticker_bt_1"></a></div>';
		initHtml += '<div class="Ticker_bt Ticker_bt_2"><a href="javascript:void(0);" id="Ticker_bt_2"></a></div>';
		initHtml += '<div class="Ticker_bt Ticker_bt_3"><a href="javascript:void(0);" id="Ticker_bt_3"></a></div>';
		initHtml += '<div class="Ticker_bt Ticker_bt_4"><a href="javascript:void(0);" id="Ticker_bt_4"></a></div>';
		initHtml += '<div class="Ticker_bt Ticker_bt_5"><a href="javascript:void(0);" id="Ticker_bt_5"></a></div>';
		initHtml += '<div class="Ticker_bt Ticker_bt_6"><a href="javascript:void(0);" id="Ticker_bt_6"></a></div>';
		initHtml += '<div class="Ticker_bt Ticker_bt_7"><a href="javascript:void(0);" id="Ticker_bt_7"></a></div>';
		initHtml += '</div>';
		initHtml += '</div>';
		initHtml += '<div class="clear"></div>';
		
		$j(this.container).html(initHtml);
		
		$j(this.container + " .Ticker_bt a").bind("click", function() {
			self.stoptimer();
		});
		
		if (this.items != null)
		{
			for(i in this.items)
			{	
				if (this.items.hasOwnProperty(i)) {
					var theItem = this.items[i];
					itemHtml = '<div class="slide_pick">';
					itemHtml += '<div id="box_Ticker_image"><a href=' + theItem["url"] + '><img src="' + theItem["image"] + '"></a></div>';
					itemHtml += '<a href=' + theItem["url"] + '><div id="box_Ticker_txt" class="Ticker_txt_' + theItem["id"] + '">';
					//itemHtml += '<div class="Ticker_txt_content"><h3>' + theItem["header"] + '</h3><p>' + theItem["content"] + '</p></div></div></a></div>';
itemHtml += '<div class="Ticker_txt_content"><h3>' + theItem["header"] + '</h3><p>' + theItem["content"] + '</p></div></div></a></div>';
					
					$j(itemHtml).appendTo($j(this.container + " #box_Ticker_objects"));
					//alert(String('-' + String(Number(theItem["id"] - 1) * Number(206))));
					moveSlides(theItem["id"]);							
					
				}
			}
			
			$j(".Ticker_bt a").css('opacity', '0.0');
			$j(".Ticker_bt_1 a").css('opacity', '1.0');
			
			var slideTimer = 1;
			$j(this.container).everyTime(8000, function() {
				slideTimer ++;
				if(Number(slideTimer) == Number(self.items.length + 1)){
					slideTimer = 1
				}
				
				
				var div = "a#Ticker_bt_" + String(Number(slideTimer));
				AnimSlide(div, slideTimer)
			});
		}
	}
	
	this.stoptimer = function () {$j(this.container).stopTime();}
	
	this.loadData();
}


function moveSlides(id){
	var div = "a#Ticker_bt_" + String(Number(id));
	$j(div).bind("click", function(){
		AnimSlide(div,id)						   
			
	})
}
function AnimSlide(div, id){
	$j(".Ticker_bt a").animate({opacity: 0.0}, 200)	
	$j(div).animate({opacity: 1.0}, 500)	

	var topPosition = String('-' + String((Number(id) - 1) * Number(206)));
	$j("#box_Ticker_objects").animate({ 
	top: topPosition
	}, 500)	
}
//	widgets gallery	
function widget_Gallery (container_, options_){
	var obj = this
	this.container = container_;
	this.opt = new Array();
	if (options_ != null)
	{
		for (x in options_)
			this.opt[x] = options_[x];
	}
	
	var div_slide_move = this.container + " .box_slides .slide_move";
	var div_slide = div_slide_move + " .slide";
	var frame_img_mini = div_slide_move + " .frame_img_mini";
	var frame_img_mini_descr_bk = frame_img_mini + " .frame_img_mini_descr_bk";
	var div_dot_box = this.container + " .box_navigation .dot_box";
	var div_box_slides = this.container + " .box_slides";
	var box_display_inner = this.container + " .box_display .box_display_inner"
	var box_display_inner_txt = box_display_inner + " .box_display_inner_txt";
	var box_hide_inner_txt = box_display_inner_txt + " .box_hide_inner_txt"
	var inner_text = box_display_inner_txt + " .inner_text";
	var box_display_inner_images = box_display_inner + " .box_display_inner_images";
	
	var dot_model_left = ".dot_box_wrap .dot_model_left";
	var dot_model_right = ".dot_box_wrap .dot_model_right";
	
	this.box_slide_size = $j(div_slide).size();
	this.dot_selected = 1;
	
	obj.navpos = 1;
	
	this.setUp_widget = function(){
		var _self = this;
		
		$j(frame_img_mini_descr_bk).css("opacity","0.7");
		$j(box_hide_inner_txt).css("opacity","0.0");
		
		//	slide_move CLASS WIDTH
		var box_slide_width = parseInt($j(div_slide).css("width"));
		var ie_issue_width_box = _self.box_slide_size * 25;
		var box_slides_width = _self.box_slide_size * box_slide_width + ie_issue_width_box;
		$j(div_slide_move).css("width",box_slides_width) ;
		
		//var dot_box_width = Number(_self.box_slide_size) * 59;
		//$j(div_dot_box).css({"width" : dot_box_width});
		_self.navigation(_self.dot_selected);
		
	}
	
	this.navigation = function(num){
		var _self = this;
					
		$j(div_dot_box + " .dot_model").css({ 'color': '#666666' });
		$j(div_dot_box + " .dot_model_" + num).css({ 'color': '#b0b0b0' });
	}
	
	this.moveSlide = function(num){
		obj.navpos = num;
		var div_box_slides_width = parseInt($j(div_box_slides).css("width"));
		var position_slide = "-" + String((num - 1) * div_box_slides_width);
		$j(div_slide_move).animate({
				left: position_slide
			}, 800, function() {
				obj.navigation(num);
				obj.dot_selected = num;
		});
	}						   
	
	$j(dot_model_left).click(function(){
		if(obj.navpos >= 1){
			obj.navpos = obj.navpos - 1;
			obj.moveSlide(obj.navpos);
		}
	});
	
	$j(dot_model_right).click(function(){
		if(obj.navpos < $j(div_slide).size()){
			obj.navpos += obj.navpos;
			obj.moveSlide(obj.navpos);
		}
	});

	$j(div_dot_box + " .dot_model").click(function(){
		var _self = this;
		var num_dot = $j(this).index() + 1;
		obj.moveSlide(num_dot);
	});
	
    this.setUp_widget();		
}
