// GLOBAL VARIABLES & CONSTANTS
var eF = 0;
var tF = 0;
var sF = 0;
var _strSortOrder = "1";
var _strLastActionId = "";
var _strContent;
var _AltImagePath = "/share/com/ugc/Img/y30.gif,/share/com/ugc/Img/y20.gif,/share/com/ugc/Img/y10.gif"
var _resetCnt = 30;
var _t = 0;
var _reportCount = 1;
var _holdGuidelines;
var _maxCharsAllowed = 1000;

// CONFIGURATION VALUES
var _intTextBreakLength = 400;
var _FeedbackReturnText = "Thank you for your feedback.";
var _ReportReturnText  = "Thank you for reporting.";
var _failureText = "Your request failed, please try again later.";
var _Tag1 = "Poor";
var _Tag2 = "Great";
var _IntroText = "Rate this item: ";
var re= /<\S[^><]*>|[@#:;\|\/\\]|[<>]/g;
var _FirstReviewText = "No reviews exist. Be the first to review on this item by writing your review in the box below.";
var _FirstCommentText = "No comments exist. Be the first to comment on this item by writing your comment in the box below.";
var _ExpiredReviewText = "We are no longer accepting new reviews for this article.";
var _ExpiredCommentText = "We are no longer accepting new comments for this article.";
var _ExpiredBloggingText = "We are no longer accepting new comments for this blog.";
var _commentOrReviewText = ((typeof(_blnIsReview) != 'undefined') && _blnIsReview ? "review" : "comment");


var securityKeyExpiryTimer;
var securityKeyExpiryTimerIntervalMilliSeconds = 1800000; //30mins

var securityKeyExpiredText = "We seem to be experiencing some connectivity problems. You may not be able to post your " + _commentOrReviewText +
	". Please copy your " + _commentOrReviewText + " (highlight the text in the " + _commentOrReviewText + " field and copy using the Ctrl + C keys) and refresh the page. " + 
	"Paste your " + _commentOrReviewText + " back into the " + _commentOrReviewText + " field (Ctrl + V), complete your details and submit again. " + 
	"We apologise for any inconvenience this may have caused. " +
	"If you continue to have problems, please come back and try again later.";

var submissionTimer;
var submissionTimerIntervalMilliSeconds = 10000;
var submissionFailedText = "We seem to be experiencing some problems posting your " + _commentOrReviewText + ". " +
	"Please copy your " + _commentOrReviewText + " (highlight the text in the " + _commentOrReviewText + " field and copy using the Ctrl + C keys) and refresh the page. " + 
	"Paste your " + _commentOrReviewText + " back into the " + _commentOrReviewText + " field (Ctrl + V), complete your details and submit again. " + 
	"We apologise for any inconvenience this may have caused. " +
	"If you continue to have problems, please come back and try again later.";
var Totalrowcount;
var _intPageLengthSetting;

function chkObject (theVal) 
{
	if (document.getElementById(theVal) != null)
	{
	    return true;
	}
	else
	{
	   return false;
	}
}


function showReviews(dataFlag)
{
	var _divHeader = document.getElementById("ugc_header");
	var _divFooter = document.getElementById("ugc_footer");
	var _dirExpiryText = document.getElementById("ugc_expired_text");
	var _strHoldComment ="";
	var _divComment;
	var _strObjectId="";
	var _intFeedbackScore = 0;
	var _intTotalFeedbacks = 0;
	var _blnIsTextBroken = false;
	var _divIcons;
	var _title;
	
	if (_blnIsBlog)
	{
		_title = document.getElementById("ugc_entry_header_title").innerHTML;
		_author = document.getElementById("ugc_entry_author").innerHTML;
	}
	
	if(dataFlag == true)
	{
		var _intArrLength = _arrUIds.length -1;	
		for (var _attributeIndex = 0; _attributeIndex < _arrAttrNames.length; _attributeIndex++)
		{
			switch (_arrAttrNames[_attributeIndex].toLowerCase())
			{
				case "rowcount":
					Totalrowcount = parseInt(_arrAttrValues[_attributeIndex]);
					break;
				case "pagelength":
					_intPageLengthSetting = parseInt(_arrAttrValues[_attributeIndex]);
					break;
			}
		}
		var _intPageLength = _intPageLengthSetting;
		var _intTotalRowCount = Totalrowcount;
		var _strCode = "";
		
		if (_blnIsReview)
		{
			_strCode = "<span id='hOptions' class='hOptions' style='float:right'><b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> Rating</a> | <b>Date</b> | <a href='#' onclick='fetchPage(2,true); return false;'>Helpfulness</a></span>";
		}
		if (_intTotalRowCount > _intPageLength)
		{
			_divHeader.innerHTML = "<span id='ugc_hpaging'><b> <a href='#' title='First page' onclick='fetchPage(0,false); return false;'><span id='hpaging_first' class='ugc_paging_nav'><< First</span></a> <a href='#' title='Previous page' onclick='fetchPage(1,false); return false;'><span id='hpaging_prev' class='ugc_paging_nav'>< Prev</span></a> <span id='hpager'>1-" + _intPageLength + " of " + _intTotalRowCount + " " + _commentOrReviewText + "s</span><a href='#' title='Next page' onclick='fetchPage(2,false); return false;'><span id='hpaging_next' class='ugc_paging_nav'>Next ></span></a> <a href='#' title='Last page' onclick='fetchPage(3,false); return false;'><span id='hpaging_last' class='ugc_paging_nav'>Last >></span></a> </b></span>";
			_divFooter.innerHTML = "<span id='ugc_fpaging'><b> <a href='#' title='First page' onclick='fetchPage(0,false); return false;'><span id='fpaging_first' class='ugc_paging_nav'><< First</span></a> <a href='#' title='Previous page' onclick='fetchPage(1,false); return false;'><span id='fpaging_prev' class='ugc_paging_nav'>< Prev</span></a> <span id='fpager'>1-" + _intPageLength + " of " + _intTotalRowCount + " " + _commentOrReviewText + "s</span><a href='#' title='Next page' onclick='fetchPage(2,false); return false;'><span id='fpaging_next' class='ugc_paging_nav'>Next ></span></a> <a href='#' title='Last page' onclick='fetchPage(3,false); return false;'><span id='fpaging_last' class='ugc_paging_nav'>Last >></span></a> </b></span>";
		}
		else
		{
			_divHeader.innerHTML = "<span id='ugc_hpaging'><b>1-" + (_intTotalRowCount) + " of " + (_intTotalRowCount) + " " + _commentOrReviewText + "s</b></span>";
			_divFooter.innerHTML = "<span id='ugc_fpaging'><b>1-" + (_intTotalRowCount) + " of " + (_intTotalRowCount) + " " + _commentOrReviewText + "s</b></span>";
		}
        
        if (chkObject('hpaging_prev') == true) {
			document.getElementById("hpaging_prev").style.visibility = "hidden"
		}	
		if (chkObject('fpaging_prev') == true) {
			document.getElementById("fpaging_prev").style.visibility = "hidden"
		}	
		if (chkObject('hpaging_first') == true) {
			document.getElementById("hpaging_first").style.visibility = "hidden"
		}	
		if (chkObject('fpaging_first') == true) {
			document.getElementById("fpaging_first").style.visibility = "hidden"
		}	

		if (_blnIsReview)
		{
			_divHeader.innerHTML = _divHeader.innerHTML  + _strCode;
			_divFooter.innerHTML = _divFooter.innerHTML  + "<span id='fOptions' class='fOptions' style='float:right'><b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> Rating</a> | <b>Date</b> | <a href='#' onclick='fetchPage(2,true); return false;'>Helpfulness</a></span>";
		}

		checkCookie();
		for(var cnt=0; cnt<_intArrLength; cnt++)
		{
			_strObjectId = "ugc_" + _arrUIds[cnt] + "_" + _arrDbIds[cnt];
			_divComment = document.getElementById(_strObjectId);
			_strHoldComment = _divComment.innerHTML;
			
			
			_intFeedbackScore = _arrFeedbackValue1[cnt];		
			_intTotalFeedbacks = parseInt(_arrFeedbackValue1[cnt]) + parseInt(_arrFeedbackValue2[cnt]);
			
			if (_blnIsReview)
			{
				_strCode = showRating(cnt,0);
			}
			else
			{
				_strCode = "";
			}
			_strCode = _strCode + "<span id='ugc_comment_img' class='ugc_comment_img'></span><span class='ugc_comment_title'> " + _arrCommentTitles[cnt] +"</span>"; 
			_strCode = _strCode + "<span id='userDetails_" + cnt + "' class='userDetails'>Posted by: <b>"+ _arrUserNicks[cnt] + "</b>, <b>" + _arrUserLocations[cnt] + "</b>, on <b>" + _arrEntryDates[cnt] + "</b></span>";

			_strCode = _strCode + "<div id='userComments_" + cnt + "' class='userComments'>" + _strHoldComment + "</div>";
			_strCode = _strCode + "<div id='commentOptions_" + cnt + "' class='commentOptions'>";

			if (_blnIsReview)
			{
				if(_intFeedbackScore == 0 && parseInt(_arrFeedbackValue2[cnt]) == 0)
				{
					_strCode = _strCode +"<span id='fback_" + _arrDbIds[cnt] + "'><br>No feedback received, did you find this review helpful? <a href='#' onclick='postFeedback(0," + _strObjectId + ");'>Yes</a> <a href='#' onclick='postFeedback(1," + _strObjectId + "); return false;'>No</a></span>";
				}
				else
				{
					_strCode = _strCode +"<span id='fback_" + _arrDbIds[cnt] + "'><br>" + _intFeedbackScore + " out of " + _intTotalFeedbacks + " found this useful, did you find this review helpful? <a href='#' onclick='postFeedback(0," + _strObjectId + "); return false;'>Yes</a> <a href='#' onclick='postFeedback(1," + _strObjectId + "); return false;'>No</a></span>";
				}
			}
			if(parseInt(_reportCount) <= 5)
			{
				_strCode = _strCode + "<span id='rptmsg" + _arrDbIds[cnt] + "'><br><a href='#' onclick='getReportReview(" + _strObjectId + "); return false;'>Report " + _commentOrReviewText + "</a></span>";
			}
			
			if(_blnIsBlog && _arrReplyTexts[cnt] != '')
			{
			    // Add bloggers reply to user comment
			    _strCode = _strCode + "<br><br><div class='ugc_reply_text'>";
    			_strCode = _strCode + "<span id='replyDetails_" + _arrDbIds[cnt] + "' class='userDetails'>Reply by: <b>" + _author + "</b>, on <b>" + _arrReplyDates[cnt] + "</b></span>";
			    _strCode = _strCode + "<span id='replyText" + _arrDbIds[cnt] + "' class='userComments'><br>" + _arrReplyTexts[cnt] + "</span>";
			    _strCode = _strCode + "</div>";
			}
			
			_strCode = _strCode + "</div>";
			if(cnt<_intArrLength-1)
			{
				_strCode = _strCode + "<hr class='ugc_hr_line'>";
			}
			_divComment.innerHTML = _strCode;
		}	
	}
	else
	{
	        _divHeader.innerHTML = "<span id='ugc_alt_image' class='ugc_write_header_image'></span><span class='ugc_write_header_text'><b>" + (_blnIsBlog ? "Blog " : "User ") + _commentOrReviewText + "s</b></span>";
			document.getElementById("ugc_alt_text").innerHTML = (_blnIsReview ? _FirstReviewText : _FirstCommentText);
			document.getElementById("ugc_comments").className = "ugc_no_comment";
	}
	getSecurityKey();
	if(_blnNoPost == false)
	{	
		if( parseInt(_intArrLength) > 5)
		{
			if (JS_SUBMISSION_FORMTOP_ENABLE != "undefined" && JS_SUBMISSION_FORMTOP_ENABLE != null && JS_SUBMISSION_FORMTOP_ENABLE != '')
			{
				if ((JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'TRUE') || (JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'YES'))
				{
					document.getElementById("ugc_write_1").style.display="block";
					document.getElementById("ugc_write_1").style.visibility = "visible";			
				}
			}			
		}
		
		if (_blnIsReview)
		{
			if( parseInt(_intArrLength) > 5)
			{
				document.getElementById("ugc_write_rating_text_1").innerHTML = _IntroText;
				document.getElementById("ugc_write_rating_1").innerHTML = showRating(0,1,1);
			}
			document.getElementById("ugc_write_rating_text_2").innerHTML = _IntroText;
			document.getElementById("ugc_write_rating_2").innerHTML = showRating(0,1,2);			
		}
	}
	else
	{
		if(dataFlag == true)
		{
			if (!_blnIsBlog)
			{
				_dirExpiryText.innerHTML = (_blnIsReview ? _ExpiredReviewText : _ExpiredCommentText);
			}
			else
			{
				_dirExpiryText.innerHTML = _ExpiredBloggingText;
			}
			_dirExpiryText.style.visibility = "visible";
			if (document.getElementById("ugc_write_2") != null)
			{
				document.getElementById("ugc_write_2").style.display = "none";
			}
		}
		else
		{
			document.getElementById("ugc_container").style.visibility = "hidden";

		}
	}
	if(_blnNoPost == false && parseInt(_intArrLength) > 5)
	{	
		if (JS_SUBMISSION_FORMTOP_ENABLE != "undefined" && JS_SUBMISSION_FORMTOP_ENABLE != null && JS_SUBMISSION_FORMTOP_ENABLE != '')
		{
			if ((JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'TRUE') || (JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'YES'))
			{
				document.getElementById("ugc_write_1").style.display="block";
				document.getElementById("ugc_write_1").style.visibility = "visible";
			}
		}		
	}
}

function getSecurityKey()
{
	var tool = (_blnIsBlog ? "3" : "2");
	
	var fetchUrl = getLocationUrl("/UGCPortal.aspx?tool=" + tool + "&action=0&GetKeyOnly=true&ObjectId=" + _strObjectId + "&ContentTypeId=" + _strContentTypeId + "&PageNumber=1&UserId=&SortColumn=0&SortOrder=1");
	var _oSwap = function (responseElement) { 
	
		if (_blnIsBlog)
		{
			if(responseElement && responseElement != null && responseElement.UGCPortalResult && responseElement.UGCPortalResult.BloggingDS)
			{
				_strSecurityKey = responseElement.UGCPortalResult.BloggingDS.UGCSecurity.Key;
				_strSecurityMsg = responseElement.UGCPortalResult.BloggingDS.UGCSecurity.Msg;			
			}
		}		
		else 
		{
			if(responseElement && responseElement != null && responseElement.UGCPortalResult && responseElement.UGCPortalResult.ReviewDS)
			{
				_strSecurityKey = responseElement.UGCPortalResult.ReviewDS.UGCSecurity.Key;
				_strSecurityMsg = responseElement.UGCPortalResult.ReviewDS.UGCSecurity.Msg;			
			}
		}
		
		startSecurityKeyExpiryTimer();
	}
	// Setup Property List
	var jsonPropList = new Ninemsn.Global.ContentManager.JsonProp (10000, -1, null, "JSONResult", Ninemsn.Global.ContentManager.Json.ResponseFunction.Unique);	
	// Triggers the JSON call
	Ninemsn.Global.ContentManager.GetContent(fetchUrl, _oSwap, jsonPropList);

}

///<summary>
/// Starts the security key expiry timer which will notify the user in case the submission security key expires.
///</summary>
function startSecurityKeyExpiryTimer()
{
	securityKeyExpiryTimer = window.setTimeout("onSecurityKeyExpired();", securityKeyExpiryTimerIntervalMilliSeconds);
}

///<summary>
/// Event that handles the expiry of the submission security key.
///</summary>
function onSecurityKeyExpired()
{
	//notify user that submission of comments may fail
	var submitBoxIndex;
	for (submitBoxIndex = 0; submitBoxIndex <= 2; submitBoxIndex++)
	{
		var write = document.getElementById("ugc_write_" + submitBoxIndex);
		var stage = document.getElementById("ugc_write_stage_" + submitBoxIndex);
		if (write && stage && (write.style.display != "none"))
		{
			stage.innerHTML = "<span id='security_key_expired_message' style='color: red;'><strong>" + securityKeyExpiredText + "</strong></span>";
			stage.style.display = "";
		}
	}
}


function fetchPage(actionId,isSort,debugFlag)
{
	var _wDiv = document.getElementById("working");
	_wDiv.style.display = "inline";
	_wDiv.style.visibility = "visible";
	_wDiv.style.position = "absolute";

	var _strSortColumn = "0";
	var _intMaxPage = Math.ceil(Totalrowcount / _intPageLengthSetting);
	var _intRnd = Math.random();
	if(isSort == true)
	{
		if(actionId == "0"){ _strSortColumn = "1";}	
		if(actionId == "1"){ _strSortColumn = "0";}	
		if(actionId == "2"){ _strSortColumn = "2";}	
		if(_strLastActionId == actionId){
		if(_strSortOrder == "1"){ _strSortOrder = "0";}
		else if(_strSortOrder == "0"){ _strSortOrder = "1";}}
	}
	else
	{
		if(actionId == "0"){ _intCurrentPage = 1;}	
		if(actionId == "1"){ if(_intCurrentPage>1){ _intCurrentPage--;}}	
		if(actionId == "2"){ if(_intCurrentPage<_intMaxPage){ _intCurrentPage++;}}		
		if(actionId == "3"){ _intCurrentPage = _intMaxPage;}	
	}
	var _strCode = "";
	var tool = (_blnIsBlog ? "3" : "2");
	var action = (_blnIsBlog ? "4" : "3");

	var fetchUrl = getLocationUrl("/UGCPortal.aspx?tool=" + tool + "&action=" + action +
		"&GetKeyOnly=false&ObjectId=" + _strObjectId + "&ContentTypeId=" + _strContentTypeId + 
		"&PageNumber=" + _intCurrentPage + "&ExpectedRowCount=" + Totalrowcount + 
		"&SortColumn=" + _strSortColumn + "&SortOrder=" + _strSortOrder +
		"&Key=" + _strSecurityKey + "&Msg=" + _strSecurityMsg);
	var _oSwap = function (responseElement) { 
		_wDiv.style.display = "none";
		_wDiv.style.visibility = "hidden";

		if(responseElement && responseElement != null && responseElement.UGCPortalResult &&
			( (_blnIsBlog && responseElement.UGCPortalResult.BloggingDS && responseElement.UGCPortalResult.BloggingDS.BloggingComments) 
				|| (!_blnIsBlog && responseElement.UGCPortalResult.ReviewDS && responseElement.UGCPortalResult.ReviewDS.ReviewComments)
			))
		{
			//check if a new rowcount has been returned.
			//(only available for the new refactored ugc)
			var newReviewCount = 0;
			if (_blnIsBlog && responseElement.UGCPortalResult.BloggingDS && (typeof(responseElement.UGCPortalResult.BloggingDS.BloggingEntries) != "undefined"))
			{
				newReviewCount = responseElement.UGCPortalResult.BloggingDS.BloggingEntries.rowcount;
			}
			else if (!_blnIsBlog && responseElement.UGCPortalResult.ReviewDS && (typeof(responseElement.UGCPortalResult.ReviewDS.ReviewAttribute) != "undefined"))
			{
				newReviewCount = responseElement.UGCPortalResult.ReviewDS.ReviewAttribute.rowcount;
			}
			var currReviewCount = Totalrowcount;
			if (newReviewCount > currReviewCount)
			{
				//reset the paging environment to reflect the new blog entry count sent back
				Totalrowcount = parseInt(newReviewCount);
				_intMaxPage = Math.ceil(Totalrowcount  / _intPageLengthSetting);
			}
			
			//check if a new security key and msg has been returned.
			//(only available for the new refactored ugc)
			if (_blnIsBlog && responseElement.UGCPortalResult.BloggingDS && (typeof(responseElement.UGCPortalResult.BloggingDS.UGCSecurity) != "undefined"))
			{
				_strSecurityKey = responseElement.UGCPortalResult.BloggingDS.UGCSecurity.Key;
				_strSecurityMsg = responseElement.UGCPortalResult.BloggingDS.UGCSecurity.Msg;
			}
			else if (!_blnIsBlog && responseElement.UGCPortalResult.ReviewDS && (typeof(responseElement.UGCPortalResult.ReviewDS.UGCSecurity) != "undefined"))
			{
				_strSecurityKey = responseElement.UGCPortalResult.ReviewDS.UGCSecurity.Key;
				_strSecurityMsg = responseElement.UGCPortalResult.ReviewDS.UGCSecurity.Msg;
			}
			
			if(isSort == false)
			{
				if(_intCurrentPage == _intMaxPage)
				{
					eF = Totalrowcount;
				}
				else
				{
					eF = _intCurrentPage * _intPageLengthSetting;
				}
				if(_intCurrentPage == _intMaxPage)
				{
					var t;
					if ((!_blnIsBlog && responseElement.UGCPortalResult.ReviewDS.ReviewComments.length && responseElement.UGCPortalResult.ReviewDS.ReviewComments.length !="")
						|| (_blnIsBlog && responseElement.UGCPortalResult.BloggingDS.BloggingComments.length && responseElement.UGCPortalResult.BloggingDS.BloggingComments.length !=""))
					{
						if (_blnIsBlog)
						{
							t= responseElement.UGCPortalResult.BloggingDS.BloggingComments.length;
						}
						else
						{
							t= responseElement.UGCPortalResult.ReviewDS.ReviewComments.length;
						}
						sF = (eF - parseInt(t)) + 1;
					}
					else
					{
						sF = parseInt(eF) - 1; 
					}
				}
				else
				{
					sF = (eF - _intPageLengthSetting) + 1;
				}
				tF = Totalrowcount;
				document.getElementById("hpager").innerHTML = sF + "-" + eF + " of " + tF + " " + _commentOrReviewText + "s";
				document.getElementById("fpager").innerHTML = document.getElementById("hpager").innerHTML;
			}
			else if(isSort == true)
			{
				_strLastActionId = actionId;
				if(actionId == "0")
				{
					document.getElementById("hOptions").innerHTML = "<b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> <b>Rating</b></a> | <a href='#' onclick='fetchPage(1,true); return false;'>Date</a> | <a href='#' onclick='fetchPage(2,true); return false;'>Helpfulness</a>";				
					document.getElementById("fOptions").innerHTML = "<b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> <b>Rating</b></a> | <a href='#' onclick='fetchPage(1,true); return false;'>Date</a> | <a href='#' onclick='fetchPage(2,true); return false;'>Helpfulness</a>";				
				}
				else if(actionId == "1")
				{
					document.getElementById("hOptions").innerHTML = "<b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> Rating</a> | <a href='#' onclick='fetchPage(1,true); return false;'><b>Date</b></a> | <a href='#' onclick='fetchPage(2,true); return false;'>Helpfulness</a>";
					document.getElementById("fOptions").innerHTML = "<b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> Rating</a> | <a href='#' onclick='fetchPage(1,true); return false;'><b>Date</b></a> | <a href='#' onclick='fetchPage(2,true); return false;'>Helpfulness</a>";
				}
				else if(actionId == "2")
				{
					document.getElementById("hOptions").innerHTML = "<b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> Rating</a> | <a href='#' onclick='fetchPage(1,true); return false;'>Date</a> | <a href='#' onclick='fetchPage(2,true); return false;'><b>Helpfulness</b></a>";				
					document.getElementById("fOptions").innerHTML = "<b>Sort by:</b> <a href='#' onclick='fetchPage(0,true); return false;'> Rating</a> | <a href='#' onclick='fetchPage(1,true); return false;'>Date</a> | <a href='#' onclick='fetchPage(2,true); return false;'><b>Helpfulness</b></a>";				
				}
			}

			// now update the comments
			var _strHoldComment ="";
			var _divComment;
			var _strObjectId="";
			var _intFeedbackScore = 0;
			var _intTotalFeedbacks = 0;
			var _intTextBreakLength = 200;
			var _blnIsTextBroken = false;				
			var _intArrLength;
			var _rootNode;
			var maxblogintryinpage ="";
			maxblogintryinpage = eF;
			
			
			if ((chkObject('hpaging_next') == true) && (chkObject('fpaging_next') == true) &&
			    (chkObject('hpaging_last') == true) && (chkObject('fpaging_last') == true)) 
			{
				if (maxblogintryinpage >= Totalrowcount)
	            {
	                document.getElementById("hpaging_next").style.visibility = "hidden"
	                document.getElementById("fpaging_next").style.visibility = "hidden"
	                document.getElementById("hpaging_last").style.visibility = "hidden"
	                document.getElementById("fpaging_last").style.visibility = "hidden"
	                
	            } else {
	                document.getElementById("hpaging_next").style.visibility = "visible"
	                document.getElementById("fpaging_next").style.visibility = "visible"
	                document.getElementById("hpaging_last").style.visibility = "visible"
	                document.getElementById("fpaging_last").style.visibility = "visible"
	            }   

	            if (maxblogintryinpage <= _intPageLengthSetting) 
	            {
	                document.getElementById("hpaging_prev").style.visibility = "hidden"
	                document.getElementById("fpaging_prev").style.visibility = "hidden"
	                document.getElementById("hpaging_first").style.visibility = "hidden"
	                document.getElementById("fpaging_first").style.visibility = "hidden"
	            } else {
	                document.getElementById("hpaging_prev").style.visibility = "visible"
	                document.getElementById("fpaging_prev").style.visibility = "visible"
	                document.getElementById("hpaging_first").style.visibility = "visible"
	                document.getElementById("fpaging_first").style.visibility = "visible"
	            }    
            }

			if (_blnIsBlog)
			{
				_rootNode = responseElement.UGCPortalResult.BloggingDS.BloggingComments;
			}
			else
			{
				_rootNode = responseElement.UGCPortalResult.ReviewDS.ReviewComments;
			}

			//determine the number of comments that were returned			
			if(_rootNode.length && _rootNode.length != "")
			{
				//an array of comments was sent back by the JSON portal			
				_intArrLength = _rootNode.length;
			}
			else
			{
				//a single comment was sent back as a dictionary by the JSON portal			
				_intArrLength = 1;
			}			
			
			
			var _intOrgLength = _arrUIds.length -1;

			checkCookie();

			for(var cnt=_intArrLength -1; cnt>=0; cnt--)
			{		
				_strObjectId = "ugc_" + _arrUIds[cnt] + "_" + _arrDbIds[cnt];
				_divComment = document.getElementById(_strObjectId);
				_divComment.style.display = "block";
			
				if( (_blnIsBlog && responseElement.UGCPortalResult.BloggingDS.BloggingComments.length && responseElement.UGCPortalResult.BloggingDS.BloggingComments.length != "")
					|| (!_blnIsBlog && responseElement.UGCPortalResult.ReviewDS.ReviewComments.length && responseElement.UGCPortalResult.ReviewDS.ReviewComments.length != ""))
				{
					_strHoldComment = _rootNode[cnt].moderatedtext;
					
					// update local arrays
					_arrUIds[cnt] = _rootNode[cnt].userid;
					_arrDbIds[cnt] = _rootNode[cnt].id;                         
					_arrFeedbackValue1[cnt] = _rootNode[cnt].feedbackvalue1;
					_arrFeedbackValue2[cnt] = _rootNode[cnt].feedbackvalue2;
					
					if (_blnIsBlog)
					{
						_arrCommentTitles[cnt] = _rootNode[cnt].title;
						_arrReplyTexts[cnt] = _rootNode[cnt].replytext;
						
						if (_rootNode[cnt].replydate)
						{
    						var tr = _rootNode[cnt].replydate.split("T");
	    				    if (tr[0].length > 8)
		    			    {
			    		        _arrReplyDates[cnt] = tr[0].substr(8, 2) + '/' + tr[0].substr(5, 2) + '/' + tr[0].substr(0, 4) + ' ' + tr[1].substr(0, 8);
				    	    }	
						}
						
					}
					else
					{
						_arrCommentTitles[cnt] = _rootNode[cnt].commenttitle;
					}
					_arrUserNicks[cnt] = _rootNode[cnt].usernick;
					_arrUserLocations[cnt] = _rootNode[cnt].location;
					
					var tp = _rootNode[cnt].entrydate.split("T");
					if (tp[0].length > 8)
					{
					    _arrEntryDates[cnt] = tp[0].substr(8, 2) + '/' + tp[0].substr(5, 2) + '/' + tp[0].substr(0, 4) + ' ' + tp[1].substr(0, 8);
					}

					_arrRatingCounts[cnt] = _rootNode[cnt].ratingvalue;
				}
				else
				{
					_strHoldComment = _rootNode.moderatedtext;
					
					// update local arrays
					_arrUIds[cnt] = _rootNode.userid;
					_arrDbIds[cnt] = _rootNode.id;                         
					_arrFeedbackValue1[cnt] = _rootNode.feedbackvalue1;
					_arrFeedbackValue2[cnt] = _rootNode.feedbackvalue2;
					
					if (_blnIsBlog)
					{
						_arrCommentTitles[cnt] = _rootNode.title;
						_arrReplyTexts[cnt] = _rootNode.replytext;
						
						if (_rootNode.replydate)
						{
    						var tr = _rootNode.replydate.split("T");
	    				    if (tr[0].length > 8)
		    			    {
			    		        _arrReplyDates[cnt] = tr[0].substr(8, 2) + '/' + tr[0].substr(5, 2) + '/' + tr[0].substr(0, 4) + ' ' + tr[1].substr(0, 8);
				    	    }	
						}
						
					}
					else
					{
						_arrCommentTitles[cnt] = _rootNode.commenttitle;
					}
					
					_arrUserNicks[cnt] = _rootNode.usernick;
					_arrUserLocations[cnt] = _rootNode.location;
					
					var tp = _rootNode.entrydate.split("T");
					if (tp[0].length > 8)
					{
					    _arrEntryDates[cnt] = tp[0].substr(8, 2) + '/' + tp[0].substr(5, 2) + '/' + tp[0].substr(0, 4) + ' ' + tp[1].substr(0, 8);
					}

					_arrRatingCounts[cnt] = _rootNode.ratingvalue;				
				}
			
				_divComment.id = "ugc_" + _arrUIds[cnt] + "_" + _arrDbIds[cnt];				
				_strObjectId = "ugc_" + _arrUIds[cnt] + "_" + _arrDbIds[cnt];
				

				_intFeedbackScore = _arrFeedbackValue1[cnt];		
				_intTotalFeedbacks = parseInt(_arrFeedbackValue1[cnt]) + parseInt(_arrFeedbackValue2[cnt]);

				if (_blnIsReview)
				{
					_strCode = showRating(cnt,0);
				}
				else
				{
					_strCode = "";
				}
				_strCode = _strCode + "<span id='ugc_comment_img' class='ugc_comment_img'></span><span class='ugc_comment_title'> " + _arrCommentTitles[cnt] +"</span>"; 
				_strCode = _strCode + "<span id='userDetails_" + cnt + "' class='userDetails'>Posted by: <b>"+ _arrUserNicks[cnt] + "</b>, <b>" + _arrUserLocations[cnt] + "</b>, on <b>" + _arrEntryDates[cnt] + "</b></span>";

				_strCode = _strCode + "<div id='userComments_" + cnt + "' class='userComments'>" + _strHoldComment + "</div>";
				_strCode = _strCode + "<div id='commentOptions_" + cnt + "' class='commentOptions'>";

				if (_blnIsReview)
				{
					if(_intFeedbackScore == 0)
					{
						_strCode = _strCode +"<span id='fback_" + _arrDbIds[cnt] + "'><br>No feedback received, did you find this review helpful? <a href='#' onclick='postFeedback(0," + _strObjectId + "); return false;'>Yes</a> <a href='#' onclick='postFeedback(1," + _strObjectId + "); return false;'>No</a></span>";
					}
					else
					{
						_strCode = _strCode +"<span id='fback_" + _arrDbIds[cnt] + "'><br>" + _intFeedbackScore + " out of " + _intTotalFeedbacks + " found this useful, did you find this review helpful? <a href='#' onclick='postFeedback(0," + _strObjectId + "); return false;'>Yes</a> <a href='#' onclick='postFeedback(1," + _strObjectId + "); return false;'>No</a></span>";
					}
				}

	
				if(parseInt(_reportCount) <= 5)
				{
					_strCode = _strCode + "<span id='rptmsg" + _arrDbIds[cnt] + "'><br><a href='#' onclick='getReportReview(" + _strObjectId + "); return false;'>Report " + _commentOrReviewText + "</a></span>";
				}
				
				if (_blnIsBlog && _arrReplyTexts[cnt])
				{
    				var _author = document.getElementById("ugc_entry_author").innerHTML;
	    		    _strCode = _strCode + "<br><br><div class='ugc_reply_text'>";
    	    		_strCode = _strCode + "<span id='replyDetails_" + _arrDbIds[cnt] + "' class='userDetails'>Reply by: <b>" + _author + "</b>, on <b>" + _arrReplyDates[cnt] + "</b></span>";
			        _strCode = _strCode + "<span id='replyText" + _arrDbIds[cnt] + "' class='userComments'><br>" + _arrReplyTexts[cnt] + "</span>";
			        _strCode = _strCode + "</div>";				
				}
				
				_strCode = _strCode + "</div>";
				if(cnt<_intArrLength-1)
				{
					_strCode = _strCode + "<hr class='ugc_hr_line'>";
				}
				_divComment.innerHTML = _strCode;
				
			}

			if(_blnNoPost == false && parseInt(_intArrLength) > 5)
			{	
				if (JS_SUBMISSION_FORMTOP_ENABLE != "undefined" && JS_SUBMISSION_FORMTOP_ENABLE != null && JS_SUBMISSION_FORMTOP_ENABLE != '')
				{
					if ((JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'TRUE') || (JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'YES'))
					{
						document.getElementById("ugc_write_1").style.display="block";
						document.getElementById("ugc_write_1").style.visibility = "visible";
					}
				}			
			}	
			else
			{
				if (JS_SUBMISSION_FORMTOP_ENABLE != "undefined" && JS_SUBMISSION_FORMTOP_ENABLE != null && JS_SUBMISSION_FORMTOP_ENABLE != '')
				{
					if ((JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'TRUE') || (JS_SUBMISSION_FORMTOP_ENABLE.toUpperCase() == 'YES'))
					{
						document.getElementById("ugc_write_1").style.display="none";
						document.getElementById("ugc_write_1").style.visibility = "hidden";
					}
				}		
			}
						
			if(_intOrgLength>_intArrLength)
			{
				for(cnt = _intArrLength; cnt<_intOrgLength ; cnt++)
				{
					document.getElementById("ugc_" + _arrUIds[cnt] + "_" + _arrDbIds[cnt]).style.display = "none";
				}
			}
			
			//scroll to the top of the comments
			document.location.href = '#ugc_comments';	

		}
	}
	// Setup Property List
	var jsonPropList = new Ninemsn.Global.ContentManager.JsonProp (10000, -1, null, "JSONResult", Ninemsn.Global.ContentManager.Json.ResponseFunction.Unique);	
	// Triggers the JSON call
	Ninemsn.Global.ContentManager.GetContent(fetchUrl, _oSwap, jsonPropList);
	
	var _SitestringConcat;
	var _wholeSitesectionString;
	var _concat;
	
	if (_commentOrReviewText == 'review')
	{
		_SitestringConcat='REV_link_';
	} else {
		_SitestringConcat='CMT_link_';
	}
	
	if (actionId == 0)
	{
		_SitestringConcat = _SitestringConcat + 'FIRST';
	} else if (actionId == 1) {
		_SitestringConcat = _SitestringConcat + 'PREV';
	} else if (actionId == 2) {
		_SitestringConcat = _SitestringConcat + 'NEXT';
	} else if (actionId == 3) {
		_SitestringConcat = _SitestringConcat + 'LAST';
	}
	
	if (JS_SITE != 'undefined') 
	{
		_wholeString = '|i:' + JS_SITE 
	}
	if (JS_SECTION != 'undefined') 
	{
		_wholeString = _wholeString + '|e:' + JS_SECTION
	}
	if (JS_SUB_SECTION != 'undefined') 
	{
		_wholeString = _wholeString + '|u:' + JS_SUB_SECTION
	}

	_concat = _SitestringConcat + _wholeString;

	OMNTRLinkTracking(true, _SitestringConcat, _concat, null, null, null);                     

}		

function closeDialog(flag)
{
	if(flag=="1")
	{
		document.getElementById("ugc_guidelines_brief").innerHTML = _holdGuidelines;
	}
}

function checkChars(objectId,flag)
{
	var _txtObject = document.getElementById(objectId);
	var _btn1, _btn2, _msg1, _msg2;
	_btn1 = document.getElementById("ugc_btnsr_" + flag);
	_btn2 = document.getElementById("ugc_btnpr_" + flag)
	_msg1 = document.getElementById("validation_msg_" + flag);
	_msg2 = document.getElementById("write_msg_" + flag);

	if(_txtObject.value.length>0)
	{
		_btn1.disabled = false;
		_btn2.disabled = false;
		if(_txtObject.value.search(re) >= 0)
		{
			_msg1.innerHTML = "your content must not contain any of these @#/\\<>\|;: characters.";			
		_btn1.disabled = true;
		_btn2.disabled = true;
		}
		else
		{
			_msg1.innerHTML = "";
			_btn1.disabled = false;
			_btn2.disabled = false;
		}	
		if(_txtObject.value.length<_maxCharsAllowed)
		{
			_msg2.innerHTML = (_maxCharsAllowed-_txtObject.value.length) + " characters remaining.";
		}
		else
		{
			_msg2.innerHTML = "Maximum character limit reached.";
			_txtObject.value = _txtObject.value.substring(0,_maxCharsAllowed);		
		}

		}
	else
	{
		_btn1.disabled = true;
		_btn2.disabled = true;
		_msg2.innerHTML = _maxCharsAllowed + " characters remaining.";
	}
}

function postFeedback(actionId,objectId)
{
	var oIds = objectId.id.split("_");
	var objectMappingId = oIds[2];
	var fetchUrl = getLocationUrl("/UGCPortal.aspx?tool=2&action=1&Msg=" + _strSecurityMsg + "&Key=" + _strSecurityKey+ "&actionid=" + actionId + "&objectmappingid=" + objectMappingId);

	var _oSwap = function (responseElement) { 
		if(responseElement && responseElement != null && responseElement.UGCPortalResult && responseElement.UGCPortalResult.SubmitFeedback)
		{
			var _rtnStatus = responseElement.UGCPortalResult.SubmitFeedback.RequestStatus;
			if(_rtnStatus == "true")
			{
				document.getElementById("fback_" + objectMappingId).style.color = "blue";
				document.getElementById("fback_" + objectMappingId).innerHTML = "<br>" + _FeedbackReturnText ;
			}
			else if(_rtnStatus == "false")
			{
				document.getElementById("fback_" + objectMappingId).style.color = "red";
				document.getElementById("fback_" + objectMappingId).innerHTML = "<br>" + _failureText ;
			}
			_strSecurityKey = responseElement.UGCPortalResult.SubmitFeedback.Key;
			_strSecurityMsg = responseElement.UGCPortalResult.SubmitFeedback.Msg;
		}
	}
	
	// Setup Property List
	var jsonPropList = new Ninemsn.Global.ContentManager.JsonProp (10000, -1, null, "JSONResult", Ninemsn.Global.ContentManager.Json.ResponseFunction.Unique);	
	// Triggers the JSON call
	Ninemsn.Global.ContentManager.GetContent(fetchUrl, _oSwap, jsonPropList);
}

function getReportReview(objectId)
{
	var _arrObjectId = objectId.id.split("_");
	var _strReportedObjectId = _arrObjectId[2];
	var _strReportedUserId = _arrObjectId[1];
	var _spanReport = document.getElementById("rptmsg" + _strReportedObjectId);
	var tool = (_blnIsBlog ? "3" : "2");
	var fetchUrl = getLocationUrl("/UGCPortal.aspx?tool=" + tool + "&action=2&Msg=" + _strSecurityMsg + "&Key=" + _strSecurityKey+ "&objectmappingid=" + _strReportedObjectId);
	var _oSwap = function (responseElement) { 
		if(responseElement && responseElement != null && responseElement.UGCPortalResult && responseElement.UGCPortalResult.SubmitReport)
		{
			var _rtnStatus = responseElement.UGCPortalResult.SubmitReport.RequestStatus;
			if(_rtnStatus == "true")
			{
				_spanReport.style.color = "blue";
				_spanReport.innerHTML = _ReportReturnText ;
				_reportCount = parseInt(_reportCount) + 1;
				setCookie(_reportCount);
			}
			else if(_rtnStatus == "false")
			{
				_spanReport.style.color = "red";
				_spanReport.innerHTML = _failureText ;		
			}
			_strSecurityKey = responseElement.UGCPortalResult.SubmitReport.Key;
			_strSecurityMsg = responseElement.UGCPortalResult.SubmitReport.Msg;
		}
	}
	
	// Setup Property List
	var jsonPropList = new Ninemsn.Global.ContentManager.JsonProp (10000, -1, null, "JSONResult", Ninemsn.Global.ContentManager.Json.ResponseFunction.Unique);	
	// Triggers the JSON call
	Ninemsn.Global.ContentManager.GetContent(fetchUrl, _oSwap, jsonPropList);
}

function showRating(arrPos,flag,posFlag)
{
	var _intMaxRating = 5;
	var _strCode = "";
	var _ratingValue ="";
	if(!_arrImages || (_arrImages  && _arrImages == ""))
	{
		_arrImages = _AltImagePath.split(",");
	}
	if(flag=="0" || flag == "2")
	{
		if(flag == "0")
		{
			_ratingValue = parseInt(_arrRatingCounts[arrPos]);
		}		
		if(flag == "2")
		{
			_ratingValue = arrPos;
		}
		for(var Icnt=0;Icnt<_intMaxRating;Icnt++)
		{
			if(Icnt<_ratingValue)
			{
				_strCode = _strCode + "<img class=ratingImages  src='" + _arrImages[0] + "' alt='Rating value: " + (Icnt+1) + " out of " + _intMaxRating + " stars' >";
			}
			else
			{
				_strCode = _strCode + "<img class=ratingImages  src='" + _arrImages[1] + "' alt='Rating value: " + (Icnt+1) + " out of " + _intMaxRating + " stars' >";
			}
		}
	}
	if(flag=="1")
	{
		for(var Icnt=0;Icnt<_intMaxRating;Icnt++)
		{
			_strCode = _strCode + "<img class=ratingImages id=img_" + (Icnt + 1) + "_" + posFlag +" src='" + _arrImages[1] + "' onmouseover=rHover(this.id); onclick=sRating(this.id); onmouseout=rCheck(this.id);  alt='Rating value: " + (Icnt+1) + " out of " + _intMaxRating + " stars' >";
		}	
	}
	return _strCode
}

function rHover(id)
{
	_intRatingValue = 0;
	var _maxRating = 5;
	var _arrId = id.split("_");
	var _arrIdx = _arrId[1];			
	var _posFlag = _arrId[2];			
	for(var cnt=1;cnt<=_maxRating;cnt++)
	{
		document.getElementById("img_" + cnt + "_" + _posFlag).src = _arrImages[1];
	}
	if(document.getElementById("img_" + _arrIdx + "_" + _posFlag))
	{
		for(var cnt = 1 ; cnt <= parseInt(_arrIdx) ; cnt++)
		{
			document.getElementById("img_" + cnt + "_" + _posFlag).src = _arrImages[2];
		}
	}
}

function rCheck(id)
{
	var _arrId = id.split("_");
	var _posFlag = "_" + _arrId[2];			

	for(var cnt=1;cnt<=5;cnt++)
	{
		if(_intRatingValue > 0 && cnt <=_intRatingValue)
		{
			document.getElementById("img_" + cnt + _posFlag).src = _arrImages[0];
		}
		else
		{
			document.getElementById("img_" + cnt + _posFlag).src = _arrImages[1];
		}
	}	
}

function sRating(id)
{
	var _arrId = id.split("_");
	var _arrIdx = parseInt(_arrId[1]);		
	var _posFlag = "_" + _arrId[2];				
	for(var cnt=1;cnt<=parseInt(_arrIdx);cnt++)
	{
		document.getElementById("img_" + cnt + _posFlag).src = _arrImages[0];
	}
	_intRatingValue = parseInt(_arrIdx);
}


function getLocationUrl(url)
{
	var _siteName;
	var _blnIsProd = false;
	var _blnIsDev = false;
	var _hostName = window.location.hostname;
	var _transferUrl = "";
	var _intRnd = Math.random();
	try
	{
		if(_hostName.indexOf("syd") != -1 || _hostName.indexOf("sbkprod") != -1 || _hostName.indexOf("paddington") != -1)
		{
			_transferUrl = "http://data.syd.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else if(_hostName.indexOf("prev01") != -1)
		{
			_transferUrl = "http://data.prev01.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else if(_hostName.indexOf("sbkdev") != -1)
		{
			_transferUrl = "http://data.sbkdev.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else if(_hostName.indexOf("devsbk03") != -1)
		{
			_transferUrl = "http://data.devsbk03.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else if(_hostName.indexOf("devsbk06") != -1)
		{
			_transferUrl = "http://data.devsbk06.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else if(_hostName.indexOf("devgen02") != -1)
		{
			_transferUrl = "http://data.devgen02.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else if(_hostName.indexOf("dev-sandeepk-d") != -1)
		{
			_transferUrl = "http://data.dev-sandeepk-d.ninemsn.com.au/ugc" + url + "&mode=preview&reset=" + _intRnd;
		}
		else
		{
			_transferUrl = "http://data.ninemsn.com.au/ugc" + url + "&reset=" + _intRnd;
		}
	}
	catch(e)
	{
	}
	return _transferUrl;
}

function showGuidelines()
{
	_brief = document.getElementById("ugc_guidelines_brief");
	_full = document.getElementById("ugc_guidelines");
	_holdGuidelines = _brief.innerHTML;
	_brief.innerHTML = _full.innerHTML;
}


function showPreview(flag)
{
	var emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/    
	var _msg1, _write, _preview, _previewContainer;
	var _comment = trim(document.getElementById("ugc_comment_" + flag).value);
	var _email = trim(document.getElementById("ugc_email_" + flag).value);
	var _nick = trim(document.getElementById("ugc_nick_" + flag).value);
	var _title = trim(document.getElementById("ugc_title_" + flag).value);

	var _location = document.getElementById("ugc_location_" + flag).value;
	_msg1 = document.getElementById("validation_msg_" + flag);
	_write = document.getElementById("ugc_write_" + flag);
	_preview = document.getElementById("ugc_preview_content_" + flag);
	_previewContainer = document.getElementById("ugc_preview_" + flag);

	if(_email == "" ||  _nick == "" || _title == "" || (_blnIsReview && _intRatingValue == 0) || _comment == "")
	{
		_msg1.innerHTML = "Please fill required fields marked with an (*)";
		return false;
	}
	else if(!emailRegExp.test(_email))
	{
		_msg1.innerHTML = "Please specify a valid e-mail address.";
		return false;
	}
	else
	{
		_msg1.innerHTML = "";
	}
	if (_blnIsReview)
	{
		_strContent = showRating(_intRatingValue,2);
	}
	else
	{
		_strContent = "";
	}
	_strContent = _strContent + "<span id='ugc_comment_img' class='ugc_comment_img'></span><span class='ugc_comment_title'> " + _title + "</span>";
	_strContent = _strContent + "<span id='userDetails_0' class='userDetails'>Posted by: <b>" + _nick + "</b>, <b>" + _location + "</b>, on <b>" + Date() + "</b></span>";
	_strContent = _strContent + "<div id='userComments_0' class='userComments'>" + _comment + "</div>";
	_strContent = _strContent + "<hr class='ugc_hr_line'><br><span class='ugc_button_border'><span class='ugc_button_submit_span'>";
	_strContent = _strContent + "<INPUT class=ugc_button_submit type=button id=submit_" + flag + " value=Submit onclick='postContent(" + (parseInt(flag) + 1) + ");'></input></span>";
	_strContent = _strContent + "<span class='ugc_button_edit_span'><INPUT class=ugc_button_edit type=button id=edit_" + flag + " value=Edit onclick='showWrite(" + (parseInt(flag) + 1) + ");'></input></span></span><br>";

	_preview.innerHTML = _strContent;
	_write.style.visibility="hidden";
	_write.style.display = "none";
	
	_previewContainer.style.display="block";
	_previewContainer.style.visibility = "visible";
}

function showWrite(flag, clearFields)
{
	var _write, _stage, _previewContainer, marker;
	clearTimeout(_t);
	if(flag == "3")
	{
		marker = 2;		
	}	
	if(flag == "2")
	{
		marker = 1;
	}	

	_write = document.getElementById("ugc_write_" + marker);	
	_previewContainer = document.getElementById("ugc_preview_" + marker);
	_stage = document.getElementById("ugc_write_stage_" + marker);	
	if(clearFields == true)
	{
		document.getElementById("ugc_comment_" + marker).value = "";
		document.getElementById("ugc_title_" + marker).value = "";
		document.getElementById("ugc_btnpr_" + marker).disabled = true;
		document.getElementById("ugc_btnsr_" + marker).disabled = true;
		document.getElementById("write_msg_" + marker).innerHTML = _maxCharsAllowed + " characters remaining.";
		document.getElementById("ugc_write_footer_text_" + marker).innerHTML = "<b>*</b> Indicates required field.";
	    _stage.style.display="none";
    	_stage.style.visibility = "hidden";
	}
	_write.style.visibility="visible";
	_write.style.display = "block";
	
	_previewContainer.style.display="none";
	_previewContainer.style.visibility = "hidden";
}


function postContent(flag)
{
	_resetCnt = 30;
	var emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/    
	var _strCode = "";
	
	if(flag =="1" || flag =="2")
	{
		marker = 1;
	}
	else if(flag =="3" || flag == "4")
	{
		marker = 2;
	}
	
	var _comment = trim(document.getElementById("ugc_comment_" + marker).value);
	var _email = trim(document.getElementById("ugc_email_" + marker).value);
	var _nick = trim(document.getElementById("ugc_nick_" + marker).value);
	var _title = trim(document.getElementById("ugc_title_" + marker).value);
	var _location = document.getElementById("ugc_location_" + marker).value;
	var _msg1 = document.getElementById("validation_msg_" + marker);
	var _write = document.getElementById("ugc_write_" + marker);
	var _footer = document.getElementById("ugc_write_footer_text_" + marker);
	var _stage = document.getElementById("ugc_write_stage_" + marker);
	var _previewContainer = document.getElementById("ugc_preview_" + marker);	
    var submitButton;
	var previewOrEditButton;
	
	_comment = _comment.replace("\u000D","\r");
	_comment = _comment.replace("\u000A","\n");
	
	if(_email == "" ||  _nick == "" || _location == "" || _title == "" || (_blnIsReview && _intRatingValue == 0) || _comment == "")
	{
		_msg1.innerHTML = "Please fill required fields marked with an (*)";
		return false;
	}
	else if(!emailRegExp.test(_email))
	{
		_msg1.innerHTML = "Please specify a valid e-mail address.";
		return false;
	}
	else
	{
		_msg1.innerHTML = "";
	}
	
	if(flag =="2" || flag == "3")
	{
		submitButton = document.getElementById("submit_" + marker);
		previewOrEditButton = document.getElementById("edit_" + marker);
		_footer = document.getElementById("ugc_preview_footer_text_" + marker);
	}
	else
	{
		submitButton = document.getElementById("ugc_btnpr_" + marker);
		previewOrEditButton = document.getElementById("ugc_btnsr_" + marker);
	}

	if (submitButton && previewOrEditButton)
	{
		submitButton.disabled = true;
		previewOrEditButton.disabled = true;
	}
		
	_footer.innerHTML = "<img src='/share/com/ugc/img/al1.gif' style='border:0' align='absmiddle'> Working ...";
	_footer.style.display = "inline";
	_footer.style.visibility = "visible";

	var _oSwap = function(obj){

		if(obj && obj != null)
		{ 
			if(obj.responseXML.documentElement.getElementsByTagName("ReturnStatus") && obj.responseXML.documentElement.getElementsByTagName("ReturnStatus")[0].firstChild.nodeValue == "true")
			{
					stopSubmissionTimer();
							
					_strCode = _strCode + "<div class='ugc_preview_msg'>";
					_strCode = _strCode + "<span style='float:left'><b>" + _commentOrReviewText + " submission complete</b></span>";
					_strCode = _strCode + "<span style='float:right;align:right;padding-right:5px'><b><a href='#' onclick='showWrite(" + (parseInt(marker) + 1) + ",true); return false;'>X</a></b></span></div>";
					_strCode = _strCode + "<div id='ugc_submission_msg' class='ugc_submission_msg'>";
					_strCode = _strCode + "<div class='text'><b>Thank you for submitting your " + _commentOrReviewText + ".</b><br><br>It may take up to a day for your " + _commentOrReviewText + " to be approved and published on the site. <br> To write another " + _commentOrReviewText + ", please click <a href='#' onclick='showWrite(" + (parseInt(marker) + 1) + ",true); return false;'>here.</a></div>";
					_strCode = _strCode + "<br><br><div class='ugc_preview_return_msg'><span id='reset'>Switching to write mode in <b> 30 </b>seconds</span></div>";
							
					_stage.innerHTML = _strCode;
					_stage.style.visibility = "visible";
					_stage.style.display = "block";
					
		    		_previewContainer.style.display="none";
        	        _previewContainer.style.visibility = "hidden";

					_write.style.visibility = "hidden";
					_write.style.display = "none";
					
					_t = setTimeout("reset(" + (parseInt(marker) + 1) + ")",1000);
					_footer.style.display = "none";
					_footer.style.visibility = "hidden";
					
					// Reset the encryption key and validation message
					_strSecurityKey = obj.responseXML.documentElement.getElementsByTagName("Key")[0].firstChild.nodeValue;
					_strSecurityMsg = obj.responseXML.documentElement.getElementsByTagName("Msg")[0].firstChild.nodeValue;
			}
			else if(obj.responseXML.documentElement.getElementsByTagName("StageReturn") && obj.responseXML.documentElement.getElementsByTagName("StageReturn")[0].firstChild.nodeValue == "false")
			{
			
			}
			else if(obj.responseXML.documentElement.getElementsByTagName("StageReturn") && obj.responseXML.documentElement.getElementsByTagName("StageReturn")[0].firstChild.nodeValue == "failed")
			{
			
			}			
			else if(obj.responseXML.documentElement.getElementsByTagName("StageReturn") && obj.responseXML.documentElement.getElementsByTagName("StageReturn")[0].firstChild.nodeValue == "invalid")
			{
			
			}			
		}
	}
	try
	{ 
		var _postData;
		if (_blnIsBlog)
		{
			_postData = "Msg=" + _strSecurityMsg + "&Key=" + _strSecurityKey + "&ObjectId=" + _strObjectId +
				"&BloggingText=" + encodeURIComponent(_comment) + "&Email=" + encodeURIComponent(_email) + 
				"&UserNick=" + encodeURIComponent(_nick) + "&Title=" + encodeURIComponent(_title) +
				"&Location=" + encodeURIComponent(_location) + "&RatingValue=" + encodeURIComponent(_intRatingValue);
		}
		else
		{
			_postData = "Msg=" + _strSecurityMsg + "&Key=" + _strSecurityKey + "&ObjectId=" + _strObjectId + "&ContentTypeId=" + _strContentTypeId +
				"&ReviewText=" + encodeURIComponent(_comment) + "&Email=" + encodeURIComponent(_email) +
				"&UserNick=" + encodeURIComponent(_nick) + "&Title=" + encodeURIComponent(_title) +
				"&Location=" + encodeURIComponent(_location) + "&RatingValue=" + encodeURIComponent(_intRatingValue);
		}
		var _oPropList = new Ninemsn.Global.ContentManager.AjaxProp('POST',null,0,null,_postData); 
		var fetchUrl = "";
		if (_blnIsBlog)
		{
			fetchUrl="/share/com/ugc/WebServices/BloggingWS.asmx/SubmitBlogging"; 
		}
		else
		{
			fetchUrl="/share/com/ugc/WebServices/ReviewsWS.asmx/SubmitReviews"; 
		}
		Ninemsn.Global.ContentManager.GetContent(fetchUrl,_oSwap,_oPropList); 
		
		startSubmissionTimer(submitButton.id, previewOrEditButton.id, _footer.id);
	} 
	catch(e)
	{
	}	
}

///<summary>
/// Starts the submission timer which will notify the user in case the submission times out.
///</summary>
function startSubmissionTimer(submitButtonId, previewOrEditButtonId, footerId)
{
	//stop any running timers
	stopSubmissionTimer();
	
	//start a new timer
	submissionTimer = window.setTimeout("onSubmissionFailed('" + submitButtonId + "', '" + previewOrEditButtonId + "', '" + footerId + "');", 
		submissionTimerIntervalMilliSeconds);
}

///<summary>
/// Stops the submission timer which notifies the user in case the submission times out.
///</summary>
function stopSubmissionTimer()
{
	window.clearTimeout(submissionTimer);
}

///<summary>
/// Event that handles a failure in the submission of comments/reviews/blog comments.
///</summary>
function onSubmissionFailed(submitButtonId, previewOrEditButtonId, footerId)
{
	try
	{
		//stop the submission timer so user doesnt recieve duplicate notifications
		stopSubmissionTimer()

		//notify the user
		var submitBoxIndex;
		for (submitBoxIndex = 0; submitBoxIndex <= 2; submitBoxIndex++)
		{
			var write = document.getElementById("ugc_write_" + submitBoxIndex);
			var stage = document.getElementById("ugc_write_stage_" + submitBoxIndex);
			var preview = document.getElementById("ugc_preview_content_" + submitBoxIndex);
			if (write && stage && (write.style.display != "none" || preview.style.display != "none"))
			{
				stage.innerHTML = "<span id='connectivity_error_message' style='color: red;'><strong>" + submissionFailedText + "</strong></span>";
				stage.style.display = "";
			}
		}
		
		//reset the ui so user can send the comment again
		var submitButton = document.getElementById(submitButtonId);
		var previewOrEditButton = document.getElementById(previewOrEditButtonId);
		var footer = document.getElementById(footerId);
		if (submitButton && previewOrEditButton && footer)
		{
			//enable the submit and preview/edit buttons so user can submit again
			submitButton.disabled = false;
			previewOrEditButton.disabled = false;
			
			//reset the footer
			footer.innerHTML = "<b>*</b> Indicates required field.";
		}
	}
	catch (e)
	{
	}
}

function reset(val)
{
	try
	{
		if(_resetCnt>0)
		{
			_resetCnt = _resetCnt - 1;
			document.getElementById("reset").innerHTML = "Switching to write mode in <b>" + _resetCnt + " </b>seconds.";
			_t = 0;
			_t = setTimeout("reset(" + val + ")",1000);
		}
		else
		{
			showWrite(val,true);
			_t=0;
			_resetCnt = 30;
		}
	}
	catch(e)
	{
	}
}


function setCookie(val)
{
	try
	{
		var date = new Date();
		date.setTime(date.getTime()+(_CookieExpiry*24*60*60*1000));
		var expires = "; expires=" + date.toGMTString();
		document.cookie = "ugc_report=" + escape(val) + expires + "; path=/";
	}
	catch(e)
	{
	}
}

function checkCookie()
{
	try
	{
		var nameEQ = "ugc_report=";
		var ca = document.cookie.split(';');
		for(var i=0; i < ca.length; i++)
		{
			var c = ca[i];
			while (c.charAt(0) == ' ')
			{
				c = c.substring(1, c.length);										
			}
			if(c.indexOf(nameEQ) == 0)
			{
				blnCookieCheck = true;
				_reportCount = unescape(c.substring(nameEQ.length,c.length));
				break;
			}
		}				
	}
	catch(e)
	{
	}
	return _reportCount;
}	

function trim(val) 
{
    return val.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
} 