var jsRank = new Object();
jsRank.rankUid = null;
jsRank.ownerUid = null;
jsRank.userUid = null;
jsRank.userlevelUid = null;
jsRank.allowAccess = false;
jsRank.isOwner = false;
jsRank.selectedTab = 0;
jsRank.selectedTabAbout = 0;
jsRank.lastGoodDtStr == null;

/* set up calendar */
jsRank.today = formatDate(new Date());
maxBackDate = new Date();

/* DOM READY STUFF */
$(function(){
	/* INIT TABS */
	jsRank.loadRankTab();
	$('.tabs-nav').disableSelection();

	/* TAB CLICK EVENTS */
	$('.rank-tab-link:not(.disabled)').live('click', function(event) {
		var newSelected = $(this).attr('id').replace('ranktab_','');
		if(newSelected != jsRank.selectedTab)
		{
			jsRank.switchTab('ranktabs', event.target);
			jsRank.loadRankTab();
		}
	});
	$('.about-tab-link:not(.disabled)').live('click', function(event) {
		var newSelected = $(this).attr('id').replace('rankabouttab_','');
		if(newSelected != jsRank.selectedTabAbout)
		{
			jsRank.switchTab('rankabouttabs', event.target);
			jsRank.loadAboutTab();
		}
	});

	/* BUTTON EVENTS */
	$('.general-button').live('click', function() { if($(this).hasClass('general-button-disabled')) { return false; } });
});

jsRank.initAbout = function(html) {
	$('#ranktabcontent').html(html);
};

jsRank.initRanks = function(html) {
	$('#ranktabcontent').html(html);
	$('#asOfDt').daterangepicker({
		presets: {specificDate: 'Any Date'},
		selectsToHideFromIE: '#universeUid, #industryUid, #level',
		singleDate: true,
		rangeStartTitle: 'As Of',
		growRight: true,
		onChange: function() { jsRank.verifyAsOfDt($('#asOfDt')); },
		datepickerOptions: {
			minDate: maxBackDate,
			maxDate: new Date(),
			showButtonPanel: true,
			duration: '',
			nextText:'', prevText:'',
			showOn: 'button',buttonImage: '/images/cal.gif',buttonImageOnly: true,
			changeMonth: true,changeYear: true,hideIfNoPrevNext: true,
			currentText: 'Show Today'
		}
	});
};



jsRank.ranksRowsPP = 100;
jsRank.ranksOffset = 0;
jsRank.paginateResults = function(action, extra) {
	if(action == 'resultrowspp')
	{
		jsRank.ranksRowsPP = parseInt($('#resultrowspp').val());
		jsRank.ranksOffset = 0;
	}
	else if(action == 'first')
	{
		jsRank.ranksOffset = 0;
	}
	else if(action == 'prev')
	{
		jsRank.ranksOffset -= parseInt(jsRank.ranksRowsPP);
	}
	else if(action == 'next')
	{
		jsRank.ranksOffset += parseInt(jsRank.ranksRowsPP);
	}
	else if(action == 'last')
	{
		var tot = ($('#resulttotalcnt').length > 0) ? $('#resulttotalcnt').attr('rel') : 0;
		var pages = Math.ceil(tot / jsRank.ranksRowsPP);
		jsRank.ranksOffset = (parseInt(jsRank.ranksRowsPP) * ( parseInt(pages) > 0 ? parseInt(pages)-1 : 0))
	}
	else
	{
		jsRank.ranksRowsPP = 100;
		jsRank.ranksOffset = 0;
	}
	$('#ranks-results-cont').html('<image src="/images/new/ajax-loader-trans.gif" border="0" alt=""/>');
	jsRank.getRanks(jsRank.ranksOffset);
};

jsRank.updateRanksResultsHtml = function(html) {
	$('#run-working').hide();
	$('#ranks-results-cont').html(html);
	$('#ranks-results-cont').show();
	$('#getRanks').removeClass('general-button-disabled');
};

jsRank.getRanks = function() {
	jsRank.ranksOffset = (arguments.length == 1) ? arguments[0] : 0;
	$('#ranks-results-cont').html('').hide();
	$('#run-working').show();
	$('#getRanks').addClass('general-button-disabled');
	$.ajax({
		type: 'POST',
		url: '/app/rank/get-ranks/' + jsRank.rankUid,
		data: $('#the-form').serialize() + '&norows='+ jsRank.ranksRowsPP +'&offset=' + jsRank.ranksOffset,
		success: function(html) {
			jsRank.updateRanksResultsHtml(html);
		},
		error:function (xhr){ ajaxUpdateContainer($('#ranktabcontent'), xhr.status, '/app/rank/summary/' + jsRank.rankUid); }
	});
};

