YAHOO.util.Event.on(window, 'load', function() {
	if (typeof IBSYS.features.storyTools !== 'undefined') {
		IBSYS.features.storyTools(IBSYS.features.storyTools.config);
	}
});

using ('IBSYS.features.storyTools');

IBSYS.features.storyTools = function() {
	// Calling IBSYS.storyTools() a second time simply calls resizeTools()
		
	function createTools (tools) {
		function createTool(tool,toolClass) { // Only createTools needs createTool, so I've restricted createTool to its scope
			var t = document.createElement('div');
			t.title = tool.label;
			t.rel = tool.name;
			if (toolClass != '') { t.className = toolClass; }

			var anchor = document.createElement('a');
			anchor.rel = tool.name;
			tool.url = tool.url.replace(/\[story title\]/, document.title.split(' - ')[0]);
			tool.url = tool.url.replace(/\[story coid\]/, pageProps.coid);
			tool.url = tool.url.replace(/\[site url\]/, location.href);
			tool.url = tool.url.replace(/\[site name\]/, siteinfo.sitename.lc);
			tool.url = tool.url.replace(/\[site key\]/, siteinfo.sitekey.lc);
			anchor.href = tool.url;
			anchor.id = "st_a_" + tool.name;
			anchor.setAttribute('target', '_blank');
			if (tool.popup) {
				anchor.className = 'toolPopup';
			}

			if (tool.icon) {
				var img = document.createElement('img');
				img.src = "/sh/cox/storytools/share_icon_" + tool.name + ".gif";
				anchor.appendChild(img);
			}

			textNode = document.createTextNode(tool.label);

			anchor.appendChild(textNode);
			t.appendChild(anchor);
			return t;
		}
		
		function createMoreLink () {
			var t = document.createElement('div');
			t.title = 'more';
			t.rel = 'more';
			t.className = 'moreShare last';
			
			var anchor = document.createElement('a');
			anchor.className = 'moreShareTools';
			anchor.href= 'http://www.addthis.com/bookmark.php?v=250';

			var textNode = document.createTextNode('more');
			anchor.appendChild(textNode);

			var img = document.createElement('img');
			img.src = "/sh/cox/storytools/share_icon_more_arrow.gif";
			anchor.appendChild(img);

			t.appendChild(anchor);

			return t;
		}

		function commentsLink() {
			var comm = document.createElement('div');
			comm.className = 'commentTools';
			var anchor = document.createElement('a');
			anchor.href = '#COMMENTTOP';

			var img = document.createElement('img');
			img.src = "/sh/cox/storytools/share_icon_comment.gif";
			anchor.appendChild(img);

			var t = document.createTextNode('comment');
			anchor.appendChild(t);
			
			var ccount = document.createElement('span');
			ccount.className = 'commentcount';
			anchor.appendChild(ccount);
			
			comm.appendChild(anchor);
			return comm;
		}

		//console.log('createTools');
		storyPage = YAHOO.util.Dom.getElementsByClassName('StoryBody', 'div').length > 0 ? true : false;
		commentsEnabled = YAHOO.util.Dom.getElementsByClassName('commentsEnabled', 'div').length > 0 ? true : false;
		var toolbox = document.createElement('div');
		toolbox.className = 'toolbox';
		for (var x in tools) {
			var toolset = tools[x].tools;
			var toolgroup = document.createElement('div')
			var groupname = tools[x].group;
			var toolLimit = storyPage && groupname == 'share' && toolset.length > 1 ? 2 : toolset.length;
			var toolLimitClass = '';
			if(groupname == 'share') {
				toolLimitClass = storyPage && toolset.length > 1  ? ' short' : ' full';
				var shareLabel = document.createElement('div');
				shareLabel.className = "shareLabel first";
				var shareLabelText = document.createTextNode("Share this:");
				shareLabel.appendChild(shareLabelText);
				toolgroup.appendChild(shareLabel);
			}
			toolgroup.className = groupname+' storyToolsGroup'+toolLimitClass;
			for (var i = 0; i < toolLimit; i++) {
				var toolClass = '';
				if(i==0 && groupname != 'share') { toolClass = 'first'; }
				if(i==toolLimit-1 && groupname != 'share') { toolClass = 'last'; }
				toolgroup.appendChild(createTool(toolset[i],toolClass));
			};
			if(groupname == 'share') {
				toolgroup.appendChild(createMoreLink());
			}
			toolbox.appendChild(toolgroup);
		}
		if(storyPage && commentsEnabled) {
			toolbox.appendChild(commentsLink());
		}
		//YAHOO.util.Event.on(toolbox, 'click', processClick);
		displayTools(toolbox);
	}
	
	function newWindow(e) {
		YAHOO.util.Event.preventDefault(e);
		var anchor=e.target||e.srcElement, i=0, t=IBSYS.features.storyTools.config, args='';
		for (i in t) {
			for (x in t[i].tools) {
				if (anchor.rel == t[i].tools[x].name) {
					args = t[i].tools[x].popupArgs;
					break;
				}
			}
		}
		popUp(anchor.href, args);
		return false;
	}

	function displayTools(toolbox) {
		storyToolsDivs = YAHOO.util.Dom.getElementsByClassName('StoryTools','div');
		for ( var i in storyToolsDivs ) {
			if(i < storyToolsDivs.length - 1) {
				storyToolsDivs[i].appendChild(toolbox.cloneNode(true));
			} else {
				storyToolsDivs[i].appendChild(toolbox);
			}
		}
		popupLinks = YAHOO.util.Dom.getElementsByClassName('toolPopup','a');
		for (var x in popupLinks) {
			YAHOO.util.Event.on(popupLinks[x], 'click', newWindow);
		}
		addthis.button('.moreShareTools');
		if(storyPage) {
			IBSYS.cox.textsizer();
			if(commentsEnabled) {
				IBSYS.cox.commentCount();
			}
		}
		var cleardiv = document.createElement('div');
		cleardiv.className='clear';
		for ( var i in storyToolsDivs ) {
			storyToolsDivs[i].appendChild(cleardiv.cloneNode(true));
		}

		
	}

	return function(tools) {
		YAHOO.util.Event.onDOMReady(function() {
			if (!document.getElementById('toolbox')) {
				if (!tools) {
					tools = [ 
						{ group: "primary", tools: [
							{
								name:"print",
								label:"print",
								url:"/print/15288241/detail.html",
								popup:true,
								popupArgs:"width=460,height=400,scrollbars",
								icon:true,
								url:""
							},
							{
								name:"email",
								label:"email",
								url:"http://cf." + siteinfo.sitename.display + "/" + siteinfo.sitekey.lc + "/sh/toafriend/index.cfm?page=[site url]",
								popup:true,
								popupArgs:"width=450,height=250",
								icon:true,
								url:""
							}
						] }
					];
				}
				createTools(tools);
			};
		});
	}
}();

