/*
JQUERY SCRIPTS AFTER DOCUMENT READY
toggleVideoDiv() hide a div receives div to hide and div for instruction text

FUNCTIONS TO RUN
// $(document).ready(function
// loadInitialCompanions(companion) - loads companion products which carousel with forward and back arrows if appropriate
// loadInitialRelatedViews(view) - set out items that were viewed by customers who also viewed this product
// loadReviews()
// toggleVideoDiv(showHideDiv, switchTextDiv)  - hide a div receives div to hide and div for instruction text
// trackDetailsFunc() - add tracking details of referring sites to activityLogReferrer table
*/
$(document).ready(function()
{		
/*

EVENTS
#addNewsletter - add person to mailing list
#artistToEditId - select artist by Id, 			
#askQuestionButton - ask a question form submission			
#buttonStore - populate drop down bow with just artists begining with selected letter             	

*/
	
	
// add person to mailing list having validated data ***********
	$("#addNewsletter").live('click',function(){ //questionSent
       if($("#addNewsletterGivenName").val().length)
       {
       		var givenName 		= $("#addNewsletterGivenName").val();
       	}else
       	{
       		alert("Please insert your Given Name");
       		return false;
       	}
       	if($("#addNewsletterFamilyName").val().length)
       	{
       		var familyName 		= $("#addNewsletterFamilyName").val();
       	}else
       	{
       		alert("Please insert your Family Name");
       		return false;
       	}
       	if($("#addNewsletterEmail").val().length)
       	{
       		if(validateThisEmailAddress($("#addNewsletterEmail").val()))
       			var email 	= $("#addNewsletterEmail").val();
       		else 
       			return false
       	}else
       	{
       		alert("Please insert an email address");
       		return false;
       	}
       	$.ajax({
       		type:		"POST",
       		url:		"./xmlRequestFunction.php",
       		data:		"addNewsLetter=1&givenName="+givenName+"&familyName="+familyName+"&personEmail="+email,
       		success: 	function () 
       		{
       				$("#divOrderBy").html("<strong>Thank you</strong><p>The email address "+email+" has been added to the newsletter mailing list.</p>");
       		}
       	});
	});
	
// select artist by Id, 				
	$("#artistToEditId").live('change',function()
	{
		var artistId	= $("#artistToEditId").val();
		var artistName	= $("#artistToEditId option:selected").text();
		window.location = "./store.html?listArtistWork="+artistId+"&artistName="+artistName;
	});
	
// ask a question form submission			
	$("#askQuestionButton").live('click',function()
	{ //questionSent
		if($("#email").val().length)
       	{
       		if(validateThisEmailAddress($("#email").val()))
       			var email 	= $("#email").val();
       		else 
       			return false
       	}else
       	{
       		alert("Please insert an email address");
       		return false;
       	}
       	if($("#givenName").val().length)
       	{
       		var givenName 		= $("#givenName").val();
       	}else
       	{
       		alert("Please insert your Given Name");
       		return false;
       	}
       	if($("#familyName").val().length)
       	{
       		var familyName 		= $("#familyName").val();
       	}else
       	{
       		alert("Please insert your Family Name");
       		return false;
       	}
       	if($("#message").val().length)
       	{
       		var message 		= $("#message").val();
       	}else
       	{
       		alert("Please insert a question");
       		return false;
       	}
       	$.ajax({
       		type:		"POST",
       		url:		"xmlRequestFunction.php",
       		data:		"askQuestion=1&email="+email+"&givenName="+givenName+"&familyName="+familyName+"&message="+message,
       		success: 	function () {
       			window.location = "./store.html?ask=1&asked=1";
       		}
       	});
	});
		
// populate drop down bow with just artists begining with selected letter             	
	$("#buttonStore a").live('click',function () // populate select box in artist select
	{
		var letterVal	= $(this).text();
		$.ajax({
			type:		"POST",
			url:		"xmlRequestFunction.php",
			data:		"selectArtistToBrowse=1&parentDiv=rightPaneStore&letterToBrowse="+letterVal,
			dataType:	"html",
			success: 	function (responseText)
			{
				$("#rightPaneStore").html(responseText);
			}
		});
	});
	
	$('.starAverage').raty({
	  half:  true,
	  hintList: ['Not at all as I wanted', 'Disappointing', 'Satisfied', 'Just as I wanted', 'Brilliant'],
	  readOnly:   true,
	  start: function() {
	    return $(this).attr('data-rating');
	  },
	});
	
	$('#writeStars').raty({
	  hintList: ['Not at all as I wanted', 'Disappointing', 'Satisfied', 'Just as I wanted', 'Brilliant'],
	  click: function(score, evt) {
	    $(this).attr('data-rating', score);
	  },
	  start: function() {
	    return $(this).attr('data-rating');
	  },
	});
})  

