//This function initializes bbcode
;(function( $ ){

	var $init_bbcode = $.init_bbcode = function( settings ){
		return $(window).init_bbcode( settings );
	};
	$init_bbcode.defaults = {
		form_name:		'comments_form', //form tag ID
		text_name:		'DATA[MESSAGE]', //textarea field name
		bbcode_buttons:	'.insert_bbcode' //buttons class atribute
		//target:			''
	};

	$.fn.init_bbcode = function( options ){

		return this.each(function(){
			var 
				settings = $.extend( {}, $init_bbcode.defaults, options ),
				form_name = settings.form_name, 
				text_name = settings.text_name,
				bbcode_buttons = settings.bbcode_buttons,
				context = settings.target ? this : document, // if a target is specified, then everything's relative to 'this'.
				imageTag = false,
				theSelection = false,
				clientPC = navigator.userAgent.toLowerCase(),
				clientVer = parseInt(navigator.appVersion),
				is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1)),
				is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1)),
				baseHeight,
				load_draft = false,
				upload = false,
				bbcode = new Array(),
				bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]', '[s]', '[/s]', '[tab]', '[/tab]'),
				imageTag = false,
				help_line = {
					b: 'Bold: [b]text[/b]',
					i: 'Italic: [i]text[/i]',
					u: 'Underlined: [u]text[/u]',
					q: 'Quote: [quote]text[/quote]',
					c: 'Code: [code]code[/code]',
					l: 'List: [list]text[/list]',
					o: 'Numbered list: [list=]text[/list]',
					p: 'Insert image: [img]http://image_url[/img]',
					w: 'Insert hyperlink: [url]http://url[/url] or [url=http://url]URL text[/url]',
					a: 'Insert attachment: [attachment=]filename.ext[/attachment]',
					s: 'Font color: [color=red]text[/color] You can also use this construction: color=#FF0000',
					f: 'Font size: [size=85]small text[/size]',
					e: 'List: add an element',
					d: 'Flash: [flash=width,height]http://url[/flash]'
				},
				panels = new Array(''),
				show_panel = '';
		
			//onload_functions.push('initInsertions()');
			initInsertions();			
			
			// Button binding, optional
			$.each($(settings.bbcode_buttons||[], context),function(i,obj) {
				$(obj).bind( 'click', {bbnumber: $(obj).attr("href")}, bbstyle );
			});
		
			/**
			* Shows the help messages in the helpline window
			*/
			function helpline(help)
			{
				document.forms[form_name].helpbox.value = help_line[help];
			};
		
			/**
			* Fix a bug involving the TextRange object. From
			* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
			*/
			function initInsertions()
			{ 
				var doc;
		
				if ($("#forum #" + form_name).length || $("#comments #" + form_name).length)
				{
					doc = document;
				}
				else if (opener)
				{
					doc = opener.document;
				}
				else
				{
					return;
				}
		
				var textarea = doc.forms[form_name].elements[text_name];
		
			/*	if (is_ie && typeof(baseHeight) != 'number')
				{
					textarea.focus();
					baseHeight = doc.selection.createRange().duplicate().boundingHeight;
		
					if (!document.forms[form_name])
					{
						document.body.focus();
					}
				}
			*/
			};
		
			/**
			* bbstyle
			*/
			function bbstyle(event)
			{
				var bbnumber = event.data.bbnumber;
				if (bbnumber != -1)
				{
					bbfontstyle(bbtags[Number(bbnumber)], bbtags[Number(bbnumber)+1]);
				}
				else
				{
					insert_text('[*]');
					document.forms[form_name].elements[text_name].focus();
				}
			};
		
			/**
			* Apply bbcodes
			*/
			function bbfontstyle(bbopen, bbclose)
			{
				theSelection = false;
		
				var textarea = document.forms[form_name].elements[text_name];
		
				textarea.focus();
		
				if ((clientVer >= 4) && is_ie && is_win)
				{
					// Get text selection
					theSelection = document.selection.createRange().text;
		
					if (theSelection)
					{
						// Add tags around selection
						document.selection.createRange().text = bbopen + theSelection + bbclose;
						document.forms[form_name].elements[text_name].focus();
						theSelection = '';
						return;
					}
				}
				else if (document.forms[form_name].elements[text_name].selectionEnd && (document.forms[form_name].elements[text_name].selectionEnd - document.forms[form_name].elements[text_name].selectionStart > 0))
				{
					mozWrap(document.forms[form_name].elements[text_name], bbopen, bbclose);
					document.forms[form_name].elements[text_name].focus();
					theSelection = '';
					return;
				}
		
				//The new position for the cursor after adding the bbcode
				var caret_pos = getCaretPosition(textarea).start;
				var new_pos = caret_pos + bbopen.length;
		
				// Open tag
				insert_text(bbopen + bbclose);
		
				// Center the cursor when we don't have a selection
				// Gecko and proper browsers
				if (!isNaN(textarea.selectionStart))
				{
					textarea.selectionStart = new_pos;
					textarea.selectionEnd = new_pos;
				}
				// IE
				else if (document.selection)
				{
					var range = textarea.createTextRange();
					range.move("character", new_pos);
					range.select();
					storeCaret(textarea);
				}
		
				textarea.focus();
				return;
			};
		
			/**
			* Insert text at position
			*/
			function insert_text(text, spaces, popup)
			{
				var textarea;
		
				if (!popup)
				{
					textarea = document.forms[form_name].elements[text_name];
				}
				else
				{
					textarea = opener.document.forms[form_name].elements[text_name];
				}
				if (spaces)
				{
					text = ' ' + text + ' ';
				}
		
				if (!isNaN(textarea.selectionStart))
				{
					var sel_start = textarea.selectionStart;
					var sel_end = textarea.selectionEnd;
		
					mozWrap(textarea, text, '')
					textarea.selectionStart = sel_start + text.length;
					textarea.selectionEnd = sel_end + text.length;
				}
				else if (textarea.createTextRange && textarea.caretPos)
				{
					if (baseHeight != textarea.caretPos.boundingHeight)
					{
						textarea.focus();
						storeCaret(textarea);
					}
		
					var caret_pos = textarea.caretPos;
					caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
				}
				else
				{
					textarea.value = textarea.value + text;
				}
				if (!popup)
				{
					textarea.focus();
				}
			};
		
			/**
			* Add inline attachment at position
			*/
			function attach_inline(index, filename)
			{
				insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
				document.forms[form_name].elements[text_name].focus();
			};
		
			/**
			* Add quote text to message
			*/
			function addquote(post_id, username)
			{
				var message_name = 'message_' + post_id;
				var theSelection = '';
				var divarea = false;
		
				if (document.all)
				{
					divarea = document.all[message_name];
				}
				else
				{
					divarea = document.getElementById(message_name);
				}
		
				// Get text selection - not only the post content :(
				if (window.getSelection)
				{
					theSelection = window.getSelection().toString();
				}
				else if (document.getSelection)
				{
					theSelection = document.getSelection();
				}
				else if (document.selection)
				{
					theSelection = document.selection.createRange().text;
				}
		
				if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null)
				{
					if (divarea.innerHTML)
					{
						theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
						theSelection = theSelection.replace(/<br\/>/ig, '\n');
						theSelection = theSelection.replace(/&lt\;/ig, '<');
						theSelection = theSelection.replace(/&gt\;/ig, '>');
						theSelection = theSelection.replace(/&amp\;/ig, '&');
						theSelection = theSelection.replace(/&nbsp\;/ig, ' ');
					}
					else if (document.all)
					{
						theSelection = divarea.innerText;
					}
					else if (divarea.textContent)
					{
						theSelection = divarea.textContent;
					}
					else if (divarea.firstChild.nodeValue)
					{
						theSelection = divarea.firstChild.nodeValue;
					}
				}
		
				if (theSelection)
				{
					insert_text('[quote="' + username + '"]' + theSelection + '[/quote]');
				}
		
				return;
			};
		
			/**
			* From http://www.massless.org/mozedit/
			*/
			function mozWrap(txtarea, open, close)
			{
				var selLength = txtarea.textLength;
				var selStart = txtarea.selectionStart;
				var selEnd = txtarea.selectionEnd;
				var scrollTop = txtarea.scrollTop;
		
				if (selEnd == 1 || selEnd == 2)
				{
					selEnd = selLength;
				}
		
				var s1 = (txtarea.value).substring(0,selStart);
				var s2 = (txtarea.value).substring(selStart, selEnd)
				var s3 = (txtarea.value).substring(selEnd, selLength);
		
				txtarea.value = s1 + open + s2 + close + s3;
				txtarea.selectionStart = selEnd + open.length + close.length;
				txtarea.selectionEnd = txtarea.selectionStart;
				txtarea.focus();
				txtarea.scrollTop = scrollTop;
		
				return;
			};
		
			/**
			* Insert at Caret position. Code from
			* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
			*/
			function storeCaret(textEl)
			{
				if (textEl.createTextRange)
				{
					textEl.caretPos = document.selection.createRange().duplicate();
				}
			};
		
			/**
			* Color pallette
			*/
			function colorPalette(dir, width, height)
			{
				var r = 0, g = 0, b = 0;
				var numberList = new Array(6);
				var color = '';
		
				numberList[0] = '00';
				numberList[1] = '40';
				numberList[2] = '80';
				numberList[3] = 'BF';
				numberList[4] = 'FF';
		
				document.writeln('<table cellspacing="1" cellpadding="0" border="0">');
		
				for (r = 0; r < 5; r++)
				{
					if (dir == 'h')
					{
						document.writeln('<tr>');
					}
		
					for (g = 0; g < 5; g++)
					{
						if (dir == 'v')
						{
							document.writeln('<tr>');
						}
		
						for (b = 0; b < 5; b++)
						{
							color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
							document.write('<td bgcolor="#' + color + '" style="width: ' + width + 'px; height: ' + height + 'px;">');
							document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');
							document.writeln('</td>');
						}
		
						if (dir == 'v')
						{
							document.writeln('</tr>');
						}
					}
		
					if (dir == 'h')
					{
						document.writeln('</tr>');
					}
				}
				document.writeln('</table>');
			};
		
		
			/**
			* Caret Position object
			*/
			function caretPosition()
			{
				var start = null;
				var end = null;
			};
		
		
			/**
			* Get the caret position in an textarea
			*/
			function getCaretPosition(txtarea)
			{
				var caretPos = new caretPosition();
		
				// simple Gecko/Opera way
				if(txtarea.selectionStart || txtarea.selectionStart == 0)
				{
					caretPos.start = txtarea.selectionStart;
					caretPos.end = txtarea.selectionEnd;
				}
				// dirty and slow IE way
				else if(document.selection)
				{
		
					// get current selection
					var range = document.selection.createRange();
		
					// a new selection of the whole textarea
					var range_all = document.body.createTextRange();
					range_all.moveToElementText(txtarea);
		
					// calculate selection start point by moving beginning of range_all to beginning of range
					var sel_start;
					for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
					{
						range_all.moveStart('character', 1);
					}
		
					txtarea.sel_start = sel_start;
		
					// we ignore the end value for IE, this is already dirty enough and we don't need it
					caretPos.start = txtarea.sel_start;
					caretPos.end = txtarea.sel_start;
				}
		
				return caretPos;
			};
		});
	};

})( jQuery );

