var prClientDomain = "http://myaccount.focusedtechnology.com/";
var prClientName = "Focused Technology";
var prClientSkin = "focusedtechnology";
var prDebug = false;

/*******************************************/
/*********** UTITLITY FUNCTIONS ************/
/*******************************************/
function prIsBlank(val){
	if(val==null){return true;} 
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
	}
	return true;
}
function prIsValidEmail(str) {
   return (str.indexOf(".")) && (str.indexOf("@") > 0);
}
function prGetRadioValue(radioset){
	var val;
	for (var i=0; i<radioset.length; i++){
		if (radioset[i].checked){
			val = radioset[i].value;
		}
	}
	return val;
}

/*******************************************/
/******** REVIEW FORM FUNCTIONS ************/
/*******************************************/
function validate_pdReviewForm(thisform) {
	var message = "";
	//****** TEST FOR REQUIRED FORM VALUES ******
	with(thisform){
		var isRecommendedRadio = prGetRadioValue(isRecommended);
		
		if(prIsBlank(name.value)){message += "Please enter your name. \r\n";} 
		if(prIsBlank(email.value)){message += "Please enter your email address. \r\n";} 
		if(prIsBlank(location.value)){message += "Please enter your location. \r\n";}
		if(prIsBlank(rating.value)){message += "Please rate this item. \r\n";} 
		//if(prIsBlank(reviewTitle.value)){message += "Please title your review. \r\n";} 
		//if(prIsBlank(reviewText.value)){message += "Please enter your review. \r\n";} 
		//if(prIsBlank(isRecommended)){message += "Please choose yes or no for \"would you recommend this item\". \r\n";}

		if(!prIsBlank(email.value)){
			if(!prIsValidEmail(email.value)){
				message += "Please enter a correctly formatted email address. \r\n";
			}
		}
	}
	//****** TEST FOR HTML IN REVIEW, PROS AND CONS ******
	var reviewText = document.prForm.reviewBody.value;
	var prosText = document.prForm.reviewPros.value;
	var consText = document.prForm.reviewCons.value;
	if(reviewText.match("<") || reviewText.match(">")){
		message += "Please remove the HTML from your review. \r\n";
	}
	if(prosText.match("<") || prosText.match(">")){
		message += "Please remove the HTML from the \"Pros\" field. \r\n";
	}
	if(consText.match("<") || consText.match(">")){
		message += "Please remove the HTML from the \"Cons\" field. \r\n";
	}

	//****** SHOW MESSAGE IF VALIDATION FAILS ******
	if(!prIsBlank(message)){
		alert(message);
		return false;
	}else{
		return true;
	}
}
function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
}

//*********************************************************************//
//******************** DHTML WINDOW DISPLAY ***************************//
//*********************************************************************//
function prDisplayLayerWin(elem){
	prShowFadeOverlay();
	prCenterLayerWin(elem);
	prShowLayerWin(elem);
	prPopulateReviewProductName();
	prGetUserInfo();
}
function prShowLayerWin(elem){
	var displayWindow = document.getElementById(elem);
	displayWindow.className = "prShowLayerWin";
}
function prHideLayerWin(elem){
	var displayWindow = document.getElementById(elem);
	var reviewForm = document.getElementById('prFormWrapper');
	var messageDisplay = document.getElementById('prFormMessage');
	displayWindow.className = "prHideLayerWin";
	messageDisplay.className = "prHide";
	reviewForm.className = "prShow";
	prHideFadeOverlay();
}
function prCenterLayerWin(elem) {
	var browserHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
	var scrollHeight = window.document.body.scrollHeight;
	var scrollWidth = window.document.body.scrollWidth;
	var scrollPositionX = 0;
	var scrollPositionY = 0;
	try {
		scrollPositionX = pageXOffset;
		scrollPositionY = pageYOffset;
	} catch(e) {
		scrollPositionX = document.body.scrollLeft;
		scrollPositionY = document.body.scrollTop;
	}

	var displayWindow = document.getElementById(elem);
	var displayWindowWidth = 730;
	var displayWindowHeight = displayWindow.scrollHeight;

	var styleTop = scrollPositionY + 90;
	var styleLeft = Math.round((scrollWidth - scrollPositionX)/2 - (displayWindowWidth/2) - 10);
	displayWindow.style.top = styleTop + "px";
	displayWindow.style.left = styleLeft + "px";
	return false;
}
function prShowFadeOverlay() {
	//************************************************************
	//***** DEFINE ELEMENTS FOR FADE AND CONTENT DISPLAY *********
	//************************************************************
	var fadeBg = document.getElementById('prFadeWrapper');
	fadeBg.className = "prFadeWrapperOn";
	//************************************************************
	//***** FIND AND SET USER WINDOW HEIGHT/WIDTH ****************
	//************************************************************
	var height;
	var winHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
	var scrollHeight = window.document.body.scrollHeight;
	var winWidth = window.document.body.scrollWidth;
	if(winHeight > scrollHeight){
		height = winHeight;
	}else{
		height = scrollHeight;
	}
	//************************************************************
	//*********** DISPLAY FADE BG AND CONTENT DIV ****************
	//************************************************************
	fadeBg.style.height = height + 'px';
	fadeBg.style.width = winWidth + 'px';
	return false;
}
function prHideFadeOverlay() {
	document.getElementById("prFadeWrapper").className = "prFadeWrapperOff";
	return false;
}

