//document ready function
$(document).ready( function() {	
		
		$(".btn_addreview").click(function() {
		    trackPage("/"+localePath+"/product/"+productID+"/click-add-review");
			createRegisterModal();
			downyReview=getCookie('downyReview');
			if (downyReview == "underage") {
				$("#register_form1").html("<p class='rejected'>"+varErrorEligibility+"</p>");
				$("p.required").css("display","none");
			}
			return (false);
		});
		
		$("p.rating a").click(function() {
			showReviews();
			return (false);
		});
		
		$('A[id="review_link"]').click( function() {
			showReviews();
			return (false);
		});
				
		$(".closereview").click(function() {
			$(this).parent().css("display","none");
			$(".review_backer").remove();
			$(".pagemask").remove();
			$(".forbacker").remove();
			document.forms.register_form1.reset();
			document.forms.register_form2.reset();
			$("span.error").remove();
			$(".review_container label").css("color","#666666");
		});
		
		$("#sortdrop").change(function() {
			if ($(this).val() != "") {
				$("#scrollframe").attr("src","/reviews.jspx?sort="+$(this).val()+"&productId="+productID);
			}
		});
	
});

function createRegisterModal() {
	$("#register_modal").css("display","block");
	$("#footer_container").after('<div class="pagemask">&nbsp;</div>');
	$("#footer_container").after('<div class="review_backer" style="behavior: url(/scripts/iepngfix.htc);">&nbsp;</div>');
	$("#footer_container").after('<div class="clear forbacker">&nbsp;</div>');
	$(".pagemask").css("height",$("body").height()+20+"px").css("display","block");
	$("#yourDob").focus(function() {
		if ($(this).val() == "MM/DD/YYYY") {
			$(this).val("");
		}
	});
	$("#yourDob").blur(function() {
		if ($(this).val() == "") {
			$(this).val("MM/DD/YYYY");
		}
	});
	$("#register_form1").submit(function() {
		$("#register_form1 label").css("color","#666666");
		$("span.error").remove();
		var isError = 0;
		if ($("#firstname").val() == "") {
			$("#firstname").after('<span class="error">'+varErrorFirstName+'</span>');
			$("#firstname").prev().css("color","red");
			isError = 1;
		}
		var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		if (emailPattern.test($("#emailaddr").val()) == false) {
			$("#emailaddr").after('<span class="error">'+varErrorEmail+'</span>');
			$("#emailaddr").prev().css("color","red");
			isError = 1;
		}
		if ($("#yourState").val() == "") {
			$("#yourState").after('<span class="error">'+varErrorState+'</span>');
			$("#yourState").prev().css("color","red");
			isError = 1;
		}
		var datePattern = /(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d/;
		if (datePattern.test($("#yourDob").val()) == false) {
			$("#yourDob").after('<span class="error">'+varErrorDob+'</span>');
			$("#yourDob").prev().css("color","red");
			isError = 1;
		}
		if (isError == 0) {
			
			//check if user is 18
			var currentDate = new Date();
			nowDay = currentDate.getDate();
			nowMonth = currentDate.getMonth() + 1;
			nowYear = currentDate.getFullYear();
			enteredDay = Number($("#yourDob").val().substring(3,5));
			enteredMonth = Number($("#yourDob").val().substring(0,2));
			enteredYear = Number($("#yourDob").val().substring(6));
			
			// if user is 18, validate BV and move on to next step
			if ((enteredYear < nowYear - 18) || ((enteredYear == nowYear - 18) && (enteredMonth < nowMonth)) || ((enteredYear == nowYear - 18) && (enteredMonth == nowMonth) && (enteredDay <= nowDay))) {
				// Check if this email address has already been used for this product (Bazaar Voice API check)
				// Note that all unknown data at this point is 'DUMMY' since review is not actually being submitted
				bazaarVoice.validateReview(localeName,productID,'DUMMY',$("#emailaddr").val(),'','5','DUMMY','DUMMY',true,'DUMMY',
				function(response)
				{	    
					if (response.responseView == "duplicateReview")
					{
						$("p.required").remove();
						$("#register_form1").html('<p class="rejected">'+varErrorDuplicate+'</p>');			   
					}			
					else 
					{
						//pass the email address along to the next form
						$("#emailaddr_hidden").val($("#emailaddr").val());
						//hide register div and display write a review div
						$("#register_modal").css("display","none");
						showWriteReview();
					}
				}
				);
			}
			//if user is not 18, set cookie and display underage message
			else {
				setCookie("downyReview","underage",30);
				$("#register_form1").html("<p>We're sorry but we can't accept your messages or personal information because you do not meet our eligibility requirements.</p>");
			}
		}
		return (false);
	});
}

function showWriteReview() {
	$("#writereview_modal").css("display","block");
	$("#writereview_modal .scrollable").css("display","block");
	$("#previewpane").css("display","none");
	
	// handles star rating functionality
	var currStarRating = 0;
	var lockedStar = "star0";
	
	$(".stars img").mouseover(function() {
		if ($(this).attr("src") == "/images/common/star/0.gif") {
			$(this).attr("src","/images/common/star/10.gif");
			$(this).prevAll("img").attr("src","/images/common/star/10.gif");
		}
	});
	$(".stars img").mouseout(function() {
		//$(this).attr("src","/images/common/star/0.gif");
		//$(this).prevAll("img").attr("src","/images/common/star/0.gif");
		var thisStarRating = $(this).attr("id").substring(4);
		for (x = parseInt(thisStarRating); x > parseInt(currStarRating); x--) {
			$("#star"+x).attr("src","/images/common/star/0.gif");
		}
	});

	$(".stars img").click(function() {
		$(this).nextAll("img").attr("src","/images/common/star/0.gif");
		currStarRating = $(this).attr("id").substring(4);
		$("#inputRating").val(currStarRating);
		lockedStar = $(this).attr("id");
	});
	
	// determines length of copy in textarea and displays appropriate message
	$("#inputReviewText").keyup(function() {
		var currentLength = $("#inputReviewText").val().length;
		if (currentLength == 0) {
			$("#charcount").text(varMsgMax50chars);
		}
		else if (currentLength < 50) {
			var currentLeft = 50 - currentLength;
			$("#charcount").text(varMsgMinCharLeft+": " + currentLeft);
		}
		else if (currentLength < 1500) {
			$("#charcount").text(varMsgMin);
		}
		else {
			$("#charcount").text(varMsgMax);
		}
	});
	
	// launches and closes helpful tips overlay
	$("p.helptips").click(function() {
		$("div.helptips").css("display","block");
	});
	$("div.helptips").click(function() {
		$(this).css("display","none");
	});
	
	// launches preview pane
	$("#previewbtn").click(function() {
		//Amol - please add BV validation here and make these following pieces dependent on validation                
			$("#writereview_modal p.error").remove();
			bazaarVoice.validateReview(localeName,productID,$("#inputTitle").val(),$("#emailaddr_hidden").val(),'',$("#inputRating").val(),$("#inputReviewText").val(),$("#inputLocation").val(),document.register_form2.inputBuyAgain[0].checked,$("#inputDisplayName").val(),
			function(response)
			{			    
				if (response.hasError)
				{
				    errMsg="";				    
					for(i=0;i<response.responses.length;i++)
					{					    
						if(response.responses[i].hasError)
						{						    
							errMsg = errMsg + response.responses[i].errorMessage +"<br>";								
						}
					}	 
					$(".actualreview").after('<p class="error">'+errMsg+'</span>')
					//alert(errMsg);
				}			
				else 
				{
					generatePreview();
					$("#writereview_modal .scrollable").css("display","none");
					$("#writereview_modal p.required").css("display","none");
					$("#previewpane").css("display","block");
				}
			}
			);	
		
	});
	
	// closes preview pane and returns to write review
	$("#editbtn").click(function() {
		$("#writereview_modal .scrollable").css("display","block");
		$("#writereview_modal p.required").css("display","block");
		$("#previewpane").css("display","none");
	});
	
	// closes modal
	$("#cancelbtn").click(function() {
		$("#writereview_modal").css("display","none");
		$(".review_backer").remove();
		$(".pagemask").remove();
		$(".forbacker").remove();
	});
	
	$("#register_form2").submit(function() {
		$("#register_form2 label").css("color","#666666");
		$("span.error").remove();
		// Amol - add validation here please
		bazaarVoice.submitReview(localeName,productID,$("#inputTitle").val(),$("#emailaddr_hidden").val(),'',$("#inputRating").val(),$("#inputReviewText").val(),$("#inputLocation").val(),document.register_form2.inputBuyAgain[0].checked,$("#inputDisplayName").val(),
		function(response)
		{			    
			if (response)
			{	
				$("#register_form2").css("display","none").before("<p class='rejected'>"+varMsgThank+"</p>");
				
			}			
			else 
			{
				alert(varMsgUnexpectedError);
			}
		}
		);					
		
		return (false);
	});
}

function generatePreview() {
	var starLoop = "";
	for (x = 0; x < 5; x++) {
		if (x < $("#inputRating").val()) {
			starLoop = starLoop + '<img src="/images/common/star/10.gif" alt="">';
		}
		else {
			starLoop = starLoop + '<img src="/images/common/star/0.gif" alt="">';
		}
	}
	$("#yourrating").html($("#yourrating").text() + starLoop);
	
	var monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var now = new Date();
	$("#titledate").html('&quot;<strong>' + $("#inputTitle").val() + '</strong>&quot; ' + monthNames[now.getMonth()] + ' ' + now.getDate() + ', ' + now.getFullYear());
	
	$("#reviewresult").html('&quot;' + $("#inputReviewText").val() + '&quot;');
	
	$("#nickloc").html('- ' + $("#inputDisplayName").val() + ', ' + $("#inputLocation").val());
	
}

function showReviews() {
	$("#readreview_modal").css("display","block");
	$("#footer_container").after('<div class="pagemask">&nbsp;</div>');
	$("#footer_container").after('<div class="review_backer" style="behavior: url(/scripts/iepngfix.htc);">&nbsp;</div>');
	$("#footer_container").after('<div class="clear forbacker">&nbsp;</div>');
	$(".pagemask").css("height",$("body").height()+20+"px").css("display","block");
}

function setCookie(c_name,value,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}
