﻿var ItemType = 255;
var ItemID = -1;
var OwnerID = -1;

$(function(){
	
	//STORE ITEM DETAILS
	ItemType = $("#ctl00_hidItemType").val();
	ItemID = $("#ctl00_hidItemID").val();
	OwnerID = $("#ctl00_hidOwnerID").val();
	
	//SETUP PAGE
	itemsSetup();
	
	//SETUP AUDIO
	setupAudio();
	
});

function itemsSetup(){
 
	//GET TRINKETS
	itemService.invoke("getTrinkets", {strSignature: getSignature(), strItemType: ItemType, strItemID: ItemID}, function(response){
		
		cacheStrings(["trinkets.giveAStar", "trinkets.gaveStar", "trinkets.addToFavorites", "trinkets.RemoveFromFavorites"], function(){

			//TWO RESPONSES HERE; ONE FOR STARS AND ONE FOR FAVORITES
			var starResponse = response[0];
			var heartResponse = response[1];
 
			//ADD STARS ALREADY APPLIED
			var strStarStatus;
			var imgStar = "<img class='trinket p5' src='http://www.commontales.net/images/icon_star.on.gif'/>";
			for(i = 0; i < starResponse["Message"]; i++){
				$("#stars").append(imgStar);
			}
			
			//DID I STAR THIS?
			if(fbol(starResponse)){ //I STARRED THIS

				toggleImage($("#imgStar"));
				$("#starStatus").html( $.jCache.getItem("trinkets.gaveStar") );

			}
			else {

				//ADD LINK TO ADD A STAR				
				var hlAddStar = $("<a>");
				hlAddStar.attr("id", "hlAddStar");
				hlAddStar.attr("href", "#");
				hlAddStar.text( $.jCache.getItem("trinkets.giveAStar") );
				hlAddStar.click(function(){return false;});
				hlAddStar.bind("click", function(){
					addFeedback("1", true); //1 = items.Feedbacks.Star
				});


				$("#starStatus").append(hlAddStar);

			}
			
			//MAKE FAVORITE LINK
			var hlHeart = $("<a>");
			hlHeart.attr("id", "hlHeart");
			hlHeart.attr("href", "#");
			hlHeart.click(function(){return false;});

			//SETUP HEARTS
			if(fbol(heartResponse)){ //I FAVORITED THIS

				//TOGGLE THE HEART IMAGE
				toggleImage($("#imgHeart"));
				
				//SET FINAL HEART LINK ATTRIBUTES				
				hlHeart.text( $.jCache.getItem("trinkets.RemoveFromFavorites") );
				hlHeart.bind("click", function(){
					addFeedback("0", false); //0 = items.Feedbacks.Favorite
				});

				$("#heartStatus").html(hlHeart);

			}
			else{
				
				//SET FINAL HEART LINK ATTRIBUTES				
				hlHeart.text( $.jCache.getItem("trinkets.addToFavorites") );
				hlHeart.bind("click", function(){
					addFeedback("0", true); //0 = items.Feedbacks.Favorite
				});

				$("#heartStatus").html(hlHeart);

			}

			
		});
		
	});
	
}

function setupAudio(){
	
	//ONLY ON STORIES
	if(ItemType == 0){

		//INITIALIZE THE AUDIO PLAYER -- CALLED WHEN editor.EditMode = False
		if(typeof pageData.ctxAudio == "undefined"){
	
			pageData.ctxAudio = $("#divAudio");
			
			//CHECK FOR AUDIO TRACKS
			pageData.Audio = new Array();
			if(pageData.ctxAudio.length > 0){
				getPlaylist();
			}
		
			//INITIALIZE THE PHONE CALL INTERFACE?
			pageData.ctxCaller = $("#hCaller");
			if(pageData.ctxCaller.length > 0){
	
				//BIND EVENTS
				$(".phonePart", pageData.ctxCaller).focus(function(){ //CLEAR STATUS
					callStatus("nerr","");
				})
				.keypress(function(event){
					if(event.which == 13){
						$("#btnCallMe", pageData.ctxCaller).click();
						return false;
					}
				});
				$("#btnCallMe", pageData.ctxCaller).click(function(){
					callMe();
				});
	
			}
	
		}
	
	}
	
}

