/*						writeLinks plugin					*/
/*	example CSS as follows:

ul.linksReturn { list-style:none; margin:0; padding:0; }
ul#linksList_XXXXXX {}
	li.linkItem { margin-bottom:5px; }
	li.linkItemNum_X {}
		a.linkA, a.linkA:hover {}
		a.linkTitle, a.linkTitle:hover {}
		a.imgLink, a.imgLink:hover {}
			a.linkTitle span, a.linkTitle:hover span { padding: 0 5px 3px 12px; }
			a.imgLink img, a.imgLink:hover img
		img.linkImg {}
		p.linkDesc {}

takes group id from attribute "linkid" on element

usage: $("#myElem").writeLinks();

default options:
			linkImage:0,						//set to 1 to set any images as links
			uniqueListID:"",					//if set, will prepend list ID with a unique identifier (string value)
			maxLinks:999,						//max # of links to return
			maxTitle:9999,						//max characters in link title text (fsplit style)
			maxDesc:9999,						//max characters in link description text (fsplit style)
			setTitleToImage:1,					//if 1, pulls title to alt/title attributes of image
			setDescToImage:0,					//if 1, pulls description to alt/title attributes of image
			hardPhotoWidth:0,					//if greater than 1, sets photo width attribute to specified width (overrides hardPhotoHeight)
			hardPhotoHeight:0,					//if greater than 1, sets photo height attribute to specified height (overridden by hardPhotoWidth)
			callback:null						//callback function, passes back total # of links and list ID - called after all data written to page
*/

(function($){
	$.fn.writeLinks = function(options) {
		var defaults = {
				maxLinks:999,
				linkImage:0,
				uniqueListID:"",
				maxTitle:9999,
				maxDesc:9999,
				setTitleToImage:1,
				setDescToImage:0,
				hardPhotoWidth:0,
				hardPhotoHeight:0,
				callback:null
			}, options = $.extend(defaults, options);
		
		return this.each(function(){
			var	obj = $(this), groupid = parseInt(obj.attr("linkid"));
			if(!isNaN(groupid)){
				$.getJSON('/data/json.asp?type=link&id='+groupid,function(data){
						if(data.link.length>0){
							var	$AllLinks = $("<ul></ul>").attr("id",options.uniqueListID+"linksList_"+groupid).addClass("linksReturn");
							for(var linkCount=0;linkCount<data.link.length;linkCount++){
								var $linkItem = $("<li></li>").addClass("linkItem").addClass("linkItemNum_"+(linkCount+1));
								linkURL = (data.link[linkCount].url.indexOf("http")<0)?"http://"+data.link[linkCount].url:data.link[linkCount].url;
								$AnchorBlank = $("<a></a>")
										.addClass("linkA")
										.attr("href",linkURL)
										.attr("target",(data.link[linkCount].target>0 || data.link[linkCount].target=="true")?"_blank":"");
								$AnchorTitle = $AnchorBlank.clone().addClass("linkTitle");
									$("<span></span>").html(data.link[linkCount].title).fSplit({maxChar:options.maxTitle}).appendTo($AnchorTitle);
									$AnchorTitle.appendTo($linkItem);
								if(data.link[linkCount].image){
									if(data.link[linkCount].image.path.length>0){
										var $Image = $("<img />").addClass("linkImg").attr("src",data.link[linkCount].image.path).attr("border","0");
										if(options.hardPhotoWidth>0){ $Image.attr("width",options.hardPhotoWidth); }
										else if(options.hardPhotoHeight>0){ $Image.attr("height",options.hardPhotoHeight); }
										else{
											if(data.link[linkCount].image.width>0){$Image.attr("width",data.link[linkCount].image.width);}
											if(data.link[linkCount].image.height>0){$Image.attr("height",data.link[linkCount].image.height);}
										}
										if(options.setTitleToImage>0){$Image.attr("alt",data.link[linkCount].title).attr("title",data.link[linkCount].title);}
										if(options.setDescToImage>0){$Image.attr("alt",data.link[linkCount].desc).attr("title",(data.link[linkCount].desc).replace(/<br \/>/g,""));}
										if(options.linkImage>0){$ImageLink = $AnchorBlank.clone().addClass("imgLink").append($Image).appendTo($linkItem);}
										else{$Image.appendTo($linkItem);}
									}
								}
								//$("<p></p>").html(data.link[linkCount].desc).addClass("linkDesc").fSplit({maxChars:options.maxDesc}).appendTo($linkItem);	//maybe someday
								$linkItem.appendTo($AllLinks);
								if(linkCount>=(options.maxLinks-1)){ linkCount=9999; }
							}
							obj.append($AllLinks);
						}
						else{ if(window.console && window.console.firebug){ console.log("linksList plugin error: no links in array"); } }
						if($.isFunction(options.callback)){ options.callback(data.link.length,options.uniqueListID+"linksList_"+groupid); }
				});
			}else{ if(window.console && window.console.firebug){ console.log("linksList plugin error: no or bad groupid passed"); } }
		});
	};
})(jQuery);

(function($){
	$.fn.fSplit = function(options) {
		var	defaults = { maxChar:999999, stripHTML:true }, options = $.extend(defaults, options);
		return this.each(function() {
			var	elem = $(this), strOut = (options.stripHTML)?elem.html().replace(/<(?:.|\s)*?>/g, ""):elem.html();
			if(strOut.length>options.maxChar){
				strOut = strOut.substr(0,options.maxChar);
				elem.html(strOut.substr(0,strOut.lastIndexOf(" ")) + "...");
			}
			else{ elem.html(strOut); }
		});
	};
})(jQuery);