﻿var Service = {
	root_domain: '',

	login: function(_error) {
		W3Modal.dialogLogin(_error);
	},
	
	isLogin: function() {
		if ($.cookie('s_us_id'))
			return true;
   	else 
			return false;
	},
	
	isOwnerDomain: function(){
		var name = $.cookie('s_us_name');
		var url = document.location.href;
		if(url.indexOf('/user/' + name) > 0)
			return true;
		else
			return false;
	},
	
	loginRequired: function ()
	{
		if (!Service.isLogin()) {
	  		Service.login();
			return false;
	  	}
		else
			return true;
	},
	
	isSiteAdmin: function() {
		if (typeof site_admins != 'undefined')
		{
			if (jQuery.inArray(parseInt($.cookie('s_us_id')), site_admins) > -1)
				return true;				
		}
		return false;
	},

	AnchorAction: function (_config)
	{
		url = window.location.href;
		reg = new RegExp(/^.*#(.*)$/g);
		reg_dest = reg.exec(url);
		regInt = new RegExp(/^[0-9]/);

		if (reg_dest != null && !regInt.test(reg_dest[1]))
		{
			args = reg_dest[1].split("_");
			action = args[0].replace(/[^a-z0-9]/gi, '');
			param = (typeof args[1] == 'undefined') ? null : args[1].replace(/[^a-z0-9\-:,\[\]]/gi, '');

			if (action)
			{
				exec = "if (_config." + action + ") _config." + action + "(param)";
				eval(exec);
			}
		}
	},
	
	viewMore: function(a, hiddenTxt, visibleTxt, element) {
		
		var elementObj = $(element);
		if(elementObj.is(':hidden')) {
			elementObj.show('slow');$(a).text(visibleTxt);
		}
		else {
			elementObj.hide('slow');$(a).text(hiddenTxt);
		}
	},
	
	getUserNaviHTML: function()
	{
		var html = ''; 
		
		if (this.isLogin()) 
		{
			html += '<style>';
			html += '#right-navi-default {display:none}';
			html += '</style>';
		
			html += '<div id="right-navi-user">';
			
				html += '<div id="service-status-user">';
					html += '<div class="btn-logout">';
						html += '<a href="http://www.' + Service.root_domain + '/' + Service.lang + '/logout/?burl=http://www.' + this.root_domain + '" rel="nofollow">' + LANG.GLOBAL.LOGOUT + '</a>';
					html += '</div>';
					html += '<div class="avatarbox-g-100">';
						html += '<img src="' + unescape($.cookie('s_us_avatar')) + '" alt="" />';
					html += '</div>';
					html += '<div class="nick">';
						html += unescape($.cookie('s_us_nick')).replace(/\+/g,' ');
					html += '</div>';
				html += '</div>';
				html += '<ul id="right-navi">';
					html += '<li id="su-profile">';
						html += '<a href="javascript:void(0);" onclick="$(\'#right-navi-profile\').slideToggle(\'slow\');">' + LANG.GLOBAL.MENU_RIGHT_PROFILE + '</a>';
						html += '<ul id="right-navi-profile"';
							if (Service.section == 'user' || (Service.section == 'user-homepage' && Service.isOwnerDomain()))
								html += ' style="display:block"';
						html += '>';
							html += '<li><a ' + ((Service.mod == 'user' && Service.isOwnerDomain()) ? 'class="active"' : '') + 'href="/user/' + $.cookie('s_us_name') + '">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_HOME + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'profile-contents') ? 'class="active"' : '') + 'href="/' + Service.lang + '/profile-contents/">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_CONTENTS + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'profile-favorites') ? 'class="active"' : '') + 'href="/' + Service.lang + '/profile-favorites/">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_FAVORITES + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'profile-groups') ? 'class="active"' : '') + 'href="/' + Service.lang + '/profile-groups/">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_GROUPS + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'profile-change-password') ? 'class="active"' : '') + 'href="/' + Service.lang + '/profile-change-password/">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_PASSWORD_CHANGE + '</a></li>';							
							html += '<li><a ' + ((Service.mod == 'profile-settings') ? 'class="active"' : '') + 'href="/' + Service.lang + '/profile-settings/">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_SETTINGS + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'profile-notifications') ? 'class="active"' : '') + 'href="/' + Service.lang + '/profile-notifications/">' + LANG.GLOBAL.MENU_RIGHT_PROFILE_NOTIFICATIONS + '</a></li>';
						html += '</ul>';
					html += '</li>';
					html += '<li id="su-mail">';
						html += '<a href="javascript:void(0);" onclick="$(\'#right-navi-mail\').slideToggle(\'slow\');">' + LANG.GLOBAL.MENU_RIGHT_MAIL;
						if (parseInt($.cookie('s_us_newmails')))
							html += ' <span style="color:red;font-size:9px;vertical-align: super;">' + LANG.GLOBAL.NEW_MAIL + '</span>';
						html += '</a>';
						html += '<ul id="right-navi-mail"';
							if (Service.section == 'profile-mail')
								html += ' style="display:block"';
						html += '>';
							html += '<li><a ' + ((Service.mod == 'mail-inbox') ? 'class="active"' : '') + 'href="/' + Service.lang + '/mail-inbox/">' + LANG.GLOBAL.MENU_RIGHT_MAIL_INBOX + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'mail-sent') ? 'class="active"' : '') + 'href="/' + Service.lang + '/mail-sent/">' + LANG.GLOBAL.MENU_RIGHT_MAIL_SENT + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'mail-trash') ? 'class="active"' : '') + 'href="/' + Service.lang + '/mail-trash/">' + LANG.GLOBAL.MENU_RIGHT_MAIL_TRASH + '</a></li>';
							html += '<li><a ' + ((Service.mod == 'mail-new') ? 'class="active"' : '') + 'href="/' + Service.lang + '/mail-new/">' + LANG.GLOBAL.MENU_RIGHT_MAIL_NEW + '</a></li>';
						html += '</ul>';
					html += '</li>';
					html += '<li id="su-language">';
						html += '<select id="right-navi-language-select" name="language" onchange="Service.changeLanguage($(\'option:selected\', this).attr(\'value\'));">';
							for (var lang_code in LANG_LIST)
							{
								var selected = (lang_code == Service.lang) ? ' selected="selected"' : '';
								html += '<option value="' + lang_code + '"' + selected  + '>' + LANG_LIST[lang_code] + '</option>';
							}
						html += '</select>';
						html += '<div class="cb"></div>';
					html += '</li>';
					html += '<li id="su-forum"><a ' + ((Service.mod == 'forum') ? 'class="active"' : '') + 'href="/' + Service.lang + '/forum/">' + LANG.GLOBAL.MENU_RIGHT_FORUM + '</a></li>';
					html += '<li id="su-chat"><a href="#" onclick="Service.chatPopover();return false;">' + LANG.GLOBAL.MENU_RIGHT_CHAT + '</a></li>';
					html += '<li id="su-contact"><a ' + ((Service.mod == 'contact') ? 'class="active"' : '') + 'href="/' + Service.lang + '/contact/">' + LANG.GLOBAL.MENU_RIGHT_CONTACT + '</a></li>';
				html += '</ul>';
			html += '</div>'
			html += '<img src="' + Service.static_url + 'gfx/r-spacer.gif" alt="" />';
		}
		return html;
	},
	
	changeLanguage: function(_lang)
	{
		var url = document.location.href;
		var index_slash = url.indexOf('/', 7);

		var _bl = url.substr(0,index_slash + 1);
		var _al = url.substr(index_slash + 3);
		
		if (!_al) {
			url = _bl;
		}
		else {
			url = _bl + _lang + _al;
		}
		
		$.cookie('s_language', _lang, { expires: 365, path: '/' });
		
		if (url.indexOf('index') >= 0)
			url = '/';
		
		document.location.href = url;
	},
	
	changeLanguageAutoOnStart: function(){
		
		if (!$.cookie('s_language')) {

			var langs = ['pl', 'en', 'de', 'es', 'fr', 'gr', 'it', 'is', 'no'];
			var NavigatorLang = Service.getNavigatorLang();
			
			if (langs.indexOf(NavigatorLang) >= 0) {
				Service.changeLanguage(NavigatorLang);
			}

		}
	},
	
	
	getNavigatorLang: function() {
		var lang;
		if (typeof navigator.userLanguage != "undefined") {
			return navigator.userLanguage.toLowerCase().substr(0,2);
		} else if (typeof navigator.language != "undefined") {
			return navigator.language.toLowerCase().substr(0,2);
		}else{
			return false
		}
	},
	
	addComment: function(_selector, _type, _item_oid, _default_title, _rating_comment_oid)
	{
		if (typeof _default_title == 'undefined')
			_default_title = '';

		if (typeof _rating_comment_oid == 'undefined')
			_rating_comment_oid = 0;

		if (!Service.isLogin()) {
	  		Service.login();
			return false;
	  	}
		
		if (_type == 'GT') {
		  	if (!Service.isGroupMemberAll()) {
		  		W3Modal.dialog(LANG.GLOBAL.ALERT_MEMBER_REQUIRED_HEADER, LANG.GLOBAL.ALERT_MEMBER_REQUIRED, {
		  			alert: true
		  		});
				return false;
		  	}
	  }

		if (!$(_selector).is(':hidden')) {
	  		$(_selector).slideUp('slow');
	  		return;
		}
		
		var form_id = 'comment_form' + '-' + _selector.replace('#', '');
		
		var html = '';
		html += '<form method="post" action="/' + Service.lang + '/comment-save/" id="' + form_id + '">';
		html += '<input type="hidden" name="type" value="' + _type + '" />';
		html += '<input type="hidden" name="item_oid" value="' + _item_oid + '" />';
		html += '<input type="hidden" name="rating_comment_oid" value="' + _rating_comment_oid + '" />';
		html += '<div class="form-item">';
			html += '<div class="form-item-element">';
					html += '<div class="form-item-body"><input class="full bg-245" type="text" name="title" id="nick" value="' + _default_title + '" /></div>';
				html += '</div>';
				html += '<label class="required">' + LANG.GLOBAL.COMMENTS_INPUT_TITLE + '</label>';
				html += '<br class="cb" />';
				html += '<div class="form-item-element">';
					html += '<div class="form-item-body-full">';
						html += '<textarea rows="6" cols="60" class="bg-400_100" name="body"></textarea>';
					html += '</div>';
				html += '</div>';
				html += '<label class="required">' + LANG.GLOBAL.COMMENTS_INPUT_BODY + '</label>';
				html += '<br class="cb" />';
			html += '</div>';
			
			html += '<div class="btn-sza-aplus">';
				html += '<input type="submit" name="submit" onclick="return ($(\'#' + form_id + '\').valid());"value="' + LANG.GLOBAL.BUTTON_ADD + '" />';
			html += '</div>';		
			html += '<br class="cb" />'
			html += '<br />';	
		html += '<form />';		
					
		$(_selector).html(html).hide().slideDown('slow');
		
		$('#' + form_id).validate({
			rules: {
				title: {
					required: true
					},
				body: {
					required: true
					}
				},
			messages: {
				title: LANG.GLOBAL.INPUT_REQUIRED,
				body: LANG.GLOBAL.INPUT_REQUIRED
				}
			});

 		$('#' + form_id).ajaxForm({
			dataType:  'json', 
			success:	function(_data) {
				if(_data.error) { 
					$(_selector).html('<div class="comment-save-result">' + LANG.GLOBAL.COMMENTS_SAVE_ERROR + '</div>');
				}
				else {
					$(_selector).html('<div class="comment-save-result">' + LANG.GLOBAL.COMMENTS_SAVE_OK + '</div>');
				}
				$('#' + form_id + ' :submit').removeAttr("disabled");
			},
			beforeSubmit: function(_formData, _jqForm, _options) {
					$('#' + form_id + ' :submit').attr("disabled","disabled");
			}
		});
	},
	
	reportAbuse: function(type, record, link) {

		var abuse_popover = $('<div />');
				
		if (!link) {
			link = window.location.href.replace(/#.*$/gi, '');
		}
		else {
			var reg = new RegExp("^#");
			if (reg.test(link)) {
				link = window.location.href.replace(/#.*$/gi, '') + link;
			}			
		}
		
		var html = '';
		
		html += '<form id="abuse-form" method="post" action="/' + Service.lang + '/abuse-save/">';
			html += '<input type="hidden" name="abuse-burl" value="' + window.location.href.replace(/#.*$/gi, '') + '" />';
			html += '<input type="hidden" name="abuse-type" value="' + type + '" />';
			html += '<input type="hidden" name="abuse-record" value="' + record + '" />';
			html += '<input type="hidden" name="abuse-link" value="' + link + '" />';
			html += '<label for="abuse-content">' + LANG.GLOBAL.ABUSE_REASON + '</label>';
			html += '<hr />';
			html += '<textarea class="bg-340_120" type="text" name="abuse-content" id="abuse-content" cols="30 "rows="7"></textarea>';
			html += '<hr />';
			html += '<div class="btn-nie-kropka">';
				html += '<input type="submit" value="' + LANG.GLOBAL.BUTTON_SEND + '" onclick="return ($(\'#abuse-form\').valid());" />';
			html += '</div>';
			html += '<div class="btn-sza-krzyzyk">';
				html += '<input class="jqmClose" type="button" value="' + LANG.GLOBAL.BUTTON_CANCEL + '"/>';
			html += '</div>';
		html += '<form />';		
		html += '<br class="cb" /><br class="cb" />';		
		
		$(html).appendTo(abuse_popover);
		$('#abuse-form', abuse_popover).validate({
			rules: {
				'abuse-content': {
					required: true
				}
			},
			messages: {
				'abuse-content': LANG.GLOBAL.INPUT_REQUIRED
			}
		});
		
 		$('#abuse-form', abuse_popover).ajaxForm({
			dataType:  'json', 
			success:	function(_data) {
				if(_data.error) {
					$('.jqmWindow').jqmHide();
					W3Modal.dialog(LANG.GLOBAL.ABUSE_HEADER, LANG.GLOBAL.ABUSE_ERROR, {alert: true}); 
				}
				else {
					$('.jqmWindow').jqmHide();
					W3Modal.dialog(LANG.GLOBAL.ABUSE_HEADER, LANG.GLOBAL.ABUSE_SAVED, {alert: true});
				}
				$('#abuse-form :submit').removeAttr("disabled");
			},
			beforeSubmit: function(_formData, _jqForm, _options) {
					$('#abuse-form :submit').attr("disabled","disabled");
			}
		});
		W3Modal.dialog(LANG.GLOBAL.ABUSE_HEADER, abuse_popover, {alert: false});
	},
	
	getRatingStarsHTML: function(_type, _oid)
	{
		if (Service.ratingCheckCookie(_type, _oid))
			return '';

		var html = '';
		html += '<div id="rating">';
			html += '<div class="rating-bg">';
				html += '<div class="rating-bg2">';
					html += '<div id="rating-vote" style="float:left">';
						html += '<input type="radio" name="rate" value="1" />';
						html += '<input type="radio" name="rate" value="2" />';
						html += '<input type="radio" name="rate" value="3" />';
						html += '<input type="radio" name="rate" value="4" />';
						html += '<input type="radio" name="rate" value="5" />';	
					html += '</div>';
				html += '</div>';
				html += '<div class="add-vote-label" style="float:right">' + LANG.GLOBAL.RATING_VOTE + '</div>'; 
			html += '</div>';
		html += '</div>';
		html += '<br class="cb" />';
		html += '<hr />';
		
		this.rating_type 	= _type;
		this.rating_oid 	= _oid;
		this.rating_value = 0;

		$().ready(function() {
			$("#rating-vote").stars({
				cancelShow: false,
				oneVoteOnly: true,
				callback: function(ui, type, value) {
					if (!Service.isLogin()){
						$('#rating-vote .ui-stars-star').removeClass('ui-stars-star-on');
						$('#rating-vote .ui-stars-star').removeClass('ui-stars-star-disabled');
						document.location = '#';
						Service.login();
						return false;
					}
					Service.rating_value = value;
					
					jQuery.post('/' + Service.lang +'/rating-save/', {
						type : Service.rating_type,
						item_oid : Service.rating_oid,
						rate: Service.rating_value
						},
						function(data){
							if(!data.error && data.comment_id){
								$('#rating .add-vote-label').hide();
								$('<br class="cb" /><br /><div class="btn-sza-aplus"><a href="#comment-add" onclick="Service.addComment(\'#comment-add\', \'' + Service.rating_type + '\', ' + Service.rating_oid + ', \'' + LANG.GLOBAL.RATING_VOTE_NOTE_TITLE + '\', ' + data.comment_id + ');">' + LANG.GLOBAL.RATING_VOTE_BUTTON_NOTE + '</a></div>').appendTo($('#rating'));
								Service.ratingSaveCookie(Service.rating_type, Service.rating_oid);
							}
						},
						"json"
					);
				}
			});
		});
		
		return html;
	},
	
	ratingCheckCookie: function(_type, _oid)
	{
		var value = _type + ':' + _oid;
		
		var ratings = $.cookie('ratings');
		if (ratings)
		{
			var ratings_arr = ratings.split(',');
			if (ratings_arr.indexOf(value) >= 0)
			{
				return true;
			}
		}
		return false;
	},

	ratingSaveCookie: function(_type, _oid)
	{
		var value = _type + ':' + _oid;
		
		var ratings = $.cookie('ratings');
		if (ratings)
		{
			var ratings_arr = ratings.split(',');
			if (ratings_arr.indexOf(value) < 0)
			{
				ratings_arr.push(value);
			}
			cookie_val = ratings_arr.join(",");
		}
		else
		{
			cookie_val = value + ',';
		}
		$.cookie('ratings', cookie_val, { expires: 1, path: '/' });
		return true;
	},
	
	viewPoem: function (_translationrevision_oid)
	{
		var html = '<div id="popover-content"><div class="ajax-loader-big"></div></div>'
		W3Modal.dialog(LANG.GLOBAL.TRANSLATION_COMPARE_HEADER, html, {ext_class: 'wide'}); 
		
		jQuery.post('/' + Service.lang +'/translation-compare-ajax/', {
			item_oid : _translationrevision_oid
			},
			function(data){
				$('#popover-content').html(data);
			},
			"html"
		);
	},

	translatePoem: function (_poem_oid)
	{
		if (!Service.isLogin()) {
	  		Service.login();
			return false;
	  	}
		
		var html = '<div id="popover-content"><div class="ajax-loader-big"></div></div>'
		W3Modal.dialog(LANG.GLOBAL.TRANSLATION_TRANSLATE_HEADER, html, {ext_class: 'wide', modal: true }); 
		
		jQuery.post('/' + Service.lang +'/translation-ajax/', {
			item_oid : _poem_oid
			},
			function(data){
				$('#popover-content').html(data);
			},
			"html"
		);
	},
	
	addThread: function(_selector, _item_oid, _lang_id, _section)
	{
		if (typeof _lang_id == 'undefined')
			_lang_id = '';

		if (typeof _section == 'undefined')
			_section = 'forum';

		if (!Service.isLogin()) {
	  		Service.login();
			return false;
	  	}
		
		if (_section == 'groups') {
		  	if (!Service.isGroupMemberAll()) {
		  		W3Modal.dialog(LANG.GLOBAL.ALERT_MEMBER_REQUIRED_HEADER, LANG.GLOBAL.ALERT_MEMBER_REQUIRED, {
		  			alert: true
		  		});
				return false;
		  	}
	  	}
	  
		if (!$(_selector).is(':hidden')) {
	  		$(_selector).slideUp('slow');
	  		return;
		}

		var form_id = 'comment_form' + '-' + _selector.replace('#', '');
		
		var html = '';
		if (_section == 'forum')
			html += '<form method="post" action="/' + Service.lang + '/thread-save/" id="' + form_id + '">';
		else
			html += '<form method="post" action="/' + Service.lang + '/group-thread-save/" id="' + form_id + '">';
			
		html += '<input type="hidden" name="item_oid" value="' + _item_oid + '" />';
		if (_lang_id)
			html += '<input type="hidden" name="lang_id" value="' + _lang_id + '" />';
		html += '<div class="form-item">';
			html += '<div class="form-item-element">';
					html += '<div class="form-item-body"><input class="full bg-245" type="text" name="title" id="nick" value="" /></div>';
				html += '</div>';
				html += '<label class="required">' + LANG.GLOBAL.THREADS_INPUT_TITLE + '</label>';
				html += '<br class="cb" />';
				html += '<div class="form-item-element">';
					html += '<div class="form-item-body-full">';
						html += '<textarea rows="6" cols="60" class="bg-400_100" name="body"></textarea>';
					html += '</div>';
				html += '</div>';
				html += '<label class="required">' + LANG.GLOBAL.THREADS_INPUT_BODY + '</label>';
				html += '<br class="cb" />';
			html += '</div>';
			
			html += '<div class="btn-sza-aplus">';
				html += '<input type="submit" name="submit" onclick="return ($(\'#' + form_id + '\').valid());"value="' + LANG.GLOBAL.BUTTON_ADD + '" />';
			html += '</div>';		
			html += '<br class="cb" />'
			html += '<br />';	
		html += '<form />';		

		$(_selector).html(html).hide().slideDown('slow');
		
		$('#' + form_id).validate({
			rules: {
				title: {
					required: true
					},
				body: {
					required: true
					}
				},
			messages: {
				title: LANG.GLOBAL.INPUT_REQUIRED,
				body: LANG.GLOBAL.INPUT_REQUIRED
				}
			});

 		$('#' + form_id).ajaxForm({
			dataType:  'json', 
			success:	function(_data) {
				if(_data.error) { 
					$(_selector).html('<div class="comment-save-result">' + LANG.GLOBAL.THREADS_SAVE_ERROR + '</div>');
				}
				else {
					$(_selector).html('<div class="comment-save-result">' + LANG.GLOBAL.THREADS_SAVE_OK + '</div>');
				}
				$('#' + form_id + ' :submit').removeAttr("disabled");
			},
			beforeSubmit: function(_formData, _jqForm, _options) {
					$('#' + form_id + ' :submit').attr("disabled","disabled");
			}
		});
	},
	
	addUserToFavoriteButtonHTML: function(_user_oid){
		
		var html = '';
		var fusers = $.cookie('w_fuser');
		var show = true;
		if ($.cookie('s_us_id') == _user_oid.toString()){
			return '';
		}	
		if (fusers){
			var fusers_arr = fusers.split(',');
			if (fusers_arr.indexOf(_user_oid.toString()) >= 0){
				show = false;
			}
		}
		if (show){
			html = '<div id="add-to-favorite" class="btnd-pom-plus" style="float: left"><a href="#" onclick="if (!Service.isLogin()) Service.login(); else Service.addUserToFavorite(' + _user_oid + ');return false;">' + LANG.GLOBAL.BUTTON_ADD_TO_FAVORITES + '</a></div>';
		}
		return html;
	},
	
	addUserToFavorite: function(_user_oid){
		$.getJSON("/" + Service.lang + "/fuser-add-json/",
			{"user_oid":_user_oid},
			function(data){
				if(!data.error){
					$('#add-to-favorite').hide();
					W3Modal.dialog(LANG.GLOBAL.FAVUSER_ADD_HEADER, LANG.GLOBAL.FAVUSER_ADD_BODY, {alert: true});
				}
			});
	},
	
	delUserFromFavoriteConfirm: function(_user_oid){
		W3Modal.dialog(LANG.GLOBAL.CONFIRM_POPOVER, LANG.GLOBAL.CONFIRM_POPOVER,{confirm:true, confirm_ok_fn: function(){Service.delUserFromFavorite(_user_oid);}});
	},
	
	delUserFromFavorite: function(_user_oid){
		$.getJSON("/" + Service.lang + "/fuser-delete-json/",
			{"user_oid":_user_oid},
			function(data){
				if(!data.error){
					window.location.reload();
				}
			});
	},

	isGroupMember: function() {
		if (typeof group_members != 'undefined')
		{
			if (jQuery.inArray(parseInt($.cookie('s_us_id')), group_members) > -1)
				return true;				
		}
		return false;
	},
	
	isGroupOwner: function() {
		if (typeof group_owner != 'undefined')
		{
			if (parseInt($.cookie('s_us_id')) == group_owner)
				return true;				
		}
		return false;
	},

	isGroupAdmin: function() {
		if (typeof group_admin != 'undefined')
		{
			if (parseInt($.cookie('s_us_id')) == group_admin)
				return true;				
		}
		return false;
	},

	isGroupMemberAll: function(){
		if (Service.isGroupMember() || Service.isGroupOwner() || Service.isGroupAdmin())
			return true;
		else
			return false;
	},

	joinToGroupButtonHtml: function(_group_oid){
		var html = '';
		if (!Service.isGroupMemberAll()){
			html = '<div id="join-to-group" class="btns-x-plus" style="float: left"><a href="#" onclick="if (!Service.isLogin()) Service.login(); else Service.joinToGroupButton(' + _group_oid + ');return false;">' + LANG.GLOBAL.BUTTON_JOIN_TO_GROUP + '</a></div>';
		}
		return html;
	},
	
	joinToGroupButton: function(_group_oid){
		$.getJSON("/" + Service.lang + "/group-join-json/",
			{"group_oid" : _group_oid},
			function(data){
				if(!data.error){
					$('#join-to-group').hide();
					if (data.group_type == 'O')
						W3Modal.dialog(LANG.GLOBAL.GROUP_JOIN_HEADER, LANG.GLOBAL.GROUP_JOIN_BODY_OPEN, {alert: true, alert_ok_fn: function(){window.location.reload()}, close_fn: function(){window.location.reload()}});
					if (data.group_type == 'M')
						W3Modal.dialog(LANG.GLOBAL.GROUP_JOIN_HEADER, LANG.GLOBAL.GROUP_JOIN_BODY_MODERATED, {alert: true});
				}
			});
	},
	
	resignationGroupConfirm: function(_group_oid){
		W3Modal.dialog(LANG.GLOBAL.CONFIRM_POPOVER, LANG.GLOBAL.CONFIRM_POPOVER,{confirm:true, confirm_ok_fn: function(){Service.resignationGroup(_group_oid);}});
	},
	
	resignationGroup: function(_group_oid){
		$.getJSON("/" + Service.lang + "/profile-group-resignation-json/",
			{"group_oid":_group_oid},
			function(data){
				if(!data.error){
					window.location.reload();
				}
			});
	},
	
	groupSendInvitation: function(_group_id, _group_name) {
		$('#set-adminitrator-container').remove();
		
		var html = '';
		html += '<form id="group-send-invitation-form" action="/' + Service.lang + '/profile-group-invitation-json/' + _group_id +'" method="post">';
			html += '<label>' + LANG.GLOBAL.GROUP_INVITE_INPUT_USER + ':</label>';
			html += '<div id="recipient_suggest" class="bg-340">';
			html += '</div>';
			html += '<br />';
			html += '<label>' + LANG.GLOBAL.GROUP_INVITE_INPUT_MESSAGE + ':</label>';
			html += '<div class="body">';
				html += '<textarea name="invitation_body" class="bg-340_120" rows="4" cols="40" >' + LANG.GLOBAL.GROUP_INVITE_DEFAULT_MESSAGE + ' "' + _group_name + '".</textarea>';				
			html += '</div>';

			html += '<p>';
			html += '<div class="btn-nie-kropka">';
				html += '<input type="submit" value="' + LANG.GLOBAL.BUTTON_INVITE + '" onclick="return ($(\'#group-send-invitation-form\').valid());"/>';
			html += '</div>';
		html += '</form>';

		var html_obj = $(html);
	
		W3Modal.dialog(LANG.GLOBAL.GROUP_INVITE_HEADER, html_obj, {alert: false});
		
		W3MailSuggest.show('#recipient_suggest');

		$('#group-send-invitation-form').validate({
			rules: {
				mail_to_ids: {
					required: true
					},
				invitation_body: {
					required: true
				}
			},
			messages: {
				mail_to_ids: LANG.GLOBAL.GROUP_INVITE_INPUT_USER_ERROR,
				invitation_body: LANG.GLOBAL.INPUT_REQUIRED
			}
		});

		$('#group-send-invitation-form').ajaxForm({
			dataType:  'json', 
			success:	function(_data) {
				if (!_data.error)
					$('#group-send-invitation-form').html('<p>' + LANG.GLOBAL.GROUP_INVITE_INVITE_SENT + '</p>');
				else if(_data.error == 8 || _data.error == 5)
					$('#group-send-invitation-form').html('<p>' + LANG.GLOBAL.GROUP_INVITE_ERROR1 + '</p>');
				else if(_data.error == 9)
					$('#group-send-invitation-form').html('<p>' + LANG.GLOBAL.GROUP_INVITE_ERROR2 + '</p>');
				else
					$('#group-send-invitation-form').html('<p>' + LANG.GLOBAL.ERROR + '</p>');
			},
			beforeSubmit: function(_formData, _jqForm, _options) {
				$('#group-send-invitation-form').html('<div class="ajax-loader-big">&nbsp;</div>');
			}
		});
	},
	
	gamePopover: function ()
	{
		if (!Service.isLogin()) {
	  		Service.login();
			return false;
	  	}
		
		var content = $('<div id="popover-content"><div id="game_flash"></div></div>');

		W3Modal.dialog(LANG.GLOBAL.GAME_POPOVER_HEADER, content, {ext_class: 'wide_game', modal: true }); 
		
		var swf_file = '/game/wiersze.swf?v=22';
		var flash_vars = '';//GameLang=' + Service.lang.toUpperCase();
		var html = '';
		
		html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="800" height="500" id="wiersze" align="middle">';
			html += '<param name="allowScriptAccess" value="sameDomain" />';
			html += '<param name="allowFullScreen" value="false" />';
			html += '<param name="FlashVars" value="' + flash_vars + '" />';
			html += '<param name="movie" value="' + swf_file + '" />';
			html += '<param name="quality" value="medium" />';
			html += '<param name="scale" value="exactfit" />';
			html += '<param name="wmode" value="direct" />';
			html += '<param name="bgcolor" value="#000000" />'; 
			html += '<embed src="' + swf_file + '" quality="medium" scale="exactfit" wmode="direct" bgcolor="#000000" width="800" height="500" FlashVars="' + flash_vars + '" name="wiersze" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />';
		html += '</object>';
		
		$('#game_flash').html(html);
		
	},
	
	
	chatPopover: function(){
		var content = $('<div id="popover-chat"></div>');
		$('<div id="chat-flash"></div>').appendTo(content);
		$('<div id="chat-wall"><div id="chat-wall-content"></div></div>').appendTo(content);
		
		W3Modal.dialog(LANG.GLOBAL.CHAT_POPOVER_HEADER, content, {
			ext_class: 'wide',
			modal: true
		});
		
		var chat_room_map = new Object();
		chat_room_map["pl"] = 196;
		chat_room_map["en"] = 295;
		chat_room_map["de"] = 241;
		chat_room_map["es"] = 293;
		chat_room_map["fr"] = 294;
		chat_room_map["gr"] = 297;
		chat_room_map["it"] = 296;
		chat_room_map["is"] = 0;
		chat_room_map["no"] = 0;
		
		
		var chat_room = (typeof chat_room_map[Service.lang] == 'undefined' || !chat_room_map[Service.lang]) ? 295 : chat_room_map[Service.lang];
		/*
		var so = new SWFObject("http://host71200.123flashchat.com/emultipoetry/123flashchat.swf?init_host=host71200.123flashchat.com&init_port=21127&init_room=" + chat_room + "&init_host_s=67.225.176.34&init_port_s=443&init_host_h=67.225.176.35&init_port_h=443&amp;init_group=emultipoetry", "mymovie", "634", "400", "8", "#E8F6F7");
		so.addParam("wmode", "window");
		so.addParam("allowscriptaccess", "always");
		so.addParam("menu", "false");
		so.addParam("quality", "high");
		so.addParam("allowFullScreen", "false");
		so.addParam("scale", "noscale");
		so.addParam("salign", "tl");
		so.addParam("devicefont", "true");
		so.write("chat-flash");
		*/
		var flashvars = {
			};
		var params = {
				wmode: "window",
				allowscriptaccess: "always",
				allowfullscreen: "false",
				menu: "true",
				quality: "high",
				scale: "noscale",
				salign: "tl",
				devicefont: "true"
			};
		swfobject.embedSWF("http://host71200.123flashchat.com/emultipoetry/123flashchat.swf?init_host=host71200.123flashchat.com&init_port=21127&init_room=" + chat_room + "&init_host_s=67.225.176.34&init_port_s=443&init_host_h=67.225.176.35&init_port_h=443&init_group=emultipoetry", "chat-flash", 634, 400, "8.0.0", "/game/expressinstall.swf", flashvars, params);
		
		var chat_channel = 'chatwall' + Service.lang;
		
		$.getJSON("/" + Service.lang + "/chat-wall-json/" + chat_channel, {}, function(data){
			if (!data.error) {
				if (data.last_message) {
					$('#chat-wall-content').html(data.last_message);
				}
			}
		});
		
		ChatWall.chat_channel = chat_channel;
		ChatWall.init('#chat-wall-content');
		
		// TEMP - statystyki dla wersji Francusiej
		if (Service.lang == 'fr'){
			var log = Service.lang + ' | ' + navigator.userAgent + ' | ' + navigator.appName + ' | ' + navigator.appVersion;
			$.post("/pl/logs/", {
				log: log
			});
		}
		
	}
}


W3Modal = {
	options: {
		ext_class : '',
		close_title: LANG.GLOBAL.BUTTON_CLOSE,
		confirm: false,
		alert: false,
		alert_ok_fn: function( ){ $('.jqmWindow').jqmHide() },
		close_fn: function(){ $('.jqmWindow').jqmHide() },
		confirm_ok: LANG.GLOBAL.BUTTON_OK,
		confirm_ok_fn: function(){ },
		confirm_cancel: LANG.GLOBAL.BUTTON_CANCEL,
		confirm_cancel_fn: function(){ },
		modal: false
	},
	
	dialog: function(header, content, options){
		var opts = jQuery.extend(W3Modal.options, options);
		
		var modal = $('<div class="jqmWindow' + (opts.ext_class ? ' ' + opts.ext_class : '' ) + '">');
		$('<div class="jqmHeader jqmClose"><a class="jqmCloseButton" title="' + opts.close_title + '"></a>' + header + '</div>').click(opts.close_fn).appendTo(modal);
		
		if (typeof content == 'string')
		  	content = $('<div>' + content + '</div>');
		
		if (opts.confirm)
		{
			$('<hr /><div class="btn-nie-kropka jqmClose"><input type="button" value="' + opts.confirm_ok + '" />').click(opts.confirm_ok_fn).appendTo(content);
			$('<div class="btn-sza-krzyzyk jqmClose"><input type="button" value="' + opts.confirm_cancel + '" />').click(opts.confirm_cancel_fn).appendTo(content);
		}
		else if (opts.alert)
		{
			$('<hr /><div class="btn-nie-kropka" class="jqmClose"><input type="button" value="' + opts.confirm_ok + '" /></div>').click(opts.alert_ok_fn).appendTo(content);
		}
		$('<div class="cb"></div>').appendTo(content);
		
	  	$('<div class="jqmContent" />').append(content).appendTo(modal);

		$('<div class="jqmFooter"></div>').appendTo(modal);
		modal.appendTo($('body'));
		
 		$(modal).jqm( {
		  	onHide: function(h){
		  		//h.w.fadeOut(300, function(){h.o.remove()});
				$('.jqmOverlay').remove();
				h.w.fadeOut(300, function(){$(modal).remove()});
				W3Modal.options.ext_class = '';
				W3Modal.options.confirm = false;
				W3Modal.options.alert = false;
				W3Modal.options.modal = false;
				W3Modal.options.alert_ok_fn = function( ){ $('.jqmWindow').jqmHide() };
				W3Modal.options.close_fn = function(){ $('.jqmWindow').jqmHide() };
		  	},
			modal:W3Modal.options.modal
		  }
		);
 		$(modal).jqmShow();
		
		$("a", $(modal)).focus(function(){
		 	$(this).blur();
		 });
	},
	
	dialogLogin: function(error){
		var login_popover = $('<div id="jqmLogin">');
		
		var html = '';
		html += '<form id="service_login" action="http://www.' + Service.root_domain + '/' + Service.lang + '/login/" method="post">';
		html += '<input id="login-burl" type="hidden" name="burl" value="' + window.location.href.replace(/#.*$/gi, '') + '" />';
		html += '<p>';
		html += '<label for="email">' + LANG.GLOBAL.LOGIN_EMAIL + '</label>';
		html += '<input class="login_input bg-245" type="text" name="email" id="email" />';
		html += '<br class="cb" /><br class="cb" />';
		html += '</p>';
		html += '<p>';
		html += '<label for="password">' + LANG.GLOBAL.LOGIN_PASSWORD + '</label>';
		html += '<input class="login_input bg-245" type="password" name="password" id="password" />';
		if (error)
			html += '<label class="error">' + LANG.GLOBAL.LOGIN_ERROR + '</label>';
		html += '<br class="cb" /><br class="cb" />';
		html += '</p>';
		html += '<div class="btn-nie-kropka">';
		html += '<input type="submit" value="' + LANG.GLOBAL.LOGIN + '" />';
		html += '</div>';
		html += '<br class="cb" />';
		html += '</form>';
		html += '<hr />';
		html += '<div class="ext_link">';
		html += '<div>' + LANG.GLOBAL.LOGIN_REGISTER + ' <a href="http://www.' + Service.root_domain + '/' + Service.lang + '/register/">' + LANG.GLOBAL.LOGIN_REGISTER_LINK + '</a></div>';
		html += '<div>' + LANG.GLOBAL.LOGIN_PASSWORD_FORGOT + ' <a href="http://www.' + Service.root_domain + '/' + Service.lang + '/remind-password/">' + LANG.GLOBAL.LOGIN_PASSWORD_FORGOT_LINK + '</a></div>';
		html += '<div>' + LANG.GLOBAL.LOGIN_SEND_ACTIVATION + ' <a href="http://www.' + Service.root_domain + '/' + Service.lang + '/send-activation-code/">' + LANG.GLOBAL.LOGIN_SEND_ACTIVATION_LINK + '</a></div>';
		html += '</div>';

		$(html).appendTo(login_popover);
		
		$('#service_login', login_popover).validate({
				rules: {
					email: {
						required: true,
						email: true
					},
					password: {
						required: true
					}
				},
				messages: {
					email: LANG.GLOBAL.LOGIN_EMAIL_ERROR,
					password: LANG.GLOBAL.LOGIN_PASSWORD_ERROR
				}
			});
		this.dialog(LANG.GLOBAL.LOGIN_HEADER, login_popover, {alert: false, confirm: false});
	}
}



W3MailSuggest = {
	options: {
		suggest_ajax_url : '/en/mail-user-suggest/',
		multiple : false
	},
	
	show: function (insert_selector, options)
	{
		this.opts = jQuery.extend(W3MailSuggest.options, options);
		
		var html = '';
		html += '<div class="mail_input_container">';
			html += '<ul class="mail_recipients">';
				html += '<li class="mail_recipient_input"><input type="text" name="mail_to" id="mail_to" /></li>';
			html += '</ul>';
			html += '<div style="clear: left;"></div>';
		html += '</div>';
		html += '<input type="hidden" name="mail_to_ids" id="mail_to_ids" value=""></input>';
	
		var html_obj = $(html);
		$("#mail_to", html_obj).autocomplete(this.opts.suggest_ajax_url,
			{
				minChars: 3,
				formatItem: function(row, i, max) {
					return row[0].replace(/\[.*?\]/gi, ' ');
				},
				formatResult: function(row) {
					return row[0].replace(/\[.*?\]/gi, ' ');
				}
			}
		);
		
		$("#mail_to", html_obj).result( 
			function(event, data, formatted) {
				var reg = new RegExp(/^.*\[(.*)\].*$/g);
				var reg_dest = reg.exec(data[0]);
				var id = reg_dest[1];
				var name = data[0].replace(/\[.*?\]/gi, '').replace(/\(.*?\)/gi, '');
				W3MailSuggest.mailAddRecipient(name, id);
			}
		);
	
		$('#mail_to_ids', html_obj).attr('value', '');	
		$(html_obj).appendTo(insert_selector);
	},
	
	
	mailAddRecipient: function(_name, _id)
	{
		if (this.mailAddRecipientID(_id)){
			$(".mail_recipient_input").before('<li class="mail_recipient" id_recipient="' + _id + '">' + _name + '<a href="#" class="mail_recipient_delete" onclick="W3MailSuggest.mailDelRecipient($(this).parent());return false;">&nbsp;</a></li>');
			$(".mail_recipient_input input").attr('value', '');
		}
	},
	
	mailDelRecipient: function(_obj)
	{
		this.mailDelRecipientID($(_obj).attr('id_recipient'));
		$(_obj).remove();
	},
	
	mailAddRecipientID: function(_id)
	{
		var ids_arr = $('#mail_to_ids').attr('value').split(',');
		if (jQuery.inArray(_id.toString(), ids_arr) == -1)
		{
			$('#mail_to_ids').attr('value', $('#mail_to_ids').attr('value') + _id + ',');
			if (!this.opts.multiple)
				$('.mail_recipient_input').hide();
			
			return true;
		}
		else
			return false;
		
		
	},
	
	mailDelRecipientID: function(_id)
	{
		var ids_arr = $('#mail_to_ids').attr('value').split(',');
		var new_value = '';
		for (index in ids_arr)
		{
			if (ids_arr[index] != _id && ids_arr[index])
			{
				new_value = new_value + ids_arr[index] + ',';
			}
		}
		$('#mail_to_ids').attr('value', new_value);
		if (!this.opts.multiple)
			$('.mail_recipient_input').show();
	}
}



jQuery.validator.addMethod("nick", function(value, element) {
	return this.optional(element) || !/[`!@#$%^&*\(\)_\+=\{\}|\[\]\\:";'<>\?,\.\/]/i.test(value);
}, ""); 

jQuery.validator.addMethod("subdomain", function(value, element) {
	return this.optional(element) || /^[a-z0-9\-]+$/i.test(value);
}, ""); 

jQuery.validator.addMethod("image", function(value, element) {
	return this.optional(element) || /.*(\.jpg|\.jpeg|\.gif|\.png)$/i.test(value);
}, ""); 

jQuery.validator.addMethod("mp3", function(value, element) {
	return this.optional(element) || /.*(\.mp3)$/i.test(value);
}, ""); 


jQuery.validator.addMethod("youtubelink", function(value, element) {
	return this.optional(element) || /youtube\.com\/watch\?v=([a-z0-9\-_]+)/i.test(value);
}, ""); 

jQuery.validator.addMethod("poemortransselected", function(value, element) {
	if (($('#rel_poem_oid').val() && $('#rel_poem').val()) || ($('#rel_translation_oid').val() && $('#rel_translation').val()))
		return true;
	else 
		return false;
}, "");



if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}


// textarea limit
$.extend($.fn, {
	textarea_limit: function( options ) {
		if (!options.limit)
			options.limit = 255;
		if (!options.count_text)
			options.count_text = 'Pozostało znaków';
		this.wrap('<span></span>');
		this.after('<div class="count-desc">'+options.count_text+': <span class="count">'+options.limit+'</span></div>')
		this.attr('limit', options.limit)
		textarea_limit_calculate($(this));		
		this.keyup(function(){	textarea_limit_calculate($(this)); });

		function textarea_limit_calculate(_obj){
		 	if (_obj.val().length >= _obj.attr('limit')) {
		 		_obj.val(_obj.val().substring(0, options.limit));
		 	}
			_obj.parent().find(".count").text(_obj.attr('limit') - _obj.val().length);
		}
	}
});



// WEBalbum embed
$.fn.WEBalbumEmbed = function() {
	this.each(function(){
		url = $(this).attr('href');

		if (url)
		{
			$(this).css('display', 'none');
			$.ajax({
				type: "GET",
				dataType: "jsonp",
				url: url + '?jsonp=1',
				success: jQuery.hitch(this, function(msg){
					if(typeof msg.error != 'undefined' && msg.error == 0){
						url = $(this).attr('href');
						if (typeof msg.thumbnail != 'undefined' && msg.thumbnail && typeof msg.photos != 'undefined' && msg.photos.length) {
							photos_cnt = msg.photos.length;
							rel = 'WA-rel_' + Math.round(Math.random() * 10000);
							css_class = (photos_cnt > 1) ? 'wa_slideshow' : 'wa_single';
							if (photos_cnt > 0) {
								for (i = 1; i < msg.photos.length; i++) {
									html = '<a class="' + css_class + '" style="display:none" href="' + msg.photos[i].url + '" rel="' + rel + '" srcurl="' + url + '">WEBalbum Photo</a>';
									$(this).after(html);
								}
							}
							html = '<div style="margin:auto" class="wa_embed_container"><a class="' + css_class + '" href="' + msg.photos[0].url + '" rel="' + rel + '" srcurl="' + url + '"><img src="' + msg.thumbnail + '" alt="" /></a></div>';
							$(this).after(html);
							$("a.wa_slideshow").colorbox({slideshow:true, slideshowSpeed: 4000, current : "{current} / {total}"});
							$("a.wa_single").colorbox();
						}
					}
			   })
			});
		}
	})
};



ChatWall = {
	chat_channel: 'chatwall',
	
	init: function(_selector){

		APE.Config.baseUrl = 'http://www.emultipoetry.eu/';
		APE.Config.domain = 'www.emultipoetry.eu'; 
		APE.Config.server = 'www.emultipoetry.eu:900'; 
		
		client = new APE.Client,
		client.load({
			domain: APE.Config.domain,  
         server: APE.Config.server, 
			identifier: 'action',  
			channel: ChatWall.chat_channel, 
			complete: function(ape){ 
				new ChatWall.response(ape).initialize(_selector);  
      	}, 
			scripts: [
				APE.Config.baseUrl + 'js/ape/source/mootools-core.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Core/APE.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Core/Events.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Core/Core.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Core/JSON.js?v=21',
				APE.Config.baseUrl + 'js/ape/source/Core/Utility.js?v=21',
				//APE.Config.baseUrl + 'js/ape/source/Core/Session.js?v=21',
				APE.Config.baseUrl + 'js/ape/source/Pipe/Pipe.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Pipe/PipeProxy.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Pipe/PipeMulti.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Pipe/PipeSingle.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Request/Request.js?v=21',
				APE.Config.baseUrl + 'js/ape/source/Request/Request.Stack.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Request/Request.CycledStack.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Transport/Transport.longPolling.js?v=21',
				APE.Config.baseUrl + 'js/ape/source/Transport/Transport.SSE.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Transport/Transport.XHRStreaming.js?v=21', 
				APE.Config.baseUrl + 'js/ape/source/Transport/Transport.JSONP.js?v=21'
			]
		});
	},
	
	response: function(ape){
		
		this.initialize = function(selector){
			ape.selector = selector;
			ape.onRaw('data', this.onMsg);
			ape.start({nick: $.cookie('s_us_nick'), oid: $.cookie('s_us_id')})
		}
			
		this.onMsg = function(raw){
			var msg = decodeURIComponent(raw.data.content.replace(/\+/g,' ').replace(/#P#/g,'+')); 
			$(ape.selector).html(msg);
			var objDiv = document.getElementById(ape.selector.replace(/#/, ''));
			objDiv.scrollTop = objDiv.scrollHeight;
		}

	}
	
		
}

