// jquery easing plugin
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d);},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b;},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b;},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b;},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;}});

// jquery background anim plugin
(function($){if(!document.defaultView||!document.defaultView.getComputedStyle){var oldCurCSS=jQuery.curCSS;jQuery.curCSS=function(elem,name,force){if(name!=='backgroundPosition'||!elem.currentStyle||elem.currentStyle[name]){return oldCurCSS.apply(this,arguments);}
var style=elem.style;if(!force&&style&&style[name]){return style[name];}
return oldCurCSS(elem,'backgroundPositionX',force)+' '+oldCurCSS(elem,'backgroundPositionY',force);};}})(jQuery);(function($){function toArray(strg){strg=strg.replace(/left|top/g,'0px');strg=strg.replace(/right|bottom/g,'100%');strg=strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");var res=strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);return[parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];}
$.fx.step.backgroundPosition=function(fx){if(!fx.bgPosReady){var start=$.curCSS(fx.elem,'backgroundPosition');if(!start){start='0px 0px';}
start=toArray(start);fx.start=[start[0],start[2]];var end=toArray(fx.options.curAnim.backgroundPosition);fx.end=[end[0],end[2]];fx.unit=[end[1],end[3]];fx.bgPosReady=true;}
var nowPosX=[];nowPosX[0]=((fx.end[0]-fx.start[0])*fx.pos)+fx.start[0]+fx.unit[0];nowPosX[1]=((fx.end[1]-fx.start[1])*fx.pos)+fx.start[1]+fx.unit[1];fx.elem.style.backgroundPosition=nowPosX[0]+' '+nowPosX[1];};})(jQuery);

// user login
function userLogin(form,jsValidate) {
	if (jsValidate) {
		if (!$(form + ' #username').val().length || !$(form + ' #password').val().length) {
			updateStatus('<strong>Please enter both your username and password</strong>');
			return false;
		}
	}
	$(form).submit()
	return false;
}
// set search focus for this searchbox
function searchFocus(dq,q,bool) {
	if (bool) {
		q.style.color = '#000000';
		if ( q.value == dq ) {
			q.value = '';
		}
	} else if (!bool && q.value == '') {
		q.value = dq;
		q.style.color = '#838282';
	}
}
function searchCheck(dq,q,msg) {
	if (q.value == '' || q.value == dq) {
		if (msg) {
			alert(msg);
			return false;
		} else {	
			q.value = '';
		}
	}
	return true;
}
function searchTextColour(arrElements) {
	for(i=0;i<arrElements.length;i++) {
		var q = document.getElementById(arrElements[i]);
		if (q.value != '' && q.value != dq) {
			q.style.color = '#000000';
		}
	}
}

// utility functs
function html_entity_decode( string ) {
    var ret, tarea = document.createElement('textarea');
    tarea.innerHTML = string;
    ret = tarea.value;
    return ret;
}
function htmlspecialchars(string) {
    string = string.toString();    
	string = string.replace(/&/gi, '&amp;');
	string = string.replace(/</gi, '&lt;');
	string = string.replace(/>/gi, '&gt;');
	//string = string.replace('/"/g', '&quot;');
    return string;
}
function expandCollapseElement(el,elFocus) {
	var targetContent = $(el);
	if (targetContent.css('display') == 'none') {
		elFocus ? targetContent.slideDown(200, function() { $('#'+elFocus).focus(); }) : targetContent.slideDown(200);
		// forum specific match
		if( el.match(/#parentPost(.+)/) ) {
			$(el + "[id*='parentPost'] img").each( function(){ resizeImage($(this),maxWidth); });
		}
	} else {
		targetContent.slideUp(200);
	}
	return false;
}
function getFileFromPath(file) {
	return file.replace(/.*(\/|\\)/, '');
}
function getExt(file) {
	return (/[.]/.exec(file)) ? /[^.]+$/.exec(file.toLowerCase()) : '';
}
// scrolling to anchor animation
$(window).load(function() {
	setScrollAnimation();
});
function setScrollAnimation(element) {
	element = element ? element + ' ' : '';
	function filter(string) {
		return string
			.replace(/^\//,'')
			.replace(/(index|default)\.[a-zA-Z]{3,4}$/,'')
			.replace(/\/$/,'')
	}
	function getQueryString(string) {
		var string = string.toString();
		string = string.substring(0,string.indexOf('#')).match(/\?(.+)$/);
		return RegExp.$1;
	}
	$(element + 'a[href*=#]').each(function() {
		var hrefVal = $(this).attr('href');
		if (this != '#' && filter(location.pathname) == filter(this.pathname)
			&& location.hostname == this.hostname
			&& (hrefVal.substring(0,1) == '#' || getQueryString(window.location) == getQueryString(hrefVal))
			&& this.hash.replace(/#/,'') ) {
			var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']');
			var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
			if ($target) {
				$(this).click(function() {
					scrollToElement($target);
					return false;
				});
			}
		}
	});
}
function scrollToElement(targetEl,easing,callback) {
	easing = (!easing) ? 'easeOutBack' : easing;
	var targetOffset = $(targetEl).offset().top;
	$('html, body').animate({scrollTop: targetOffset}, 500, easing, callback);
}
// validate login box
function checkLogin(u,p) {
	if (!u.value || !p.value) {
		alert( "Please enter both your Email and your Password.\n\nIf you have forgotten your password, click the 'Forgot Password?' button." );
		( !u.value ) ? u.focus() : p.focus();
		return false;
	}
	return true;
}
// select all checkbox elements
function checkAll(allBox,formName) {
	activeForm = document.getElementById(formName);
	for (var i=0;i<activeForm.elements.length;i++) {
		var e = activeForm.elements[i];
		if (e.type=='checkbox' && e.disabled==false) {
			e.checked = allBox.checked;
		}
	}
	if ( allBox.checked ) {
		$('tr .checkbox').parent().parent().addClass('selected');
	} else {
		$('tr .checkbox').parent().parent().removeClass('selected');
	}
}
function updateStatus(msg,target,element,noEffect) {
	if (!target) target = '';
	if (!element) element = '.statusMessage';
	if ($(element,target).length) {
		if (msg) $(element,target).html(msg);
		if (!noEffect) {
			$(element,target).colorBlend( [{param:'background-color',colorList:['#ffeaea','#fbfddc'],isFade:false,fps:300,cycles:1},
										   {param:'border-color',colorList:['#ef7e7e','#efde7e'],isFade:false,fps:300,cycles:1} ] );
		}
		$(element,target).show();
	}
}
function hideStatus() {
	$('.statusMessage').hide();
}
function tabSwitch(tabs,sel) {
	for ( var i=0; i<tabs.length; i++ ) {
		document.getElementById('tab'+tabs[i]).className = '';
		document.getElementById('panel'+tabs[i]).style.display = 'none';
	}
	document.getElementById('tab'+sel).className = 'sel';
	document.getElementById('panel'+sel).style.display = '';
	return false;
}
function showHideElement(element,bool) {
	document.getElementById(element).style.display = (bool) ? '' : 'none';
}
// featured unit code
function cycleFU( direction, isRecursive ) {
	var step = 2;
	// check if the item on the right is gonna be the first (starting again the row) and set positions for next round
	var leftPos = ( currentItemNum + step - 1 > totalFeatured ) ? currentItemNum + step - 1 - totalFeatured : currentItemNum + step - 1;
	var rightPos = ( currentItemNum + step > totalFeatured ) ? currentItemNum + step - totalFeatured : currentItemNum + step;
	
	if ( arrFeaturedItem[leftPos] == null || arrFeaturedItem[rightPos] == null ) {
		if ( !isRecursive ) submitScrollFU( currentItemNum+1, direction );
	} else {
		jsScrollFU( direction, step, leftPos, rightPos );
		currentItemNum = rightPos;
	}
	return false;
}
function jsScrollFU( direction, step, left, right ) {
	direction = (direction == null) ? 'right' : direction;	
	$('#featuredUnit1').html("<a href=\"" + arrFeaturedItem[left]["highlightLink"] +  "\" class=\"fu\" style=\"background:url("  + staticImagePath + "images/pub/featuredunits/" + arrFeaturedItem[left]["highlightImage"] + ".jpg);\"><strong>" + arrFeaturedItem[left]["highlightTitle"] + "</strong><br />" + arrFeaturedItem[left]["highlightSubtitle"] + "</a>");
	$('#featuredUnit2').html("<a href=\"" + arrFeaturedItem[right]["highlightLink"] +  "\" class=\"fu\" style=\"background:url("  + staticImagePath + "images/pub/featuredunits/" + arrFeaturedItem[right]["highlightImage"] + ".jpg);\"><strong>" + arrFeaturedItem[right]["highlightTitle"] + "</strong><br />" + arrFeaturedItem[right]["highlightSubtitle"] + "</a>");
	return false;
}
// element: in which div to display result
function submitScrollFU( requested, direction ) {
	// set direction, default to next = scrolling to the right
	direction = (direction == null) ? 'right' : direction;
	
	// show loading
	showHideElement('featuredUnits',false);
	showHideElement('loadingFU',true);
	
	// load search results
	// offset is requested-1
	sendRequestFU( requested-1, direction );
	
	return false;
}
function sendRequestFU( requested, direction ) {
	$.ajax({
		type: 'GET',
		url: urlFU,
		data: {'requested' : requested, 'direction': direction, 'pid' : platformId, 'site' : site },
		dataType: 'script',
		success: function(){
			cycleFU('right',true);
			showHideElement('featuredUnits',true);
			showHideElement('loadingFU',false);
		}
	});
}
function revealHideText(elementShow, elementHide) {
	document.getElementById(elementShow).style.display = '';
	document.getElementById(elementHide).style.display = 'none';
	return false;
}
function insertAd(zoneId) {
   var m3_u = (location.protocol=='https:'?'https://chappel.videogamer.com/www/delivery/ajs.php':'http://chappel.videogamer.com/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write("?zoneid=" + zoneId);
   document.write('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write("&amp;exclude=" + document.MAX_used);
   document.write("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write("&context=" + escape(document.context));
   if (document.mmm_fo) document.write("&amp;mmm_fo=1");
   document.write("'><\/scr"+"ipt>");
}
function confirmMsg(msg,url) {
	if ( confirm(msg) ) {
		document.location.href=url;
		return false;
	} else {
		return false;
	}
}

/*
function addComment(itemId, bottom) {
	if ( bottom == null ) {
		// get text
		message = $('#message_'+itemId).val();	

		// get guestuser (if applicable)	
		guestName = ($('#name_'+itemId).length == 0) ? '' : $('#name_'+itemId).val();

		// get captcha info (optional)
		captchaText = ($('#captcha_text'+itemId).length == 0) ? '' : $('#captcha_text'+itemId).val();
		captchaId = ($('#captcha_id'+itemId).length == 0) ? '' : $('#captcha_id'+itemId).val();
		
		contentElement = 'dynamiccont'+itemId;
		replyElement = 'commentStatus'+itemId;
	} else {
		// get text
		message = $('#message').val();

		// get guestuser (if applicable)
		guestName = ($('#name').length == 0) ? '' : $('#name').val();

		// get captcha info (optional)
		captchaText = ($('#captcha_text').length == 0) ? '' : $('#captcha_text').val();
		captchaId = ($('#captcha_id').length == 0) ? '' : $('#captcha_id').val();

		contentElement = 'dynamiccont';
		replyElement = 'commentStatus';
		
		// itemId is not set in this case
		itemId = '';
	}

	// add params
	jQuery.extend(commentsFixParams, {'parentid': itemId, 'message': message, 'name': guestName, 'captcha_id': captchaId, 'captcha_text': captchaText});
	// send request
	sendCommentsRequest( commentsFixParams, contentElement, replyElement, 'add', itemId );
	return true;
}
function editComment(commentId) {
	// get text
	message = $('#comment_edit'+commentId).val();
	// add params
	params = {'message': message, 'commentid': commentId, 'comments_action': 'editcomment'};
	sendCommentsRequest( params, 'comment_text'+commentId, 'commentStatus'+commentId, 'edit', message );
	return false;
}
function deleteComment(commentId) {
	// add params
	params = {'comments_action': 'deletecomment', 'commentid': commentId};
	sendCommentsRequest( params, 'commentbox_'+commentId, 'commentStatus'+commentId, 'delete' );
	return false;
}
function sendCommentsRequest(params, contentelement, replyelement, action, data) {
	if ( action != 'add' ) {
		$.ajax({
			type: 'POST',
			url: urlComments,
			data: params,
			error: function(a,b,c) { alert(b); },
			success: function(msg) {
				$('#' + replyelement).html(msg);
				onSuccessHandler( action, contentelement, data );
			} });
	} else {
		allComments = $('#allcomments');
		$.ajax({
			type: 'POST',
			url: urlComments,
			dataType: 'script',
			data: params,
			error: function(a,b,c) { alert(b); },
			success: function(msg) {
				// evaluated responseText makes variables: validCaptha, newCatpchaId, newCapathaImg, postData (optionally)

				// Change captcha imgs for all forms, need to be a foreach loop
				// to make it bulletproof
				if ( isGuest == 1 ) {
					// In case of a valid post, new comment id is added into array by eval call above!
					// using newCaptchaId; & newCaptchaImg;
					for ( arrayKey in arrCommentIds ) {
						// change id amd img source
						if ($('#captcha_id'+arrCommentIds[arrayKey]).length != 0) {
							$('#captcha_id'+arrCommentIds[arrayKey]).val(newCaptchaId);
							$('#captcha_img'+arrCommentIds[arrayKey]).attr('src',newCaptchaImg);
						}
					}

					if ( validCaptcha == 1 ) {
						// append latest comment to end of list
						$(allComments).html( $(allComments).html() + postData );

						// TODO: clear form used for submitting
					} else {
						// display: invalid blahblah
						commentBox = $('#'+replyelement);
						commentBox.html(' Invalid captcha details, please try again with the new picture!');
					}
				} else {
					$(allComments).html( $(allComments).html() + postData );
				}
				onSuccessHandler( action, contentelement, data );
			} });
	}
}
function onSuccessHandler(action, contentelement, data)  {
	if ( action == 'add' || action == 'delete' ) {
		// hide comment box
		$('#'+contentelement).html('');
	} else if ( action == 'edit' ) {
		// push text back to its place
		$('#'+contentelement).html(data);
	}
}
*/

// function to reindex an array after an item has been removed
function reindexArray(array) {
	var k = 0;
	var retArray = [];
	for (var i=0,j=array.length;i<j;i++) {
		if (array[i] != null) {
			retArray[k] = array[i];
			k++;
		}
	}
	return retArray;
}

/* STATIC THREAD TRACKING AJAX FUNCTS */
function addTracking(threadId, submitting, comments) {
	if (submitting) {
		// grab data
		var emailAlert = $('#emailUpdate').is(':checked');
		// disable form controls and show loading bar
		$('#emailUpdate').attr('disabled','disabled');
		$('.threadTrack .modalFoot').html( $('#postLoadingBar').html() );
		
		// send request
		$.ajax({
			type: 'POST',
			data: {threadid: threadId, comments: (comments ? comments : ''), action: 'add'},
			url: urlThreadTracking + '?emailupdate=' + (emailAlert ? 1 : 0),
			error: function(a,b,c) { alert(b) },
			success: function(msg) {
				closeDialog('#modalDialog');
				$('#trackTopic strong').unbind('click').click( function() { return confirmRemoveTracking(threadId, true); } ).html( comments ? 'Stop Tracking' : 'Stop Tracking This Topic' );
		} });
	} else {
		openAjaxDialog(urlThreadTracking, {threadid: threadId, comments: comments}, true);
	}
	return false;
}
function confirmRemoveTracking(threadId, comments) {
	var term = comments ? 'Discussion' : 'Topic';
	confirmDialog('Stop Tracking This ' + term, 
				  'By stopping tracking, this ' + term.toLowerCase() + ' will be removed from your tracked topics page and you will no longer receive e-mail updates of new posts.',
				  'Stop Tracking', 
				  function () { return removeTracking(threadId, comments) } );
	return false;
}
function removeTracking(threadId, comments) {
	$('#modalDialog .modalFoot').html( $('#postLoadingBar').html() );
	$.ajax({
		type: 'POST',
		data: {action: 'remove', threadid: threadId},
		url: urlThreadTracking,
		error: function(a,b,c) { alert(b) },
		success: function(msg) {
			closeDialog('#modalDialog');
			$('#trackTopic strong').unbind('click').click( function() { return addTracking(threadId, false, comments); } ).html('Track ' + (comments ? 'Discussion' : 'This Topic') );
			return false;
	} });
	return false;
}

/* THUMBS */
function giveThumb(itemType, itemId, thumbType, userIdReceiver, thumbElId) {
	var thumbClicked = (thumbType) ? 'thumbUp' : 'thumbDown';
	$('#thumbUp' + thumbElId).attr('onclick','').unbind('click').click( function () { return false; } );
	$('#thumbDown' + thumbElId).attr('onclick','').unbind('click').click( function () { return false; } );
	$('#' + thumbClicked + thumbElId + ' strong').fadeOut();
	$.ajax({
		type: 'POST',
		url: urlThumbs,
		data: {type: itemType, itemid: itemId, thumbtype: thumbType, useridreceiver: userIdReceiver},
		dataType: 'script',
		error: function(a,b,c) { alert(b); },
		success: function(msg) {
			// set thumb counts
			$('#thumbUp' + thumbElId + ' strong').html('' + thumbCountUp);
			$('#thumbDown' + thumbElId + ' strong').html('' + thumbCountDown);
			$('#' + thumbClicked + thumbElId + ' strong').fadeIn('fast');
			// enable click on thumb which wasn't clicked and ensure it doesn't look disabled
			$('#' + (thumbType ? 'thumbDown' : 'thumbUp' ) + thumbElId)
				.attr('onclick','').unbind('click')
				.click( function () { giveThumb(itemType, itemId, (thumbType ? 0 : 1), userIdReceiver, thumbElId); return false; } )
				.removeClass( (thumbType ? 'thumbButDownDisabled' : 'thumbButUpDisabled') );
			// disable thumb clicked
			$('#' + thumbClicked + thumbElId).addClass( (thumbType ? 'thumbButUpDisabled' : 'thumbButDownDisabled') );
		} });
	return false;
}
/* HOMEPAGE CINEMA */
function cinemaMode(bool) {
	window.bgEl = '.modalBgDark';
	if (bool) {
		$('#logo').css( { 'position': 'absolute',
						  'z-index': 100000 } )
		$.browser.msie ? dimBg(true,false) : dimBg(true,true);
	} else {
		$.browser.msie ? dimBg(false,false) : dimBg(false,true);
	}
}
/* MODAL DIALOGS */
function confirmDialog(title, message, confirmLabel, confirmAction, noCancel) {
	// copy over confirm html to modal template
	$('#modalContents').html( $('#modalConfirm').html() );
	// set attributes
	$('#modalDialog .header').html(title);
	$('#modalDialog p').html(message);
	$('#modalDialog #modalConfirmOK').html( confirmLabel ).click( confirmAction );
	if (noCancel) $('#modalDialog #modalCancel').hide();
	// display
	openDialog('#modalDialog');
	return false;
}
function openAjaxDialog(url, data, post) {
	if ($('#modalDialog').css('display') == 'block') {
		closeDialog();
	}
	$('#modalContents').html('<h3>Loading...</h3>');
	openDialog();
	var way = (post != false) ? 'POST' : 'GET';
	$.ajax({
		type: way,
		url: url,
		data: data,
		error: function(a,b,c) { alert(b); },
		success: function(msg) {
			$('#modalContents').html(msg);
		}
	});
	return false;
}
function openDialog() {
	// dialog bg
	dimBg(true);
	// dialog
	$('#modalDialog').show();
	return false;
}
function closeDialog() {
	dimBg(false);
	$('#modalDialog').fadeOut('fast');
	return false;
}
function dimBg(bool,fade) {
	if(!window.bgEl) window.bgEl = '.modalBg';
	if (bool) {
		updateBg();
		$(window).scroll(updateBg).resize(updateBg);
		fade ? $(bgEl).fadeIn() : $(bgEl).show();
	} else {
		$(window).unbind();
		fade ? $(bgEl).fadeOut() : $(bgEl).hide();
	}
}
function updateBg(eventObject) {
	$(bgEl).css({ 'height': $(window).height(),
				  'width': $(window).width(),
				  'top': $(window).scrollTop(),
				  'left': $(window).scrollLeft()
				});
}

// modal dialog - report post
function reportAbuse(contentId, submitting, data, contentTypeId) {
	if (submitting) {
		// grab data
		var abuseURL = $('#abuseURL').val();
		var abuseNatureId = $('#abuseNatureId').val();
		var abuseDetails = $('#abuseDetails').val();
		
		// disable form controls and show loading bar
		$('#abuseNatureId').attr('disabled','disabled');
		$('#abuseDetails').attr('disabled','disabled');
		$('.report .modalFoot').html( $('#postLoadingBar').html() );
		
		// send request
		$.ajax({
			type: 'POST',
			url: urlReport + '?contentid=' + contentId + '&contenttypeid=' + contentTypeId,
			data: {url: abuseURL, natureid: abuseNatureId, details: abuseDetails},
			error: function(a,b,c) { alert(b); },
			success: function(msg) {
				$('#modalContents').html(msg);
			} });
	} else {
		openAjaxDialog( urlReport + '?contentid=' + contentId + '&contenttypeid=' + contentTypeId + '&data=' + data, false );
	}
	return false;
}

function subscribe( type, id, action, objCont ) {
	$.ajax({
		type: 'POST',
		url: urlSubscribe,
		data: {type: type, id: id, action: action},
		error: function(a,b,c) { alert(b); },
		success: function(msg) {
			$(objCont).html(msg);
		} });
	return false;
}
/* AUTO IMAGE RESIZE */
var maxWidth = 575;
$(window).ready( function(){
	$('.postBody img').each( function(){ 
		resizeImage($(this),maxWidth);
	});
});
function resizeImage(image, maxWidth) {
	if ($(image).width() > maxWidth) {
		$(image).attr('width',maxWidth).css({
			border:'3px solid #f0f0b9',
			'border-top':0
		}).before('<div class="resizeWarn">This image has been resized to fit - <a href="' + $(image).attr('src') + '" target="_blank">view original</a></div>');
	}
}
/* SHOW SPOILER BUTTON */
function showSpoiler(parent) {
	parent.find('span').show();
	parent.find('img').each( function(){ resizeImage($(this),maxWidth) });
	parent.find('.button').hide();
	return false;
}
function limitChars( textId, limit, infoId ) {
	var text = $('#'+textId).val(); 
	var textLength = text.length;
	if (textLength > limit) {
		warning = 'You cannot write more than '+limit+' characters!';
		if ( infoId != '' && infoId != null ) {
			$('#' + infoId).html(warning);
		} else {
			alert(warning);
		}
		$('#' + textId).val(text.substr(0,limit));
		return false;
	} else if ( infoId != null ) {
		$('#' + infoId).html('You have '+ (limit - textLength) +' characters left.');
		return true;
	}
}
function setCharLimit( event, limit, infoId ) {
	limit = (limit == null ? 100000 : limit);
	delay = (event.type == 'paste' ? 10 : 1);
	setTimeout(function(){limitChars(event.target.id, limit, infoId)}, delay);
}