// JavaScript Document
var feedContainerID;
var feed;
var feedurl;

var max_feed;
var col_feed;

var col_date;
var col_message = "content";

var col_header;

var has_preloader;

var afterLoad;

var column;

function loadFeed(target, url, _max_feed, _col_feed, _col_date, _col_message, _col_header,  _has_preloader, _afterLoad){
	feedContainerID	= target;
	max_feed		= _max_feed;
	col_feed		= _col_feed;
	col_date		= _col_date;
	col_message		= Boolean(_col_message!=null)?_col_message:col_message;
	col_header		= _col_header;
	has_preloader	= Boolean(_has_preloader==true)?_has_preloader:false;
	afterLoad		= _afterLoad;
	
	//== clear cache data from google ==//
	var mynow = new Date();
	var q = mynow.getMonth();
    var q2 = mynow.getDate();
    var q3 = mynow.getHours();
    var query = q+"0"+q2+"0"+q3+Math.random();
	
	feedurl = new Array(url+"&"+query); // reset feed url
	//== ============================ ==//
	
	google.setOnLoadCallback(initialize); // generate feeds
}

function initialize(){
			
	// set preloader
	if(Boolean(has_preloader)){
		var hdr = $("."+feedContainerID+"Header");
		var ctn = $("#"+feedContainerID);
		
		var hdrPlr = "<div class='preloader black'></div>";
		var ctnPlr = "<div class='preloader'></div>";
		
		hdr.append(hdrPlr);
		var hPlr = hdr.find(".preloader");
		$(hPlr)
		.css('width',	hdr.width())
		.css('height',	hdr.height());
		
		ctn.css('height', '200px');
		ctn.append(ctnPlr);
		var cPlr = ctn.find(".preloader");
		$(cPlr)
		.css('width',	ctn.width())
		.css('height',	ctn.height());
	}
	
	feed = new google.feeds.Feed(feedurl);
	feed.setNumEntries(max_feed); // set the max no. of feeds to load
	feed.load(function(result){
		if (!result.error){
			
			var container = document.getElementById(feedContainerID);
			
			max_feed = Boolean(max_feed >=99)?result.feed.entries.length:max_feed;
			
			col_feed = Boolean(col_feed >result.feed.entries.length)?result.feed.entries.length:col_feed;
			
			var listFeed = Boolean(result.feed.entries.length >max_feed)?max_feed:result.feed.entries.length;
			
			var actual_column= listFeed/col_feed;
			var round_column = Math.round(listFeed/col_feed);
			
			column = Boolean(actual_column>round_column && actual_column<((round_column*1)+1))?(round_column*1)+1:round_column;
			
			var feedNo = 0;
			
			var loopNo = 0;
			
			// set header
			if(Boolean(col_header)){
				feedNo = 1; // reset loopNo
				
				var hdr = $("."+feedContainerID+"Header");
				
				var entry	= result.feed.entries[0];
				
				var tit = returnHeaderString(entry[col_message], 'strong');
				var msg = returnHeaderString(entry[col_message], 'em');
				
				var hdrHdr	= Boolean(col_header!='no header')?'<h1>'+col_header+'</h1>':' ';
				var hdrTit	= '<h2>'+tit+'</h2>';
				var hdrMsg	= '<h3>'+msg+'</h3>';
				var hdrDate = '<h1>'+entry.title+'</h1>';
				
				hdr.append(hdrHdr+hdrTit+hdrMsg+hdrDate);
			}
			
			// == create nav == //
			var nav		= document.createElement("div");
			nav.id		= "nav";
			var nav_wp	= document.createElement("div");
			nav_wp.id	= "wrp";
			var nav_ul=document.createElement("ul");
			// == create nav end == //
			
			var nav_width = 0;
			for (var q = loopNo; q < column; q++){
				// == create feed == //
				var ul = document.createElement("ul");
				ul.id = "list"+q;
				$(ul).addClass("list");
				$(ul).attr("list", "list"+q);
				for (var i = 0; i < col_feed; i++){
					if(Boolean(result.feed.entries[feedNo])){
					var entry = result.feed.entries[feedNo];
					var li = document.createElement("li");
					li.id = "feed"+feedNo;
				
					//== feed ==//
					date = returnDate(entry);
					
					li.innerHTML = 
					'<div id="toolbar">'+
					'<div id="facebook" class="left" style="overflow:hidden;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.porterprize.org/pastwinner%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>'+
					'<div id="twitter" class="left"><iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/tweet_button.html" style="width:120px; height:21px;"></iframe></div>'+
					'<div id="readmore" class="right"><a href="'+entry.link+'" target="_blank">Read More ...</a></div>'+ // link to feed Rss
					'<div class="clear"></div>'+
					'</div>'+
					'<span id="title">'+date+'</span>'+ // feed date
					'<span id="detail">'+entry[col_message]+'</span>'+ // feed body
					'<div class="clear"></div>';
					
					$(li).addClass("bg gray");
					
					if($.browser.msie)
					if($.browser.version*1<8) $(li).find('#toolbar').css('display', 'none');
					//== ================ ==//
					
					ul.appendChild(li);
					
					feedNo +=1;
					}else{  }
				}
				if(q>0) $(ul).hide();
				container.appendChild(ul);
				// == create feed end == //
				
				// == create nav == //
				var nav_li = document.createElement("li");
				nav_li.id = "list"+q;
				nav_li.innerHTML = q+1;
				
				if(q<=0)$(nav_li).addClass("active");
				if(q>=column-1)$(nav_li).addClass('last');
				
				$(nav_li).accordion().click(function () {
					var now_li = $(this);
					$.each($("div#nav ul li"), function() {
						if ($(this).attr("id") == now_li.attr("id"))	$(this).addClass("active");
						else											$(this).removeClass("active");
					});
					$.each($("ul.list"), function(){
						if ($(this).attr("id") == now_li.attr("id"))	$(this).fadeIn(600);
						else											$(this).hide();
					});

				});
				$(nav_li).hover(function () {
					$(this).addClass("over");
				}, function () {
					$(this).removeClass("over");
				});
				
				nav_ul.appendChild(nav_li);
				// == create nav end == //
				
			}
			if(column<=1) $(nav_ul).hide();
			$(nav_wp).append(nav_ul);
			$(nav).append(nav_wp);
			$(container).parent().append(nav);
			
			var np = $(container).parent();
			var nv = $(np).find('#nav');
			var nw = $(nv).find('#wrp');
			var nu = $(nv).find('ul');
			var nl = $(nu).find('li');
			var nl_m = new Object();
			nl_m.l=returnCSStoNo($(nl).css('margin-left'));
			nl_m.r=returnCSStoNo($(nl).css('margin-right'));
			nl_m.t=returnCSStoNo($(nl).css('margin-top'));
			nl_m.b=returnCSStoNo($(nl).css('margin-bottom'));
			
			var nlcw = ($(nl).width()+nl_m.l+nl_m.r+nl_m.t+nl_m.b)*column;
			var width_limit = np.width()/2;
			
			var arw_w = (22+nl_m.l+nl_m.r);
			
			var scroll_no = 0;
			
			var scroll_val	= nlcw/width_limit;
			var scroll_limit= Boolean(Math.round(scroll_val*1)<scroll_val) ? Math.round(scroll_val*1)+1 : Math.round(scroll_val*1);
			
			if(nlcw > width_limit){
				nw
				.css('position',	'absolute')
				.css('overflow',	'hidden')
				.css('display',		'block')
				.css('width',		width_limit+'px')
				.css('height',		nl.height()+'px')
				.css('margin-left',	arw_w+'px');
				
				nu
				.css('position',	'absolute')
				.css('display',		'block')
				.css('height',		nl.height()+'px');
				
				nv.append('<div class="arrow back left"></div>');
				nv.append('<div class="arrow next right"></div>');
				var nx = nv.find('div.arrow.next');
				var bk = nv.find('div.arrow.back');
				
				bk
				.hide()
				.mouseenter(function(){
					$(this).css('background-position', 'bottom right');
				})
				.mouseleave(function(){
					$(this).css('background-position', 'bottom left');
				})
				.click(function(){
					scroll_no -=1;
					scroll_no = Boolean(scroll_no<0)?0:scroll_no;
					if(scroll_no<=0)				$(this).hide();
					if(scroll_no<scroll_limit)		$(nx).show();
					if(scroll_no == 0)	nu.animate({ marginLeft: '0px' }, 200 );
					else				nu.animate({ marginLeft: '-'+((scroll_no*width_limit)-nl_m.r)+'px' }, 200 );
				});
				nx
				.css('margin-left',	(width_limit+arw_w+nl_m.l+nl_m.r)+'px')
				.mouseenter(function(){
					$(this).css('background-position', 'top right');
				})
				.mouseleave(function(){
					$(this).css('background-position', 'top left');
				})
				.click(function(){
					scroll_no +=1;
					scroll_no = Boolean(scroll_no>=scroll_limit-1)?scroll_limit-1:scroll_no;
					if(scroll_no>=0)				$(bk).show();
					if(scroll_no>=scroll_limit-1)	$(this).hide();
					nu.animate({ marginLeft: '-'+((scroll_no*width_limit)-nl_m.r)+'px' }, 200 );
				});
			}
					
			//== reassign feed styles ==//
			var list_li = $("ul.list li");
			var li_title= $("span#title");
			var li_detail=$("span#detail");
			var li_fcbk = $("div#facebook");
			var li_twtr = $("div#twitter");
			var li_read = $("div#readmore");
			var li_tool = $("div#toolbar");
			var li_toolA = $("div#toolbar a");
			
			var list_nav = $("div#nav");
			var list_nav_ul = $("div#nav ul");
			var list_nav_li = $("div#nav ul li");
			
			rm_h = list_li.height()-li_tool.height()-6;
			rm_w = list_li.width()-li_tool.width()-10;
			
			li_fcbk.hide();
			li_twtr.hide();
			li_read.hide();
			
			li_tool
			.css("margin", list_li.height()+ "px 0px 0px 0px")
			.css("width", list_li.width()-20).hide();
			
			// == list li mouse events == //
			list_li
			.css("width",	list_li.parent().width())
			.mouseenter(function() {
				$(container)
				.css("height", Math.round($(container).attr("hRef")*1)+(li_tool.height()*1));
				
				var li_h = 
				Boolean($(this).find('span#title').css('float') == 'left')?
					$(this).find('span#detail').height():
						$(this).find('span#title').height()+$(this).find('span#detail').height();
				
				$(this)
				.attr("bgClr", $(this).css("background-color"))
				.attr("txClr", $(this).css("color"))
				.attr("pad_t", returnCSStoNo($(this).css("padding-top")))
				.attr("pad_b", returnCSStoNo($(this).css("padding-bottom")))
				.attr("mrg_t", returnCSStoNo($(this).css("margin-top")))
				.attr("mrg_b", returnCSStoNo($(this).css("margin-bottom")))
				.attr("wRef", Boolean($(this).attr("wRef"))?$(this).attr("wRef"):$(this).width())
				
				.attr("hRef",
					Boolean($(this).attr("hRef"))?
						$(this).attr("hRef"):
						Math.round(
							($(this).height()*1)+
							($(this).attr("pad_t")*1)+
							($(this).attr("pad_b")*1)+
							($(this).attr("mrg_t")*1)+
							($(this).attr("mrg_b")*1)
						)
					)
				
				.attr("hRefEx",
					Boolean($(this).attr("hRefEx"))?
						$(this).attr("hRefEx"):
						Math.round(($(this).attr("hRef")*1)))
				
				.css("color", "#C3C0C4")
				.css("background-color", $(this).children("div#toolbar").css("background-color"))
				.css("padding-left", "10px")
				.css("padding-right", "10px")
				.css("width", ($(this).width()-20)+"px")
				.animate({
					height: $(this).attr("hRefEx")*1
				}, 200);
				
				$(this).children("div#toolbar")
				.css("margin-left", "-10px")
				.css("margin-right", "-10px")
				.show();
				
				$(this).children("div#toolbar").children("div#facebook").delay(400).fadeIn(200);
				$(this).children("div#toolbar").children("div#twitter").delay(400).fadeIn(200);
				$(this).children("div#toolbar").children("div#readmore").delay(400).fadeIn(200);
			})
			.mouseleave(function(){
				$(container)
				.css("height", $(container).attr("hRef")*1);
				
				$(this)
				.css("color", $(this).attr("txClr"))
				.css("background-color", $(this).attr("bgClr"))
				.css("padding-left", "0px")
				.css("padding-right", "0px")
				.css("width", ($(this).attr("wRef")+"px"))
				.animate({
					height:
						($(this).attr("hRef")*1)-
						($(this).attr("mrg_t")*1)-
						($(this).attr("mrg_b")*1)-
						($(this).attr("mrg_b")*1)
				}, 200);
				
				$(this).children("div#toolbar")
				.css("margin-left", "0px")
				.css("margin-right", "0px")
				.hide();
				
				$(this).children("div#toolbar").children("div#facebook").hide();
				$(this).children("div#toolbar").children("div#twitter").hide();
				$(this).children("div#toolbar").children("div#readmore").hide();
			});
			// == ==================== == //
			
			var pad_top = returnCSStoNo(list_li.css("padding-top"));
			var pad_btm = returnCSStoNo(list_li.css("padding-bottom"));
			
			var mrg_top = returnCSStoNo(list_li.css("margin-top"));
			var mrg_btm = returnCSStoNo(list_li.css("margin-bottom"));
			
			var list_nav_ul_w = 0;
			
			list_li.each(function(){
				$(this)
				.css('height', Math.round(pad_top+pad_btm+$(this).height()))
				.attr("hRef", Math.round(pad_top+pad_btm+mrg_top+mrg_btm+$(this).height()));
				
				list_nav_ul_w += $(this).width();
				
			});
			//== crop to fit container ==//
			var feedH = 0;
			var feedCound = 0;
			list_li.each(function(){
				feedCound +=1;
				if( feedCound <= col_feed)
				feedH +=Math.round($(this).attr("hRef"));
			});
			
			list_nav_ul.css('width', list_nav_ul_w+'px');
			
			var feedW = list_li.width()*1;
			
			var ctn_mrg_t = returnCSStoNo($(container).css("margin-top"));
			var ctn_mrg_b = returnCSStoNo($(container).css("margin-bottom"));
			var ctn_mrg_l = returnCSStoNo($(container).css("margin-left"));
			var ctn_mrg_r = returnCSStoNo($(container).css("margin-right"));
			var ctn_pad_t = returnCSStoNo($(container).css("padding-top"));
			var ctn_pad_b = returnCSStoNo($(container).css("padding-bottom"));
			var ctn_pad_l = returnCSStoNo($(container).css("padding-left"));
			var ctn_pad_r = returnCSStoNo($(container).css("padding-right"));
			
			var ctnP_mrg_t= returnCSStoNo($(container).parent().css("margin-top"));
			var ctnP_mrg_b= returnCSStoNo($(container).parent().css("margin-bottom"));
			var ctnP_pad_t= returnCSStoNo($(container).parent().css("padding-top"));
			var ctnP_pad_b= returnCSStoNo($(container).parent().css("padding-bottom"));
			
			var ctn_h = feedH+ctn_mrg_t+(ctn_mrg_b*2)+ctn_pad_t+ctn_pad_b;
			var ctn_w = (feedW+ctn_mrg_l+ctn_mrg_r+ctn_pad_l+ctn_pad_r);
			var ctnP_h= ctn_h+ctnP_mrg_t+ctnP_mrg_b+ctnP_pad_t+ctnP_pad_b;
			
			$(container)
			.css("height", ctn_h+"px")
			.css("width", ctn_w+"px")
			.css("position", "absolute")
			.css("overflow", "hidden");
			
			$(container).parent()
			.css("height", Boolean(ctnP_h>$(container).parent().height())?ctnP_h+"px":$(container).parent().height()+"px");
			
			$(container).attr("hRef", $(container).height())
			$(container).parent().attr("hRef", $(container).height())
			//== ===================== ==//
			
			//== set nav position ==//
			var list_nav_mrg = {
			w:	(returnCSStoNo(list_nav_li.css("margin-left"))*1)+
				(returnCSStoNo(list_nav_li.css("margin-right"))*1),
			h:	(returnCSStoNo(list_nav_li.css("margin-top"))*1)+
				(returnCSStoNo(list_nav_li.css("margin-bottom"))*1)
			}
			
			var list_nav_pad = {
			w:	(returnCSStoNo(list_nav_li.css("padding-left"))*1)+
				(returnCSStoNo(list_nav_li.css("padding-right"))*1),
			h:	(returnCSStoNo(list_nav_li.css("padding-top"))*1)+
				(returnCSStoNo(list_nav_li.css("padding-bottom"))*1)
			}
			
			$(list_nav)
			.css("width", (((list_nav_li.width()*1)+list_nav_mrg.w+list_nav_pad.w)*column)-list_nav_mrg.w)
			.css("height", list_nav_li.height()+list_nav_mrg.h+list_nav_pad.h-list_nav_mrg.h)
			.css("margin", "-"+list_nav.height()+"px 0px 0px "+(width_limit-(arw_w*2))+"px");
			
			$(list_nav_li).addClass("left");
			
			if(Boolean(afterLoad)) afterLoad();
			
			// remove preload if any
			if(Boolean(has_preloader)){
				$("."+feedContainerID+"Header").find(".preloader").fadeOut(500);
				$("#"+feedContainerID).find(".preloader").fadeOut(500);
			}
			
		}else{ feed = new google.feeds.Feed(feedurl); }
	});
}

function returnHeaderString(string, tag){
	var startIndex	= string.indexOf('<'+tag+'>')+tag.length+2;
	var endIndex	= string.indexOf('</'+tag+'>');
	
	return string.substring(startIndex, endIndex);
}

function returnCSStoNo(ele){
	var val;
	if(Boolean(ele))	val = ele.substr(0, ele.length-2)*1;
	else				val = 0;
	return val;
}

function returnDate(entry){
	var dd = new Date(entry.publishedDate).getDate();
	var mm = new Date(entry.publishedDate).getMonth()+1;
	var yy = new Date(entry.publishedDate).getFullYear();
	var date ="";
	
	if (Boolean(col_date.indexOf("yy")>-1)){
		date += yy;
		if (Boolean(col_date.indexOf("mm")>-1)) date += "/";
	}
	if (Boolean(col_date.indexOf("mm")>-1)){
		date += mm;
		if (Boolean(col_date.indexOf("dd")>-1))	date += "/";
	}
	if (Boolean(col_date.indexOf("dd")>-1))		date += dd;
	
	if(date == "") date = entry[col_date];
	
	return date;
}
