// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function hideAllDocuments() {
	$$('span.document_partial').each(function(el) {
		el.remove();
	});
}

function readArticle(docId, elId) {
	new Ajax.Request('/actions/read_article?document_id=' + docId, {
		"method": "get"
	});
	if (elId != undefined) {
		el = $(elId);
		if (el != null) {	el.addClassName("article-read"); }
	}
}

var docDetailsHideTimers = {};
var docDetailsShowTimers = {};
var docDetailsRequest = {};
var docDetailsContent = {};
var docDetailsVisible = {};
var TRANSITION_TIME = 0.3;

function resetHeight(effect) {
	effect.element.setStyle({'height': ''});
}

function showDocumentDetails(id, width) {
	docSpinnerId = 'doc-spinner-' + id;
	docDetailsId = 'doc-details-' + id;

	if (docDetailsHideTimers[id]) {
		clearTimeout(docDetailsHideTimers[id]);
		docDetailsHideTimers[id] = null;
	}
	
	else if (docDetailsContent[id] && !docDetailsVisible[id]) {
		Effect.Queues.get(docDetailsId).invoke('cancel');
		$(docDetailsId).blindDown({
			'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
			'queue': {'position': 'end', 'scope': docDetailsId}
		});
		docDetailsVisible[id] = true;
	}

	else if (!docDetailsVisible[id]) {
		Effect.Queues.get(docSpinnerId).invoke('cancel');
		$(docSpinnerId).blindDown({
			'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
			'queue': {'position': 'end', 'scope': docSpinnerId}
		});
		docDetailsVisible[id] = true;
		showDocumentDetailsHelper(id, width);
	}
}

function showDocumentDetailsHelper(id, width) {
	docDetailsContentId = 'doc-details-content-' + id;

	if (!docDetailsRequest[id]) {
		docDetailsRequest[id] = true;
		new Ajax.Updater(docDetailsContentId, '/' + portal + '/document_details/' + id, 
			{ asynchronous:true, evalScripts:true, method: 'get', parameters: {
					'width': width, 'context': context
				},
				onSuccess: function() {
					docSpinnerId = 'doc-spinner-' + id;
					Effect.Queues.get(docSpinnerId).invoke('cancel');
					$(docSpinnerId).blindUp({
						'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
						'queue': {'position': 'end', 'scope': docSpinnerId}
					});
					animation = function (id) { 
						docDetailsId = 'doc-details-' + id;
						if (docDetailsVisible[id]) {
							Effect.Queues.get(docDetailsId).invoke('cancel');
							$(docDetailsId).blindDown({
								'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
								'queue': {'position': 'end', 'scope': docDetailsId}
							}); 
						}
					}
					setTimeout("animation(" + id + ")", 100);
					docDetailsContent[id] = true;
				},
				onFailure: function() {
					docSpinnerId = 'doc-spinner-' + id;
					Effect.Queues.get(docSpinnerId).invoke('cancel');
					$(docSpinnerId).blindUp({
						'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
						'queue': {'position': 'end', 'scope': docSpinnerId}
					});
					handleError = function (id) { 
						docDetailsContentId = 'doc-details-content-' + id;
						$(docDetailsContentId).innerHTML = "<img src='/images/exclamation.png'> Sorry something went wrong, please try again";
						docDetailsId = 'doc-details-' + id;
						if (docDetailsVisible[id]) {
							Effect.Queues.get(docDetailsId).invoke('cancel');
							$(docDetailsId).blindDown({
								'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
								'queue': {'position': 'end', 'scope': docDetailsId}
							}); 
						}
					}
					setTimeout("handleError(" + id + ")", 100);
					docDetailsContent[id] = true;
				}
			});
	}
}

function hideDocumentDetails(id) {
	if (docDetailsVisible[id] && !docDetailsHideTimers[id]) {
		docDetailsHideTimers[id] = setTimeout("hideDocumentDetailsHelper("+id+")", 100);
	}
}

function hideDocumentDetailsHelper(id) {
	docSpinnerId = 'doc-spinner-' + id;
	docDetailsId = 'doc-details-' + id;
	docDetailsVisible[id] = false;
	docDetailsHideTimers[id] = false;
	Effect.Queues.get(docSpinnerId).invoke('cancel');
	$(docSpinnerId).blindUp({
		'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
		'queue': {'position': 'end', 'scope': docSpinnerId}
	});
	Effect.Queues.get(docDetailsId).invoke('cancel');
	$(docDetailsId).blindUp({
		'duration': TRANSITION_TIME, 'afterFinish': resetHeight,
		'queue': {'position': 'end', 'scope': docDetailsId}
	});
}

