 
// Added to support autocomplete
function setupAutocomplete(inputName) {
	$(inputName).autocomplete("ajax_autocomplete.jsp", {
			multipleSeparator : ' ',
			matchSubset : false,
			matchCase : true,
			dataType : "json",
			multiple: false,
			matchContains: true,
			highlight : false,
			autoFill : false,
			max : 50,
			scrollHeight: 300,
			selectFirst:false,			
			formatItem: function(item){
			    return item.display;
			}, 
			parse: function(data) {
		    	var rows = new Array();
		    	var input = $(inputName).val();
		    	var addedSpace = " ";
		    	if (input.charAt(input.length-1) == ' ') {
		    		addedSpace = "";
		    	}
				for(var i=0; i<data.length; i++){
					rows[i] = {
							data : data[i], 
							result : input.substr(0, data[i].replaceOffset) + data[i].keyword + input.substr(data[i].replaceOffset + data[i].replaceLength) + addedSpace, 
							value : data[i].keyword, 
							keyword : data[i].keyword, 
							display : data[i].display,
							replaceOffset : data[i].replaceOffset,
							replaceLength : data[i].replaceLength,
							action : data[i].action};  
				}
				return rows;  
			}
  		}
	).result(function(event, item) {
		if (item.action == 1) {
			$(inputName).val($(inputName).val().substring(0, $(inputName).val().length - 2));
		}
// $("#termdebug").get(0).value = item.keyword;
	});
}

// default status message time.
var statusTime = 7000;
function displayStatusMessage(cssClass, id, message, fade){
	fade = fade || statusTime;
	
	if($.browser.msie && parseInt($.browser.version) > 7){
		$("#topStatusMessage").html("<span class='statusMessageDiv " + cssClass +"' id='" + id +"'>" + message +"</span>").show();
		var fn = function() {
			$("#topStatusMessage").hide();
		};
		setTimeout(fn, fade);
	} else {
		$("#topStatusMessage").html("<span class='statusMessageDiv " + cssClass +"' id='" + id +"'>" + message +"</span>").fadeIn(fade/3);
		$("#topStatusMessage").fadeOut(fade);
	}
}

 function savedSearchCB(data){
	 // TODO change this asap when jersey layer is complete.
	 if(data){
		 try {
			 if(data.response /* && data.response.toLowerCase().indexOf("true")> -1*/){
				 displayStatusMessage("success", "savedSearch-ok", "Your search has been saved.");
			 } 
		 }catch(e){
			 
		 }
	 }
			
	}

var helpTextString = "(Research companies and topics)";

  function putInRecent(data){

	$('#recentSearchesBody').html(data);
	}
  
  function stopEvents(element){
	  $(element).click(function(e){
			// this.onclick();
			// alert(this.onclick);
			e.stopPropagation();});
  }
 
  function checkEmptyTerm() {
		if($('#terminput').val() == '' || $('#terminput').val() == helpTextString)
			return false;
  };
	
  $(document).ready(function() { 
	  stopEvents('.star');

	  stopEvents('.DocTitle');
		
	    // main top search box setup
	    setupAutocomplete('#terminput');
	  
		if($('#terminput').val() == '')
			$('#terminput').val(helpTextString);
		
		$('#terminput').click(function(){
			if(this.value == helpTextString)
				this.value = '';
		})
		
		$("#topSearchForm").submit(checkEmptyTerm);
		$("#buttonSearch").click(checkEmptyTerm);
		preloadImages(["check-on.png","check-off.png","pdf-over.png","history_btn-over.png","folder_btn-over.png","collapse-over.png","collapse.png","exclude-on.png", "include-on.png", "expand-over.png", "save-over.png", "rss-over.png", "email-over.png", "row-expand-over.png", "more-over.png", "less-over.png", "email_active-over.png", "email_inactive-over.png", "email_stopped-over.png", "delete-over.png", "morepage-on.png"]);
		
  	} );
  
  function switchTab(start,end,current){
	  for(var i = start;i<=end;i++){
		  if(i != current){
			  $("#tab-" + i + "-content").removeClass("firstrain_active");
			  $("#tab-" + i).removeClass("firstrain_active");
		  }
		  else {
			  $("#tab-" + i + "-content").addClass("firstrain_active");
			  $("#tab-" + i).addClass("firstrain_active"); 
		  }
	  }
	  
  }
  
  function bizSubmit() {
	 var q = "";
	 $("#bizForm").children().each(
		function (i){
			if (this.type != "submit") {
			  q = q + this.value + " ";
			}
		}
	 );
	 $("#bizFormQ").val(q);
	 $("#bizFormS").submit();
  }  

