jQuery.fn.minimeFeed = function (feedurl, options, callbackFunc) {
	feedOpt = jQuery.extend ({
		/**
		*
		*		 minime RSS and Atom Feed Reader
		*					ver 1.1
		*
		**/
		// Default options
		phpRepeater: "stg/bespoke_images/irelandjerseys/getfeed.php",		// XML - PHP repeater file for cross-domain errors against (Leave blank if extensions)
		timeout: 5000,					// Timeout
		limit: 10,						// Feed item limit
		getFeedTitle: true,				// Feed title visibility
		getItemTitle: true,				// Item title visibility
		getItemDate: true,				// Item date and time visibility
		dateMode: 'Y F j, l H:i',		// Date display mode ('default' or format string)
		dayList: 'Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday',	// Day name list
		monthList: 'January|February|March|April|May|June|July|August|September|October|November|December',	// Month name list
		getItemSummary: true,			// Item summary visibility
		getItemDescription: false,		// Item description visibility (only Atom feed)
		getItemLink: true,				// Item link visibility
		getAtomId: false,				// Item id visibility (only Atom feed)
		nextLinkText: "next &raquo;",	// Item hyperlink text
		wrongXmlText: "Feeds are not given",									// Wrong RSS and Atom xml message
		timeoutText: "No responses were received within the specified time",	// Timeout message
		errorText: "The file is not found or network failure",					// HTTP and other error message
		notModifiedText: "The source has not changed since the last request",	// Not modified message
		parserErrorText: "Analytical error"										// XML Parser error message
	}, options);

		jQuery(this).empty();
		// feedurl is empty
		if(!feedurl||feedurl.length==0) {
			jQuery(this).append(feedOpt.errorText);
			return false;
		}
		if(feedurl.substr(0,7)=='http://'&&(feedOpt.phpRepeater!=''||feedOpt.phpRepeater!=null)) {
			feedurl = feedOpt.phpRepeater+'?url='+feedurl.substr(7);
		}
		selected = this;
		setHtml = '';
		jQuery.ajax({
			type: "GET",
			url: feedurl,
			dataType: "xml",
 			timeout: feedOpt.timeout,
			success: function(xml) {
				if(jQuery(xml).children('rss').length>0) {


						rsscounter = 0;
						jQuery(xml).children('rss').children('channel').find('item').each(function() {
							// items to html
							rsscounter++;

							var itemTitle,itemDate,itemDescription,itemLinks,itemDateForm = '';

							if(jQuery(this).children('title').length>0) {
								itemTitle = jQuery(this).children('title').text();
							}
							if(jQuery(this).children('pubDate').length>0) {
								itemDate = jQuery(this).children('pubDate').text();
								itemDateForm = convertDate(itemDate);
							}
							if(jQuery(this).children('description').length>0) {
								itemDescription = jQuery(this).children('description').text();
								itemDescription = trim_words(itemDescription,10);
							}
							if(jQuery(this).children('link').length>0) {
								itemLinks = jQuery(this).children('link').text();

							}

							setHtml += '<p><a class="normal"  target="_blank" href="'+itemLinks+'">'+itemTitle + '</a><br/>';
							//setHtml += itemDateForm + '<br/>' ;
							setHtml += itemDescription + '... ' + '<a class="normal"   target="_blank" href="'+itemLinks+'">more &raquo;</a></p>';


					  		// stopped
					  		if(rsscounter==feedOpt.limit) {
					  			return false;
					  		}
						});
						setHtml += '';
				}


				// wrong xml
				if(jQuery(xml).children('rss').length==0&&jQuery(xml).children('feed').length==0) {
					setHtml +=  feedOpt.wrongXmlText;
				}
				jQuery(selected).append(setHtml);
				if(typeof callbackFunc == 'function'){
					callbackFunc.call(this, xml);
				}
			},
			// Error Handling
			error: function (xhr, status, error) {
				if(xhr.statusText=='timeout') {
					setHtml +=  feedOpt.timeoutText;
				}
				if(xhr.statusText=='error') {
					setHtml +=  feedOpt.errorText;
				}
				if(xhr.statusText=='notmodified') {
					setHtml +=  feedOpt.notModifiedText;
				}
				if(xhr.statusText=='parsererror') {
					setHtml +=  feedOpt.parserErrorText;
				}
				jQuery(selected).append(setHtml);
		    }
		});

		function trim_words(theString, numWords) {
		    expString = theString.split(/\s+/,numWords);
		    theNewString=expString.join(" ");
		    return theNewString;
		}



		function convertDate(date) {
			var getdate = new Date(date);
			var year = getdate.getFullYear(); // 2001
			var jmonth = getdate.getMonth(); // 0-11
			var month = Number(jmonth) + 1; // 1-12
			var day = getdate.getDate(); // 1-31

			var zmonth = ''+month;
			if(zmonth.length==1) {
				var zmonth = '0'+zmonth;
			} // 01-12

			var zday = ''+day;
			if(zday.length==1) {
				var zday = '0'+zday;
			} // 01-31

			var wday = getdate.getDay(); // 0-6

			var hour = getdate.getHours(); // 0-23
			var min = getdate.getMinutes(); // 0-59
			var sec = getdate.getMilliseconds(); // 0-59

			var zhour = ''+hour;
			if(zhour.length==1) {
				var zhour = '0'+zhour;
			} // 01-23

			var zmin = ''+min;
			if(zmin.length==1) {
				var zmin = '0'+zmin;
			} // 01-59

			var zsec = ''+sec;
			if(zsec.length==1) {
				var zsec = '0'+zsec;
			} // 01-59

			var dlist = feedOpt.dayList.split('|');
			var mlist = feedOpt.monthList.split('|');

			var dayname = dlist[wday]; // Monday
			var monthname = mlist[jmonth]; // May
			/*
			var monthend = new Date(year, month+1, 0);
			var lastday = monthend.getDate(); // 28-31 */

			var retdate = feedOpt.dateMode;
			retdate = retdate.replace('Y', year);
			retdate = retdate.replace('m', zmonth);
			retdate = retdate.replace('d', zday);
			retdate = retdate.replace('H', zhour);
			retdate = retdate.replace('i', zmin);
			retdate = retdate.replace('s', zsec);

			retdate = retdate.replace('n', month);
			retdate = retdate.replace('j', day);
			retdate = retdate.replace('G', hour);

			retdate = retdate.replace('F', '[MN]');
			retdate = retdate.replace('l', '[DN]');

			retdate = retdate.replace('[MN]', monthname);
			retdate = retdate.replace('[DN]', dayname);
			return retdate;
		}
	}

jQuery.fn.miniFeed = function (feedurl, options, callbackFunc) {
	jQuery(this).minimeFeed(feedurl,options,callbackFunc);
}
