
// - ///////////////////////////////////////////////////////////////////////
// - PHONEDOG SHARE MODULE
// - ///////////////////////////////////////////////////////////////////////
//fields
pdShareModule.prototype._transport;
pdShareModule.prototype._user;
pdShareModule.prototype._channelId = 'site.shared';
pdShareModule.prototype._loadLanguage = false;

function pdShareModule() {}

pdShareModule.prototype.initialize = function(transport, user){
  	//this function is called back during module registration
	this._transport = transport;
	this._user = user;
	
	//reference to this
	var me = this;
	
	//ensure youtube and twitter link
	if($('linkHeaderYoutube')){
		$('linkHeaderYoutube').observe('click', this.onHeaderYoutubeLinkClick.bind(this));
		$('linkHeaderYoutubeSubscribe').observe('click', this.onHeaderYoutubeSubscribeLinkClick.bind(this));
	}
	if($('linkHeaderTwitter')){
		$('linkHeaderTwitter').observe('click', this.onHeaderTwitterLinkClick.bind(this));
		$('linkHeaderTwitterFollow').observe('click', this.onHeaderTwitterLinkFollowClick.bind(this));
	}
	
	//ensure we have these
	if($('linkHeaderFeed')){
		$('linkHeaderFeed').observe('click', this.onHeaderFeedLinkClick.bind(this));
		$('feedUrlLink').observe('click', this.onHeaderFeedLinkOpenClick.bind(this));
		$('linkHeaderShare').observe('click', this.onHeaderShareLinkClick.bind(this));
		$$('.post-options-close').each(function(div){div.select('a')[0].observe('click', me.closeHeaderOptions.bind(me));});		
	
		//setup feed share form
		$('rssForm').select('input').each(function(radio){radio.observe('click', me.onFeedRadioClick.bind(me));});
	}
	
	//if we have the share header then configure
	if($('divHeaderShare')){
		if(this._user.isLoggedIn()){
			$('shareEmailLoggedIn').show();
			$('shareEmailSend').disabled = false;
			$('shareEmailSend').observe('click', this.onSendEmailClick.bind(this));
		}else{
			$('shareEmailNotLoggedIn').show();
		}
	}
}

pdShareModule.prototype.closeHeaderOptions = function(event){
	if(event != null){Event.stop(event);}
	$$('.post-options').each(function(div){
		if(div.style.display != 'none'){div.hide();}
	});
	pd_globalSiteFramework.trackEvent('Sharing', 'Close');
}

pdShareModule.prototype.onHeaderTwitterLinkClick = function(event){
	Event.stop(event);
	var pane = $('divHeaderTwitter');

	if(pane.style.display == 'none'){		
		this.closeHeaderOptions();
		pane.show();	
		var username = $('post-options-tweets').readAttribute('username');
	
		getTwitters('post-options-tweets', { 
			id: username, 
			count: 10, 
			enableLinks: true, 
			ignoreReplies: true, 
			clearContents: true,
			template: '"%text%" <a class="header-options-tweets-time" target="_blank" href="http://twitter.com/%user_screen_name%/statuses/%id%/">%time%</a>'
		});
		
		pd_globalSiteFramework.trackEvent('Sharing', 'Twitter - open', username);
	}
}

pdShareModule.prototype.onHeaderTwitterLinkFollowClick = function(event){
	var username = $('post-options-tweets').readAttribute('username');	
	pd_globalSiteFramework.trackEvent('Sharing', 'Twitter - follow', username);
}

pdShareModule.prototype.onHeaderYoutubeLinkClick = function(event){
	Event.stop(event);
	var pane = $('divHeaderYoutube');	
	if(pane.style.display == 'none'){
		this.closeHeaderOptions();pane.show();
		pd_globalSiteFramework.trackEvent('Sharing', 'Youtube - open');
	}
}

pdShareModule.prototype.onHeaderYoutubeSubscribeLinkClick = function(event){
	pd_globalSiteFramework.trackEvent('Sharing', 'Youtube - subscribe');
}

pdShareModule.prototype.onHeaderFeedLinkClick = function(event){
	Event.stop(event);
	var pane = $('divHeaderFeed');	
	if(pane.style.display == 'none'){
		this.closeHeaderOptions();pane.show();
		pd_globalSiteFramework.trackEvent('Sharing', 'Feeds - open');
	}
}

pdShareModule.prototype.onHeaderFeedLinkOpenClick = function(event){
	var feedName = $('feedUrlLink').innerHTML
	pd_globalSiteFramework.trackEvent('Sharing', 'Feeds - subscribe', feedName);
}

pdShareModule.prototype.onHeaderShareLinkClick = function(event){
	Event.stop(event);
	var pane = $('divHeaderShare');	
	if(pane.style.display == 'none'){
		this.closeHeaderOptions();pane.show();
		pd_globalSiteFramework.trackEvent('Sharing', 'Share - open');
	}
}

pdShareModule.prototype.onFeedRadioClick = function(event){
	var feedUrl = $('rssForm').feedUrl;
	var feedReader = $('rssForm').feedReader;
	var url = '';
	var feedName = '';
	var readerName = '';
	
	for(var x=0; x < feedReader.length; x++){
		if(feedReader[x].checked){
			url = feedReader[x].value;
			readerName = feedReader[x].next().innerHTML;
		}
	}
	
	for(var x=0; x < feedUrl.length; x++){
		if(feedUrl[x].checked){
			url += feedUrl[x].value;
			feedName = feedUrl[x].next().innerHTML;
		}
	}
	
	$('feedUrlLink').href = url;
	$('feedUrlLink').update(feedName + ' using ' + readerName);
	pd_globalSiteFramework.trackEvent('Sharing', 'Feeds - configure', feedName + ' using ' + readerName);
}

pdShareModule.prototype.onSendEmailClick = function(event){
	Event.stop(event);
	var email = $('shareEmailTo');
	var message = $('shareEmailMessage');
	
	if(email.value.length == 0){
		alert('Please enter an email address');
		email.focus();
	}else if(!this.isEmail(email.value)){
		alert('The e-mail address appears to be invalid\n\nPlease double-check it and try again');
		email.focus();
	}else{
		$('shareEmailSend').disabled = true;
		var request = {
			contentId : $('shareContentId').value,
			email : email.value,
			message : message.value.stripScripts().stripTags()
		};
		this._transport.transmitRequest(this._channelId, 'shareemailpost', request, this.emailSent.bind(this));	
	}
}

pdShareModule.prototype.isEmail = function(s){
	var good="@_-.:/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	var upper=s.toUpperCase()
	var valid=true;	
	for(x=0; x>s.length; x++){c=upper.charAt(x);for(y=0; y<good.length; y++){if(c==good.charAt(y)){break;}}if(y==good.length){valid=false;break;}}	
	if (!valid || s.length < 7 || s.indexOf("@") == "-1" || s.indexOf(".") == "-1" || s.indexOf("@") != s.lastIndexOf("@")) {return (false);}else{return (true);}
}

pdShareModule.prototype.emailSent = function(objResponse){
	$('shareEmailLoggedIn').hide();
	$('shareEmailSent').show();
	pd_globalSiteFramework.trackEvent('Sharing', 'Email - sent');
}