/* NOTE: Need to use jQuery instead of shortcut $ in this file as the prototype library also uses the $ syntax */

var _ADULT_SEARCH = "Adult";
var _SPICE_SEARCH = "Spice";
var _CMS_SEARCH = "CMS";
var _ADULT_USERGROUP_MAPPING = new Array("", "4", "3", "63", "64", "65", "66");
var _SPICE_USERGROUP_MAPPING = new Array("", "94", "95", "96", "97", "98", "99");

var initialSearchText = "search...";




jQuery(function(){
	
	
	// add authorisation	
	jQuery("a#entryLink").click(function(){
		jQuery.cookie('authorisation', 'true', { expires: 30, path: '/'});
	});
	
	// searching	
	jQuery("input.searchinput").val(initialSearchText);
	jQuery("input.searchinput").focus(function(){
		if(jQuery(this).val() == initialSearchText)
		{
			jQuery(this).val("");
			if(jQuery("input.searchbutton").attr('id') == _SPICE_SEARCH)
			{
				jQuery(this).css("color", "#fff");
			}
			else
			{
				jQuery(this).css("color", "#333");
			}
		}
	});
	
	jQuery("input.searchinput").blur(function(){
		if(jQuery(this).val() == '')
		{
			jQuery(this).val(initialSearchText);
			if(jQuery("input.searchbutton").attr('id') == _SPICE_SEARCH)
			{
				jQuery(this).css("color", "#888");
			}
			else
			{
				jQuery(this).css("color", "#999");
			}
		}
	});
	
	jQuery("input.searchbutton").click(function(){
		searchTagAdult(this.id);
	});
	
	jQuery("input[name='search_text'], input[name='tag_text']").keyup(function(event){
	    if(event.keyCode == 13)
	    {
	    	searchTagAdult(jQuery("input.searchbutton").attr('id'));	    	
	    }
	});

	
	// change mouse to hand when hovered
	jQuery("img.search-within-checkbox, img.email-checkbox").hover(
	      function () {
	      	$(this).css('cursor', 'pointer');
	        $(this).css('cursor', 'hand');				        
	      }, 
	      function () {
	        $(this).css('cursor', 'auto');
	      }
	 );

	
	// toogle img if clicked
	jQuery("#search-within-yes, #search-within-no").click(function(){
	 	$("#search-within-yes").toggle();
	 	$("#search-within-no").toggle();
	 });
	

	
	
	// closing thickbox window
	jQuery(".close").click(closeThickbox); 
	
	
	
	bindElements();
	

	
});

function closeThickbox()
{
	window.top.eval("tb_remove();");
	window.top.focus();	
}



