// JavaScript Document

//function to 
var browserType;

if (document.layers) {browserType = "nn4"}
if (document.all) {browserType = "ie"}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {
   browserType= "gecko"
}

function toggleBox(szDivID, iState) // 1 visible, 0 hidden
{
    if(document.layers)	   //NN4+
    {
       document.layers[szDivID].visibility = iState ? "show" : "hide";
	   //document.layers[szDivID].display = iState ? "block" : "none";
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        obj.style.visibility = iState ? "visible" : "hidden";
		obj.style.display = iState ? "block" : "none";
    }
    else if(document.all)	// IE 4
    {
        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
    }
}

function saveTags_checkEnter(e, theMovieID){ //e is event object passed from function invocation
	var characterCode;	// literal character code will be stored in this variable
	
	//alert(theMovieID);
	//_tagfrm\'
	
	try
	{	
		if(e && e.which){ //if which property of event object is supported (NN4)
			e = e;
			characterCode = e.which; //character code is contained in NN4's which property
		}
		else{
			e = event;
			characterCode = e.keyCode; //character code is contained in IE's keyCode property
		}
		
		//alert(characterCode);
		
		if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
			//document.forms[0].submit(); //submit the form
			//document.getElementById(theMovieID).submit();
			
			saveAllTags(theMovieID, theMovieID+'_wrapper', theMovieID +'_holder', theMovieID+'_tagfrm');
			
			return false;
		}
		else{
			return false;
		}
	}
	catch (err)
	{
	   //alert("checkEnter:"+err);
	}
}

