/**
 * Function which submits the recommendation text
 * 
 */
function submitRecommendationText() {
	//fetch the business id
	var businessId = dojo.byId("targetBusinessIdForRecommendation").value;
	
	
	//fetch the recommendation text
	var recommendationText = dojo.byId("recommendText").value;
	
	// fetch page mode
	var txtHiddenPageMode = dojo.byId("txtHiddenPageMode").value;
	
	//cook the data sent to the server
	var reqData = {
	    "businessId" :businessId,
	    "recommendationText" :recommendationText
	  };
	
	//validate the data on the client side
	if (!validateRecommendInput(reqData)) {
	  return;
	}
	
	//show the loading image
	var busyIcon = dojo.byId("iconRecommendBusy");
	busyIcon.style.visibility = "visible";
	
	//make a AJAX call
	dojo.rawXhrPost( {
	    url :"/api/recommend/submitRecommendation",

	    headers : {
	      "Content-Type" :"application/json"
	    },

	    postData :dojo.toJson(reqData),

	    handleAs :"json",

	    // If success from server.
	    load : function(data, ioArgs) {
	    	// Hide busy icon.
		    var busyIcon = dojo.byId("iconRecommendBusy");
		    busyIcon.style.visibility = "hidden";
		    
		    if(data.respCode == '1') {
		    	//hide the recommend form
		    	var submitRecommendationDialog = dojo.byId("submitRecommendationDialog");
		    	submitRecommendationDialog.style.visibility = "hidden";
		    	submitRecommendationDialog.style.display = "none";
		    	
		    	//show the thank you and share screen
		    	var submitReviewThankyou = dojo.byId("submitReviewThankyou");
		    	submitReviewThankyou.style.visibility = "visible";
		    	submitReviewThankyou.style.display = "block";
		    	
		    	if(txtHiddenPageMode == "businessprofile") {
		    		tabLinkRecommendationsClicked();
		    	}
		    	
		    	//show the recommed listing header
		    	var recommendHeader = dojo.byId("recommendHeader");
		    	recommendHeader.style.visibility = "visible";
		    	recommendHeader.style.display = "block";
		    	
		    	//fill the newly created span with the recommend text
		    	var newlyRecommendText = dojo.byId("newlyRecommendText");
		    	newlyRecommendText.innerHTML = recommendationText;
		    	
		    	//display the template snippet
		    	var divRecommendSnippetTemplate = dojo.byId("divRecommendSnippetTemplate");
		    	divRecommendSnippetTemplate.style.visibility = "visible";
		    	divRecommendSnippetTemplate.style.display = "block";
		    }
		    else {
		    	var errRecommend = dojo.byId("errRecommend");
		    	errRecommend.innerHTML = data.respMsg;
		    }
	    },

	    // If error from server.
	    error : function(data, ioArgs) {
	      // Hide busy icon.
	      var busyIcon = dojo.byId("iconRecommendBusy");
	      busyIcon.style.visibility = "hidden";
	      alert(data);
	  }

	});
	
	
}

function validateRecommendInput(reqData) {
	var errRecommend = dojo.byId("errRecommend");

	if (dojo.string.trim(reqData.recommendationText).length == 0) {
		errRecommend.innerHTML = "Recommend text is required.";
	  return false;
	} else if (!isLengthValid(dojo.string.trim(reqData.recommendationText), "20", "1000")) {
		errRecommend.innerHTML = "Invalid Recommendation Text. Please Enter a Valid Recommendation.";
	  return false;
	}

	return true;
}

function navRecommendations(oprn, totalRecommendations, pageSize) {
	var txtcurrentpage = dojo.byId("txtcurrentpage").value;
	if(oprn == 'next') {
		txtcurrentpage = (txtcurrentpage * 1) + 1;
	}
	else {
		txtcurrentpage = txtcurrentpage - 1;
	}
	dojo.byId("txtcurrentpage").value = txtcurrentpage;
	
	//fetch the range to show
	var startDivCnt = (pageSize * txtcurrentpage) - pageSize;
	var endDivCnt = (startDivCnt * 1) + (pageSize * 1);
	var divRecommendSnippet = '';
	for(var p = '0' ; p < totalRecommendations ; p++) {
		divRecommendSnippet = dojo.byId('divRecommendSnippet_'+p);
		if(p >= startDivCnt && p < endDivCnt) {
			divRecommendSnippet.style.visibility = "visible";
			divRecommendSnippet.style.display = "block";
		}
		else {
			divRecommendSnippet.style.visibility = "hidden";
			divRecommendSnippet.style.display = "none";
		}
	}
	
	//next and previous buttons
	var recommendNav_prev = dojo.byId("recommendNav_prev");
	var recommendNav_next = dojo.byId("recommendNav_next");
	if(txtcurrentpage > 1) {
		recommendNav_prev.innerHTML = "<a href=\"#recommendHeader\" onclick=\"navRecommendations('prev','"+totalRecommendations+"','"+pageSize+"')\">Previous</a>";
	}
	else {
		recommendNav_prev.innerHTML = "Previous";
	}
	if((txtcurrentpage * pageSize) >= totalRecommendations) {
		recommendNav_next.innerHTML = "Next";
	}
	else {
		recommendNav_next.innerHTML = "<a href=\"#recommendHeader\" onclick=\"navRecommendations('next','"+totalRecommendations+"','"+pageSize+"')\">Next</a>";
	}
}

/**
 * Method which calls the appropriate controller endpoint for reporting abuse in a recommendation
 * 
 * @param id id of the business recommendation
 */
function reportRecommendation(id) {
	//hide the report abuse link
	var reportabuselink = dojo.byId("reportabuselink_"+id);
	reportabuselink.style.display = "none";
	
	//show the busy icon
	var loadingreportabuselink = dojo.byId("loadingreportabuselink_"+id);
	loadingreportabuselink.style.display = "block";
	
	//make a AJAX call
	dojo.rawXhrPost( {
	    url :"/web/content/report/Recommend/"+id,

	    headers : {
	      "Content-Type" :"application/json"
	    },

	    //postData :dojo.toJson(reqData),

	    handleAs :"json",

	    // If success from server.
	    load : function(data, ioArgs) {
	    	
	    	// Hide busy icon.
	    	loadingreportabuselink = dojo.byId("loadingreportabuselink_"+id);
	    	loadingreportabuselink.style.display = "none";
		    
	    	//show the success message
	    	reportabuselink = dojo.byId("reportabuselink_"+id);
	    	reportabuselink.style.display = "block";
	    	reportabuselink.innerHTML = "Thank you for your report";
	    	
	    },

	    // If error from server.
	    error : function(data, ioArgs) {
	    	// Hide busy icon.
	    	loadingreportabuselink = dojo.byId("loadingreportabuselink_"+id);
	    	loadingreportabuselink.style.display = "none";
	      alert(data);
	  }

	});
	
}