jsRank.showError = function(txt) {
	$('#scr-error-txt').text(txt);
	$('#scr-error').css('display', 'block');
};

jsRank.hideError = function() {
	$('#scr-error-txt').text('');
	$('#scr-error').css('display', 'none');
};

jsRank.downloadResults = function(type) {
	var loadUrl = '';
	var dlLocation = '';
	if(type == 'rank')
	{
		loadUrl = '/app/rank/set-download-rank-results/' + jsRank.rankUid;
		dlLocation = '/p123/DownloadRankings';
	}
	if(loadUrl.length > 0)
	{
		$.ajax({
			type: 'POST',
			url: loadUrl,
			success: function() { location = dlLocation; },
			error:function (xhr){ ajaxUpdateContainer($('#ranktabcontent'), xhr.status, '/app/rank/summary/' + jsRank.rankUid); }
		});
	}
	else
	{
		alert('Error getting results.');
	}
};

jsRank.getTopResults = function(no) {
	ajaxLoading('#rankabouttabscontent');
	$.ajax({
		type: 'POST',
		url: '/app/rank/show-top-results/'+jsRank.rankUid+'?notop=' + no,
		success: function(html) { $('#rankabouttabscontent').html(html); },
		error:function (xhr){ ajaxUpdateContainer($('#ranktabcontent'), xhr.status, '/app/rank/summary/' + jsRank.rankUid); }
	});
};


/* tab functions */
jsRank.switchTab = function(tabNavId, eventElem) {
	switchJsTab(tabNavId, eventElem);
	if(tabNavId == 'ranktabs')
	{
		jsRank.selectedTab = $(eventElem).attr('id').split('_')[1];
		/* clear any run results when changing tabs */
		$('#ranks-results-cont').html('').hide();
	}
	else if(tabNavId == 'rankabouttabs')
	{
		jsRank.selectedTabAbout = $(eventElem).attr('id').split('_')[1];
	}
};

jsRank.loadRankTab = function() {
	ajaxLoading('#ranktabcontent');
	var tabAction = '';
	var tabInitFunc = '';
	if(jsRank.selectedTab == 0) { tabAction = 'about'; tabInitFunc = jsRank.initAbout; }
	else if(jsRank.selectedTab == 1) { tabAction = 'ranks'; tabInitFunc = jsRank.initRanks; }
	$.ajax({
		async:false,
		url:'/app/rank/'+ tabAction +'/' + jsRank.rankUid,
		success:function(html) {
			tabInitFunc(html);
			if ($('#rankabouttabs').length) { jsRank.loadAboutTab(); }
		},
		error:function (xhr){ ajaxUpdateContainer($('#ranktabcontent'), xhr.status, '/app/rank/summary/' + jsRank.rankUid, '/doc/images/ranks.jpg'); }
	});
};

jsRank.loadAboutTab = function() {
	ajaxLoading('#rankabouttabscontent');
	var tabAction = '';
	if(jsRank.selectedTabAbout == 0) { tabAction = 'show-methodology'; }
	else if(jsRank.selectedTabAbout == 1) { tabAction = 'show-top-results'; }
	else if(jsRank.selectedTabAbout == 2) { tabAction = 'show-info'; }
	$.ajax({
		async:false,
		url:'/app/rank/'+ tabAction +'/' + jsRank.rankUid,
		success:function(html) { $('#rankabouttabscontent').html(html); },
		error:function (xhr){ ajaxUpdateContainer($('#ranktabcontent'), xhr.status, '/app/rank/summary/' + jsRank.rankUid); }
	});
};

jsRank.verifyAsOfDt = function(elem_id) {
	var elem = typeof(elem_id) == 'string' ? $('#' + elem_id) : elem_id;
	var prevVal = (jsRank.lastGoodDtStr == null) ? jsRank.today : jsRank.lastGoodDtStr;
	jsRank.lastGoodDtStr=null;

	try
	{
		if( $.datepicker.parseDate('mm/dd/yy', $(elem).val()) > new Date() )
		{ alert($(elem).val() + ' entered is a future date.\n\nSetting date to today\'s date.'); $(elem).val(jsRank.today); }
	}
	catch (err)
	{
		alert('\'' + $(elem).val() + '\': '+  err + "\n\nPlease use MM/DD/YYYY date format.\n\nSetting date to last valid date entered.");
		$(elem).val(prevVal);
		$(elem).focus();
	}

};


jsRank.setLastDt = function(elem) {
	jsRank.lastGoodDtStr = $(elem).val();
};

jsRank.setToday = function() {
	$('#asOfDt').val(jsRank.today);
};

jsRank.changeSystem = function(ownerUid, catUid, itemUid) {
	location='/app/rank/summary/' + itemUid + '?st=' + jsRank.selectedTab;
};