// Tag functions
function saveAllTags(movie_id, target, tagfield, tagform)
{		
	try
	{	  								
		//prep ajax request
		var url = '/ajax_tags.php';
		
		if (browserType == "ie")
		{
			var taglist = $F(tagfield);
			
		} else {
			
			var taglist = document.forms[tagform].elements[tagfield].value;
		}
		
		
		var typedtarget = movie_id + '_text';
		
		if (browserType == "ie")
		{
			var typedtaglist = $F(typedtarget);
			
		} else {
			
			var typedtaglist = document.forms[tagform].elements[typedtarget].value;
		}
		
		
		var totaltaglist = taglist + ' ' + typedtaglist;
		
		//alert(totaltaglist);
		
		//this can be done better via formserialize I think
		pars = 'action=saveAllTags'
					 + '&target=' + target
					 + '&taglist=' + totaltaglist
					 + '&movie_id=' + movie_id
					 ;
					
	  	//make a call to get data
	  	var showTags_myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 			
				onLoading: saveAllTags_handleLoading(target),
				onComplete: saveAllTags_handleResponse
			}
		);		
	}
	catch (err)
	{
	   alert("saveAllTags:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function saveAllTags_handleLoading(target)
{
	try
	{			
			var target_hdn = target+"_hdn";
			
			toggleBox(target_hdn,1);	//show
			toggleBox(target,0);		//hide
			
			$(target_hdn).innerHTML = "<img src='/images/indicator.gif' align='absmiddle'>&nbsp;<b><font color='#666666'>Saving your tags...</font></b>";
	}
	catch (err)
	{
	   alert("saveAllTags_handleLoading:"+err+"\n"+err.number+" - "+err.description);
	}

	return;

}

function saveAllTags_handleResponse(originalRequest)
{
	try
	{	
		//alert(originalRequest.responseText);
		
		var elements_response = originalRequest.responseText.split("~");
		var elements1 = elements_response[1];
		var elements = elements1.split("@");	
		
		//var elements = originalRequest.responseText.split("@");		
		
		//now refrence to tag div:
		var taglistdiv = elements[0];
		//alert(targetdiv);
		
		var targetdiv_thetext = elements[1];		
		
		//$(targetdiv).innerHTML = targetdiv_thetext;	
		var target_hdn = elements_response[0];
		
		//$(target_hdn).innerHTML = targetdiv_thetext;
		
		targetdiv = taglistdiv.split("_taglist");
		var target = targetdiv[0];
		
		toggleBox(target,1);	//show
		toggleBox(target_hdn,0);		//hide
		
		//update tag div:		
		var movie_id = target.split("_wrapper");
		updatetaglist(movie_id, taglistdiv);
		
	}
	catch (err)
	{
	   alert("saveAllTags_handleResponse:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function updatetaglist(movie_id, taglistdiv)
{
	try
	{
		//$(taglistdiv).innerHTML = "<img src='/images/indicator.gif' align='absmiddle'>&nbsp;<b><font color='#666666'>Refreshing...</font></b>";
		//prep ajax request
		var url = '/ajax_tags.php';
		
		pars = 'action=updateTagList'
					 + '&movie_id=' + movie_id
					 + '&taglistdiv=' + taglistdiv
					 ;
		
		//alert(pars);
		
	  	//make a call to get data
	  	var updatetaglist_myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 			
				onLoading: updatetaglist_handleLoading(taglistdiv),
				onComplete: updatetaglist_handleResponse
			}
		);		
		
	}
	catch (err)
	{
	   alert("updatetaglist:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function updatetaglist_handleLoading(taglistdiv)
{
	try
	{		
			$(taglistdiv).innerHTML ="<img src='/images/indicator.gif' align='absmiddle'>&nbsp;<b><font color='#666666'>Refreshing...</font></b>";
	}
	catch (err)
	{
	   alert("updatetaglist_handleLoading:"+err+"\n"+err.number+" - "+err.description);
	}

	return;

}

function updatetaglist_handleResponse(originalRequest)
{
	try
	{	
		//alert(originalRequest.responseText);
		
		var elements = originalRequest.responseText.split("@");				
		var targetdiv = elements[0];
		var targetdiv_thetext = elements[1];		
		
		$(targetdiv).innerHTML = targetdiv_thetext;	
		
	}
	catch (err)
	{
	   alert("updatetaglist_handleResponse:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function removeTag(tag, targetfield, holderfield, holderform)
{
	try
	{	
		var target_textholder = targetfield + '_holder';
		
		//is the tag there?
		var existingtags = document.forms[holderform].elements[holderfield].value;
		var result = existingtags.search(tag);
								
		document.forms[holderform].elements[holderfield].value = '';
		$(targetfield).innerHTML = '';
		
		var theNewTag = '';
		var tags = existingtags.split(' ');
		for (counter = 0; counter < tags.length; counter++){
			theNewTag = tags[counter];
			if ((theNewTag != tag) && (theNewTag != '')){
				
				$(targetfield).innerHTML = $(targetfield).innerHTML + '&nbsp; &nbsp;<a href="javascript://" title="click to remove" onClick="removeTag(\'' +theNewTag+ '\', \'' +targetfield+ '\',\'' +holderfield+ '\', \'' +holderform+ '\');">' +theNewTag + '</a>';					
				document.forms[holderform].elements[holderfield].value = document.forms[holderform].elements[holderfield].value + ' ' + theNewTag;
			}
		}	
		
		if (document.forms[holderform].elements[holderfield].value != ''){			
			$(targetfield).innerHTML = '&nbsp;&nbsp;&nbsp;adding: (<i>click to remove</i>)' + $(targetfield).innerHTML;
		}
	}
	catch (err)
	{
	   alert("removeTag:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}
function addTag(tag, targetfield, holderfield, holderform)
{
	try
	{	
		var target_textholder = targetfield + '_holder';
		
		if (document.forms[holderform].elements[holderfield].value == ''){
			$(targetfield).innerHTML = '&nbsp;&nbsp;&nbsp;adding: (<i>click to remove</i>)';
		}
		//is the tag already there?
		var existingtags = document.forms[holderform].elements[holderfield].value;
		var result = existingtags.search(tag);
		if (result == -1){
			$(targetfield).innerHTML = $(targetfield).innerHTML + '&nbsp; &nbsp;<a href="javascript://" title="click to remove" onClick="removeTag(\'' +tag+ '\', \'' +targetfield+ '\',\'' +holderfield+ '\', \'' +holderform+ '\');">' + tag + '</a>';					
			//store for later	
			document.forms[holderform].elements[holderfield].value = document.forms[holderform].elements[holderfield].value + ' ' + tag;
		}
		
	}
	catch (err)
	{
	   alert("addTag:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function showTagsNotLoggedIn(flag, target, movie_id)
{
	try
	{
		//hide for later
		var target_hdn = target+"_hdn";		
		
		toggleBox(target_hdn,1);	//show
		//toggleBox(target,0);		//hide
		
		var theMessage = "<span class='lessimportant'><em><b>You need to be logged in to tag a clip.<b></em><br><br>If you are a user, when you tag clips they are associated with your login so other users can find cool stuff based on what you tag!<br><br><em>Please <a href='/sign-in.php'>login</a> or <a href='/sign-in.php'>sign up</a></em><br><br></span>";
		
		$(target_hdn).innerHTML = theMessage;
		
	}
	catch (err)
	{
	   alert("showTagsNotLoggedIn:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function showTagsWrapper(flag, target, movie_id)
{
	try
	{
		//hide for later
		var target_hdn = target+"_hdn";		
		
		toggleBox(target_hdn,1);	//show
		toggleBox(target,0);		//hide
		
		if (flag == 'ALL') {
			showAllTags(target, movie_id);
		} else {
			showTopTags(target, movie_id);
		}
		
	}
	catch (err)
	{
	   alert("showTagsWrapper:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function cancelTags(target)
{		
	try
	{	
		var target_hdn = target+'_hdn';
		
		toggleBox(target,1);	//show
		toggleBox(target_hdn,0);		//hide
	}
	catch (err)
	{
	   alert("cancelTags:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function showTopTags(target, movie_id)
{		
	try
	{	  								
		//prep ajax request
		var url = '/ajax_tags.php';
			
		//this can be done better via formserialize I think
		pars = 'action=showtoptags'
					 + '&target=' + target
					 + '&movie_id=' + movie_id
					 ;		
				
	  	//make a call to get data
	  	var showTags_myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 			
				onLoading: showTags_handleLoading(target),
				onComplete: showTags_handleResponse
			}
		);		
	}
	catch (err)
	{
	   alert("showTopTags:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}
function showAllTags(target, movie_id)
{		
	try
	{	  								
		//prep ajax request
		var url = '/ajax_tags.php';
			
		//this can be done better via formserialize I think
		pars = 'action=showalltags'
					 + '&target=' + target
					 + '&movie_id=' + movie_id
					 ;		
		//hide for later - not needed here, actions html will already be in the hidden div
		//var target_hdn = target+"_hdn";		
		//$(target_hdn).innerHTML = $(target).innerHTML;
		
	  	//make a call to get data
	  	var showTags_myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 			
				onLoading: showTags_handleLoading(target),
				onComplete: showTags_handleResponse
			}
		);	
		
		//alert('here');
		
	}
	catch (err)
	{
	   alert("showAllTags:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}

function showTags_handleLoading(target)
{
	try
	{			
			var target_hdn = target+"_hdn";
			
			toggleBox(target_hdn,1);	//show
			toggleBox(target,0);		//hide
			
			$(target_hdn).innerHTML = "<img src='/images/indicator.gif' align='absmiddle'>&nbsp;<b><font color='#666666'>Looking up your tags...</font></b>";
	}
	catch (err)
	{
	   alert("showTags_handleLoading:"+err+"\n"+err.number+" - "+err.description);
	}

	return;

}

function showTags_handleResponse(originalRequest)
{
	try
	{	
		var elements_response = originalRequest.responseText.split("~");
		var elements1 = elements_response[1];
		var elements = elements1.split("@");				
		var targetdiv = elements[0];
		var targetdiv_thetext = elements[1];		
		
		var target_hdn = elements_response[0];
		
		$(target_hdn).innerHTML = targetdiv_thetext;
		
	}
	catch (err)
	{
	   alert("showTags_handleResponse:"+err+"\n"+err.number+" - "+err.description);
	}

	return;
}




