// General EOL blog JavaScript functionality

Event.observe(window, 'load', function() {
	if ($('module_lists')) {
	var sfEls = document.getElementById("module_lists").getElementsByTagName("H3");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
		}
	}
});

Event.observe(window, 'load', function() {
	if ($('module_podcast')) {
	var sfEls = document.getElementById("module_podcast").getElementsByClassName("H4");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
		}
	}
});


//topics module js
function getTopicsList(edition){
	var pars = "";
	
	if ($('show_hide_topics').innerHTML==="See all"){
		pars = 'topicMenu=showAll';
		topicsListPath = '/static/uberblog/topics/' + edition + '/topics-all.html';
	} else {
		pars = 'topicMenu=false';
		topicsListPath = '/static/uberblog/topics/' + edition + '/topics.html';
	};
	
	// this is a little hack to play nice with the accordion.
	$('topics_list').parentNode.setStyle({
		height: 'auto'
	});
	
	new Ajax.Updater('topics_list', '/uberblog/includes/jsp/railmods/topics.jsp', {
  		parameters: pars,
		onComplete: function(){
			if ($('show_hide_topics').innerHTML==="See all"){
				$('show_hide_topics').update('View top 20');	
			} else {
				$('show_hide_topics').update('See all');
				$('hot_topics_header').scrollTo();
			}
		}
	});
}

/* main accordion (top stories, hot topics, most commented) */
function loadAccordions() {
	if (document.getElementsByClassName('accordion_toggle', $('module_lists')).size() > 0) {
		var photo_categories = new accordion('#module_lists', {
			onEvent: 'mouseover'
		});
		photo_categories.activate($$('#module_lists .accordion_toggle')[0]);
	}
}
Event.observe(window, 'load', loadAccordions, false);

/* podcast player */ 
function loadPodcastPlayer() {
	if (document.getElementsByClassName('podcast_toggle', $('module_podcast')).size() > 0) {
		var podcast_row = new accordion('#module_podcast', {
            classNames : {
                toggle : 'podcast_toggle',
                toggleActive : 'podcast_toggle_active',
                content : 'accordion_content'
            },
            onEvent: 'mouseover'
        });
		podcast_row.activate($$('#module_podcast .podcast_toggle')[0]);
	}
}
Event.observe(window, 'load', loadPodcastPlayer, false);

/* load in-blog brightcove videos on demand */
function loadInBlogVideo(id) {
	$('inBlogVideo_'+id).update('<embed src="http://services.brightcove.com/services/viewer/federated_f8/1396519019" bgcolor="#FFFFFF" flashVars="videoRef='+id+'&playerId=1396519019&viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&servicesURL=http://services.brightcove.com/services&cdnURL=http://admin.brightcove.com&domain=embed&autoStart=true&" base="http://admin.brightcove.com" name="flashObj" width="425" height="366" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" wmode="transparent"></embed>');
}

// CSS Browser Selector   v0.2.5
// Documentation:         http://rafael.adm.br/css_browser_selector
// License:               http://creativecommons.org/licenses/by/2.5/
// Author:                Rafael Lima (http://rafael.adm.br)
// Contributors:          http://rafael.adm.br/css_browser_selector#contributors
// used for font difference between mac/pc in right column modules
var css_browser_selector = function() {
	var 
		ua=navigator.userAgent.toLowerCase(),
		is=function(t){ return ua.indexOf(t) != -1; },
		h=document.getElementsByTagName('html')[0],
		b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
		os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
	var c=b+os+' js';
	h.className += h.className?' '+c:c;
}();




//---------------------------  COMMENTS JS STUFF  --------------------------------

// COMMENTS: an object containing functions and attributes necessary to
// handle the progressive AJAX loading of comments
//
// NOTE: Also checks to see if comments exist and only performs
// 		the functionality if they were detected on the page!
//
// Charlie Markovich - 5/12/08

var memberId = null;
var contentId = null;

/*** captcha related ***/
var coID;

/*** form descriptor values ***/
var nameDescriptor = "Your name";
var uwordDescriptor = "Enter the code shown below";

/*** submit button text ***/
var memberSubmitButton = "Sign In & Post Comment";
var nonMemberSubmitButton = "Post Comment";

/*** required for comment retrieval ***/
var totalCommentsFound = 0;
var totalCommentsShowing = 50;
var totalCommentsPosted = 0;
var commentSetSize = 50; // Total comments limit set per query

