/**
 * Share and Subscribe
 * -------------
 * © The Roundhouse 2008
 */
 
var ShareAndSubscribe = new Class({
	
	initialize: function()
	{
		// get the send to friend button
		var btnSendToFriend 	= $('btn_friendgo');
		var frmSendToFriend		= $('frm_sendfriend');
			 
		// if it's there
		if(frmSendToFriend)
		{
			// disable it
			if(Browser.Engine.trident)
				frmSendToFriend.onsubmit = function(){ return false; };
			else
				frmSendToFriend.setAttribute('onsubmit', 'return false');
			
			frmSendToFriend.removeEvents();
			frmSendToFriend.addEvent('submit',function()
											  {
													// get the form contents
													var inYourName 		= $('str_yourname');
													var inFriendName 	= $('str_friendname');
													var inFriendEmail 	= $('str_friendemail');
															
													if(inYourName && inFriendName && inFriendEmail)
													{
														var strYourName 	= inYourName.get('value');
														var strFriendName 	= inFriendName.get('value');
														var strFriendEmail 	= inFriendEmail.get('value');
														
														var regYourName		= /^[a-zA-Z0-9\s]+$/;
														var regFriendName	= /^[a-zA-Z0-9\s]+$/;
														var regFriendEmail	= /^[a-zA-Z0-9\._-]+@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}(?:\.[a-zA-Z]{2,4})?$/;
														
														var bOK				= true;
														var arrErrors		= new Array();
														
														if(!regYourName.test(strYourName))
														{
															bOK = false;
															arrErrors.push({title:'Invalid Name',content:'Your name must only contain alphabetic characters',type:'error'});
														}
														
														if(!regFriendName.test(strFriendName))
														{
															bOK = false;
															arrErrors.push({title:'Invalid Friend Name',content:'Your friend\'s name must only contain alphabetic characters',type:'error'});
														}
														
														if(!regFriendEmail.test(strFriendEmail))
														{
															bOK = false;
															arrErrors.push({title:'Invalid Email Address',content:'You provided an invalid email address',type:'error'});
														}
														
														if(bOK)
														{
															// prevent multiple clicks
															if($('btn_friendgo'))
																$('btn_friendgo').addClass('waiting');
															
															if($('li_yourname'))
																$('li_yourname').addClass('waiting');
															
															if($('li_friendname'))
																$('li_friendname').addClass('waiting');
															
															if($('li_friendemail'))
																$('li_friendemail').addClass('waiting');
															
															
															// collect the data
															var rqLogin = new Request({url:		"/z_ajax/ajax_handler.php?sendtofriend=1",
																					   method: 	"post"});
															
															rqLogin.send("in_your_name=" + strYourName + "&" +
																		 "in_friend_name=" + strFriendName + "&" + 
																		 "in_friend_email=" + strFriendEmail + "&" + 
																		 "in_url="+document.location.href + "&" +
																		 "in_doc_title="+document.title);
															
															rqLogin.onSuccess = function(strResponseText, strResponseXML)
															{
																if($('btn_friendgo'))
																	$('btn_friendgo').removeClass('waiting');
																
																if($('li_yourname'))
																	$('li_yourname').removeClass('waiting');
																
																if($('li_friendname'))
																	$('li_friendname').removeClass('waiting');
																
																if($('li_friendemail'))
																	$('li_friendemail').removeClass('waiting');
																	
																
																var divResponse 		= $('sendtofriend_response');
																var divName				= $('sendtofriend_name');
																var frmSendToFriend		= $('frm_sendfriend');
																if(divResponse && divName && aSendToFriendRepeat)
																{
																	divName.set('text', 'A link to this page was sent to your friend '+strFriendName);
																	divResponse.removeClass('hidden');
																	frmSendToFriend.addClass('hidden');
																}
															}
														}
														else
														{
															if($defined(MessageStore) && arrErrors.length)
																MessageStore.__write(arrErrors);
														
														}
													}
											  });
			

			var aSendToFriendRepeat		= $('sendtofriend_repeat');
														
			if(Browser.Engine.trident)
				aSendToFriendRepeat.onclick = function(){ return false; };
			else
				aSendToFriendRepeat.setAttribute('onclick', 'return false');
															
			aSendToFriendRepeat.removeEvents();
			aSendToFriendRepeat.addEvent('click', function()
												  {
													  
														
														var divResponse 		= $('sendtofriend_response');
														var frmSendToFriend		= $('frm_sendfriend');
			 
														if(divResponse && frmSendToFriend)
														{
															divResponse.addClass('hidden');
															frmSendToFriend.removeClass('hidden');
														}
														 
														var inYourName 		= $('str_yourname');
														var inFriendName 		= $('str_friendname');
														var inFriendEmail 		= $('str_friendemail');
														 
														if(inYourName && inFriendName && inFriendEmail)
														{
															inYourName.set('value', '');
															inFriendName.set('value', '');
															inFriendEmail.set('value', '');
															 
															if(hideLabel)
															{
																hideLabel(inYourName.get('id'), false);
																hideLabel(inFriendName.get('id'), false);
																hideLabel(inFriendEmail.get('id'), false);
															}
														}
												  });
		}
	},
	
	setFeeds: function(strFeedName)
	{
		// clear out existing feeds
		var arrSubjectFeeds = $$('#feeds_list .subject_feed');
		
		// go through each subject specific feed and remove it
		for(var i = 0; i < arrSubjectFeeds.length; i++)
			arrSubjectFeeds[i].destroy();

		if(strFeedName)
		{
			var liSubjectNews 		= new Element('li');
			var liSubjectTitles		= new Element('li');
			liSubjectNews.addClass('subject_feed');
			liSubjectTitles.addClass('subject_feed');
				
			var aSubjectNews		= new Element('a');
			var aSubjectTitles		= new Element('a');
			
			aSubjectNews.addClass('lnk_leftarrow_pink');
			aSubjectNews.setAttribute('title', 'Subscribe to '+strFeedName+' news feed');
			aSubjectNews.setAttribute('href', '/feeds/news/'+this.createSEOTitle(strFeedName)+"/");
			
			aSubjectTitles.addClass('lnk_leftarrow_pink');
			aSubjectTitles.setAttribute('title', 'Subscribe to '+strFeedName+' titles feed');
			aSubjectTitles.setAttribute('href', '/feeds/titles/'+this.createSEOTitle(strFeedName)+"/");
			
			var sSubjectNewsName	= new Element('strong');
			sSubjectNewsName.addClass(this.createClass(strFeedName));
			sSubjectNewsName.set('text', strFeedName);
			
			var sSubjectTitlesName	= sSubjectNewsName.clone();
			
			liSubjectNews.adopt(aSubjectNews);
			liSubjectTitles.adopt(aSubjectTitles);
			
			aSubjectNews.set('text', ' News');
			sSubjectNewsName.inject(aSubjectNews, 'top');
			
			aSubjectTitles.set('text', ' Titles');
			sSubjectTitlesName.inject(aSubjectTitles, 'top');
			
			if($('feeds_list'))
			{
				$('feeds_list').adopt(liSubjectNews);
				$('feeds_list').adopt(liSubjectTitles);
			}
		}
		
		// bounce the 'all feeds' link to the end
		// of the list
		if($('feeds_list') && $('all_feeds'))
			$('feeds_list').adopt($('all_feeds'));
	},
	
	createClass: function(strTitle)
	{
		var strEncoded 	= site.createSEOTitle(strTitle);
		strEncoded		= strEncoded.replace(/-/g, "_");
		
		return strEncoded;
	},
	
	createSEOTitle: function(strTitle)
	{
		return site.createSEOTitle(strTitle);
	}
	
});

var shareAndSubscribe = null;
window.addEvent('domready', function()
							{
								// check we're not in Fin
								if(!document.FIN)
								{
									shareAndSubscribe = new ShareAndSubscribe();
								}
							});