/**
 * Impose a maximum length on a text area.
 * @param Event
 * @param field - the textarea object
 * @param maxLen - the max length
 * @param remainingId - CSS ID of the field where the remaining chars is written.
 * @return
 */
function imposeMaxLength(Event, field, maxLen, remainingId)
{
	if (field.value.length > maxLen) {
		field.value = field.value.substring(0, maxLen);
		$j('#'+remainingId).html(maxLen - field.value.length);
		return false;
	} else {
		$j('#'+remainingId).html(maxLen - field.value.length);
	}
}

/**
 * Display a popup.
 * 
 * Some code from: http://www.quirksmode.org/js/events_properties.html
 * @param e - the event object
 * @param id - the CSS ID of the object
 * @return
 */
function showPopup(event, id) {
	var posx = 0;
	var posy = 0;
	var e = event;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	
	var obj = $j('#'+id);
	obj.css('left', posx + 20);
	obj.css('top', posy);
	obj.fadeIn().css("display", "block");
	stopProp(event);
}

function stopProp(event) {
	if (event.stopPropagation) {
		// this code is for Mozilla and Opera
		event.stopPropagation();
	} else if (window.event) {
		// this code is for IE
		window.event.cancelBubble = true;
	}
}

function showReportAbuse(event, id, ref) {
	showPopup(event, id);
	// Prevent the dialog being hidden straight away.
	$j('#'+id+' #complaint-reference').val(ref);
}

function submitReportAbuse(div, ref, text, context) {
	$j.post(context+'/ugc', 
			{	method:'commentcomplaint',
				comment:text,
				commentId: ref
			},
			function() {
				var obj = $j('#'+div);
				obj.fadeOut().css("display", "none");
				$j('#'+div+' #report-abuse-form').css('display', 'block');
				$j('#'+div+' #report-abuse-status').css('display', 'none');
			});
	$j('#'+div+' #report-abuse-status').html($j.sprintf("<img class='ajax-loader' src='%s/images/ajax-loader.gif'/> <p class='copy-text'>Sending...</p>", context));
	$j('#'+div+' #report-abuse-form').css('display', 'none');
	$j('#'+div+' #report-abuse-form textarea').val('');
	$j('#'+div+' #report-abuse-status').css('display', 'block');

}

function ugcLoadCalendar(div, reference, type, context, scrollto, submitdiv, todaydiv) {
	$j('#'+div).html($j.sprintf("<img class='ajax-loader' src='%s/images/ajax-loader.gif'/>", context));
	$j('#'+div).load($j.sprintf(context+'/includes/webpart-ugc-calendar.jsp?dest=%s&reference=%s&anchor=%s',div,reference,scrollto));
	window.scrollTo(0, $j('#'+scrollto).offset().top);
	if (submitdiv != null) {
		$j('#'+submitdiv).css('display', 'none');
	}
	if (todaydiv != null) {
		$j('#'+todaydiv).css('display', 'block');
	}
}

function ugcLoadDate(date, div, reference, type, context, scrollto, submitdiv, todaydiv) {
	var parts = date.split('-');
	$j('#'+div).html($j.sprintf("<img class='ajax-loader' src='%s/images/ajax-loader.gif'/>", context));
	date = $j.sprintf("%04d%02d%02d",parseInt(parts[0]),parseInt(parts[1]),parseInt(parts[2]));
	$j('#'+div).load($j.sprintf(context+'/includes/webpart-ugc-display.jsp?startdate=%s&enddate=%s&reference=%s',date,date,reference));
	window.scrollTo(0, $j('#'+scrollto).offset().top);
	if (submitdiv != null) {
		$j('#'+submitdiv).css('display', 'none');
	}
	if (todaydiv != null) {
		$j('#'+todaydiv).css('display', 'block');
	}
}

function showDiv(id, event) {
	$j('#'+id).css('display', 'block');
	stopProp(event);
}

/**
 * This function sets the page state and then reloads.
 */
function pageStateChange(state, value, anchor) {
	if (state != null)
		createCookie(state, value, 7);
	jQuery('#tabform').append("<input type='hidden' name='"+state+"' value='"+value+"' />")
	jQuery('#tabform').attr('action', jQuery('#tabform').attr('action')+anchor);
	jQuery('#tabform').submit();
	/*
	var url = window.location.href;
	if (url.indexOf('#') > -1) {
		if (url.substring(url.indexOf('#')) == anchor) {
			window.location.reload(true);
			return;
		} 
		url = url.substring(0, url.indexOf('#'));
	}
	window.location.assign(url+anchor);
	*/
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	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) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