function callMe(){

	//INITIALIZE CALLER INTERVAL OBJECT
	pageData.CallerInterval = null;

	//VALIDATE PHONE NUMBER
	var arrPhoneParts = new Array();
	arrPhoneParts.push($("#tbPhone1AreaCode", pageData.ctxCaller).val());
	arrPhoneParts.push($("#tbPhone1Prefix", pageData.ctxCaller).val());
	arrPhoneParts.push($("#tbPhone1Suffix", pageData.ctxCaller).val());
	var strCalled = arrPhoneParts.join("");
		
	if(strCalled.length != 10 || isNaN(strCalled)){
		callStatus("err", "Please enter a 10-digit U.S. phone number");
	}
	else{

		//MAKE THE CALL!
		var strItemHash = $("#ctl00_cphSplitEdit_editor_hifItemHash").val();
		itemService.invoke("placeCall", {strSignature: getSignature(), strNumber: strCalled, strItemID: ItemID, strItemType: ItemType, strItemHash: strItemHash}, function(response){

			log(response);

			//STATUS
			var strFormattedNumber = arrPhoneParts[0] + "-" + arrPhoneParts[1] + "-" + arrPhoneParts[2];
			callStatus("succ", "Calling " + strFormattedNumber + "...");
			setTimeout(function(){callStatus("nerr","");}, 5000);
			
			//START CHECKING FOR NEW AUDIO TRACKS
			startCallerInterval(true);

		},
		function(error){
			
			startCallerInterval(false);

			callStatus("err", "Oops! There was an error; please try again...");
			setTimeout(function(){
				callStatus("nerr","");
			}, 2000);
			log(error);

		});		
				
	}
	
}

function callStatus(strType, strMessage){
	
	var status = $("#spCallerStatus", pageData.ctxCaller).html("");
	status.addClass("status").addClass("f12").css("display","inline").html(strMessage);
	
	switch(strType){
		case "nerr":
			status.removeClass().fadeOut();
			break;
		case "err":
			status.addClass("error").fadeIn();
			break;
		case "succ":
			status.addClass("success").fadeIn();
			break;
	}
	
}

function startCallerInterval(bolDo){
	
	if(!bolDo){
		clearInterval(pageData.CallerInterval);
		pageData.CallerInterval = null;
	}
	else{
		
		//ONLY IF THERE'S NOT ANOTHER INTERVAL RUNNING
		if(pageData.CallerInterval == null){
			pageData.CallerInterval = setInterval(function(){
				getPlaylist();
			}, 10000);
		}

	}
	
}

function getPlaylist(fnCallback){ 
	
	callStatus("succ", "Checking for audio tracks...");

	itemService.invoke("getPlaylist", {strSignature: getSignature(), strItemType: ItemType, strItemID: ItemID, iTrackCount: pageData.Audio.length}, function(result){
		
		//STORE RESULTS IN pageData.Audio
		if(result.Status == 1){ //ONLY IF NEW TRACKS ARE BEING RETURNED
			
			pageData.Audio = result.Tracks.Rows;

			//ADD WIMPY BUTTONS
			refreshPlaylist();

			//CANCEL INTERVAL
			//startCallerInterval(false); -- DON'T CANCEL NOW THAT WE CAN RECORD MULTIPLE TRACKS
			
		}
		else{
			//log("No new tracks found...");
		}

		callStatus("nerr", "");

		//CALLBACK?
		if(typeof fnCallback != "undefined"){
			fnCallback.call();
		}
		
		
	});
}

function onWimpyInit(){
	setTimeout(function(){
		refreshPlaylist();	
	}, 1500);
}

function refreshPlaylist(){
	
	//CLEAR BUTTONS
	$("#divAudio").html("");

	//ADD TABLE?
	var tblAudio;
	if(pageData.Audio.length > 0){
			var s = (pageData.Audio.length > 1) ? "s" : ""; //PLURAL?
			$("#divAudio").show().html("<table id='tblAudio'><tr><td colspan='2'><div class='meta'>(Audio file" + s + " - click the button" + s + " to play / pause)</div></td></tr></table>");
			tblAudio = $("#tblAudio", "#divAudio");
	}
			
	//ADD TRACKS
	for(var i = 0; i < pageData.Audio.length; i++){
		tblAudio.append(makeAudioRow(pageData.Audio[i]));
	}
	
}

function makeAudioRow(oRow){
	
	var arrHTML = new Array();
	
	arrHTML.push("<tr id='trContent_" + oRow.ID + "'>");
	arrHTML.push("<td class='play'>");
	arrHTML.push(writeWimpyButton(oRow.URL));
	arrHTML.push("</td>");
	arrHTML.push("<td class='title'>");
	
		arrHTML.push(" <span class='display'>" + oRow.Title + "</span>");

		//ADD EDIT & DELETE LINKS?
		if(pageData.ctxCaller.length > 0){
			
			arrHTML.push(" <span class='links meta'>");
			arrHTML.push("  <a href='#' class='ajax' onClick='editAudio(" + oRow.ID + ");return false;'>Change</a> or");
			arrHTML.push("  <a href='#' class='delete' onClick='deleteAudio(" + oRow.ID + ");return false;'>Delete</a>");
			arrHTML.push(" </span>");
			arrHTML.push("");
			arrHTML.push(" <span class='controls'>");
			arrHTML.push("  <input type='text' id='tbContentTitle_" + oRow.ID + "' maxlength='128' style='width: 440px; '/>");
			arrHTML.push("  <input type='button' id='btnSaveContentTitle_" + oRow.ID + "' value='Save'/>");
			arrHTML.push("  or <a href='#' class='cancel' id='hlCancel_" + oRow.ID + "'>Cancel</a>");
			arrHTML.push(" </span>");
			arrHTML.push("");
			arrHTML.push(" <span class='status'></span>");
			
		}
	
	arrHTML.push("</td>");
	arrHTML.push("</tr>");
	
	return arrHTML.join("");
	
}

