/*** global variables - sort direction arrows ***/
var uparrow = new Image(9, 7);
uparrow.src = "Images/uparrow.gif";
var downarrow = new Image(9, 7);
downarrow.src = "Images/downarrow.gif";
var noarrow = new Image(9, 7);
noarrow.src = "Images/noarrow.gif";
var sidearrow = new Image(9,7);
sidearrow.src = "Images/sidearrow.gif";
var leftBreadcrumbArrow = new Image(14,14);
leftBreadcrumbArrow.src = "Images/leftBreadcrumbArrow.gif";
var rightBreadcrumbArrow = new Image(14,14);
rightBreadcrumbArrow.src = "Images/rightBreadcrumbArrow.gif";
var currentFontSize = 0;


function refresh() {
	var e=document.getElementById("refreshed");
	if(e.value=="no")
		e.value="yes";
	else{	
		var url = location.href;
		e.value="no";
		location.href = url+"&refreshing=true";
		location.reload();
	}
	document.getElementById('searchWord').value = '';
}

function clearSearch() {
	document.getElementById("clearSearch").click();
}

/*** font resize detection and stylesheet switching ***/

function init()  {
   	var iBase = TextResizeDetector.addEventListener(onFontResize,null);
	var base_font_size = iBase;
	setActiveStyleSheet('alt_font_' + iBase);
	currentFontSize = iBase;
}

function onFontResize(e,args) {
	var minFontSize, maxFontSize
	minFontSize = 12;
	maxFontSize = 32;
	
	var iSize = args[0].iSize;
	var iBase = args[0].iBase;
	
	if (iSize < minFontSize)
		currentFontSize = minFontSize;
	else if (iSize > maxFontSize)
		currentFontSize = maxFontSize;
	else
		currentFontSize = iSize
		
	setActiveStyleSheet('alt_font_' + currentFontSize);
		
//	var msg = "\nThe base font size in pixels: " + iBase;
//	msg +="\nThe current font size in pixels: " + iSize;
//	alert(msg);
}

/*****  Sort  *****/

function sortResults(sortString) {
	var reversed

	if (sortString == 'score') {
		reversed = (document.score.src == downarrow.src);
		showSortArrow(sortString, reversed);		
	} else if (sortString == 'date') {
		reversed = (document.date.src == downarrow.src);
		showSortArrow(sortString, reversed);		
	} else if (sortString == 'author') {
		reversed = (document.author.src == uparrow.src);
		showSortArrow(sortString, reversed);		
	} else if (sortString == 'ticker') {
		reversed = (document.ticker.src == uparrow.src);
		showSortArrow(sortString, reversed);
	} else {
		reversed = (document.score.src == downarrow.src);
		showSortArrow(sortString, reversed);
	}
    
    var url = "SearchController?sort=" + sortString + "&reversed=" + reversed;
    
    window.location = url;  
		
}

function showSortArrow(sortString, reversed) {
	if (sortString != null) {
		document.score.src = noarrow.src;
		document.date.src = noarrow.src;
		document.author.src = noarrow.src;
		document.ticker.src = noarrow.src;

        arrow = reversed ? uparrow.src : downarrow.src;

		if (sortString == 'score') 
			document.score.src = arrow;
		else if (sortString == 'date')
			document.date.src = arrow;
		else if (sortString == 'author')
			document.author.src = arrow;
		else if (sortString == 'ticker')
			document.ticker.src = arrow;
		else
			document.score.src = arrow;
	}
}

/*****  Paging  *****/
function createPageLinks() {
	var header, sp1, sp2, sp5, spanTags
	
	header = $('tableHeader');
	sp1 = header.appendChild(document.createElement('span'));
	sp1.className = 'headerbanner';
	sp2 = header.appendChild(document.createElement('span'));
	sp2.className = 'headerlinks';

	
	spanTags = $$('span');
	
	for (i = 0; i < spanTags.length; i++) {
		tag = spanTags[i];
		str = tag.className;

		if (str == "pagebanner") {
			sp1.innerHTML = tag.innerHTML;
		} else if (str == "pagelinks") {
			sp2.innerHTML = tag.innerHTML;		
		}	
	}
}
function createPageLinksOld() {
	var header, footer, sp1, sp2, sp3, sp4, sp5, spanTags
	
	header = $('tableHeader');
	footer = $('tableFooter');
	sp1 = header.appendChild(document.createElement('span'));
	sp1.className = 'headerbanner';
	sp2 = header.appendChild(document.createElement('span'));
	sp2.className = 'headerlinks';
	
	sp3 = footer.appendChild(document.createElement('span'));
	sp3.className = 'footerbanner';
	sp4 = footer.appendChild(document.createElement('span'));
	sp4.className = 'footerlinks';
	
	spanTags = $$('span');
	
	for (i = 0; i < spanTags.length; i++) {
		tag = spanTags[i];
		str = tag.className;

		if (str == "pagebanner") {
			sp1.innerHTML = tag.innerHTML;
			sp3.innerHTML = tag.innerHTML;
		} else if (str == "pagelinks") {
			sp2.innerHTML = tag.innerHTML;		
			sp4.innerHTML = tag.innerHTML;	
		}	
	}
}