/*** how to load first set (server-side vs ajax) ***/
var loadInitialSet = false; // if false, will load via ajax
if (loadInitialSet == false) {
	totalCommentsShowing = 0;
}


// an easier way to stick in a captcha (with room for improvement)
Captcha = {
	Load: function(el) {
		if($(el)){
			var captchaID = (Math.floor(Math.random()*191))+1;
			$(el).innerHTML = '<img src="http://images.eonline.com/static/redcarpet/globes2007/everywhere/shoutouts/images/'+captchaID+'.jpg" border="0" alt="" />'
							+ '<input type="hidden" value="'+captchaID+'" id="'+el+'_captchaID" class="hidden" />';
		}
	}
}

Comments = {
	AddFormDescriptors: function() {
		// adds form descriptors in the input fields themselves
		if ($('comment_guest')) {
			$('name').value = nameDescriptor;
			Event.observe('name', 'focus', function() {
				$('name').value = '';
			});
			Event.observe('name', 'blur', function() {
				if ($('name').value == '') {
					$('name').value = nameDescriptor;
				}
			});
			
			$('uword').value = uwordDescriptor;
			Event.observe('uword', 'focus', function() {
				$('uword').value = '';
			});
			Event.observe('uword', 'blur', function() {
				if ($('uword').value == '') {
					$('uword').value = uwordDescriptor;
				}
			});
		}
	},
	ChangeButtonStatus: function() {
		// changes submit button text depending on if user is logging in or not
		var buttonText = document.getElementById("anonPostButton");
		if (document.user_comments.passwd.value.length > 0) {
			buttonText.innerHTML = memberSubmitButton;
		} else {
			buttonText.innerHTML = nonMemberSubmitButton;
		}
	}
}

//To send/edit a comment
PostComments = {
	Save: function(blog, url, contentDBID, memberId, commentId) {
		var isMemberComment = false;
		var isValid = true;
		if ($('comments_message')) {
			$('comments_message').remove();
		}
	    Delete_Cookie("PostCookie","/",".eonline.com");
		SetCookie("PostCookie",coID,5,"/",".eonline.com");
		var captchaId = '';
		var captchaEntry = '';
		if ($('uword')) {
			captchaEntry = hex_md5(document.getElementById('uword').value);
			captchaId = $F('comment_captcha_captchaID');
		}
		if($('commentTextArea').value == '') {
			alert('You must enter a comment.');
			isValid = false;
		}
		var nextIndex = parseInt(totalCommentsFound)+1+totalCommentsPosted;
		var pars = 'mode=save'+'&contentDBID='+contentDBID+'&commentId='+commentId
				  +'&memberId='+memberId+'&pageURL='+url+'&blog='+blog+'&nextIndex='+nextIndex
				  +'&captchaId='+captchaId+'&comment='+$('commentTextArea').value;
		if($('usrEmail') && $('passwd')) {
			if ($('passwd').value != '') isMemberComment = true;
			pars= pars+'&memberEmail='+$('usrEmail').value+'&password='+$('passwd').value;
		}
		if ($('name') && !isMemberComment) {
			if($('name').value == 'Your name') {
				alert('You must enter a username.');
				isValid = false;
			}
			if($('uword').value == 'Enter the code shown below' || $('uword').value == '') {
				alert('You must enter a valid captcha entry.');
				isValid = false;
			}
			pars= pars+'&username='+$('name').value+'&captcha='+captchaEntry;
		}
		if(isValid) {
			new Ajax.Updater('comments_set', '/uberblog/includes/jsp/editComment.jsp?'+pars, {
				insertion: Insertion.Bottom,
				onComplete: function() {
					Captcha.Load('comment_captcha');	// reload the captcha after a submission
					if ($('uword')) $('uword').value = '';				// clear the captcha word field
					new Effect.Highlight('comments_message');
				},
				onSuccess: function() {
					$('commentTextArea').value = '';	// clear the textarea
					totalCommentsPosted++;
					$$('.total_comments').each(function(e) {
						e.update(parseInt(totalCommentsFound)+1);
					});
					if(isMemberComment) {
						$('comment_guest').hide();
						$('comment_member').hide();
					};
					alert("Thanks! Your comment has been sent to our moderators for review.");
				}
			});
		}
	},
	Delete: function(commentId) {
		var pars = 'commentId='+commentId+'&mode=delete';
		new Ajax.Request('/uberblog/includes/jsp/editComment.jsp?'+pars);
	},
	ReportAbuse: function(commentId) {
		var confirmReport = "Report this comment as inappropriate?\n\nIf you feel this comment is inappropriate and feel it should be removed from the E! Online site, let us know by clicking 'OK' below. This will notify us and we can take appropriate action.";
		var pars = 'commentId='+commentId+'&mode=report';
		if (confirm(confirmReport)) {
			new Ajax.Request('/uberblog/includes/jsp/editComment.jsp?'+pars, {
				onComplete: function() {
					alert ("Thank you for your input\n\nThis commment has been reported.  We will review this information and take appropriate action");
					$('report_'+commentId).update('This comment has been reported.');
					$('report_'+commentId).removeAttribute('href');
					$('report_'+commentId).addClassName('reported');
				}
			});
		}
	},
	GiveProps: function(commentId) {
		var pars = 'commentId='+commentId+'&mode=props';
		new Ajax.Request('/uberblog/includes/jsp/editComment.jsp?'+pars);
	}
}