// loads companion products which carousel with forward and back arrows if appropriate
// 146 - 247
function loadInitialCompanions(companion)
{
	var start	= 0;
	if(companion)
		start	= companion;
		
	var end		= (start*1)+3;
	
	// if there are products in the viewed array get three products, if at the end of array then return the last three
	if(companionProductArray.length)
	{
		if(companionProductArray.length<=start)
			start	= companionProductArray.length-1
		// if less than 3 in array get what there are				
		if(((companionProductArray.length-1)-start)<3)
		{
			start	= companionProductArray.length-3;
			// if there are less than three make start 0 and end the end of array
			if(start<0)
			{
				start	= 0;
			}			
			end		= companionProductArray.length;	
		}
		start		=(start*1);
		//  get three items from the viewed array array.slice(start, end) - end is not returned
		var showCompanionsArray	= companionProductArray.slice(start, end);
		// locate holder part of document
		if ($("#companionHolderNode"))
		{
			$("#companionHolderNode").remove(); 
		}	
		
		// make holder and heading
		var companionHolderNode = $("<div>",{
			"id":"companionHolderNode",
			"class":"leftHolder alignLeft width95"
		});
		var companionHeading = $("<div>",{
			"id":"companionHeading",
			"class":"leftHolder alignLeft width95"
		});
		$(companionHeading).html("Companion Products:");
		
		// make left arrow holder
		var leftArrowNode = $("<div>",{
			"id":"leftArrowNode",
			"class":"leftHolder alignLeft width5"
		});
		// if not at begining inset arrow with link to previous set of products
		var begin = (start*1)-2;
		if(begin<0)
			begin=0;
		if(start)
		{
			var funcPrev			= "loadInitialCompanions('"+begin+"')";
			var leftArrowImg		= $("<img>",{
				"src":"./png/1leftarrow.png",
				"alt":"More items",
				"width":"95%",
				"onclick":funcPrev
			});
			 // append heading img to holder
			$(leftArrowNode).append(leftArrowImg);
		}
		
		// for each of the sub arrays
		var item	= 0;
		var arrayNo	= start;
		var companionItemNode	= '';
		for (item = 0; item < 3; item++)
		{
			companionItemNode += '<div id="companionItemNode'+item+'" class="leftHolderFloat alignCenter width25"><a href="./store.html?showThisProduct=1&productId='+showCompanionsArray[item][0]+'" title="Companion products:"><img src="'+showCompanionsArray[item][2]+'" alt="'+showCompanionsArray[item][1]+'" valign="top" width="95%" /></a></div>';
			
			arrayNo++;
		}
		
	// make right arrow holder
		var rightArrowNode		= $("<div>",{
			"id":"rightArrowNode",
			"class":"leftHolderFloat width5"
		});
		// if not at end inset arrow with link to next set of products
		if(end<companionProductArray.length)
		{	
			var funcNext			= 'loadInitialCompanions(\''+((start*1)+3)+'\')';	
			var rightArrowImg		= $("<img>",{
				"src":"./png/1rightarrow.png",
				"alt":"More items",
				"width":"95%",
				"onclick":funcNext
			});
			$(rightArrowNode).append(rightArrowImg);
		}
		// append all of the constructed divs
		$(companionHolderNode).append(companionHeading, leftArrowNode, companionItemNode, rightArrowNode);		
	}	
	$("#companionDiv").append(companionHolderNode);

}
// 146 - 247
//248 - 348
// set out items that were viewed by customers who also viewed this product
function loadInitialRelatedViews(view)
{
	var start	= 0;
	if(view)
		start	= view;
	var end		= (start*1)+3;
	
	if(viewedProductsArray.length<3)
		end		= viewedProductsArray.length;
		
	if(viewedProductsArray.length)
	{		
		if(viewedProductsArray.length<start)
			start	= viewedProductsArray.length-1
						
		if(((viewedProductsArray.length-1)-start)<3)
		{
			start	= viewedProductsArray.length-3;
			// if there are less than three make start 0 and end the end of array
			if(start<0)
			{
				start	= 0;
			}
			end		= viewedProductsArray.length;
		}
		start		= (start*1);
		//  get three items from the viewed array array.slice(start, end) - end is not returned
		var showViewsArray	= viewedProductsArray.slice(start, end);
		// locate holder part of document
		if ($("#viewHolderNode"))
		{
			$("#viewHolderNode").remove(); 
		}
		// make holder and heading
		var viewHolderNode = $("<div>",{
			"id":"viewHolderNode",
			"class":"leftHolder alignLeft width95"
		});
		var viewHeadingNode = $("<div>",{
			"id":"viewHeadingNode",
			"class":"leftHolder alignLeft width95"
		});
		$(viewHeadingNode).html("People who viewed this product also viewed:");
	
		// make left arrow holder
		var leftArrowViewNode = $("<div>",{
			"id":"leftArrowViewNode",
			"class":"leftHolder alignLeft width5"
		});
		// if not at begining inset arrow with link to previous set of products
		var begin = (start*1)-2;
		if(begin<0)
			begin=0;
		if(start)
		{
			var funcPrev		= "loadInitialRelatedViews('"+begin+"')";
			var leftArrowImg	= $("<img>",{
				"src":"./png/1leftarrow.png",
				"alt":"More items",
				"width":"95%",
				"onclick":funcPrev
			});
			 // append heading img to holder
			$(leftArrowViewNode).append(leftArrowImg);
		}
		
		// for each of the sub arrays
		var item	= 0;
		var arrayNo	= start;
		var companionItemNode	= '';
		for (item = 0; item < 3; item++)
		{
			companionItemNode += '<div id="companionItemNode'+item+'" class="leftHolderFloat alignCenter width25"><a href="./store.html?showThisProduct=1&productId='+showViewsArray[item][0]+'" title="Companion products:"><img src="'+showViewsArray[item][2]+'" alt="'+showViewsArray[item][1]+'" valign="top" width="95%" /></a></div>';
			
			arrayNo++;
		}
		
	// make right arrow holder
		var rightArrowViewNode		= $("<div>",{
			"id":"rightArrowViewNode",
			"class":"leftHolderFloat width5"
		});
		// if not at end inset arrow with link to next set of products
		if(end<companionProductArray.length)
		{	
			var funcNext			= 'loadInitialRelatedViews(\''+((start*1)+3)+'\')';	
			var rightArrowImg		= $("<img>",{
				"src":"./png/1rightarrow.png",
				"alt":"More items",
				"width":"95%",
				"onclick":funcNext
			});
			$(rightArrowViewNode).append(rightArrowImg);
		}
		$(viewHolderNode).append(viewHeadingNode, leftArrowViewNode, companionItemNode, rightArrowViewNode);
	}
	$("#viewDiv").append(viewHolderNode);
}
// 248 - 348
// 349 -
function loadReviews()
{
	if ($("#reviewHolderNode"))
	{
		$("#reviewHolderNode").remove(); 
	}	
	// create review holder
	var reviewHolderNode = $("<div>",{
		"id":"reviewHolderNode",
		"class":"leftHolder alignLeft width95"
	});
	// create heading
	var reviewHeadingNode = $("<div>",{
		"id":"reviewHeadingNode",
		"class":"leftHolder alignLeft width95"
	});
	$("#reviewHeadingNode").html("Reviews:");
}