function ieHideSelect(state){
	var selectTags = document.getElementsByTagName("SELECT");
	for(var i=0; i<selectTags.length; i++){
		if(state){
			if(selectTags[i].className != "prSelect"){
				selectTags[i].style.display = "none";
			}
		}else{
			selectTags[i].style.display = "block";
		}
	}
}
//********************************************************//
//**************** REVIEW IMAGE DISPLAY ******************//
//********************************************************//
function prDisplayReviewImg(elem){
	prShowFadeOverlay();
	prCenterLayerWin(elem);
	prShowLayerWin(elem);
}
function prHideReviewImg(elem){
	var displayWindow = document.getElementById(elem);
	displayWindow.className = "prHideLayerWin";
	prHideFadeOverlay();
}
//*********************************************************************//
//***************** END DHTML WINDOW DISPLAY **************************//
//*********************************************************************//

//********************************************************//
//**************** POPULATE REVIEW DATA ******************//
//********************************************************//
function prPopulateUserInfo(){
	var userInfo = getUserInfoForReviews();
	document.prForm.name.value = userInfo.firstName;
	document.prForm.email.value = userInfo.email;
	document.prForm.location.value = userInfo.location;
	document.prForm.uid.value = userInfo.uid;
}
function prGetUserInfo() {
	var userInfoUrl = prClientDomain + "services/getCurrentUserInfoAndPopulateReviewFields.php";
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = userInfoUrl;
	document.getElementsByTagName("head")[0].appendChild(script);
}
function prPopulateReviewProductName(){
	var productName = document.prForm.productName.value;
	document.getElementById("productNameDisplay").innerHTML = productName;
}
//********************************************************//
//************** END POPULATE REVIEW DATA ****************//
//********************************************************//

