function init_forum() {
	if (!$("#forum").length)
		return;
		
	/**
	* bbCode control by subBlue design [ www.subBlue.com ]
	* Includes unixsafe colour palette selector by SHS`
	*/
	
	// Startup variables
	var imageTag = false;
	var theSelection = false;
	
	// Check for Browser & Platform for PC & IE specific bits
	// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
	var clientVer = parseInt(navigator.appVersion); // Get browser version
	
	var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
	var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
	
	var baseHeight;
	//onload_functions.push('initInsertions()');
	
	/**
	* 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)
		{
			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(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;
	}
	
	function init_form () {
		initInsertions();
	}
	
	function init_reply_form() {
		form_name = 'reply_form_small';
		text_name = '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");
		init_form();
	}
		
	var form_name = 'create_topics_form';
	var text_name = 'ADATA[MESSAGE]';
	var load_draft = false;
	var upload = false;

	// Define the bbCode tags
	var bbcode = new Array();
	var 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]');
	var imageTag = false;

	// Helpline messages
	var 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]'
			}

	var panels = new Array('');
	var show_panel = '';

	$("#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();
		form_name = 'create_topics_form';
		text_name = 'DATA[MESSAGE]';
		init_form();
		$("#forum #form_topics #PICT1").attr("name","DATA[PICT1]");
		location.href = '#NEWTOPIC';
		return 1;
	});
	$("#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_comments() {
	if (!$("#comments").length)
		return;
	jQuery(function( $ ){
		$("#comments").init_bbcode({
			form_name: 'COMMENTS_FORM', 
			text_name: 'DATA[COMMENT]',
			bbcode_buttons:	'.insert_bbcode'
		});
	});
	$(".s-msg-reply").click(function(){
		var parent = $(this).parents("div.info").get(0);
		var parent_id = '#' + $(parent).attr("id");
		$("#COMMENT").html('[quote=' + $("#AUTHOR_" + $(parent).attr("id")).text() + ']' + $("#SOURCE_" + $(parent).attr("id")).attr("value") + '[/quote]');
		$("#comment_PARENT_ID").attr("value", $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#comment_LEVEL").attr("value", parseInt($("#LEVEL_" + $(parent).attr("id")).attr("value") + 1));
		$("#comment_PARENT_ID").removeAttr("disabled");
		$("#comment_LEVEL").removeAttr("disabled");
		$("#form-comment-add").insertAfter('#comment' + $("#ID_" + $(parent).attr("id")).attr("value"));
		$("#form-comment-add").show();
		return false;
	});
	$(".s-msg-add").click(function(){
		$("#comment_PARENT_ID").attr("disabled", "disabled");
		$("#comment_LEVEL").attr("disabled", "disabled");
		$("#comment_PARENT_ID").attr("value", "");
		$("#comment_LEVEL").attr("value", "");
		$("#COMMENT").html("");
		$("#form-comment-add").insertAfter('#comments_form_start_position');
		$("#form-comment-add").show();
		return false;
	});
}

function init_lightbox() {
	$.each($("a"),function(i,obj){
		if ($(obj).attr('rel') == 'lightbox')
			$(obj).lightBox();
	});
	$(".lightbox").lightBox();
}

function init_after_login_return() {
	$('.after_login_return').click(function() {
		//alert("You should login");
		setCookie('after_login_return_url',document.location.href,'','/');
		//location.href="/login/";
	});
}

function init_after_logout_return() {
	$('.after_logout_return').click(function() {
		//alert("You should login");
		setCookie('after_logout_return_url',document.location.href,'','/');
		//location.href="/login/";
	});
}

function init_non_auth_message() {
	$(".non_auth").click(function(){
		alert($(this).attr("title"));
		location.href = $(this).attr("href");
	});
}

function init_gallery() {
	//if (typeof(serialScroll) != "undefined") {
		jQuery.easing.easeOutQuart = function (x, t, b, c, d) {
			return -c * ((t=t/d-1)*t*t*t - 1) + b;
		};
		jQuery(function( $ ){
			$('div.gallery_full_list').serialScroll({
				//target:'.gallery_full_list',
				items:'li', // Selector to the items ( relative to the matched elements, '#sections' in this case )
				prev:'.gallery_nav_prev',// Selector to the 'prev' button (absolute!, meaning it's relative to the document)
				next:'.gallery_nav_next',// Selector to the 'next' button (absolute too)
				axis:'x',// The default is 'y' scroll on both ways
				//navigation:'#greybox_m img.nav_first, #navigation_hidden a, #greybox_m img.nav_last',
				duration:700,// Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
				force:true, // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
				
				//queue:false,// We scroll on both axes, scroll both at the same time.
				//event:'click',// On which event to react (click is the default, you probably won't need to specify it)
				//stop:false,// Each click will stop any previous animations of the target. (false by default)
				//lock:true, // Ignore events if already animating (true by default)		
				//start: 0, // On which element (index) to begin ( 0 is the default, redundant in this case )		
				//cycle:true,// Cycle endlessly ( constant velocity, true is the default )
				//step:1, // How many items to scroll each time ( 1 is the default, no need to specify )
				//jump:false, // If true, items become clickable (or w/e 'event' is, and when activated, the pane scrolls to them)
				//lazy:false,// (default) if true, the plugin looks for the items on each event(allows AJAX or JS content, or reordering)
				//interval:1000, // It's the number of milliseconds to automatically go to the next
				//constant:true, // constant speed
				
				onBefore:function( e, elem, $pane, $items, pos ){
					 //those arguments with a $ are jqueryfied, elem isn't.
					e.preventDefault();
					if( this.blur )
						this.blur();
				},
				onAfter:function( elem ){
					//'this' is the element being scrolled ($pane) not jqueryfied
				}
			});
		});
	//}
}

function init_confirmations() {
	$(".confirmation").dialog({
		bgiframe: true,
		resizable: false,
		height: 350,
		autoOpen: false,
		modal: true,
		overlay: {
			backgroundColor: '#000',
			opacity: 0.5
		},
		buttons: {
			'I agree to terms and conditions': function() {
				$("#" + $(this).attr("rel")).attr('checked','checked');
				$(this).dialog('close');
			},
			Cancel: function() {
				$("#" + $(this).attr("rel")).removeAttr('checked');
				$(this).dialog('close');
			}
		}
	});
	$(".open_confirmation")
		.css({'cursor':'pointer'})
		.click(function() {
			$("#" + $(this).attr("rel")).dialog('open');
			return false;
		});
}

function init_msgbox() {
	$(".msgBox").dialog({
		height: 350,
		width: 600,
		autoOpen: false
	});
	$(".open_msgBox")
		.css({'cursor':'pointer'})
		.click(function() {
			$("#" + $(this).attr("rel")).dialog('open');
			return false;
		});
}

function init_slideshow() {
	$VisualLightBoxParams$ = {autoPlay:true,borderSize:39,enableSlideshow:true,overlayOpacity:0,startZoom:true};
	init_lightslideshow();
}

function init_on_focus_replace() {
	$('input.on_focus_replace')
		.focus(function() {
			$(this).attr('value',($(this).attr('value')==$(this).attr('title')?'':$(this).attr('value')));
		})
		.blur(function() {
			$(this).attr('value',($(this).attr('value')==''?$(this).attr('title'):$(this).attr('value')));
		});
	$.each($('input.on_focus_replace'),function(i,obj){
		$(obj).attr('value',($(obj).attr('value')==''?$(obj).attr('title'):$(obj).attr('value')));
	});
		
}

function init_fading_tabs() {
	$.each($('.tabs_listing'),function(i,obj){
		$(obj).innerfade({
			speed: 2000,
			timeout: 4000,
			containerheight: $(obj).css("height")
		});
	});

}

function correct_zindex4menu(id4_zindex_correction){
	$('#'+id4_zindex_correction).css({'z-index':'20'});
	$('#'+id4_zindex_correction +' li').css({'z-index':'20'});
	$('#'+id4_zindex_correction +' li ul').css({'z-index':'30'});
	$('#'+id4_zindex_correction +' li ul li').css({'z-index':'30'});
}


function get_parent_div_of_class(element, class_name){
	while ($(element).parent().length){
		element = $(element).parent();
		if ($(element).hasClass(class_name))
			break;
	}
	/*while(pp = $(element).parent().length){
		
	}*/
	return element;
}