//////////////////////////////////////////////////////////////////////////////
// cancel previewed review and reset session variables
function reviewCancel()
{	
	$.ajax({
	      type:		"POST",
	      url:		"./xmlReviewFunctionHolder.php",
	      data:		"cancelThisReview=1",
	      //data:		"previewThisReview=1&productId="+productId+"&registeredId="+registeredId+"&reviewStars="+reviewStars+"&reviewTitle="+reviewTitle+"&reviewText="+reviewText+"&adviseMe="+adviseMe,
	      success: 	function (data) 
	      {
	      	$("#writeReviewDiv").html(data);
	      		//$('#ratingHolder').append('<p id="writeStars" data-rating="'+grade+'"></p>');
	      	$('#writeStars').raty({
				  hintList: ['Not at all as I wanted', 'Disappointing', 'Satisfied', 'Just as I wanted', 'Brilliant'],
				  click: function(score, evt) {
				    $(this).attr('data-rating', score);
				  },
				  start: function() {
				    return $(this).attr('data-rating');
				  },
				});
		     
	      }
	});		
}

// using session variables set out review for editing
function reviewEdit()
{	
	// session variables already set in reviewPreview
	$.ajax({
	      type:		"POST",
	      url:		"./xmlReviewFunctionHolder.php",
	      data:		"editThisReview=1",
	      //data:		"previewThisReview=1&productId="+productId+"&registeredId="+registeredId+"&reviewStars="+reviewStars+"&reviewTitle="+reviewTitle+"&reviewText="+reviewText+"&adviseMe="+adviseMe,
	      success: 	function (data) 
	      {
	      	$("#writeReviewDiv").html(data);
	      		//$('#ratingHolder').append('<p id="writeStars" data-rating="'+grade+'"></p>');
	      	$('#writeStars').raty({
				  hintList: ['Not at all as I wanted', 'Disappointing', 'Satisfied', 'Just as I wanted', 'Brilliant'],
				  click: function(score, evt) {
				    $(this).attr('data-rating', score);
				  },
				  start: function() {
				    return $(this).attr('data-rating');
				  },
				});
		     
	      }
	});		
}
// note if helpful or not

