sn_crumbs = {
	
	aCrumbs: [
		['Solutions', treeID]		// Solutions tree ID
	],
	
	bPageView: false,         // first invokation doesn't count as PageView, but later ones do.
	
	showCrumbs: function() {
		var ret = '';
		sz = sn_crumbs.aCrumbs.length;
		if (sz == 1) {
			ret += '<div class="sb_bc_bl_left"></div>';
		} else {
			ret += '<div class="sb_bc_gr_left"></div>';
		}
		for (var i = 0; i < sz; ++i) {
			if (i < sz - 1) {
				var parent = (i == 0 ? treeID : sn_crumbs.aCrumbs[i - 1][1]);
				ret += '<div class="sb_bc_gr_text"><a href="javascript:void(0);" onclick="sn_crumbs.fetchCategories(this, ' + sn_crumbs.aCrumbs[i][1] + ', ' + parent + ');">' + sn_crumbs.aCrumbs[i][0] + '</a></div>';
				if (i == sz - 2) {
					ret += '<div class="sb_bc_grbl_arw"></div>';
				} else {
					ret += '<div class="sb_bc_grgr_arw"></div>';
				}
			} else {
				ret += '<div class="sb_bc_bl_text">' + sn_crumbs.aCrumbs[i][0] + '</div>';
			}
		}
		ret += '<div class="sb_bc_bl_right"></div>';
		sn_crumbs.elCrumbs.innerHTML = ret;
	},
	
	fetchCategories: function(e, tree_id) {
	  sn_crumbs.swBrowserDC = dataLoad(sn_crumbs.elSolBrowser, true);
		callAJAX( 
			wsAJAX + 'fetchSolCat.php?t=' + tree_id,
			sn_crumbs.updCategories,
			sn_crumbs.bPageView
		);
		sn_crumbs.bPageView = true;
		return false;
	},
	
	updCategories: function(req, respObj) {
		if (respObj.SUCCESS == true) {
			sn_crumbs.fetchTitles(null, respObj.DATA.reqID, pg);
			pg = 1;
			// update categories
			var ret = '';
			var aCats = respObj.DATA.cats;
			var aParent = respObj.DATA.parentCat;
			for (var i = 0; i < aCats.length; ++i) {
				ret += '<div class="padBottom10"><a href="javascript:void(0);" onclick="sn_crumbs.fetchCategories(this, ' + aCats[i]['tree_id'] + ', ' + aParent['tree_id'] + ', 0); return false;">'
					+ '<span class="w150" style="display: block; cursor: pointer;">' + aCats[i]['cat'] + '</span></a></div>\n';
			}
			sn_crumbs.noResize();
			sn_crumbs.elCategories.innerHTML = (ret == '' ? '&nbsp;' : ret);
			// update breadcrumbs
			// sn_crumbs.aCrumbs[sn_crumbs.aCrumbs.length] = [aParent['cat'], aParent['tree_id']];
			sn_crumbs.aCrumbs = [];
			var aTax = respObj.DATA.tax;
			for (var i = 0; i < aTax.length; ++i) {
				sn_crumbs.aCrumbs[i] = [aTax[i]['cat'], aTax[i]['id']];
			}
			sn_crumbs.showCrumbs();
			
			rssurl = wsRoot + 'articles/' + aParent['url_path'].substring(1) + '?rss';
			rssdesc = aParent['cat'];
		}
	},
	
	fetchTitles: function(e, tree_id, page) {
	  if (sn_crumbs.swBrowserDC.parentNode == null) {
	    sn_crumbs.swBrowserDC = dataLoad(sn_crumbs.elSolBrowser, true);
	  }
		callAJAX(
			wsAJAX + 'fetchSolTitles.php?t=' + tree_id
				+ '&p=' + page,
			sn_crumbs.updTitles
		);
		return false;
	},
	
	updTitles: function(req, respObj) {
	  dataLoad(sn_crumbs.swBrowserDC, false);
		if (respObj.SUCCESS == true) {
		  // PermaLink
			var pLink = '<div class="pLink"><a href="?t=' + respObj.DATA.nav.treeID + '&pg=' + respObj.DATA.nav.page + '" class="linkBlueUnderline"><span class="Normal">Link to this page.</span></a></div>';
			if (respObj.DATA.titles.length > 0) {
				sn_crumbs.resetTitlesNav();
				// update titles
				var ret = '';
				var ht = 0;
				var aTitles = respObj.DATA.titles;
				var link, sponLink, sponDt, dt;
				var sponClass, sponText;
				sn_crumbs.noResize();
				sn_crumbs.resetTitlesNav();
				for (var i = 0; i < aTitles.length; ++i) {
					link = 'article/' + aTitles[i]['article_id'];
					oTitle = document.createElement('div');
					oTitle.innerHTML = '<div class="title">'
						+ '<div class="titleLeft" style="width: 440px;"><a href="' + link + '">' + aTitles[i]['title'] 
						+ '</a><br /><span class="license">' + 'Published ' + aTitles[i]['last_updated'].substr(0, 10) + ' - Author: ' + aTitles[i]['author'] + '</span></div>'
						+ '</div>';
					sn_crumbs.elTitles.appendChild(oTitle);
				}
				var nav = respObj.DATA.nav;
				if (nav.rows > 0) {
					// nav
					var navret = pLink;
					// prev
					if (nav.prevPg > 0) {
						navret += '<a href="javascript:void(0);" onclick="sn_crumbs.fetchTitles(this, ' + nav.treeID + ', ' + nav.prevPg + ');">&laquo; Prev</a>';
					} else {
						navret += '<span style="color: #BFBFBF;">&laquo; Prev</span>';
					}
					// page no
					navret += '&nbsp;[Page ' + nav.page + ' of ' + Math.ceil(nav.rows / 10) + ']&nbsp;';
					// next
					if (nav.nextPg > 0) {
						navret += '<a href="javascript:void(0);" onclick="sn_crumbs.fetchTitles(this, ' + nav.treeID + ', ' + nav.nextPg + ');">Next &raquo;</a>';
					} else {
						navret += '<span style="color: #BFBFBF;">Next &raquo;</span>';
					}
					sn_crumbs.elTitlesNavTop.innerHTML = navret;
					sn_crumbs.elTitlesNavBot.innerHTML = navret;
					sn_crumbs.elTitlesNavTop.style.display = 'inline';
					sn_crumbs.elTitlesNavBot.style.display = 'inline';
				}
			} else {
				sn_crumbs.elTitles.innerHTML = '';
					sn_crumbs.elTitlesNavTop.innerHTML = pLink;
				sn_crumbs.elTitlesNavTop.style.display = 'inline';
				sn_crumbs.elTitlesNavBot.style.display = 'none';
			}
			self.setTimeout('sn_crumbs.reSize();', 80);
		}
	},
	
	resetTitlesNav: function() {
		sn_crumbs.elTitles.innerHTML = '';
		sn_crumbs.elTitlesNavTop.innerHTML = '';
		sn_crumbs.elTitlesNavBot.innerHTML = '';
		sn_crumbs.elTitlesNavTop.style.display = 'none';
		sn_crumbs.elTitlesNavBot.style.display = 'none';
	},
	
	noResize: function () {
		sn_crumbs.elCategories.style.height = 'auto';
		sn_crumbs.elTitles.style.height = 'auto';
		sn_crumbs.elSoftBrowser.style.height = 'auto';
		sn_crumbs.elTitlesPanel.style.height = 'auto';
		dataLoadResize(sn_crumbs.elSolBrowser, sn_crumbs.swBrowserDC);
	},
	
	reSize: function () {
		var htCat = xHeight(sn_crumbs.elCategories);
		var htTtl = xHeight(sn_crumbs.elTitles);
		var htTtlPnl = xHeight(sn_crumbs.elTitlesPanel);
		var maxHt = Math.max(htTtlPnl, htCat);
		// console.log('Heights:  cat: ' + htCat + '  Titles: ' + htTtl +  '  TitlesPanel: ' + htTtlPnl + '  max: ' + maxHt);
		sn_crumbs.elCategories.style.height = (maxHt - 10) + 'px';
		sn_crumbs.elTitlesPanel.style.height = (maxHt - 10) + 'px';
		dataLoadResize(sn_crumbs.elSolBrowser, sn_crumbs.swBrowserDC);
	},
	
	doOnLoad: function(e) {
		// console.log('doOnLoad');
		sn_crumbs.elSoftBrowser = document.getElementById('softbrowser');
		sn_crumbs.elCrumbs = document.getElementById('sn_crumbs');
		sn_crumbs.elCategories = document.getElementById('categories');
		sn_crumbs.elTitles = document.getElementById('titles');
		sn_crumbs.elTitlesPanel = document.getElementById('titlespanel');
		sn_crumbs.elTitlesNavTop = document.getElementById('titlesnavtop');
		sn_crumbs.elTitlesNavBot = document.getElementById('titlesnavbot');
		sn_crumbs.elStorage = document.getElementById('soltn_storage');
		sn_crumbs.elPopNew = document.getElementById('PopNew');
		sn_crumbs.elPopTab = document.getElementById('PopTab');
		sn_crumbs.elNewTab = document.getElementById('NewTab');
		sn_crumbs.elPopList = document.getElementById('PopList');
		sn_crumbs.elNewList = document.getElementById('NewList');
		sn_crumbs.elSolBrowser = document.getElementById('sol_browser');
		// sn_crumbs.showCrumbs();
		sn_crumbs.fetchCategories(e, treeID);
	}
};
addEvent(window, 'load', sn_crumbs.doOnLoad, false);
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

// --- Add Your Own Solution - Begin
	addEvent(window, 'load', loadAddSolution, false);
	
	function loadAddSolution () {
		if  (loggedIn == true) {
			document.getElementById('lbl_addSol').innerHTML = "";
		} else {
			document.getElementById('lbl_addSol').innerHTML = "Sign in to add your own article";
		}
	}
	
	function addSolutionBttn() {
		this.imgSwap('createSolution', 'images/buttons/writearticle_on.gif');
	}
	
	function createSol(e) {
		if (loggedIn == true) {
			loadAddSol();
		} else {
			doCloakIn(e);
			AJAXPush ('loadAddSol()');
		}
	}
	
	function loadAddSol() {
		window.location = "addSolutions.html";
	}
// --- Add Your Own Solution - End