function bindElements() {
	
	/* rating javascript */
	jQuery(".rateme").hover(
			function(){
				// set all the star up to and including this one as full
				var starId = jQuery(this).attr("id").substring(7, 8);
				var itemId = jQuery(this).attr("id").substring(9);
				var siteId = jQuery("input[name='site_search']:first").val();
				var starSrcFull = "/other_files/"+siteId+"/general/rating-star-full.";				
				var starSrcEmpty = "/other_files/"+siteId+"/general/rating-star-empty.";
				if(jQuery("#star-1-" + itemId).attr("src").indexOf("black") != -1)
				{
					starSrcFull = "/other_files/"+siteId+"/general/rating-star-full-black.";
					starSrcEmpty = "/other_files/"+siteId+"/general/rating-star-empty-black.";
				}				
				if(siteId == _SPICE_SEARCH)
				{
					starSrcFull += "png";
					starSrcEmpty += "png";
				}
				else
				{
					starSrcFull += "gif";
					starSrcEmpty += "gif";
				}
				for(var i = 1; i <= 5; i++)
				{
					if(i <= starId)
						jQuery("#star-"+ i + "-" + itemId).attr("src", starSrcFull);
					else
						jQuery("#star-"+ i + "-" + itemId).attr("src", starSrcEmpty);
				}
			},
			function(){
				// set all stars back to the value stored
				var itemId = jQuery(this).attr("id").substring(9);
				var starId = jQuery("#current-rating-" + itemId).val();
				var siteId = jQuery("input[name='site_search']:first").val();
				var starSrcFull = "/other_files/"+siteId+"/general/rating-star-full.";
				var starSrcEmpty = "/other_files/"+siteId+"/general/rating-star-empty.";
				if(jQuery("#star-1-" + itemId).attr("src").indexOf("black") != -1)
				{
					starSrcFull = "/other_files/"+siteId+"/general/rating-star-full-black.";
					starSrcEmpty = "/other_files/"+siteId+"/general/rating-star-empty-black.";
				}
				if(siteId == _SPICE_SEARCH)
				{
					starSrcFull += "png";
					starSrcEmpty += "png";
				}
				else
				{
					starSrcFull += "gif";
					starSrcEmpty += "gif";
				}
				for(var i = 1; i <= 5; i++)
				{
					if(i - 0.5 <= starId)
						jQuery("#star-"+ i + "-" + itemId).attr("src", starSrcFull);
					else
						jQuery("#star-"+ i + "-" + itemId).attr("src", starSrcEmpty);
				}
	});


	jQuery(".rateme").click(function(){
		if(jQuery("div[name='loggedIn']").length != 0)
		{		
			var starId = jQuery(this).attr("id").substring(7, 8);
			var itemId = jQuery(this).attr("name");
			var divId = jQuery(this).attr("id").substring(9);
			var siteId = jQuery("input[name='site_search']:first").val();
			var portletId = jQuery("#" + divId + "wrapper").attr("portletId");
			var oldStarHtml = jQuery("#" + divId + "wrapper").html();
			unbindElements();
			jQuery("#" + divId + "wrapper").html("<span>Updating rating...</span>");			
			jQuery.post(
					"/servlet/rating",
					
					{ 'action': 'add', 'itemId': itemId, 'rating': starId, 'siteId' : siteId }, 
					
					function(data){
						
						jQuery.post(
								"/servlet/rating",								
								{ 'action': 'get', 'itemId': itemId, 'siteId' : siteId }, 
								
								function(ratingdata){ 
									
									var rating = parseFloat(ratingdata.data.average);
									rating = rating.toFixed(1);
									var numratings = ratingdata['data']['num-ratings'];
									
									
									
										
									var starSrcFull = "/other_files/"+siteId+"/general/rating-star-full.";
									var starSrcEmpty = "/other_files/"+siteId+"/general/rating-star-empty.";
									if(jQuery("#star-1-" + divId, oldStarHtml).attr("src").indexOf("black") != -1)
									{
										starSrcFull = "/other_files/"+siteId+"/general/rating-star-full-black.";
										starSrcEmpty = "/other_files/"+siteId+"/general/rating-star-empty-black.";
									}
									if(siteId == _SPICE_SEARCH)
									{
										starSrcFull += "png";
										starSrcEmpty += "png";
									}
									else
									{
										starSrcFull += "gif";
										starSrcEmpty += "gif";
									}
										
										
									
									jQuery("#" + divId + "wrapper").html(oldStarHtml);
									
									for(var i = 1; i <= 5; i++)
									{
										if(i - 0.5 <= rating)
										{
											jQuery("#star-"+ i + "-" + divId).attr("src", starSrcFull);											
										}
										else
										{
											jQuery("#star-"+ i + "-" + divId).attr("src", starSrcEmpty);
										}
									}
									
									// update the actual rating
									jQuery("#actualrating-" + divId).html("("+rating+")");
									jQuery("#current-rating-" + divId).val(rating);
									
									// update the num ratings if field exists...
									var numratingstext = numratings + " Rating";
									if(numratings != 1)
									{
										numratingstext = numratingstext + "s";
									}
									jQuery("#" + divId + "wrapper").parents("div.summary").find("p.num_ratings").text(numratingstext);
									size = jQuery("#" + divId + "wrapper").parents("div.summary").find("p.num_ratings").size();
									bindElements();
								}, "json");
						//setTimeout("window.location.reload();", 1000);
					});
		}
		else
		{
			/* pop up the log in box */
			var t = null;
			var a = "/user/login/register/?TB_iframe=true&amp;height=385&amp;width=620";
			var g = false;
			tb_show(t,a,g);
		}
		
	});
	
	if(jQuery("a.thickbox, area.thickbox, input.thickbox").length > 0)
	{
		tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
		imgLoader = new Image();// preload image
		imgLoader.src = tb_pathToImage;
		jQuery('.thickbox').css('visibility', 'visible');
	}
	
	
}


function unbindElements(){
	jQuery(".rateme, a.thickbox, area.thickbox, input.thickbox").unbind();
}




//search
function searchTagAdult(site)
{
	
		var tagQuery = "";
		jQuery("select[name='tag_text']").each(function(i){
			if(tagQuery != "")
				tagQuery += " ";
			tagQuery += $(this).val(); 
		});
		
		
		var tagQueryArray = tagQuery.split(" ");
		tagQuery = "";
		for (var i = 0; i < tagQueryArray.length; i++) {
			   if(tagQueryArray[i].toUpperCase() == "AND")
			   {
				   tagQuery += "AND";
			   }
			   else if(tagQueryArray[i].toUpperCase() == "OR")
			   {
				   tagQuery += "OR";
			   }
			   else
			   {
				   tagQuery += tagQueryArray[i];
			   }
			   
			   tagQuery += " ";
		}	
		
		tagQuery = jQuery.trim(tagQuery);
		
		$("input[name='SEARCH_ATTRIBUTE_125']").val(tagQuery);
		
		searchAdult(site);

}