GetComments = {

	CalculateNextSetSize: function(){
		// check to see if the comments remaining are less than the commentSetSize
		var commentsRemaining = totalCommentsFound - totalCommentsShowing; 
		if (commentsRemaining < commentSetSize) {
			commentSetSize = commentsRemaining;
		}
	},

	GetNextPage: function(){
		contentId = $('contentId').value; // Get content Id from dom hidden field
		memberId = $('memberId').value; // Get content Id from dom hidden field

		GetComments.CalculateNextSetSize();

		// Update the list with additional comments found
		new Ajax.Updater('display_next_set', '/chatter/includes/jsp/getPageOfComments.jsp', {
			method: 'get',
			insertion: Insertion.Before,
			onComplete: function(){
				GetComments.TogglePreloader();
			},
			parameters: {offset: totalCommentsShowing, length: commentSetSize, memberId: memberId, contentId: contentId}
		});
		
		// increment total comments showing count
		totalCommentsShowing = totalCommentsShowing + commentSetSize;

		//Set the link text
		var linkText = "Im empty";
		var commentsRemaining = 0;
		if (totalCommentsShowing < totalCommentsFound){
			GetComments.CalculateNextSetSize();
			linkText = "Show the next " + (totalCommentsShowing + 1) + " - " + (totalCommentsShowing + commentSetSize) + " of " + totalCommentsFound + " comments";
			$('display_next_link').innerHTML = linkText;
		} else {
			$('display_next_set').hide();
		}
	},

	// If more comments available then display the preloader animation
	TogglePreloader : function(/*resultsShowing, totalResults*/){
		if ($('preloader_graphic').style.display == "block"){
			$('preloader_graphic').style.display = 'none';
		} else {
			$('preloader_graphic').style.display = 'block';
		}
	}
}

// Register the listeners after the page has been fully loaded
Event.observe( window, 'load', function() {
	// Determine if comments are on the page or not
	// if not then don't execute the following code
	if ($('comments_set')){
		totalCommentsFound = $('totalComments').value;

		// Register the event listener for the more comments button
		// if there is another set to load
		if ($('display_next_link')) {
			Event.observe('display_next_link', 'click', function() {
				GetComments.TogglePreloader();
				GetComments.GetNextPage(); // Add comments to the list
			});
		};
		
		// load first set via ajax if not loaded server-side
		if (loadInitialSet == false && totalCommentsFound > 0) {
			GetComments.TogglePreloader();
			GetComments.GetNextPage();
		}
		
		// Load captcha
		Captcha.Load('comment_captcha');
		
		// load form field descriptors
		Comments.AddFormDescriptors();
	}
});

//------------------------Cookie Stuff---------------------------
function Get_Cookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ){
		return null;
	}
	if ( start == -1 ) return null; 
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
		return unescape( document.cookie.substring( len, end ) );
}

	// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" + ( ( path ) ? ";path=" + path : "") + ( ( domain ) ? ";domain=" + domain : "" ) + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function SetCookie(cookieName,cookieValue,nDays, path, domain) {
 	var today = new Date();
 	var expire = new Date();
 	if (nDays==null || nDays==0) nDays=1;
 		expire.setTime(today.getTime() + 3600000*24*nDays);
 		document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString()+";path="+path+";domain="+domain;
}
//----------------------End Cookie Stuff---------------------------