function reviewHelpful(reviewId, helpful)
{
		$.ajax({
	      type:		"POST",
	      url:		"./xmlReviewFunctionHolder.php",
	      //data:		"helpfulReview=1&ofHelp=1",
	      data:		"helpfulReview=1&ofHelp="+helpful+"&reviewId="+reviewId,
	      success: 	function (data) 
	      {
	      	alert(data);	
	      	return false;	     
	      }
	});	
}


// using session variables submit review add to review table and update product
function reviewSubmit()
{	
	$.ajax({
	      type:		"POST",
	      url:		"./xmlReviewFunctionHolder.php",
	      data:		"newReview=1",
	      //data:		"previewThisReview=1&productId="+productId+"&registeredId="+registeredId+"&reviewStars="+reviewStars+"&reviewTitle="+reviewTitle+"&reviewText="+reviewText+"&adviseMe="+adviseMe,
	      success: 	function (data) 
	      {
	      	$("#writeReviewDiv").empty();
	      	alert(data);
	      		//$('#ratingHolder').append('<p id="writeStars" data-rating="'+grade+'"></p>');
	      	
	      }
	});		
}

// collects data from write review ajax gets html to present review with options to submit edit cancel or add review to facebook (default)
function reviewWrite(productId, registeredId) 
{
	//alert('Your user id is'+registeredId);
	// alert($('#writeStars').attr('data-rating'));
	
	var penName = $("input#penName").val();  
	if (penName == "") 
	{  
		$("label#penName_error").addClass("backgroundRed");
		$("label#penName_error").show();  
		$("input#penName").focus();  
		return false;  
	}  
				
	var reviewTitle = $("input#reviewTitle").val();  
	if (reviewTitle == "") 
	{  
		$("label#reviewTitle_error").addClass("backgroundRed");
		$("label#reviewTitle_error").show();  
		$("input#reviewTitle").focus();  
		return false;  
	}  
			
	var reviewText = $("#newReviewText").val();  
	if (reviewText.length<25) 
	{  
		$("#reviewTextInfo").addClass("backgroundRed");
		$("#newReviewText").focus();  
		return false;  
	}  
	if($("#adviseMe:checked"))
	{
		adviseMe = "&adviseMe=1";
	}else
	{
		adviseMe = "";
	}
	
	
	$.ajax({
	      type:		"POST",
	      url:		"./xmlReviewFunctionHolder.php",
	      penName: 	$("#penName").val(),
	      reviewStars: $('#writeStars').attr('data-rating'),
	      reviewTitle: $("#reviewTitle").val(),
	      reviewText: $("#newReviewText").val(),
	      data:		"previewThisReview=1&productId="+productId+"&registeredId="+registeredId+"&reviewStars="+$('#writeStars').attr('data-rating')+"&reviewTitle="+reviewTitle+"&reviewText="+reviewText+adviseMe+"&penName="+penName,
	      //data:		"previewThisReview=1&productId="+productId+"&registeredId="+registeredId+"&reviewStars="+reviewStars+"&reviewTitle="+reviewTitle+"&reviewText="+reviewText+"&adviseMe="+adviseMe,
	      success: 	function (data) 
	      {
	      	$("#writeReviewDiv").html(data);
	      	var grade	= $('#ratingHolder').attr('data-rating');
	      		//$('#ratingHolder').append('<p id="writeStars" data-rating="'+grade+'"></p>');
	      	
		     $('#previewStar').raty({
				  hintList: ['Not at all as I wanted', 'Disappointing', 'Satisfied', 'Just as I wanted', 'Brilliant'],
				  readOnly:   true,
				  start: function() {
				    return $(this).attr('data-rating');
				  },
				});
		     
	      }
	});	
	return false;
}

///////////////////////////////////////////////////////////////////////////////////

// hide a div receives div to hide and div for instruction text
function toggleVideoDiv(showHideDiv, switchTextDiv) 
{	
	if($("#"+showHideDiv).css("display") == 'none'){ 
	   $("#"+showHideDiv).show();
	   $("#"+switchTextDiv).html("Hide video"); 
	} else { 
	   $("#"+showHideDiv).hide(); 
	   $("#"+switchTextDiv).html("<img src=\"./png/mvVideo.png\" alt=\"Video player\" /> Click to see related video"); 
	}
}    

// 349 - 
// tracks details and records to acivityLogReferrer table
function trackDetailsFunc(responseText) 
{
	// http.onreadystatechange 	= trackDetails;
	var pageTitle = document.title; 
	$("reviewDiv").html("Loading.....");
	$.ajax({
			type:		"POST",
			url:		"xmlRequestFunction.php",
			data:		"trackDetails=1&thisPage="+pageTitle,
			success: 	function (responseText)
			{
			}
	});
}