function prRatingStars(){
	if(prDebug){alert("prRatingStars");}
	
	var prRatingStars = document.getElementById('prRatingStars');
	if(prRatingStars){
		var starLinks = prRatingStars.getElementsByTagName("IMG");
		for(var i=0;i<starLinks.length;i++){
			starLinks[i].className = "dptLinkOff"; 
			//******* MOUSEOVER EVENT ********//
			starLinks[i].onmouseover=function(){
				var pos = this.title - 0;
				for(var i=0;i<pos;i++){
					starLinks[i].src = prClientDomain + "mod_productReviews/skins/" + prClientSkin + "/images/starOn.gif";
				}
			}
			//******* MOUSEOUT EVENT ********//
			starLinks[i].onmouseout=function(){
				var pos = this.title - 0;
				var rating = document.prForm.rating.value;
				for(var i=0;i<pos;i++){
					if(i > rating - 1){
						starLinks[i].src = prClientDomain + "mod_productReviews/skins/" + prClientSkin + "/images/starOff.gif";
					}
				}
			}
			//******* ONCLICK EVENT ********//
			starLinks[i].onclick=function(){
				var pos = this.title - 0;
				document.prForm.rating.value = pos;
				for(var i=0;i<5;i++){
					if(i + 1 <= pos){
						starLinks[i].src = prClientDomain + "mod_productReviews/skins/" + prClientSkin + "/images/starOn.gif";
					}else{
						starLinks[i].src = prClientDomain + "mod_productReviews/skins/" + prClientSkin + "/images/starOff.gif";
					}
				}
			}
		}
	}
}
function prMessage(state){
	if(prDebug){alert("prMessage");}

	var reviewForm = document.getElementById('prFormWrapper');
	var messageDisplay = document.getElementById('prFormMessage');
	var messageText = document.getElementById('prMessageText');

	var reviewExists = getQueryVariable("reviewExists");
	var name = getQueryVariable("name");
	var review = getQueryVariable("reviewSubmit");
	var image = getQueryVariable("imageSubmit");
	var winHeight = window.document.body.scrollHeight;
	var winWidth = window.document.body.scrollWidth - 10;
	
	messageText.innerHTML = '';
	
	if(state == 'off'){
		ieHideSelect(false);
		fadeBg.style.display = "none";
		wrapper.style.display = "none";
		messageDisplay.style.display = "none";
		reviewForm.style.display = "block";
	}else if(review || image || reviewExists){
		//************ SET  MESSAGE TEXT *************
		if(review == 'true' && image == 'false'){
			messageText.innerHTML += '<b>Thank you for your time ' + unescape(name) +'! </b><br><br>';
			messageText.innerHTML += 'We appreciate your involvement in helping  ' + prClientName + '  create the ultimate online shopping experience.';
			messageText.innerHTML += '<br><br>Please note that while we received your review, the images did not meet our requirements and were not posted with the review.  Please feel free to try again with a smaller image size.';
			messageText.innerHTML += '<br><br><a href="#" onClick="prHideLayerWin(\'pr\')"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/butContinueShopping.gif" border="0" vspace="20"></a>';
			
		}else if(review == 'false'){
			messageText.innerHTML += '<b>Thank you for your time ' + unescape(name) +' !</b><br><br>';
			messageText.innerHTML += 'We appreciate your involvement in helping  ' + prClientName + '  create the ultimate online shopping experience.';
			messageText.innerHTML += "<br><br>&raquo; There was an error submitting your review, please try again."
			messageText.innerHTML += '<br><br><a href="#" onClick="prHideLayerWin(\'pr\')"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/butContinueShopping.gif" border="0" vspace="20"></a>';
		}else if(reviewExists == 'true'){
			messageText.innerHTML += '<b>Thank you for your time ' + unescape(name) +' !</b><br><br>';
			messageText.innerHTML += "&raquo; You have already submitted a review for this item.  You  may only submit one rating or review for each item."
			messageText.innerHTML += '<br><br><br><br><a href="#" onClick="prHideLayerWin(\'pr\')"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/butContinueShopping.gif" border="0" vspace="20"></a>';
		}else{
			messageText.innerHTML += '<b>Thank you for your time ' + unescape(name) +' !</b><br><br>';
			messageText.innerHTML += 'We appreciate your involvement in helping  ' + prClientName + '  create the ultimate online shopping experience.';
			messageText.innerHTML += '<br><br><a href="#" onClick="prHideLayerWin(\'pr\')"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/butContinueShopping.gif" border="0" vspace="20"></a>';
		}
		//************ SET DIV DISPLAY *************
		ieHideSelect(true);
		messageDisplay.className = "prShow";
		reviewForm.className = "prHide";
		prDisplayLayerWin('pr');
	}
}
function sendEmailsDisplay(state){
	if(state == "on"){
		document.getElementById('prSendEmails').style.display = "block";
	}else{
		document.getElementById('prSendEmails').style.display = "none";
		document.prForm.sendEmail1.value = "";
		document.prForm.sendEmail2.value = "";
		document.prForm.sendEmail3.value = "";
	}
}
function sendEmailsDisplayClose(){
		document.getElementById('prSendEmails').style.display = "none";
}
function uploadImagesDisplay(state){
	if(state == "on"){
		document.getElementById('prUploadImages').style.display = "block";
	}else{
		document.getElementById('prUploadImages').style.display = "none";
		document.prForm.img1.value = "";
		document.prForm.img2.value = "";
		document.prForm.img3.value = "";
	}
}
function uploadImagesDisplayClose(){
		document.getElementById('prUploadImages').style.display = "none";
}