function searchAdult(site)
{
	
	var searchQuery = "";
	jQuery("input[name='search_text']").each(function(i){
		if(searchQuery != "")
			searchQuery += " ";
		searchQuery += $(this).val().replace(initialSearchText, ''); 
	});
	
	
	var searchQueryArray = searchQuery.split(" ");
	searchQuery = "";
	for (var i = 0; i < searchQueryArray.length; i++) {
		   if(searchQueryArray[i].toUpperCase() == "AND")
		   {
			   searchQuery += "AND";
		   }
		   else if(searchQueryArray[i].toUpperCase() == "OR")
		   {
			   searchQuery += "OR";
		   }
		   else
		   {
			   searchQuery += searchQueryArray[i];
		   }
		   
		   searchQuery += " ";
	}	
	
	searchQuery = jQuery.trim(searchQuery);

	// do we need to include the previous search query?
	if(jQuery("#search-within-yes:visible").length == 1)
	{	
		var prevSearch = $("input[name='ASEARCH_USER_QUERY']").val();
		if(prevSearch != '' && searchQuery != '')
		{
			searchQuery = "(" + searchQuery + ") AND (" + prevSearch + ")";
		}
		else if (prevSearch != '')
		{
			searchQuery = prevSearch;
		}
	
	}
	
	// work out the tag input
	if(site == _CMS_SEARCH)
	{
		// do we need to include site limitations?
		if(jQuery("#adult-yes:visible").length == 1)
		{
			searchQuery += ' +description:Adult';
		}
		if(jQuery("#spice-yes:visible").length == 1)
		{
			searchQuery += ' +description:Spice';
		}
		if(jQuery("#free-yes:visible").length == 1)
		{
			searchQuery += ' +description:Free';
		}
		if(jQuery("#not-free-yes:visible").length == 1)
		{
			searchQuery += ' +active:true -description:Free';
		}
	}
	
	jQuery("input[name='ASEARCH_USER_QUERY']").val(searchQuery);
	jQuery("form[id^='portlet.search.view_p']").submit();
	
	
}


/* submitting tag from search */

function submitSearchTag(site, searchQuery)
{
	if(site != _CMS_SEARCH)
	{
		var tagInput = searchQuery.replace(/[^0-9A-Za-z ]/g, '');
		tagInput = tagInput.replace(/AND/g, '');
		tagInput = tagInput.replace(/OR/g, '');
		while(tagInput.indexOf('  ') != -1)
		{
			tagInput = tagInput.replace(/  /g, ' ');
		}
		
		tagInput = jQuery.trim(tagInput);
	
		jQuery.post("/servlet/tagcloud", { 'action': 'add', 'itemId': 'Search', 'siteId': site, 'name': tagInput });
	}
}

/* searching by clicking on a tag */

function searchFromTag(value)
{
	jQuery("input[name='search_text']").val(value);
	searchAdult(jQuery("input.searchbutton").attr('id'));
}

/* submit tag */
function submitTag(itemId, siteId, tagInput)
{
	jQuery.post("/servlet/tagcloud", { 'action': 'add', 'itemId': itemId, 'name': tagInput, 'siteId' : siteId }, function(data){
		alert(data.messages);
		window.location.reload();
	}, "json");
}

/* submit video tag - does an ajax submit - ie doesn't reload the page, uses ajax to reload the tags div...*/
function submitVideoTag(itemId, siteId, tagInput, portletId)
{
	
	jQuery.post("/servlet/tagcloud", { 'action': 'add', 'itemId': itemId, 'name': tagInput, 'siteId' : siteId }, function(data){

		if(data.error)
		{
			alert(data.messages);
		}
		else
		{		
			jQuery.post("/servlet/portlet", 
					
				{ 'portal:componentId' : portletId, 
				'portal:type' : 'action', 
				'portal:isSecure' : 'false', 
				'portal:portletMode' : 'view', 
				'pageNo' : 1,
				'opath' : location.pathname,
				'sortBy' : null,
				'orderBy' : null
				}, 
				
				function(htmlData){
					var vidTagsHtml = jQuery(".video-tags > p", htmlData);
					jQuery(".video-tags-placeholder .video-tags > p").replaceWith(vidTagsHtml);
					if(inputTagHasFocus)
					{
						$(".taginput").val("");	
					}
					else
					{
						$(".taginput").val(initialTagsText);	
					}
					
			});	
		}
		
		
	}, "json");
	
}