//This function initializes forum
function init_forum() {
	if (!$("#forum").length)
		return;

	$("#forum").init_bbcode('create_topics_form', 'ADATA[MESSAGE]');

	function init_reply_form() {
		$("#forum").init_bbcode('reply_form_small', 'ADATA[MESSAGE]');
		$("#forum #form-comment-add input[TYPE=hidden]").attr("disabled", "disabled");
		$("#forum #form-comment-add #comment_ac, #forum #form-comment-add #comment_section, #forum #form-comment-add #comment_cat_tag").removeAttr("disabled");
	}

	$("#forum .create_topic").click(function(){
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").hide();
		$("#forum .new-topic-cancel").show();
		$("#forum #form_topics").insertAfter('#forum #forum_cat_list_end');
		$("#forum #form_topics").show();
		$("#forum").init_bbcode('create_topics_form', 'DATA[MESSAGE]');
		$("#forum #form_topics #PICT1").attr("name","DATA[PICT1]");
		location.href = '#NEWTOPIC';
		return 1;
	});
	$("#forum .non_auth").click(function(){
		alert($(this).attr("title"));
		location.href = $(this).attr("href");
	});
	$("#forum .forum_subscribe").click(function(){
		if (confirm($(this).attr("rel") + ' "' + $(this).attr("title") + '"?')) {
			$("#forum #forum_subscribe_form #subscribe_topic_id").attr("value", $(this).attr("href"));
			$("#forum #forum_subscribe_form #subscribe_message").attr("value", 1);
			$("#forum #forum_subscribe_form").submit();
		}
	});
	$("#forum .forum_unsubscribe").click(function(){
		if (confirm($(this).attr("rel") + ' "' + $(this).attr("title") + '"?')) {
			$("#forum #forum_subscribe_form #subscribe_topic_id").attr("value", $(this).attr("href"));
			$("#forum #forum_subscribe_form #unsubscribe_message").attr("value", 1);
			$("#forum #forum_subscribe_form").submit();
		}
	});
	$("#forum .new-topic-cancel").click(function(){
		$("#forum #form_topics").hide();
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").show();
	});
	$("#forum .insert_smiley").click(function(){
		insert_text($(this).attr("alt"), $(this).attr("href"));
	});
	$("#forum .insert_bbcode").click(function(){
		bbstyle($(this).attr("href"));
	});
	$("#forum #create_topics_form").submit(function(){
		//apply_rich_editor_text('create_topics_form', 'MESSAGE');
		res = generic_mandatory_check($(this).attr("name"), 'FORM_VALIDATOR', 'Validation Number')
  			  + generic_mandatory_check(form_name, '$NAME_NAME', 'Topic')
 			  + generic_mandatory_check(form_name, '$MESSAGE_NAME', '$MESSAGE_CAPTION');
 		if (res!=''){
 			alert(res);
 			return false;
 		}
 		return true;
	});
	$("#forum .clear_form").click(function(){
		var parent = $(this).parents("form").get(0);
		var parent_id = '#' + $(parent).attr("id");
		$(parent_id + " textarea").attr("value", "");
	});
	$("#forum .fold").click(function(){
		$("#forum .forum_comment_content2hide").hide();
		$("#forum .forum_attach_content2hide").hide();
		setCookie('forum_posts_opened', 0, "", "/");
	});
	$("#forum .unfold").click(function(){
		$("#forum .forum_comment_content2hide").show();
		$("#forum .forum_attach_content2hide").show();
		setCookie('forum_posts_opened', 1, "", "/");
	});
	if (!isNaN(getCookie('forum_posts_opened')))
	{
		if (getCookie('forum_posts_opened')=='1') {
			$("#forum .forum_comment_content2hide").show();
			$("#forum .forum_attach_content2hide").show();
		}
	}
	$("#forum .s-msg-cancel").click(function(){
		var parent = $(this).parents("div.forum_post").get(0);
		var parent_id = '#' + $(parent).attr("id");
		$("#forum #form-comment-edit, #form-comment-add").hide();
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").show();
	});
	$("#forum .add_new_post_button").click(function(){
		init_reply_form();
		$("#forum #form-comment-add #comment_catid").removeAttr("disabled");
		$("#forum #form-comment-add #comment_catid").attr("value", $(this).attr("rel"));
		$("#forum #form-comment-add #comment_ac").attr("value", "insert");
		$("#forum #form-comment-add #comment_MESSAGE").attr("value", "");
		$("#forum #form-comment-add").insertAfter('#forum #topic_posts_bar');
		$("#forum #form-comment-add").show();
		$("#forum #form-comment-add #PICT1").attr("name","ADATA[PICT1]");
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").hide();
		location.href = '#write-comment';
	});
	$("#forum .s-msg-reply").click(function(){
		init_reply_form();
		var parent = $(this).parents("div.forum_post").get(0);
		var parent_id = '#' + $(parent).attr("id");
		$("#forum " + parent_id + " .forum_comment_content2hide").toggle();
		$("#forum " + parent_id + " .forum_attach_content2hide").toggle();
		$("#forum #form-comment-add #comment_PARENT_ID, #forum #form-comment-add #comment_LEVEL, #forum #form-comment-add #comment_subject, #forum #form-comment-add #comment_username, #forum #form-comment-add #comment_catid").removeAttr("disabled");
		$("#forum #form-comment-add #comment_PARENT_ID").attr("value", $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add #comment_LEVEL").attr("value", parseInt($("#LEVEL_" + $(parent).attr("id")).attr("value")) + 1);
		$("#forum #form-comment-add #comment_ac").attr("value", "insert");
		$("#forum #form-comment-add #comment_MESSAGE").attr("value", "");
		$("#forum #form-comment-add").insertAfter('#forum #attach' + $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add").show();
		$("#forum #form-comment-add #PICT1").attr("name","ADATA[PICT1]");
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").hide();
		location.href = '#write-comment';
	});
	$("#forum .s-msg-quote").click(function(){
		init_reply_form();
		var parent = $(this).parents("div.forum_post").get(0);
		var parent_id = '#' + $(parent).attr("id");
		$("#forum " + parent_id + " .forum_comment_content2hide").toggle();
		$("#forum " + parent_id + " .forum_attach_content2hide").toggle();
		$("#forum #form-comment-add #comment_PARENT_ID, #forum #form-comment-add #comment_LEVEL, #forum #form-comment-add #comment_subject, #forum #form-comment-add #comment_username, #forum #form-comment-add #comment_catid").removeAttr("disabled");
		$("#forum #form-comment-add #comment_PARENT_ID").attr("value", $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add #comment_LEVEL").attr("value", parseInt($("#LEVEL_" + $(parent).attr("id")).attr("value")) + 1);
		$("#forum #form-comment-add #comment_ac").attr("value", "insert");
		$("#forum #form-comment-add #comment_MESSAGE").attr("value", "[quote=" + $("#AUTHOR_" + $(parent).attr("id")).attr("value") + "]" + $("#CODE_" + $(parent).attr("id")).attr("value") + "[/quote]");
		$("#forum #form-comment-add").insertAfter('#forum #attach' + $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add").show();
		$("#forum #form-comment-add #PICT1").attr("name","ADATA[PICT1]");
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").hide();
		location.href = '#write-comment';
	});
	$("#forum .s-msg-edit").click(function(){
		init_reply_form();
		var parent = $(this).parents("div.forum_post").get(0);
		var parent_id = '#' + $(parent).attr("id");
		$("#forum " + parent_id + " .forum_comment_content2hide").toggle();
		$("#forum " + parent_id + " .forum_attach_content2hide").toggle();
		$("#forum #form-comment-add #edit_ID").removeAttr("disabled");
		$("#forum #form-comment-add #edit_ID").attr("value", $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add #comment_ac").attr("value", "update");
		$("#forum #form-comment-add #comment_MESSAGE").attr("value", $("#CODE_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add").insertAfter('#forum #attach' + $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#forum #form-comment-add").show();
		$("#forum #form-comment-add #PICT1").attr("name","ADATA[PICT1]");
		$("#forum .s-msg-edit, #forum .s-msg-quote, #forum .s-msg-reply, #forum .add-new-topic, #forum .add_new_post_button, #forum .s-msg-del, #forum .create_topic").hide();
		location.href = '#write-comment';
	});
	$("#forum .post_header").click(function(){
		var parent = $(this).parents("div.forum_post").get(0);
		var parent_id = $(parent).attr("id");
		$("#forum #comment" + $("#ID_" + parent_id).attr("value")).toggle();
		$("#forum #attach" + $("#ID_" + parent_id).attr("value")).toggle();
	});

}

function init_lightbox() {
	$('.lightbox').lightBox();
}


/////////////////////////////////////
///Mandatory fields validation
////////////////////////////////////

function assign_form_validation(){


	if (!$("FORM:has(INPUT.mandatory)").length)
		return;
	$("FORM:has(INPUT.mandatory), FORM:has(SELECT.mandatory), FORM:has(TEXTAREA.mandatory)").submit(function(){
		$(this).find("INPUT, SELECT, TEXTAREA").removeClass('mandatory_selected');
		var msg = '';

		if ($(this).find("INPUT.mail, INPUT#EMAIL").length){
			email_filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

			$(this).find("INPUT.mail, INPUT#EMAIL").each(function(){
				if(($(this).attr('value')!='')&& !email_filter.test($(this).attr('value'))){
					$(this).addClass('mandatory_selected');
					if (msg=='')
						msg = 'E-mail введен неверно';
				}
			});
		}

		if (($(this).find("INPUT[TYPE=password]").length>1) &&
			$(this).find("INPUT#PASSWORD1").length &&
			$(this).find("INPUT#PASSWORD2").length &&
			($(this).find("INPUT#PASSWORD1").attr('value') != $(this).find("INPUT#PASSWORD2").attr('value'))
		){

			$(this).find("INPUT#PASSWORD1").addClass('mandatory_selected');
			$(this).find("INPUT#PASSWORD2").addClass('mandatory_selected');
			if (msg) msg+='<br>';
			msg+= 'Пароли не совпадают, попробуйте ещё раз...';
		}

		if ($(this).find("INPUT.mandatory[value=''], SELECT.mandatory[value=''], TEXTAREA.mandatory[value='']").length){
			if (msg) msg+='<br>';
			msg+= 'Заполние поля, обязательные для ввода';
		}
		if (msg=='')
			return true;
		$(this).find("INPUT.mandatory[value=''], SELECT.mandatory[value=''], TEXTAREA.mandatory[value='']").addClass('mandatory_selected');
		$(this).find("INPUT.mandatory[value='']:first, SELECT.mandatory[value='']:first, TEXTAREA.mandatory[value='']:first").focus();
		if (!$(this).find("DIV#errmessage").length){
			$(this).prepend('<div ID="errmessage" class="error_message">'+msg+'</div>');
		}
		$(this).find("DIV#errmessage").show();
		$(this).find("DIV#errmessage").html(msg);

		return false;
	});
	$("TD.form_title + TD.form_field:has(INPUT.mandatory)").prev().find("SPAN").text('*').css('color','red');
	$("TD.form_title + :not(TD.form_field:has(INPUT.mandatory))").prev().find("SPAN").html('&nbsp; ').css('padding-left','2px');

}

function list_news(selector) {
	var els = new Array();
	var y = 0;
	$.each($(selector),function(i, obj){
		$(obj).hide("slow");
		els[y] = obj;
		y++;
	});
	$(els[Math.floor(Math.random()*els.length)]).show("slow");
	setTimeout('list_news("' + selector + '")', 5000);
}

function init_news_listing() {
	$("#NEWS_LINE div:first").show();
	if ($("#NEWS_LINE div").length > 1)
		setTimeout('list_news("#NEWS_LINE div:not(#NEWS_LINE div div)")', 5000);
}

function init_comments() {
	jQuery(function( $ ){
		$("#comments").init_bbcode({
			form_name: 'contact_form7', 
			text_name: 'DATA[COMMENTS]',
			bbcode_buttons:	'.insert_bbcode'
		});
	});
}

//main jquery hook-up function
$(document).ready(
	function() {
		//Let's init lightbox
		init_lightbox();
		//Let's init forum
		init_forum();
		assign_form_validation();
		init_news_listing();
		init_comments();
	}
);