function pageRequest(page) {
	alert('page number='+page);
}

/*****  Advanced Search Form  *****/

function advancedSearch() {
	var form = $('advancedSearchForm');

	clearAdvancedSearch();
	Element.hide(form);
	form.style.top = '0px';
	form.style.left = '140px';
	new Effect.SlideDown(form,{delay:0.0, duration:.3, fps:100, afterFinish:function(e){
		Element.show(form);$('keyword').focus();}});
	
}

function closeAdvancedSearch() {
		var form = $('advancedSearchForm');
		new Effect.SlideUp(form, {duration:.3, fps:100});
		clearAdvancedSearch();
}

function clearAdvancedSearch() {
	var text = $('advError');
	$$('form#advancedSearchForm input[type=text]').each(function(input) {
		input.value = '';
	})

	text.style.color = '#0b517d';
	text.innerHTML = 'Enter a search query string:';
	$$('form#advancedSearchForm input[type=radio]')[0].checked = true;
}

function validateAdvancedSearch() {
	alert("validateAdvancedSearch");
	var newSearch = $$('form#advancedSearchForm input[type=radio]')[0];
	var keyword = $('keyword');
	var error = $('advError');
	
	if (searchFieldsEmpty()) {
		error.innerHTML = 'All search fields cannot be empty';
		error.style.color = 'red';
		keyword.focus();
		return false;		
	}
	else {
        return true;
	}	
}

function searchFieldsEmpty() {
	var keyword = $('keyword');	
	var company = $('companySearch');
	var author = $('authorSearch');
	var ticker = $('tickerSearch');
	var industry = $('industrySearch');
	var pubType = $('publicationTypeSearch');
    var group = $('groupSearch');
    var toDate = $('dateFromSearch');
    var fromDate = $('dateToSearch');

    if (!isEmptyOrWhitespace(keyword.value)) return false;
    if (!isEmptyOrWhitespace(company.value)) return false;
    if (!isEmptyOrWhitespace(ticker.value)) return false;
    if (!isEmptyOrWhitespace(author.value)) return false;
    if (!isEmptyOrWhitespace(industry.value)) return false;
    if (!isEmptyOrWhitespace(pubType.value)) return false;
    if (!isEmptyOrWhitespace(group.value)) return false;
    if (!isEmptyOrWhitespace(toDate.value)) return false;
    if (!isEmptyOrWhitespace(fromDate.value)) return false;
    
    return true;
}

/*****  Fix for Mozilla bug in Advanced Search Form  *****/

function advSearchForm(){
/*
 *  This function calculates the width of each label in the advanced search form
 *  in order to left-align the input fields properly. IE does this automatically but
 *  Mozilla does not.
 */ 
  	var labelContent, labelSpan, labelWidth
	
 	$$('li label').each(function(i) { 		
    	labelContent = i.innerHTML;
    	labelWidth = document.defaultView.getComputedStyle(i, '').getPropertyValue('width');
    	labelSpan = document.createElement('span');
    	labelSpan.style.display = 'block';
    	labelSpan.style.width = labelWidth;
    	labelSpan.innerHTML = labelContent;
    	i.style.display = '-moz-inline-box';
    	i.innerHTML = null;
    	i.appendChild(labelSpan);
  	});
}

/*****  Side Nav items  *****/

function collapseExpandSideNavItems(div) {
	display = $(div).getStyle('display');
	image = (display == 'none') ? 'downarrow.gif' : 'sidearrow.gif';
	$(div).up('li').setStyle({backgroundImage: 'url(Images/' + image + ')'});
	Effect.toggle(div, 'slide', {duration:.3, fps:100});
}

function sidenavMsg(msg) {
	if (msg == '') {
		return 'Click on a category to collapse or expand it.';
	} else {
		return msg;
	}
}

/*****  Comment Form  *****/

function addComment() {
	var div = $('commentBox');

	Element.hide(div);
	div.style.top = '0px';
	div.style.left = '110px';
	new Effect.SlideDown(div,{delay:0.1, afterFinish:function(e){
		Element.show(div);$('commentText').focus();}});	
}

function closeCommentBox() {
		var div = $('commentBox');
		new Effect.SlideUp(div);
		clearCommentBox();
}

function clearCommentBox() {
	$('commentText').value = '';
}

function submitComment() {
		new Effect.SlideUp($('commentBox'));
}

 function isEmptyOrWhitespace(string) {
    return string == null || string.match(/^\s*$/);
 }
