function News(gscope) {
	
	var globalScope = gscope
	var facebookApiUrl = "https://graph.facebook.com/126688657349849/posts?access_token=123864327698731|5De3vrK_PJS6C9n2R2R8hnucfww&callback=?"
	var staticNewsUrl = "/_site/news.php"
	var twitterApiUrl = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=projectorsthlm&count=4&callback=?"
	var youtubeApiUrl = "http://gdata.youtube.com/feeds/api/users/projectorSthlm/uploads?alt=json&fields=entry&callback=?"
	
	var facebookUrl = "http://sv-se.facebook.com/pages/Projector/126688657349849"
	var twitterUrl = "http://twitter.com/projectorsthlm"
	var youtubeUrl = "http://www.youtube.com/ProjectorSthlm"
	
	var fbString = 'Kontaktar Facebook...<br /><br /><div class="small cssbutton closebtn">Stäng</div> <div class="small cssbutton xlink" onClick="window.open(\''+ facebookUrl + '\')">Gå till Facebook</div><br />';
	var tweetString = 'Kontaktar Twitter...<br /><br /><div class="small cssbutton closebtn">Stäng</div> <div class="small cssbutton xlink" onClick="window.open(\'' + twitterUrl + '\')">Gå till Twitter</div><br />';
	var tubeString = 'Kontaktar Youtube...<br /><br /><div class="small cssbutton closebtn">Stäng</div> <div class="small cssbutton xlink" onClick="window.open(\''+ youtubeUrl + '\')">Gå till Youtube</div><br />';
	
	var timeout    = 500;
	var closetimer = 0;
	var ddmenuitem = 0;
	var posArr;
	var index=0;

	function openNews(sel) {  
		
		if(!isIpadComp) {
			news_canceltimer();
			news_close();
		} else {
			$("#newscontainer").hide();
		}
		
		posArr = [56, 92, 128]
		
		if(isIpadComp) {
			if(orientation == 0 || orientation == 180)
			posArr = [10, 46, 82]			
		}

		if(sel == "fb") {
			printNews(fbString)
			$("#newscontainer").css('left', posArr[0] + 'px');
			$("#newscontainer").fadeIn()
		} else if(sel == "tw") {
			printNews(tweetString)
			$("#newscontainer").css('left', posArr[1] + 'px');
			$("#newscontainer").fadeIn()
		} else if(sel == "yt") {
			printNews(tubeString)
			$("#newscontainer").css('left', posArr[2] + 'px');
			$("#newscontainer").fadeIn()
		} else {
			$("#newscontainer").show();
		}
		
		$("#newscontainer").css('visibility', 'visible');
	}
	
	function news_close() {  
		$("#newscontainer").hide();
		//$("#newscontainer").css('visibility', 'hidden');
	}
	
	function news_timer() {  
		closetimer = window.setTimeout(news_close, timeout);
	}
	
	function news_canceltimer(){  
		if(closetimer) {  
			window.clearTimeout(closetimer);
			closetimer = null;
		}
	}
	
	$("#newscontainer").css('visibility', 'visible');
	$("#newscontainer").hide();

	if(!isIpadComp) {
		$('#linkFacebook').bind('mouseover', function(){openNews('fb')})
		$('#linkTwitter').bind('mouseover', function(){openNews('tw')})
		$('#linkYoutube').bind('mouseover', function(){openNews('yt')})
		$('#newscontainer').bind('mouseover', openNews)
		$('#linkFacebook').bind('mouseout',  news_timer)
		$('#linkTwitter').bind('mouseout',  news_timer)
		$('#linkYoutube').bind('mouseout',  news_timer)
		$('#newscontainer').bind('mouseout',  news_timer)
		$('#linkFacebook').bind('click', function(){window.open(facebookUrl)})
		$('#linkTwitter').bind('click', function(){window.open(twitterUrl)})
		$('#linkYoutube').bind('click', function(){window.open(youtubeUrl)})		
		document.onclick = news_close;
	} else {
		$('#linkFacebook').bind('click', function(){openNews('fb')})
		$('#linkTwitter').bind('click', function(){openNews('tw')})
		$('#linkYoutube').bind('click', function(){openNews('yt')})
		$('#newscontainer').find(".closebtn").live('click', news_close)
	}


	$(window).resize(function() {
		hideOverflow('news');
	});
	
	getStaticNews();
	getTwitterData();
	getYoutubeData();	

	/*
	//Load json data via AJAX 
	function getFacebookData() {
		$.getJSON(facebookApiUrl, function(data) {
			fbString = '<div class="list">'	
			for(var i=0; i<3;i++) {
				var date = new Date()
				date.setISO8601(data.data[i].created_time);
				fbString += '<div class="tablerow">'
				
				if(data.data[i].picture && data.data[i].picture != "")
				fbString += '<img class="userimg" src="' + data.data[i].picture + '" width="30" height="30" />'
				
				fbString += '<span class="msg"><span>' + replaceURLWithHTMLLinks(data.data[i].message) + '</span><br />'
				fbString += '<span class="date">' + date.getHours() + "." + date.getMinutes() + ", " + date.toDateString() + '</span></span>'
				fbString += '</div>'							
			}
			
			fbString += '</div>'		
			
			if(globalScope.lang == "en")
			fbString += '<div class="small cssbutton closebtn">Close</div> <div class="small cssbutton xlink" onClick="window.open(\''+ facebookUrl + '\')">Go to Facebook</div><br />'
			else
			fbString += '<div class="small cssbutton closebtn">Stäng</div> <div class="small cssbutton xlink" onClick="window.open(\''+ facebookUrl + '\')">Gå till Facebook</div><br />'
			
			console.log(data);
			//openNews('fb');
		});	
		
	}
	*/
	//PUBLIC FUNCTIONS
	this.onNewsClick= function(event)
	{
		if(event.type=="static")
		{
			window.location= event.link;
			return;
		}
	   window.open(event.link);
	}
	
	this.onNextClick= function(event)
	{
		var clds=$("#news li");
		$(clds[index]).removeClass('news-item-slide-show');
		$(clds[index]).addClass('news-item-slide-hide');
		
		index++;
		$('#news-prev').show();
		if(index>=clds.length)
		{
			index= clds.length-1;
		}
		
		$(clds[index]).removeClass('news-item-slide-hide');
		$(clds[index]).addClass('news-item-slide-show');
		
		hideOverflow('news');
	}
	
	this.onPrevClick= function(event)
	{
		var clds=$("#news li");
		$(clds[index]).removeClass('news-item-slide-show');
		$(clds[index]).removeClass('news-item-slide-hide');
		
		index--
		
		if(index<=0)
		{
			index= 0;
			$('#news-prev').hide();
		}
		
		$(clds[index]).removeClass('news-item-slide-hide');
		$(clds[index]).addClass('news-item-slide-show');
		
		hideOverflow('news');
	}
	
	function hideOverflow(obj)
	{
		return; 
		
		//console.log('hideOverflow');
		var clds=$("#"+obj+" li"); // obj.childNodes;
		if (typeof(obj)=='string') obj=document.getElementById(obj);
		var i;
		var isHidden= false;
		for (i=0; i<clds.length; i++){
			$(clds[i]).removeClass('news-item-hide');
			$(clds[i]).removeClass('news-item-show');
			//if ((clds[i].offsetTop-obj.offsetTop) >= obj.offsetHeight){
			if(isHidden)
			{
				$(clds[i]).addClass('news-item-hide');
				continue;
			}	
				
			if (clds[i].offsetTop+clds[i].offsetHeight>obj.offsetHeight){
				isHidden= true;
				$(clds[i]).addClass('news-item-hide');
				
			} else{
				$(clds[i]).addClass('news-item-show');
			}
		}
		
	}
	
	function getStaticNews()
	{
		
		//getFacebookData();
		//console.log("getStaticNews");
		var dataList= vm.newsList() || new Array() ;
		$.getJSON(staticNewsUrl, function(data) {
			vm.newsList(dataList.concat(data.data));
			getFacebookData();
		});
	}
	
	function removeUrls(input)
	{
	     var start= input.indexOf('http');
	     //console.log(start);
	     if(start==-1)
	     {
	     	return input;
	     }
	     var end=input.substr(start, input.indexOf(" ")+start);
	           
	    return input.substr(start, end);
	}
	
	function getFacebookData()
	{
		$.getJSON(facebookApiUrl, function(data) {
			var list = data.data;
			var max= list.length;
			var dataList= vm.newsList() || new Array() ;
			var breakIndex;
			
			for(var i=0;i<max;i++)
			{
				var d = {};
				d.text= list[i].message;
				d.type = list[i].type;
				d.link = list[i].link;
				d.image= null;
				d.headline= list[i].name;
				
				if(list[i].type != 'link' && list[i].picture)
				{
					var imgPath= list[i].picture;
					d.image= imgPath.replace(/_+[a-z].jpg/gi, "_n.jpg")
				}
				
				if(!d.headline){
					
					breakIndex= list[i].message.indexOf(String.fromCharCode(10)+String.fromCharCode(10));
					d.headline= list[i].message.substr(0, breakIndex);
					if(breakIndex!=-1){
						d.text= list[i].message.substr(breakIndex+2)
					}
				}
				
				
				//d.text= removeUrls(d.text);
				if(d.text.length>140)
				{
					d.text= d.text.substr(0,140);
					d.text+="...";
				}
				
				
				dataList.push(d);
				
				
			}
			/*
			https://s-hvthumb-snc6.fbcdn.net/s130x130/246157_10150272638189639_10150272637619639_19966_1179_t.jpg
			https://s-hvthumb-snc6.fbcdn.net/s480x480/246157_10150272638189639_10150272637619639_19966_1179_b.jpg
			https://s-hvthumb-snc6.fbcdn.net/246157_10150272638189639_10150272637619639_19966_1179_b.jpg
			http://vthumb.ak.fbcdn.net/hvthumb-ak-snc6/246157_10150272638189639_10150272637619639_19966_1179_t.jpg
			
			http://photos-h.ak.fbcdn.net/hphotos-ak-ash4/226170_255221351163245_126688657349849_1005094_6500931_s.jpg
			http://photos-h.ak.fbcdn.net/hphotos-ak-ash4/226170_255221351163245_126688657349849_1005094_6500931_n.jpg
			
			* 
			* * */
			
			
			vm.newsList(dataList);
			//console.log(vm.newsList());
			Cufon.replace('.news-item-headline');
			hideOverflow('news');
		});
	}
	function getTwitterData() {
		$.getJSON(twitterApiUrl, function(data) {
			tweetString = '<div class="list">'	
			for(var i=0; i<data.length;i++) {
				var dateStr = data[i].created_at;
				var date = new Date(dateStr.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/,"$1 $2 $4 $3 UTC"));
				tweetString += '<div class="tablerow">'
				tweetString += '<img class="userimg" src="' + data[i].user.profile_image_url + '" width="30" height="30" />'
				tweetString += '<span class="msg"><span><b>' +  data[i].user.screen_name +'</b> ' + replaceURLWithHTMLLinks(data[i].text) + '</span><br />'
				tweetString += '<span class="date">' + date.getHours() + "." + date.getMinutes() + ", " + date.toDateString() + '</span></span>'
				tweetString += '</div>'					
			}
			
			tweetString += '</div>'		
			
			if(globalScope.lang == "en")
			tweetString += '<div class="small cssbutton closebtn">Close</div> <div class="small cssbutton xlink" onClick="window.open(\'' + twitterUrl + '\')">Go to Twitter</div><br />'	
			else
			tweetString += '<div class="small cssbutton closebtn">Stäng</div> <div class="small cssbutton xlink" onClick="window.open(\'' + twitterUrl + '\')">Gå till Twitter</div><br />'	
		});	
	}
	
	function getYoutubeData() {
		
		$.getJSON(youtubeApiUrl, function(data) {
			tubeString = 	'<div class="list">'			
			
			for(var i=0; i<3;i++) {
				var date = new Date()
				date.setISO8601(data.feed.entry[i].published.$t);
				
				var idArr = data.feed.entry[i].id.$t.split("/")
				var movieId = idArr[idArr.length-1]
				
				tubeString += '<div class="tablerow">'
				
				if(data.feed.entry[i].media$group.media$thumbnail[0].url && data.feed.entry[i].media$group.media$thumbnail[0].url != "")
				tubeString += '<img class="userimg" src="' + data.feed.entry[i].media$group.media$thumbnail[0].url + '" width="30" height="30" />'
				
				tubeString += '<span class="msg"><span><b><a href="http://www.youtube.com/user/ProjectorSthlm?v=' + movieId + '" target="_blank">' + data.feed.entry[i].title.$t + '</a></b> - ' + replaceURLWithHTMLLinks(data.feed.entry[i].content.$t) + '</span><br />'
				tubeString += '<span class="date">' + date.getHours() + "." + date.getMinutes() + ", " + date.toDateString() + '</span></span>'
				tubeString += '</div>'		

			}
			
			tubeString += '</div>'			
			
			if(globalScope.lang == "en")
			tubeString += '<div class="small cssbutton closebtn">Close</div> <div class="small cssbutton xlink" onClick="window.open(\''+ youtubeUrl + '\')">Go to Youtube</div><br />'
			else
			tubeString += '<div class="small cssbutton closebtn">Stäng</div> <div class="small cssbutton xlink" onClick="window.open(\''+ youtubeUrl + '\')">Gå till Youtube</div><br />'
		});	
	}
	
	function printNews(str) {
		$("#newsbox").empty()
		$("#newsbox").append(str)
	}
	
	return this;
}

function replaceURLWithHTMLLinks(text) {
  var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
  return text.replace(exp,"<a href='$1' target='_blank'>$1</a>"); 
}



Date.prototype.setISO8601 = function (string) {
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
        "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
        "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
    var d = string.match(new RegExp(regexp));

    var offset = 0;
    var date = new Date(d[1], 0, 1);

    if (d[3]) { date.setMonth(d[3] - 1); }
    if (d[5]) { date.setDate(d[5]); }
    if (d[7]) { date.setHours(d[7]); }
    if (d[8]) { date.setMinutes(d[8]); }
    if (d[10]) { date.setSeconds(d[10]); }
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
    if (d[14]) {
        offset = (Number(d[16]) * 60) + Number(d[17]);
        offset *= ((d[15] == '-') ? 1 : -1);
    }

    offset -= date.getTimezoneOffset();
    time = (Number(date) + (offset * 60 * 1000));
    this.setTime(Number(time));
}
