function Review(disableComments)
{
	var m_content = document.getElementById("content_Review");
	var m_programList = new ProgramList();
	var m_addbtnrow = document.getElementById("review_addbtnrow");
	var m_addrow = document.getElementById("review_addrow");
	var m_loginrow = document.getElementById("review_loginrow");
	var m_disableComments = false;
	if(disableComments)
		m_disableComments = true;
	
	this.display = function()
		{
		}
		
	this.getReview = function(pid, pn)
		{
			_console.showComponent('Review', null);
			if(pn==null)
				pn = 1;
			var args = new Object();
			args.id = pid;
			m_programList.setURLParams(args, pn);
			_console.getComponentContent("review", args, this.getReviewCallBack);
			_util.cancelEvt(window.event);
		}
		
	this.getReviewCallBack = function(result)
		{
			m_content.innerHTML = result;
			
			if(m_loginrow!=null && document.getElementById("review_loggedout")!=null)
			{
				m_addbtnrow.style.display = "none";
				m_addrow.style.display = "none";
				m_loginrow.style.display = "";
			}
			else
			{
				if(document.getElementById("review_title")!=null)
					document.getElementById("review_title").value = "";
				if(document.getElementById("review_rating")!=null)
					document.getElementById("review_rating").selectedIndex = 0;
				if(document.getElementById("review_review")!=null)
					document.getElementById("review_review").value = "";
				m_addbtnrow.style.display = "";
				m_addrow.style.display = "none";
				if(m_loginrow!=null)
					m_loginrow.style.display = "none";
			}
				
			if(document.getElementById("review_programtitle_hidden")!=null)
				document.getElementById("review_programtitle").innerHTML = document.getElementById("review_programtitle_hidden").value;
		}
		
	this.showAddReview = function(h)
		{
			if(h!=null)
				document.getElementById("review_div").style.height = h + "px";
			m_addbtnrow.style.display = "none";
			m_addrow.style.display = "";
			if(m_loginrow!=null)
				m_loginrow.style.display = "none";
			if(document.getElementById("review_rating")!=null)
				document.getElementById("review_rating").focus();
			else
				document.getElementById("review_title").select();
			_util.cancelEvt(window.event);
		}
	
	this.cancelEdit = function()
		{
			document.getElementById("review_div").style.height = "";
			m_addbtnrow.style.display = "";
			m_addrow.style.display = "none";
			if(m_loginrow!=null)
				m_loginrow.style.display = "none";
		}
		
	this.addReview = function(override)
		{
			var rt = null;
			if(!m_disableComments)
			{
				if(document.getElementById("review_title")!=null)
				{
					rt = _util.trim(document.getElementById("review_title").value);
					if(rt.length==0)
					{
						alert(getLocalizedString("enter_title_review"));
						return;
					}
				}
			}
			var rr = null;
			if(!m_disableComments)
			{
				if(document.getElementById("review_review")!=null)
				{
					rr = document.getElementById("review_review").value;
					if(rr.length==0)
					{
						alert(getLocalizedString("enter_review"));
						return;
					}
					else if(rr.length>1000)
					{
						alert(getLocalizedString("review_max")+rr.length);
						return;
					}
				}
			}

			var args = new Object();
			args.id = document.getElementById("review_id").value;
			if(document.getElementById("review_rating")!=null)
				args.rating = document.getElementById("review_rating").value;
			args.title = rt;
			args.description = rr;
			if(override!=null)
				args.confirm = "true";
			m_programList.setURLParams(args, 1);
			_console.getComponentContent("reviewupdate", args, this.addReviewCallBack);
		}
		
	this.addReviewCallBack = function(xml)
		{
			if (_util.isDemoUser(xml)==true)
				return;
		
			var result = "";
			try
			{
				result = _util.selectSingleNodeText(xml, "/result/code");
				if(result==null)
				{
					alert("LoginCallback:  Invalid returned xml value:  "+xml.xml);
				  	return;
				}
			}
			catch(e)
			{
				alert("LoginCallback:  Invalid returned xml value: '"+xml+"'");
				return;
			}
			
			switch(result)
			{
			case "confirm":
				if(confirm(getLocalizedString("review_confirm")))
					_review.addReview(true)
				break;
			default:
				_review.getReview(document.getElementById("review_id").value);
			} 
		}
}