/* adding item to favourites */
function addToFavourites(itemId, siteName)
{
	if(siteName == _SPICE_SEARCH)
	{
		jQuery.get("/servlet/collections", { 'itemId' : itemId, 'itemListId' : 1, 'defaultUserLinkId' : 64}, function(data) {
			alert(data.messages);
		}, "json");	
	}
	else if(siteName == _ADULT_SEARCH)
	{
		jQuery.get("/servlet/collections", { 'itemId' : itemId, 'itemListId' : 1}, function(data) {
			alert(data.messages);
		}, "json");	
	}
}
/* removing item from favourites */
function removeFromFavourites(itemId, siteName)
{
	if(siteName == _SPICE_SEARCH)
	{
		jQuery.get("/servlet/collections", { 'itemId' : itemId, 'itemListId' : 1, 'remove' : 'true', 'defaultUserLinkId' : 64}, function(data) {
			alert(data.messages);
			location.reload();
		}, "json");	
	}
	else if(siteName == _ADULT_SEARCH)
	{
		jQuery.get("/servlet/collections", { 'itemId' : itemId, 'itemListId' : 1, 'remove' : 'true'}, function(data) {
			alert(data.messages);
			location.reload();
		}, "json");	
	}
}

/* servlet paging */
function portletPage(portletId, pageNo, divPlaceholderId, sortBy, orderBy)
{
	if(window.event && jQuery.browser.msie)
	{
		window.event.cancelBubble = true;
	}
	
	unbindElements();
	
	jQuery.get("/servlet/portlet", 
			
		{ 'portal:componentId' : portletId, 
		'portal:type' : 'action', 
		'portal:isSecure' : 'false', 
		'portal:portletMode' : 'view', 
		'pageNo' : pageNo,
		'opath' : location.pathname,
		'sortBy' : sortBy,
		'orderBy' : orderBy
		}, 
		
		function(htmlData){
			var prevDivClasses = jQuery("#" + divPlaceholderId).attr("class");
			jQuery("#" + divPlaceholderId).replaceWith(htmlData);
			jQuery("#" + divPlaceholderId).attr("class", prevDivClasses);
			
			bindElements();
			return false;
		});
	
	return false;
}


/* servlet attribute increments */
function incrementAttribute(itemId, attId)
{
	jQuery.post("/servlet/attributes", { 'action': 'increment', 'itemId': itemId, 'attId': attId });
}




/* helper functions */


function getURLValue(varname)
{
  var url = window.location.href;
  idx = url.indexOf("?")
  if(idx == -1)
  {
    return "";
  }

  var query= url.substring(idx + 1);
  
  var vars = query.split("&");
  if(vars.length == 0)
  {
    vars = query.split("&amp;");
  }

  var value = "";
 
  for (i=0;i<vars.length;i++)
  {
    var parts = vars[i].split("=");
 
    if (parts[0] == varname)
    {
      value = parts[1];
      break;
    }
  }
  value = unescape(value);
  value.replace(/\+/g," ");

  return value;
}





function getItemIdFromURL()
{
	var url = window.location.href;
	idx = url.indexOf("item")
	if(idx == -1)
	{
	  return "";
	}
	
	itemId = url.substring(idx + 4);
	
	if(itemId.substring(itemId.length - 1, itemId.length) == "/")
	{
		itemId = itemId.substring(0, itemId.length - 1);
	}
					
	return itemId;
}


//correctly handle PNG transparency in Win IE 5.5 & 6.
function correctPNG() 
{
   var arVersion = navigator.appVersion.split("MSIE")
   var version = parseFloat(arVersion[1])
   if ((version >= 5.5) && (document.body.filters)) 
   {
      for(var i=0; i<document.images.length; i++)
      {
         var img = document.images[i]
         var imgName = img.src.toUpperCase()
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
         {
            var imgID = (img.id) ? "id='" + img.id + "' " : ""
            var imgClass = (img.className) ? "class='" + img.className + "' " : ""
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
            var imgStyle = "display:inline-block;" + img.style.cssText 
            if (img.align == "left") imgStyle = "float:left;" + imgStyle
            if (img.align == "right") imgStyle = "float:right;" + imgStyle
            if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
            var strNewHTML = "<span " + imgID + imgClass + imgTitle
            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
            + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
            img.outerHTML = strNewHTML
            i = i-1
         }
      }
   }    
}




	
