var inUseSocialMediaContainer;

function SocialMediaPollUnit(campaignId, appendString, holdingText, statusLimit, yesAnswer, noAnswer, emailTweetTo) {
	this.campaignId = campaignId;
	this.appendString = appendString;
	this.holdingText = holdingText;
	this.statusLimit = statusLimit;
	this.yesAnswer = yesAnswer;
	this.noAnswer = noAnswer;
	this.emailTweetTo = emailTweetTo;
	this.userAnswer;
	this.socialMediaContainer;
	
	this.submitSMP = submitSMP;
	this.clearBox = clearBox;
	this.tweet = tweet;
	this.submitSocialMediaTweetResponse = submitSocialMediaTweetResponse;
	this.updateTwitterTextAreaCharCount = updateTwitterTextAreaCharCount;
}

function clearBox(box) {
	if(box.value == this.holdingText)
		box.value = '';
}

function calculateAndSetAnswers(campaignId, userAnswer, yesAnswer, noAnswer) {
	var total = yesAnswer + noAnswer;
	var fbSocialMediaCampaign = $('#fbSocialMediaCampaign-'+campaignId);
	
	yesAnswer = Math.round((yesAnswer / total) * 100);
	yesAnswerWidth = (yesAnswer / 100) * 238;
	noAnswer = Math.round((noAnswer / total) * 100);
	noAnswerWidth = (noAnswer / 100) * 238;
	
	if(userAnswer == 1)
		$('#agreeTag',fbSocialMediaCampaign).prepend(yesAnswer);
	else
		$('#agreeTag',fbSocialMediaCampaign).prepend(noAnswer);
	
	$('#answerYes .votedBar',fbSocialMediaCampaign).html(yesAnswer+'%').css('width',yesAnswerWidth+'px');
	$('#answerNo .votedBar',fbSocialMediaCampaign).html(noAnswer+'%').css('width',noAnswerWidth+'px');
}

function submitSMP(pollForm,answer,uag,uip) {
	var argsArr = {};
	argsArr['pollId'] = $('#pollIdFieldID',pollForm).val();
	argsArr['answer'] = ''+answer+'';
	argsArr['userAgent'] = uag;
	argsArr['userIP'] = uip;
	http('POST', '/components/AjaxFunctions.cfc?method=submitSocialMediaPollAnswer', submitSMPResponse, argsArr);
	
	var socialMediaBoxout = $(pollForm).closest('#socialMediaBoxout');
	socialMediaBoxout.find('.smPollQuestionInnerContainer').html('<div class="clear"><!-- x --></div><p id="thanksForVoting">Thanks for voting.</p>');
	if(answer == 1) {
		this.userAnswer = 1;
		this.yesAnswer++;
	} else {
		this.userAnswer = 0;
		this.noAnswer++;
	}

	calculateAndSetAnswers(this.campaignId, this.userAnswer, this.yesAnswer, this.noAnswer);
	$('#popUpSocialMedia',socialMediaBoxout).click();
}

function submitSMPResponse(r) {
	// Do nothing
}

function tweet(twitterForm) {
	var username = $('#usernameFieldID',twitterForm).val();
	var password = $('#passwordFieldID',twitterForm).val();
	var status = $('#statusFieldID',twitterForm).val();
	
	this.socialMediaContainer = $(twitterForm).closest('.fbSocialMediaCampaign');
	
	inUseSocialMediaContainer = this.socialMediaContainer;
	
	if((status != this.holdingText) && (status.length > 0)) {
		if(status.length <= this.statusLimit) {
			if($('#twitterDetails',twitterForm).css('display') == "none") {
				$('#smTweetErrorMessage',this.socialMediaContainer).html('');
				
				var x = '<p id="twitterAccountDetails">Twitter account details</p> \
						<label for="usernameFieldID">Username:</label> \
						<input type="text" name="username" id="usernameFieldID" class="twitterField" /> \
						<label for="passwordFieldID">Password:</label> \
						<input type="password" name="password" id="passwordFieldID" value="" class="twitterField" /> \
						<p id="disclaimer">Don\'t worry, your login info is sent through the secure Twitter API and is not stored.</p>';
				
				$("#facebox #twitterDetails").html(x); 
				
				$('#twitterDetails',twitterForm).slideDown();
			} else {
				if((username.length > 0) && (password.length > 0)) {
					$('#smTweetErrorMessage',this.socialMediaContainer).html('');
					
					var argsArr = {};
					argsArr['username'] = username;
					argsArr['password'] = password;
					argsArr['status'] = status;
					argsArr['emailTweetTo'] = this.emailTweetTo;
					argsArr['appendText'] = this.appendString;
					http('POST', '/components/AjaxFunctions.cfc?method=submitSocialMediaTweet', this.submitSocialMediaTweetResponse, argsArr);
				} else {
					$('#smTweetErrorMessage',this.socialMediaContainer).html('<p>Please enter your Twitter username and password.</p>');
				}
			}
		} else {
			$('#smTweetErrorMessage',this.socialMediaContainer).html('<p>Please limit your reponse to ' + this.statusLimit + ' characters.</p>');
		}
	} else {
		$('#smTweetErrorMessage',this.socialMediaContainer).html('<p>Please enter your tweet below.</p>');
	}
	
	return false;
}

function submitSocialMediaTweetResponse(r) {
	var success = r["success"];
	var message = r["message"];
	var socialMediaContainer = inUseSocialMediaContainer;
	
	if(success == "true") {
		var username = r["username"];
		var tweetId = r["tweetId"];
		var newTweetDivId = "tweet" + tweetId;
		
		$('#smTweetFormWrapper',socialMediaContainer).hide();
		$('#previousTweets',socialMediaContainer).prepend('<div class="tweetContainer" id="' + newTweetDivId + '" style="display:none;"><p><span>' + message + '</span></p></div>')
		$('#' + newTweetDivId + ',socialMediaContainer').fadeIn();
	} else {
		$('#smTweetErrorMessage',socialMediaContainer).html('<p>' + message + '</p>');
	}
	
	return false;
}

function updateTwitterTextAreaCharCount(field) {
	var n = this.statusLimit - field.value.length;
	var cc = $('[id=twitterCounter]');

	$(cc).html(n + ' characters remaining');
}