function toggle(id, clazz) {
if(clazz == null)
	$('#'+id).toggleClass("hidden");
else 
	$('#'+id).toggleClass(clazz);
}

function linkToObj(linkId){
	if(!linkId)
		return;
	var obj = document.getElementById(linkId);
	if(!obj)
		return;
	var groupId = obj.getAttribute("groupId");
	var text = obj.innerHTML;
	
	return {text:text,groupId:groupId,href:obj.href};
}

function itemRead(link){
	if(!link)
		return;
	var obj = linkToObj(link.id);

	history(obj);
	
}
function history(link, type){
	if(type == null)
		type = 'Read_Item';
	var data = {action:'history',type:type,title:link.text,data:link.href, groupid:link.groupId, resultsize:link.resultsize};
	var url = "ajax_actions.jsp";
	post(url,data,historyItemAdded);
}
function historyItemAdded(data){
	if(data && data.response && data.response.indexOf("True") != -1)
		$('#accountMessageDiv').html("<div class='history saved'>Item saved to history</div>");
}

function saveToFolder(folder, searchID){
		if(!folder || !$.trim(folder)) {
			return;
		}
		var data  = { action:'alert',
		// title:search,
		ids:searchID,
		flagged:'ON',
		tags:folder };
	$.get('ajax_actions.jsp',data,savedSearchCB,'json');	
	// return void(0);
}


function saveItem(itemId, id, groupId){
	var newstate = "";
	if(document.getElementById(itemId).getAttribute("newstate") == null || document.getElementById(itemId).getAttribute("newstate") == "" )
		newstate = 'newstate';
	var link = linkToObj(itemId + "-link");
	var data = {ids : id, action:'history', flagged:'ON', newstate:newstate, groupid:groupId,title:link.text,data:link.href};
	var url = "ajax_actions.jsp";
	$.post(url, data, itemSavedCallback, "json");
	// post(url,data,itemSavedCallback);
	itemSavedCallback({id:itemId, response:'True', newstate:newstate});
}
function post(url,data,callback){
	$.get(url,data,callback,"json");
}

function removeEventHandler(id, events){
	if(id != null && id != ""){
		if(events != null && events.length){
			for(var i = 0; i < events.length; i++){
				document.getElementById(id)[events[i]] = function(){};
			}
		}
		else
			document.getElementById(id)[events] = function(){};
	}
}

/**
 * 
 * @param items {name:text field clazz, url: url, action: action }
 * @return
 */
function attachEditInPlace(items){
	var callbackFunc = function(item){
		return function(targetId, html, original){
	        if (html!=null && html.length>0 && html != original && html!=$(original).text())
	        	window.location= item.url + targetId + "&action=" + item.action + "&newname="+encodeURIComponent(html);
	        return(html);
		};
    }
	
	for(var i = 0; i < items.length; i++){
		var item = items[i];
		$(item.name).editInPlace(item);
	}

}