function handleKeyPress(event) {
	if (event.keyCode == 32 || event.charCode == 32) { // 32 == space bar
		if (!document.activeElement || document.activeElement.tagName.toLowerCase() != "input") {
			if (!documentDetailsVisible) {
				documentDetailsVisible = true;
				Event.stop(event);

				// Show document details on each article
				var idMatcher = /[0-9]+/;
				$$('.news-container').each(function(el){
					if (id = el.id.match(idMatcher)) {
						showDocumentDetails(id, 'narrow');
					}
				});
				$$('.news-container-wide').each(function(el){
					if (id = el.id.match(idMatcher)) {
						showDocumentDetails(id, 'wide');
					}
				});
			}
		}
	}
	
	else if (event.keyCode == 27 || event.charCode == 27) { // 27 == escape
		documentDetailsVisible = false;
		Event.stop(event);

		// Hide document details on each article
		var idMatcher = /[0-9]+/;
		$$('.news-container').each(function(el){
			if (id = el.id.match(idMatcher)) {
				hideDocumentDetails(id);
			}
		});
		$$('.news-container-wide').each(function(el){
			if (id = el.id.match(idMatcher)) {
				hideDocumentDetails(id);
			}
		});
	}
}

var documentDetailsVisible = false;
Event.observe(document, "keydown", handleKeyPress);

function addTooltipObserversToElements(elt_identifier, tooltip_text) {
    var tooltip_id = 'has-tooltip';
	$$(elt_identifier).each(function(previewEl) {
		previewEl.title = "";
		var temp_tooltip_text = tooltip_text.replace('HREF', (previewEl.innerText == undefined) ? previewEl.textContent : previewEl.innerText);
		
		Event.observe(previewEl, "mouseover", function(event) {
            if ($(tooltip_id)) {$(tooltip_id).remove();}
			tooltip = "<div class='tooltip' id='"+tooltip_id+"' style='right:"+ (document.body.offsetWidth - event.clientX + 21) +
				"px; top: " + (event.clientY + 11) + "px;'>"+temp_tooltip_text+"</div>"
			jQuery('body').append(jQuery(tooltip));
/* This requires jQuery 1.4.*
			jQuery('body').append(jQuery("<div/>", { 
				'class': 'tooltip', 'id': tooltip_id,
				'style': 'right: ' + (document.body.offsetWidth - event.clientX + 21) + 'px;' + 
				         'top: ' + (event.clientY + 11) + 'px;',
				'text': temp_tooltip_text
			}));
*/
		});
		Event.observe(previewEl, "mousemove", function(event) {
			$(tooltip_id).setStyle({
				'right': (document.body.offsetWidth - event.clientX + 21) + 'px', 
                                'top': (event.clientY + 11) + 'px'
			});
		});
		Event.observe(previewEl, "mouseout", function(event) {
			$(tooltip_id).remove();
		});
		Event.observe(previewEl, "DOMNodeRemoved", function(event) {
			$(tooltip_id).remove();
		});
	});
}


jQuery(document).ready(function() {
    addTooltipObserversToElements('.fullview-icon', 'Open in New Window');
    addTooltipObserversToElements('.news-title', 'Preview Article');
    addTooltipObserversToElements('#sharethis_add', "Share this Eqentia page with friends or social networks.");
    addTooltipObserversToElements('.semantic_map_linker', "Discover Connections within HREF");
    addTooltipObserversToElements('.add-map-button', "Add this news channel");
    addTooltipObserversToElements('.add-button', "Add this news channel");
    addTooltipObserversToElements('.remove-button', "Remove this news channel");
    addTooltipObserversToElements('.drag-button', "Drag to reposition this news channel");

    $$('.has-tooltip').each(function(el) {
        addTooltipObserversToElements("#" + el.identify(), el.readAttribute("tooltip"));
    });

//    $$("a[class='news-titlee']").each(function(link) {
//        link.observe('click', function(){
//            recordOutboundLink(this, 'Outbound Link Tracking', location.href);
//            return false;
//        });
//    });

    jQuery("a[class='news-title']").each(function(i, link){
      jQuery(link).click(function(){
          recordOutboundLink(this, 'OutboundTracking', link.href);
      });
    });

    jQuery("a[class='fullview-link']").each(function(i, link){
      jQuery(link).click(function(){
          recordOutboundLink(this, 'OutboundTracking', link.href);
      });
    });
    



});

jQuery.noConflict()(function($){
    $("ul.sf-menu-header").supersubs({ minWidth: 12, maxWidth: 27 }).superfish({ autoArrows:  false });
    $("ul.sf-menu-refine").supersubs({ minWidth: 12, maxWidth: 27 }).superfish({ });
    $("ul.sf-menu-action").supersubs({ minWidth: 12, maxWidth: 27 }).superfish({ });
});