/****************************************************/
/*********** DISPLAY RATINGS/ REVIEWS ***************/
/****************************************************/
function prRatingDisplay(){
	if(prDebug){alert("ratingDisplay");}

	var reviewsInfo = pdGetProductReviews();
	var overallRating = reviewsInfo.overallRating;
	var reviewCount = reviewsInfo.reviewCount;
	var ratingCount = reviewsInfo.ratingCount;

	var prOverallRating = document.getElementById('prOverallRating');
	if(prOverallRating){
		
	/**************************************************************/
	/*********** DISPLAY OVERALL RATING/REVIEW INFORMATION ********/
	/**************************************************************/
		html = '';
		if(reviewCount > 0){
			if(ratingCount > 1){var prS = "s"}else{var prS = "";}

			html += '<table border="0" cellpadding="0" cellspacing="0">';
			if(overallRating > 0){
			html += '<tr><th colspan="2">Overall Rating';
			if(document.prForm.productName.value){html += ' for ' + document.prForm.productName.value;}
			html += '</th></tr>';
			html += '<tr><td>';
				html += '<img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/ratings/' + overallRating + '.gif" border="0" vspace="4">';
				html += '(based on ' + ratingCount + ' rating' + prS + ')';
			html += '</td>';
			html += '<td align="right">';
			}else{
				html+= '<tr><td>';
			}
			html += '<a href=" " onClick="prDisplayLayerWin(\'pr\');return false;"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/butReview.gif" border="0"></a>';
			html+= '</td></tr></table>';
			prOverallRating.innerHTML = html;
		}else{
			prOverallRating.style.display = 'none';
			prOverallRating.innerHTML = '';
		}
	}
	/**************************************************************/
	/*********** DISPLAY RATING/REVIEW LINKS **********************/
	/**************************************************************/
	var prRatingReviewLinks = document.getElementById('prRatingReviewLinks');
	if(prRatingReviewLinks){
		html = '';
		html += '<table border="0" cellpadding="0" cellspacing="0"><tr>';
		
		if(reviewCount > 0){
			html += '<td class="prRatingImg">';
			if(overallRating > 0){
				html += '<img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/ratings/' + overallRating + '.gif" border="0">';
			}
			html += '</td>';
			html += '<td>';
			html += '<div class="prLinks">';
			html += '<a href="javascript:readreviews();">Read Reviews</a> / ';
			html += '<a href=" " onClick="prDisplayLayerWin(\'pr\');return false;">Write a Review</a>';
			html += '</div>';
			html += '</td>';
		}else{
			html += '<td>';
			html += '<div class="prLinks">';
			html += '<a href=" " onClick="prDisplayLayerWin(\'pr\');return false;">Be the first to review!</a>';
			html += '</div>';
			html += '</td>';
		}
		html += '</tr></table>';
		prRatingReviewLinks.innerHTML = html;
	}
	if(prDebug){alert("ratingDisplay");}

}
function prReviewDisplay(){
	if(prDebug){alert("reviewDisplay");}

	var reviewsInfo = pdGetProductReviews();
	var productReviews = reviewsInfo.productReviews;	
	var reviewLength = productReviews.length;
	
	var reviewsDisplayDiv = document.getElementById('prReviews');
	if(reviewsDisplayDiv){
		
		/*******************************************/
		/*********** FORMAT REVIEW HTML ************/
		/*******************************************/
		var reviewHTML = '';
		for(var i=0; i < reviewLength; i++){
	
			reviewHTML += '<table border="0" cellspacing="0" cellpadding="0">';
			reviewHTML += '<tr>';
			//******** RATING *******//
			reviewHTML += '<th>';
			if(productReviews[i].rating && productReviews[i].rating > 0){reviewHTML += '<div class="prReviewsRating"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/ratings/small/' + productReviews[i].rating + '.gif" border="0"></div>';}
			//******** REVIEW TITLE *******//
			if(!prIsBlank(productReviews[i].reviewTitle)){reviewHTML += productReviews[i].reviewTitle;}
			reviewHTML += '</th>';
			reviewHTML += '</tr>';

			reviewHTML += '<tr>';
			//******** NAME, LOCATION, DATE POSTED *******//
			reviewHTML += '<td class="prReviewsNameLocation">';
			if(!prIsBlank(productReviews[i].name)){reviewHTML += 'By <b>' + productReviews[i].name + '</b>'}
			if(!prIsBlank(productReviews[i].location)){reviewHTML += ' from <b>' + productReviews[i].location + '</b>'}
			if(!prIsBlank(productReviews[i].dateSubmitted)){reviewHTML += ' on <b>' + productReviews[i].dateSubmitted + '</b>'}
			reviewHTML += '</td>';
			reviewHTML += '</tr>';

			reviewHTML += '<tr>';
			//******** REVIEW, PROS, CONS *******//
			reviewHTML += '<td class="prReviewsText">';
			//******** IS RECOMMENDED *******//
			if(productReviews[i].isRecommended){reviewHTML += '<div class="prReviewsRecommend">I would recommend this item to a friend.</div>';}
			if(!prIsBlank(productReviews[i].reviewBody)){reviewHTML += '<h4>Comments:</h4>' + productReviews[i].reviewBody;}
			if(!prIsBlank(productReviews[i].reviewPros)){reviewHTML += '<h4>Pros:</h4>' + productReviews[i].reviewPros;}
			if(!prIsBlank(productReviews[i].reviewCons)){reviewHTML += '<h4>Cons:</h4>' + productReviews[i].reviewCons;}
			reviewHTML += '</td>';
			reviewHTML += '</tr>';

			//******************************************//
			//******** REVIEW PHOTOS DISPLAY **********//
			//******************************************//
			var img1 = productReviews[i].img1;
			var img2 = productReviews[i].img2;
			var img3 = productReviews[i].img3;
			if(img1 && img1 != "error.jpg" || img2 && img2 != "error.jpg" || img3 && img3 != "error.jpg"){
				reviewHTML += '<tr>';
				reviewHTML += '<td class="prReviewsText"><h4>Review Photos:</h4>';
				reviewHTML += '<div class="prReviewPhotos">';
				if(img1 && img1 != "error.jpg"){
					reviewHTML += '<div id="prImg1' + productReviews[i].reviewId + '" class="prHide"><div class="prReviewImgDisplay"><a href=" " onClick="prHideReviewImg(\'prImg1' + productReviews[i].reviewId + '\');return false;"><img src="' + prClientDomain + 'mod_productReviews/userReviewImages/large-' + img1 + '" border="0"></a><h4>click image to close</h4></div></div>';
					reviewHTML += '<a href=" " onClick="prDisplayReviewImg(\'prImg1' + productReviews[i].reviewId + '\');return false;">';
					reviewHTML += '<img src="' + prClientDomain + 'mod_productReviews/userReviewImages/small-' + img1 + '" border="0">';
					reviewHTML += '</a>';
				}
				if(img2 && img2 != "error.jpg"){
					reviewHTML += '<div id="prImg2' + productReviews[i].reviewId + '" class="prHide"><div class="prReviewImgDisplay"><a href=" " onClick="prHideReviewImg(\'prImg2' + productReviews[i].reviewId + '\');return false;"><img src="' + prClientDomain + 'mod_productReviews/userReviewImages/large-' + img2 + '" border="0"></a><h4>click image to close</h4></div></div>';
					reviewHTML += '<a href=" " onClick="prDisplayReviewImg(\'prImg2' + productReviews[i].reviewId + '\');return false;">';
					reviewHTML += '<img src="' + prClientDomain + 'mod_productReviews/userReviewImages/small-' + img2 + '" border="0">';
					reviewHTML += '</a>';
				}
				if(img3 && img3 != "error.jpg"){
					reviewHTML += '<div id="prImg3' + productReviews[i].reviewId + '" class="prHide"><div class="prReviewImgDisplay"><a href=" " onClick="prHideReviewImg(\'prImg3' + productReviews[i].reviewId + '\');return false;"><img src="' + prClientDomain + 'mod_productReviews/userReviewImages/large-' + img3 + '" border="0"></a><h4>click image to close</h4></div></div>';
					reviewHTML += '<a href=" " onClick="prDisplayReviewImg(\'prImg3' + productReviews[i].reviewId + '\');return false;">';
					reviewHTML += '<img src="' + prClientDomain + 'mod_productReviews/userReviewImages/small-' + img3 + '" border="0">';
					reviewHTML += '</a>';
				}
				reviewHTML += '</div>';
				reviewHTML += '</td>';
				reviewHTML += '</tr>';
			}
			//******************************************//
			//******************************************//
			//******************************************//

			//******************************************//
			//********** MERCHANT RESPONSE *************//
			//******************************************//
			if(!prIsBlank(productReviews[i].response)){reviewHTML += '<tr><td><div class="prMerchantResponse"><h4>Merchant Response:</h4>' + productReviews[i].response + '</div></td></tr>';}

			reviewHTML += '</table>';
		}

		if(reviewLength > 0){
			reviewsDisplayDiv.innerHTML = reviewHTML;
		}else{
			var reviewHTML = '';
			reviewHTML += '<div class="prFirstToReview">';
			reviewHTML += '<a href=" " onClick="prDisplayLayerWin(\'pr\'); return false;"><img src="' + prClientDomain + 'mod_productReviews/skins/' + prClientSkin + '/images/butReview.gif" border="0" align="right"></a>';
			reviewHTML += 'Be the first person to rate and review this item!';
			reviewHTML += '</div>';
			
			reviewsDisplayDiv.innerHTML = reviewHTML;
		}
	}
}

//************************************************************//
//************* DISPLAY REVIEW FORM LOGIC ********************//
//************************************************************//
function prReviewFormDisplay(){
	if(prDebug){alert("prReviewFormDisplay");}
	var writeReview = getQueryVariable("writeReview");
	var reviewSource = getQueryVariable("reviewSource");
	if(writeReview){
		document.prForm.reviewSource.value = reviewSource;
		prDisplayLayerWin('pr');
	}

}