/////////////////////////////////////
///Mandatory fields validation
////////////////////////////////////

function init_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');
		$(this).find("DIV.form_err_message").hide();
		
		$("INPUT[name='FORM_VALIDATOR']").addClass('mandatory');
		
		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 = 'Entered e-mail is wrong';
				}
			});
		}

		$(this).find("DIV.form_err_message SPAN.form_email_error").hide();
		if (msg!='')
			$(this).find("DIV.form_err_message SPAN.form_email_error").show();
		

		$(this).find("DIV.form_err_message SPAN.form_password_error").hide();		
		$(this).find("DIV.form_err_message SPAN.form_mandatory_error").hide();		
		
		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');
			$(this).find("DIV.form_err_message SPAN.form_password_error").show();
			if (msg) msg+='<br>';
			msg+= 'Пароли не совпадают, попробуйте ещё раз...';
		}

		if ($(this).find("INPUT.mandatory[value=''], SELECT.mandatory[value=''], TEXTAREA.mandatory[value='']").length){
			if (msg) msg+='<br>';
			msg+= 'Заполние поля, обязательные для ввода';
			$(this).find("DIV.form_err_message SPAN.form_mandatory_error").show();
		}
		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.form_err_message").length){
			$(this).prepend('<div class="form_err_message error_mesage">'+msg+'</div>');
		}
		$(this).find("DIV.form_err_message").show();
		if ($(this).find("DIV.form_err_message").html()=='')
			$(this).find("DIV.form_err_message").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');
}



//main jquery hook-up function
$(document).ready(
	function() {
		init_form_validation();
		init_lightbox();
		init_comments();
		init_forum();
		init_after_login_return();
		init_after_logout_return();
		init_non_auth_message();
		init_fading_tabs();
		//Patch, that fixes z-index issue. Must be after init_fading_tabs
		correct_zindex4menu('menu_dd');
		init_gallery();
		init_confirmations();
		init_msgbox();
		init_slideshow();
		init_on_focus_replace();
	}
);