using ('IBSYS.cox.textsizer');

IBSYS.cox.textsizer = function() {
	var sizeClasses = ['small', 'medium', 'large'],
		ts,
		story = document.getElementById('story'),
		cookies = document.cookie,
		pos = cookies.indexOf('textsize='),
		start,
		end,
		value, // this cookie crap should be abstracted, if it isn't somewhere already.
		div,
		a;

	function setTextSizeCookie(size) {
		var exp = new Date();
		exp.setFullYear(exp.getFullYear() + 5);
		document.cookie = "textsize=" + size + ";version=" + document.lastModified + "; path=/; expires=" + exp.toGMTString();
	}

	function setTextSize (size, nocookie) {
		var oldSize;
		size = size.replace(/ current/, ''); // Ugly, but not sure of a better way.
		for (var i = sizeClasses.length - 1; i >= 0; i--){
			if (YAHOO.util.Dom.hasClass(story, sizeClasses[i])) {
				oldSize = sizeClasses[i];
				YAHOO.util.Dom.removeClass(story, sizeClasses[i]);
			}
		}

		YAHOO.util.Dom.addClass(story, size);

		if (size != oldSize) {
			sizers = YAHOO.util.Dom.getElementsByClassName('textsizer','div');
			for (var x in sizers) {
				setSizerSelected(size,sizers[x]);
			}
			setTextSizeCookie(size);	
		}
	}

	function setSizerSelected(size,target) {
		var as = target.getElementsByTagName('a');
		for (var i=0; i < as.length; i++) {
			if (YAHOO.util.Dom.hasClass(as[i], size)) {
				YAHOO.util.Dom.addClass(as[i], 'current');
			} else if (YAHOO.util.Dom.hasClass(as[i], 'current')){
				YAHOO.util.Dom.removeClass(as[i], 'current');
			}
		}
	}
	
	if (YAHOO.util.Dom.getElementsByClassName('StoryBody', 'div', story).length > 0) {
		ts = document.createElement('div');
		ts.className = 'textsizer';
		ts.innerHTML = '<div class="label">Text Size:</div>';
		div = document.createElement('div');
		ts.appendChild(div);

		YAHOO.util.Dom.addClass(div, 'buttons');
		for (var i=0; i < sizeClasses.length; i++) {
			a = document.createElement('a');
			div.appendChild(a);
			YAHOO.util.Dom.addClass(a, sizeClasses[i]);
			if (sizeClasses[i] == 'small') {
				YAHOO.util.Dom.addClass(a, 'current')
			}
			a.appendChild(document.createTextNode('A'));
		}

		var toolboxes =  YAHOO.util.Dom.getElementsByClassName('StoryTools','div');
		for (var x in toolboxes) {
			var newts = ts.cloneNode(true);
			toolboxes[x].appendChild(newts);

			YAHOO.util.Event.on(newts, 'click', function(e) {
				var event = e.target || e.srcElement;
				if (event.nodeName == 'A') {
					setTextSize(event.className);
				}
			});
		}

		if (pos != -1) {
			start = pos + 9;
			end = cookies.indexOf(";", start);
			if (end == -1) {
				end = cookies.length;
			}
			value = cookies.substring(start, end);
			value = unescape(value);
			setTextSize(value, true);
		}

		

	}
}

using ('IBSYS.cox.commentCount');
IBSYS.cox.commentCount = function (){

	function getCanonicalNode(x) {
		var relValue = x.getAttribute("rel");	
	    if (relValue == "sitecanonical") {
	        return true;
	    } 
		return false;
	}	

	var canonicalNode = YAHOO.util.Dom.getElementsBy(getCanonicalNode, "link"); 
	if (canonicalNode.length != 0) {
		var postURL = canonicalNode[0].href;
	} else {
	   	var postURL = window.location.href;
	}


	postURL = (postURL.replace(/[#?].+/,""));
	var KAToken = siteinfo.storysettings.discussion.token;
	var postData = "?pgNum=1&pageSize=1&url="+escape(postURL)+"&t="+KAToken+"&mediaType=emedia&userId=0";
	var KAas = siteinfo.storysettings.discussion.as;
	YAHOO.util.Get.script("http://api.kickapps.com/rest/comments/"+KAas+postData+"&"+"callback=IBSYS.cox.commentCount.onKACommentData");
}

IBSYS.cox.commentCount.onKACommentData = function (theData){
	counttext = "["+theData.totSize+"]";
	countspans = YAHOO.util.Dom.getElementsByClassName('commentcount','span');
	for(var x in countspans) {
		countspans[x].innerHTML = counttext;
	}
}	
