﻿function consumerVehicleReviewListInit()
{
	_cvr.addReviewHandler(function(reviewPage)
	{
		var page = parseInt(reviewPage.OnPage);
		var pages = Math.ceil(parseInt(reviewPage.NumberOfReviews) / parseInt(reviewPage.NumberPerPage))
		if (pages > 1)
		{
			var createPager = function(curpage, totpages)
			{
				var pagingSpan = document.createElement('span');
				pagingSpan.className = 'span pagingSpan';
				
				var createPage = function(p)
				{
					var thisPage = document.createElement('a');
					thisPage.href = 'javascript:void(0);';
					thisPage.onclick = function(){_cvr.pageReviews(p);};
					thisPage.appendChild(document.createTextNode(p));
					return thisPage;
				}
				
				var first = 1;
				var last = totpages;
				
				if (totpages > 10)
				{
					if (curpage >= 5)
					{
						pagingSpan.appendChild(createPage(1));
						pagingSpan.appendChild(document.createTextNode(' ... '));
						
						first = curpage - 4;
						last = curpage + 4;
						if(last > totpages) last = totpages;
					}
					else
						last = 9;
				}
				
				if(page > first)
				{
					var prev = curpage - 1;
					var prevPage = document.createElement('a');
					prevPage.href = 'javascript:void(0);';
					prevPage.onclick = function(){_cvr.pageReviews(prev);};
					prevPage.appendChild(document.createTextNode('< Prev'));
					pagingSpan.appendChild(prevPage);
					pagingSpan.appendChild(document.createTextNode(' '));
				}
				
				for (var p = first; p <= last; p++)
				{
					if (p == curpage)
						pagingSpan.appendChild(document.createTextNode(p + ' '));
					else
					{
						pagingSpan.appendChild(createPage(p));
						pagingSpan.appendChild(document.createTextNode(' '));
					}
				}

				if(curpage < totpages)
				{
					if (totpages > 10)
					{
						pagingSpan.appendChild(document.createTextNode('... '));
						pagingSpan.appendChild(createPage(pages));
					}
					
					var next = curpage + 1;
					var nextPage = document.createElement('a');
					nextPage.href = 'javascript:void(0);';
					nextPage.onclick = function(){_cvr.pageReviews(next);};
					nextPage.appendChild(document.createTextNode('Next >'));
					pagingSpan.appendChild(nextPage);
				}
				
				return pagingSpan;
			}
			
			var head = document.getElementById('ConsumerVehicleReviewListHeaderPaging');
			var foot = document.getElementById('ConsumerVehicleReviewListFooterPaging');
			
			if (head != null)
			{
				if(head.hasChildNodes())
					head.removeChild(head.firstChild);
				head.appendChild(createPager(page, pages));
			}
			
			if (foot != null)
			{
				if(foot.hasChildNodes())
					foot.removeChild(foot.firstChild);
				foot.appendChild(createPager(page, pages));
			}
		}

		var reviewList = document.getElementById('ConsumerVehicleReviewList');
		if(reviewList != null)
		{
			if (reviewList.hasChildNodes)
			{
				var p = reviewList.parentNode;
				var nrl = reviewList.cloneNode(false);
				p.replaceChild(nrl, reviewList);
				reviewList = nrl;
			}

			for (var i = 0; i < reviewPage.Reviews.length; i++)
			{
				var review = reviewPage.Reviews[i];		
				if(review != null)
				{
					reviewList.appendChild(_cvr.createReviewElements(review, i));
					var rev_body = document.getElementById(review.ReviewKey.Key + '_body');
					if(rev_body != null
						&& ((rev_body.clientHeight < rev_body.scrollHeight)
							 || (rev_body.clientHeight == 0 && rev_body.innerText.length > 340)))
					{
						var createML = function(tostyle, text)
						{					
							var ml = document.createElement('div');
							if (text == 'more >')
							{
								ml.className = 'cvrMoreLink';
								ml.appendChild(document.createTextNode('... '));
							}
							else ml.className = 'cvrLessLink';								
							var mlLink = document.createElement('a');
							mlLink.appendChild(document.createTextNode(text));
							mlLink.href = 'javascript:void(0);';
							mlLink.onclick = function()
							{
								var p = this.parentNode.parentNode;
								p.className = tostyle;
								var ntext, nstyle;
								if (text == 'more >')
								{
									ntext = '< less';
									nstyle = 'cvrReviewLimited';
								}
								else
								{
									ntext = 'more >';
									nstyle = 'cvrReviewUnLimited';								
								}
								var nml = createML(nstyle, ntext);
								p.removeChild(this.parentNode);
								p.appendChild(nml);
							}
							ml.appendChild(mlLink);
							return ml;
						}
						rev_body.appendChild(createML('cvrReviewUnLimited', 'more >'));
					}
					var hr = document.createElement('hr');
					hr.setAttribute('style', 'margin-right:10px;');
					reviewList.appendChild(hr);
				}
			}
		}
	});
}
