var aRating = {
	'5ra': '5cow.gif',
	'4ra': '4cow.gif',
	'3ra': '3cow.gif',
	'nora': '0cow.gif'
};
var aLicense = {
  'shareware': 'Shareware',
  'freeware': 'Freeware',
  'demo': 'Commercial Demos',
  'open': 'OpenSource Licenses',
  'other': 'Other Licenses',
  '*': 'All Titles'
};

sn_crumbs = {
	
	aCrumbs: [
		['Browse', treeID]
	],
	
	bPageView: false,
	
	showCrumbs: function() {
		var ret = '';
		// display crumbs
		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 ? platformTreeID : sn_crumbs.aCrumbs[i - 1][1]);
				ret += '<div class="sb_bc_gr_text"><a href="javascript:void(null)" onclick="sn_crumbs.fetchCategories(this, ' + sn_crumbs.aCrumbs[i][1] + ', 1);">' + 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, bSponDL) {
	  sn_crumbs.swBrowserDC = dataLoad(sn_crumbs.elDancingCows, true);
		callAJAX( 
			wsAJAX + 'fetchCat.php?t=' + tree_id
			+ '&s=' + bSponDL
			+ '&pf=' + pf,
			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 Sponsored Downloads
			if (respObj.DATA.spon.length > 0) {
			  if (respObj.DATA.adsrc == 'ARC') {
  				sn_crumbs.elSponDL.innerHTML = respObj.DATA.spon;
  		          } else {
  		                eval(respObj.DATA.spon);
  		          }
			}
			if (respObj.DATA.ad1.length > 0) {
				sn_crumbs.elAd1.innerHTML = respObj.DATA.ad1;
			}
			if (respObj.DATA.ad2.length > 0) {
				sn_crumbs.elAd2.innerHTML = respObj.DATA.ad2;
			}
			/*
			if (respObj.DATA.ad3.length > 0) {
				sn_crumbs.elAd3.innerHTML = respObj.DATA.ad3;
			}
			*/
			// 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="#" onclick="sn_crumbs.fetchCategories(this, ' + aCats[i]['tree_id'] + ', 1); 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 = [];
			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();
			// sn_crumbs.reSize();
		}
	},
	
	fetchTitles: function(e, tree_id, page, license) {
	  if (sn_crumbs.swBrowserDC.parentNode == null) {
	    sn_crumbs.swBrowserDC = dataLoad(sn_crumbs.elDancingCows, true);
	  }
	  if (license == null) {
	    license = '*';
	  }
		callAJAX(
			wsAJAX + 'fetchTitles.php?t=' + tree_id
				+ '&f=' + titleFilter
				+ '&p=' + page
				+ '&l=' + license
				+ '&pf=' + pf,
			sn_crumbs.updTitles
		);

		return false;
	},
	
	updTitles: function(req, respObj) {
	  dataLoad(sn_crumbs.swBrowserDC, false);
		if (respObj.SUCCESS == true) {
			var licFilt = respObj.DATA.licFilt;
			if (respObj.DATA.titles.length > 0 || (respObj.DATA.titles.length == 0 && licFilt != '*')) {
				rssurl = wsRoot + 'whats/new/' + respObj.DATA.nav.treeID + '?rss';
				rssdesc = 'Newest Titles: ' + sn_crumbs.aCrumbs[sn_crumbs.aCrumbs.length - 1][0];
				// 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 = wsRoot + 'preview/' + aTitles[i]['software_id'];
					sponClass = sponText = '';
                                        description = '';
					if (typeof aTitles[i]['is_sponsored'] != 'undefined') {
                                                if ( aTitles[i]['click_url'] != '' ) {
                                                  link = aTitles[i]['click_url'];
                                                }
                                                description = aTitles[i]['description'] + '<br />';
 				                sponLink = aTitles[i]['sponsored_url'];
		    		                sponLink = sponLink.replace(/##POS##/, i + 1);
		    		                dt = new Date();
		    		                sponDt = sprintf('%4d%02d%02d%02d%02d%02d', dt.getFullYear(), dt.getMonth() + 1, dt.getDate(), dt.getHours(), dt.getMinutes(), dt.getSeconds());
		    		                link = sponLink.replace(/##NOWC##/, sponDt) + link;
		    		                sponClass = 'bgSponsor';
		    		                sponText = '<br /><br />Sponsor';
					}
					oTitle = document.createElement('div');
					var rtg = trim(aTitles[i]['rating']);
					if (typeof(aRating[rtg]) == 'undefined') {
						rtg = 'nora';
					}
					oTitle.innerHTML = '<div class="title ' + sponClass + '">'
						+ '<div class="titleLeft"><a href="' + link + '">' + aTitles[i]['program_name'] 
						+ '</a><br />' + description  
                                                + '<span class="license">' + aTitles[i]['license'] + '</span><br />' 
						+ '<span class="license">' + aTitles[i]['distributions'] + '</span>' + sponText + '</div>'
						+ '<div class="titleRight"><img src="' + ssCows + aRating[rtg] + '" /><br />Added ' + aTitles[i]['last_updated'] 
						+ '<br />' + aTitles[i]['popularity'] + ' popularity</div>'
						+ '</div>';
					sn_crumbs.elTitles.appendChild(oTitle);
				}
				if (aTitles.length == 0) {
					oTitle = document.createElement('div');
					oTitle.innerHTML = '<div class="errMsg w420" style="margin-bottom: 0;">No results for "' + aLicense[licFilt] + '".  Try another filter.</div>';
					sn_crumbs.elTitles.appendChild(oTitle);
				}
				
				// PermaLink
				// var pLink = '<a href="?t=' + respObj.DATA.nav.treeID + '&pg=' + respObj.DATA.nav.page + '" class="pLink linkBlueUnderline"><span class="Normal">Link to this page.</span></a>';
				var pLink = '<div class="pLink"><a href="?t2=' + respObj.DATA.nav.treeID + '&pg=' + respObj.DATA.nav.page + '" class="linkBlueUnderline"><span class="Normal">Link to this page.</span></a></div>';
				
				// navigation
				var nav = respObj.DATA.nav;
				var navret = pLink;
				// prev
				if (nav.prevPg > 0) {
					navret += '<a href="#softwarebrowser" onclick="sn_crumbs.fetchTitles(this, ' + nav.treeID + ', ' + nav.prevPg + ', \'' + licFilt + '\');">&laquo; Prev</a>';
				} else {
					navret += '<span style="color: #BFBFBF;">&laquo; Prev</span>';
				}
				// page no
				navret += '&nbsp;[Page ' + nav.page + ' of ' + Math.ceil(nav.rows / 20) + ']&nbsp;';
				// next
				if (nav.nextPg > 0) {
					navret += '<a href="#softwarebrowser" onclick="sn_crumbs.fetchTitles(this, ' + nav.treeID + ', ' + nav.nextPg + ', \'' + licFilt + '\');">Next &raquo;</a>';
				} else {
					navret += '<span style="color: #BFBFBF;">Next &raquo;</span>';
				}
				
				// update to page
				sn_crumbs.elTitlesNavTop.innerHTML = navret;
				sn_crumbs.elTitlesNavBot.innerHTML = navret;
				sn_crumbs.elTitlesNavTop.style.display = 'inline';
				sn_crumbs.elTitlesNavBot.style.display = 'inline';

				// license filters
				var sLicFilt = '';
				for (i in aLicense) {
				  if (i == 'other') {
				    sLicFilt += '<br />';
				  }
				  if (sLicFilt > '') {
				    sLicFilt += ' | ';  
				  }
				  if (i == licFilt) {
				    sLicFilt += '<span class="noLink">' + aLicense[i] + '</span>';
				  } else {
					  sLicFilt += '<a href="#softwarebrowser" class="linkGreyDk" onclick="sn_crumbs.fetchTitles(this, ' + nav.treeID + ', 1, \'' + i + '\');"><span class="Underline">' + aLicense[i] + '</span></a>';
					}
				}
				sn_crumbs.elLicFilt.innerHTML = 'Filters: ' + sLicFilt;
				sn_crumbs.elLicFilt.style.display = 'inline';
			} else if (licFilt == '*') {
				rssurl = wsRoot + 'spotlight/' + respObj.DATA.nav.treeID + '?rss';
				rssdesc = 'Spotlight ' + platformName + ' ' + sn_crumbs.aCrumbs[sn_crumbs.aCrumbs.length - 1][0] + ' Program';
				// Not leaf node - spotlight etc.
				sn_crumbs.resetTitlesNav();
				// post spotlight
				sn_crumbs.elTitles.innerHTML = respObj.DATA.spotFmt;
			}
			self.setTimeout('sn_crumbs.reSize();', 80);
		}
	},
	
	resetTitlesNav: function() {
		sn_crumbs.elTitles.innerHTML = '';
		sn_crumbs.elTitlesNavTop.style.display = 'none';
		sn_crumbs.elTitlesNavBot.style.display = 'none';
		sn_crumbs.elLicFilt.style.display = 'none';
		sn_crumbs.elTitlesNavTop.innerHTML = '';
		sn_crumbs.elTitlesNavBot.innerHTML = '';
		sn_crumbs.elLicFilt.innerHTML = '';
	},
	
	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.elSW_Browser, 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.elSW_Browser, sn_crumbs.swBrowserDC);
	},
	
	doOnLoad: function(e) {
		// console.log('doOnLoad');
		sn_crumbs.elSponDL = document.getElementById('top_sponsored_ads');
		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.elTitlesFilter = document.getElementById('titlesfilter');
		sn_crumbs.elLicFilt = document.getElementById('licFilt');
		sn_crumbs.elSW_Browser = document.getElementById('sw_browser');
		sn_crumbs.elDancingCows = document.getElementById('dancing_cows');
		sn_crumbs.elAd1 = document.getElementById('ad1');
		sn_crumbs.elAd2 = document.getElementById('ad2');
		sn_crumbs.elAd3 = document.getElementById('ad3');
		sn_crumbs.fetchCategories(e, treeID, 0);
	}
};
addEvent(window, 'load', sn_crumbs.doOnLoad, false);
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