function editAudio(iContentID){
	
	//GET REFERENCES
	var tr = $("#trContent_" + iContentID, tr);
	var tb = $("#tbContentTitle_" + iContentID, tr);
	var btn = $("#btnSaveContentTitle_" + iContentID, tr);
	var cancel = $("#hlCancel_" + iContentID);
	var display = $(".display", tr);
	var controls = $(".controls", tr);
	var links = $(".links", tr);
		
	//SET THE TEXTBOX VALUE & FOCUS
	tb.val(display.html());
	
	//ADD EVENT HANDLERS
	tb.keypress(function(event){
		if (event.which == 13){
			saveAudio(iContentID);
			return false;
		}
	});
	btn.click(function(){
		saveAudio(iContentID);
	});
	cancel.clickless(function(){
		display.show();
		links.show();
		controls.hide();
	});
	
	//SHOWHIDE
	display.hide();
	links.hide();
	controls.show();
	tb.focus();
	
}

function saveAudio(iContentID){
	
	//GET REFERENCES
	var tr = $("#trContent_" + iContentID, tr);
	var tb = $("#tbContentTitle_" + iContentID, tr);
	var btn = $("#btnSaveContentTitle_" + iContentID, tr);
	var display = $(".display", tr);
	var controls = $(".controls", tr);
	var links = $(".links", tr);
		
	//HACK! ASSIGN "Untitled" TO EMPTY TITLES
	var strTitle = tb.val();
	if(strTitle == ""){
		strTitle = "Untitled";
	}

	//SUBMIT TO SERVER
	itemService.invoke("updateContentTitle", {strSignature: getSignature(), iContentID: iContentID, strTitle: strTitle}, function(result){
		
			//SUCCESSFULLY UPDATED?
			if(result.Status == 1){
				
				//UPDATE CONTROLS
				tb.val(result.Msg);
				display.html(result.Msg);
				
				//REVERT FORM
				controls.hide();
				display.show();
				
				//STATUS
				$(".status", tr).addClass("success").html("Saving...");
				setTimeout(function(){
					$(".status", tr).removeClass("success").fadeOut(function(){
						$(this).html("").fadeIn()
						links.show();
					});
				}, 2000);
				
			}
			else{
				gstatus.html(err(result.Msg));
			}

	});	
	
}

function deleteAudio(iContentID){
	
	confirmYesNo("Really delete this audio?", "Click OK to delete; this action cannot be undone.", function(bolDo){
		
		if(bolDo){
			
			itemService.invoke("deleteContent", {strSignature: getSignature(), iContentID: iContentID}, function(result){
	
				//SUCCESSFULLY DELETED?
				if(result.Status == 1){
					
					$("#trContent_" + iContentID, pageData.ctxAudio).fadeOut();
					
				}
				else{
					gstatus.html(err(result.Msg));
				}
				
			});

		}
		
	});		
	
}

function addFeedback(strFeedbackType, bolDo){
	
	loading.show();
		
	//SUBMIT
	itemService.invoke("addFeedback", {strSignature: getSignature(), strItemType: ItemType, strItemID: ItemID, strFeedbackType: strFeedbackType, bolDo: bolDo}, function() {

		//WHAT TYPE OF FEEDBACK?
		if (strFeedbackType == "0") {//FAVORITE
		
			//CACHE STRINGS
			cacheStrings(["trinkets.addToFavorites", "trinkets.RemoveFromFavorites"], function(){

				//TOGGLE THE IMAGE
				toggleImage($("#imgHeart"));

				//MAKE FAVORITE LINK
				var hlHeart = $("<a>");
				hlHeart.attr("id", "hlHeart");
				hlHeart.attr("href", "#");
				hlHeart.click(function(){return false;});


				//FINISH SETTING THE LINK
				if(bolDo){

					hlHeart.text( $.jCache.getItem("trinkets.RemoveFromFavorites") );
					hlHeart.bind("click", function(){
						addFeedback("0", false); //0 = items.Feedbacks.Favorite
					});
					
				}
				else{

					hlHeart.text( $.jCache.getItem("trinkets.addToFavorites") );
					hlHeart.bind("click", function(){
						addFeedback("0", true); //0 = items.Feedbacks.Favorite
					});

				}
				
				//INSERT THE LINK
				$("#heartStatus").html(hlHeart);

			});

		}
		else if (strFeedbackType == "1") {//STAR
				
			//CACHE STRINGS
			cacheStrings(["trinkets.gaveStar"], function(){
					
				//ADD A STAR TO THE COLLECTION 
				var imgStar = "<img class='trinket p5' src='http://www.commontales.net/images/icon_star.on.gif'/>";
				$("#stars").append(imgStar);
	
				//CHANGE THE LINK
				toggleImage($("#imgStar"));
				$("#starStatus").html($.jCache.getItem("trinkets.gaveStar"));
					
			});

		}

	});
					
	loading.hide();

}