function itemSavedCallback(data){
	if(data == null)
		return;
	var id = data.id;
	if(id != null && id != "" && data.response && data.response.indexOf("True")!= -1){
		
		displayStatusMessage("success", "itemFlagged-ok", "Item flagged");
		
		removeEventHandler('star-' + id, ['onmouseover', 'onmouseout']);
		if(document.getElementById(id).getAttribute("newstate") == null || document.getElementById(id).getAttribute("newstate") == "" )
			document.getElementById(id).setAttribute("newstate","newstate");
		else
			document.getElementById(id).setAttribute("newstate","");
		if(data.newstate && data.newstate == "newstate")
			$('#'+id).addClass("selected");
		else
			$('#'+id).removeClass("selected");
	}
}
function toggle2(id1,id2) {$('#'+id1).toggleClass("hidden");$('#'+id2).toggleClass("collapsed");}
function showFirst(a,b) {$('.'+a).removeClass('hidden');$('.'+b).addClass('hidden');}
function show(id) {$('#'+id).removeClass("hidden");}
function hide(id) {$('#'+id).addClass("hidden");}
function toggleAll(className) {$('.'+className).each(function(){if($(this).hasClass("hide")){$(this).removeClass("hide")}$(this).toggleClass("hidden");})}
function hideAll(className) {$('.'+className).addClass("hidden");}
function showAll(className) {$('.'+className).removeClass("hidden");}
var  dayMap=[1,7,,31,0];
function grid(C,R,browseOrChoose,url) {
    for (col=0; col<5; col++) {for (row=0; row<4; row++) {
	    x=$('#cell'+col+'-'+row);
	if (row<=R && col<=C) {x.addClass(browseOrChoose);}
	else {x.removeClass(browseOrChoose);}
    }}

    if(url != null){
		document.location.href=url;
    }
}
function togglePlus(id) {x=$('#'+id); x.removeClass("minus"); x.toggleClass("plus");}
function toggleMinus(id) {x=$('#'+id); x.removeClass("plus"); x.toggleClass("minus");}
function DocEntryPillClickAction() {$(".DocEntryPill").click(function(e){$(this).toggleClass('plus');this.innerHTML='&nbsp; * &nbsp;&nbsp;';e.stopPropagation();}); }
function savedPillClickAction() {$(".savedPill").click(function(e){$(this).toggleClass('plus');e.stopPropagation();});}
$(document).ready(function() { DocEntryPillClickAction(); savedPillClickAction();} );

function flip(obj, flag, clazz){
	if(flag)
		obj.removeClass(clazz);
	else
		obj.addClass(clazz);
}

function concat(array, str, prepend){
	var result = "";
	var first = true;
	for(filter in array) {
		result += (prepend || !first ? str : " ") + filter;
		first = false;
	}
	return result;
}

function groupResults(val){
	if(val && val != -1 && val != ""){
		document.location = val;
	}
}

function collapseeAll(current, id1, id2){
	$(current).toggleClass('collapsed');
	if($(current).hasClass('collapsed')) {
		$().find(id1).addClass('collapsed');
		$().find(id2).addClass('collapsed');
	}
	else  {
		$(id1).removeClass('collapsed');
		$(id2).removeClass('collapsed');
	}
	
}

function getBrowserInfo(){
	if($.browser.msie)
		return "IE" + $.browser.version ;
	if($.browser.mozilla)
		return "FireFox" + $.browser.version ;
	if($.browser.safari)
		return "safari" + $.browser.version ;
	if($.browser.opera)
		return "opera" + $.browser.version ;
}
function preloadImages(images){
	if(!document.images || images == null || images.length == 0)
		return;
	for(var i=0; i < images.length; i++){
		eval("img"  + i + " = new Image(10,10)");
		eval("img"  + i + ".src = '" + document.location.protocol + "//"  + document.location.host +"/images/" + images[i] +"'");
	}
}
function exportCharts(chart) {
	// Now, we proceed with exporting only if chart has finished rendering.
	if (!chart.hasRendered()) {
		alert("Please wait for the chart to finish rendering, before you can get pdf.");
		return;
	}
	chart.exportChart( {exportFormat: 'PNG'} );
}
var pdfurl;
function renderPDF(renderURL, reqUrl, searchStr, fromSearch) {
	if(renderURL == '') {
		return;
	}
	var chart = getChartFromId("ChartId");
	if(!chart || typeof chart.exportChart == 'undefined') {
		renderPDFNoChart(renderURL, reqUrl, searchStr);
		return;
	}
	exportCharts(chart);
	if(fromSearch) {
		reqUrl = reqUrl.substring(0, reqUrl.lastIndexOf('/') + 1) + 'search.jsp';
	}
	pdfurl = {};
	pdfurl.renderURL = renderURL;
	pdfurl.reqUrl = reqUrl;
	pdfurl.searchStr = searchStr;
}

function renderPDFNoChart(renderURL, reqUrl, searchStr) {
	if(renderURL == '') {
		return;
	}
	var m_names = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	var d = new Date();
	var curr_date = d.getDate();
	var curr_month = d.getMonth();
	var curr_year = d.getFullYear();
	var toDownloadFileName = encodeURIComponent( "PDF from FirstRain Research Engine " + m_names[curr_month] + "-" + curr_date + "-" + curr_year + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() );
	var changedUrl = (reqUrl+"?"+searchStr+"&p=true").replace(/"/g,'%22');
	var url = renderURL+"?footer_text=blank&file_name=" + toDownloadFileName + "&add_links=1&url_to_render="+ encodeURIComponent(changedUrl);
	document.location.href = url;
}

function getCurrentURL(){
	return document.location.protocol
	+ "//" + document.location.host
	+ (document.location.port.length >0 ? ":"+document.location.port : "")
	+ document.location.pathname;

}

function onExportComplete(objRtn) {
	var fname = objRtn.fileName;
	fname = fname.substring(fname.lastIndexOf('/') + 1, fname.length);
	var m_names = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	var d = new Date();
	var curr_date = d.getDate();
	var curr_month = d.getMonth();
	var curr_year = d.getFullYear();
	var toDownloadFileName = encodeURIComponent( "PDF from FirstRain Research Engine " + m_names[curr_month] + "-" + curr_date + "-" + curr_year + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() );
	var changedUrl = (pdfurl.reqUrl+"?"+pdfurl.searchStr+"&p=true&fname="+fname).replace(/"/g,'%22');
	var url = pdfurl.renderURL+"?footer_text=blank&file_name=" + toDownloadFileName + "&add_links=1&url_to_render="+ encodeURIComponent(changedUrl);
	document.location.href = url;
}

function getPreviewURL(template, format) {
	var url = template;
	if(format == 1) { // IConstant.MAIL_FORMAT_HTML
		url += '_Html.html';
	} else if(format == 2) {// IConstant.MAIL_FORMAT_TEXT
		url += '_Text.html';
	} else if(format == 4) { // IConstant.MAIL_FORMAT_PDF
		url += '_PDF.pdf';
	} 
	return 'exclude/' + url;
}

function isEmail(email) {
	return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(email);
}

var mouseoverTimeout = null;
var mouseoverElements = [".DocEntry"];

function matchHeight(element1, element2){
	//reset 
	$(element1).css({"height":""});
	$(element2).css({"height":""});
	
	var height1 = $(element1).height();
	var height2 = $(element2).height();
	if(height1 < height2)
		$(element1).height(height2+40);
	
}

// sliding sidebar
$(document).ready(function() {
	// check and match height for center column/ rhs
	matchHeight("#centerColumnDiv", "div.related.section");
	
	// assign mouse over to various document rows, events
	for(var i = 0; i < mouseoverElements.length; i++){
		$(mouseoverElements[i]).mouseover(function(){
			var this_ = $(this);
			var highlight = function(){
				this_.addClass("mousingover");
			}
			mouseoverTimeout = setTimeout(highlight, 333);
		});

		$(mouseoverElements[i]).mouseout(function(){
			clearTimeout(mouseoverTimeout);
			$(this).removeClass("mousingover");
		});
	}
	
	// make the slider handles work
	$('.handle').click(function() {
		var handle = $(this);
		if (handle.parents('.leftColumn').length > 0) {
			$('body').toggleClass('sidebarClosed');
		} else handle.parent().toggleClass('collapsed');
	});
	
	$('.handle').click(function() {
		var handle = $(this);
		if(handle.parents('.leftColumn').length > 0 && typeof reloadChart == 'function')//check if such function exists
			reloadChart();
	});
	// more/less links
	$('.toggleMoreLess').click(function(){
		$(this).find('.amount').toggle().parents('.section:first').find('div.more').toggle();
	});
});