﻿/*  */

/* Обработка тэгов bb-кодов - © Lemurian */

var bb = {}

bb.wrap = function (elem) {
$(elem.parentNode).children('div').slideToggle('normal');
if ($(elem).text()=='Свернуть') {
	$(elem).text('Развернуть').css('background','url("../img/forum/chevron-expand.png") no-repeat 0 50%')
} else {
	$(elem).text('Свернуть').css('background','url("../img/forum/chevron.png") no-repeat 0 50%')
}
//$(elem).animate({"width": "toggle", "height": "toggle", "opacity": "toggle"}, { duration: "slow" });
return false
}

bb.tags = function (selector,exfmt) 
{ 
var ure = /\[user\]([\wа-яА-Я-]+)\[\/user\]/ig, are = /\[admin\]([\s\S]+?)\[\/admin\]/ig, sre = /\[wrap\](?!.*\[wrap\])([\s\S]*?)\[\/wrap\]/i,
	tagre = /\[tag\](.+?)\[\/tag\]/ig, tag2re = /\[tag=(.+?)\](.+?)\[\/tag\]/ig,
	a2re = /\[admin=([\wа-яА-Я-]+)\]([\s\S]+?)\[\/admin\]/ig, tre = /\[test\](?!.*\[test\])(.*?)\[\/test\]/i, sel = selector?$(selector):$('.bb'),
	fmtre = /\[fmt\](.+?)\[\/fmt\]/ig, alre = /\[al=([lr])\]([\s\S]+?)\[\/al\]/ig
sel.each(function(){
	var s = $(this).html(); if (!s) return true
	while (sre.test(s)) {s = s.replace(sre,'<div class="spoilerMessage"><a href="javascript://" onclick="return bb.wrap(this)" class="in" style="padding: 0px 0 2px 20px; background: url(\'../img/forum/chevron-expand.png\') no-repeat 0 50%;">Развернуть</a><br><div class="spoilerText" style="display:none;padding-top:5px">$1</div></div>')}
	s = s.replace(are,'<div class="adminMessage"><img src="/img/forum/admin.png" alt="Цитата" class="mPic" />$1</div>').replace(ure,'<a href="/index/8-0-$1" class="usr" onclick="aj.showProfile(this.href);return false;">$1</a>').replace(a2re,'<div class="adminMessage"><img src="/img/forum/admin.png" alt="Цитата" class="mPic"><span style="color:#f00;">$1:</span> $2</div>').replace(tagre,'<a href="/search/$1/" rel="nofollow" class="tag" title="Поиск по тегу" target="_blank">$1</a>').replace(tag2re,'<a href="/search/$1/" rel="nofollow" class="tag" title="Поиск по тегу" target="_blank">$2</a>');
	if (exfmt) {
		var exfre = /^\[exf\]/ig
		if (exfre.test(s)) {s = s.replace(exfre,'').replace(alre,'<div class="al-$1">$2</div>')}
	}
	while (tre.test(s)) {s = s.replace(tre,'<span style="color:#0A0"><font color="red">{</font>$1<font color="red">}</font></span>')}
	$(this).html(s)
})
}

bb.fix = function (selector)
{
$('div.bbCodeName',selector).css('padding','10px 0 3px').html('<img src="/img/forum/code.png" alt="Код" style="padding-right:5px">Код')
$('div.quoteMessage',selector).css({background: "#EFEFEF", border: "1px #A9B8C2 solid", padding: "3px 5px 5px 5px", "font-size": "11px"})
$('div.codeMessage',selector).css({background: "#FFF", border: "1px #A9B8C2 solid", padding: "3px 5px 5px 5px", "font-family": "monospace", "font-size": "11px"})
var quoteicon = '<img src="/img/forum/quote.png" alt="Цитата" style="padding-right:5px">'
$('div.bbQuoteName',selector).each(function(i){
 var au = $(this).css('padding','10px 0 3px').find('span.qName').text();
 if (au == '') {$(this).html(quoteicon + '<b>Цитата</b>')} else 
 {$(this).html(quoteicon + '<b><span style="font-size:1.2em">' + au + ', </span>Вы писали:</b>')};
});
$('a[title*=Нажмите,] > img').each(function(){
	if (this.align === 'left') {$(this).css('margin','5px 15px 10px 0')}
	else if (this.align === 'right') {$(this).css('margin','5px 0 10px 15px')}
});
}

/* Обработка страницы - © Lemurian */

var page = {tags:bb.tags, fix:bb.fix, bb:function(sel){bb.tags(sel);bb.fix(sel)}, exf:function(sel){bb.tags(sel,true);bb.fix(sel)}}

page.process = function (selector)
{
if (selector) {
	var a = selector.split(' ',2), s = a && (a[0]!=='all') && a[0], f = (a && a[1])?a[1].split(','):['bb'];
	for (var i = 0; i<f.length; i++) {this[f[i]] && this[f[i]](s)};
} else this.bb()
}

/* AJAX, uWindows & more - © Lemurian */

var aj = {};
aj.tools = {}

/* Вспомогательные функции */

aj.tools.fmtMsg = function(t,i) {return '<div class="nickText" width="720" style="margin:10px 0;">'+(i?'<img alt="*" border="0" align="left" src="'+i+'">':'')+t+'</div>'}
aj.tools.fmtErr = function(t) {return aj.tools.fmtMsg(t,'/img/aj/error.png')}
aj.tools.fmtDiv = function(cr,style)
{
if (typeof cr == 'object') return style?cr.css(style):cr
var a, c = $('<div></div>'), cre = /\.([\w-]+)/g
if (a = /#([A-Za-z_-][\w-]*)/.exec(cr)) {c.attr('id',a[1])}
while (a = cre.exec(cr)) c.addClass(a[1])
if (style) c.css(style)
return c
}

/* Фабрика uWin - мини-фреймворк для окон в стиле uCoz */

function create_uWnd(s,content){return new _uWnd(s.name,s.title,s.wh,s.ht,s.opts,content)}

uWin = function (nme,cap,w,h,opt)
{
var s = {name:(nme?nme:'uw'),title:(cap?cap:' '),wh:(w?w:720),ht:(h?h:200),opts:(opt?opt:{autosize:1,resize:0,closeonesc:1})};
return {settings:s,onerror:function(arg){this.onerr=arg;return this;},error:function(arg){var err=(arg?arg:this.onerror);return this.create(err?($.isFunction(err)?err():aj.tools.fmtErr(err)):aj.tools.fmtErr('Ошибка загрузки страницы!'));},create:function(cont){if (this.wnd){this.wnd.content(cont);}else{this.wnd = create_uWnd(this.settings,cont);}return this;},loading:function(){return this.create(aj.tools.fmtMsg('Загрузка...','/img/ajax-loader.gif'));},message:function(m,i){return this.create(aj.tools.fmtMsg(m,i));},content:function(cont){return this.create(cont);},set:function(data,container){return (data.length===0)?this.error():this.create(container?aj.tools.fmtDiv(container).append(data):data);},load:function(url,container){var a = url.split(' ',2); var _this=this; $.get(a[0],function(data){_this.set(a[1]?$(a[1],data):data,container);});return this;}};
}

/* Внешние функции */

aj.showRegister = function (cap) {uWin('reg',cap).loading().load('/js/register.htm')}
aj.showICQ = function (uin) {uWin('icq','Номер ICQ',200,200).create('<input type="text" id="idcq" width="150" name="icq" value="'+uin+'" onclick="this.select()" size="15">')}

aj.showInfo = function (cap,val,link)
{
if (!val) return false
var cont = '<input type="text" id="idInfo" style="width:180px" name="info" value="'+val+'" onclick="this.select()" size="15">'
if (link) {cont += '<br><br><a href="'+(link.lnk?link.lnk:'javascript://')+'" onclick="'+(link.click?link.click:'')+'" target="_blank">'+(link.text?link.text:'Ссылка')+'</a>'}
uWin('ajwInfo',cap,180,100).create(cont)
}

aj.showTest = function()
{
aj.showInfo('E-Mail','questeremail@somemailhost.ru',{lnk: 'mailto:'+'questeremail@somemailhost.ru', text: 'Написать'})
}

aj.showProfile = function (lnk)
{
var wcap = 'Информация о пользователе'
if (!global.vars.uli) {aj.showRegister(wcap);return false}
if (global.vars.ie) {window.open(lnk,'_blank','width=720,height=500,resizable=yes,scrollbars=yes');return false}
uWin('profile',wcap,600).loading().onerror('Такого пользователя не существует!').load(lnk+' #usrpgContent')
}

aj.showPrepost = function ()
{
var w = uWin('prepost','Предпросмотр сообщения',600).loading()
var m = $('#message').val(); if (!m) return w.message('Не указан текст сообщения!')
$.post('/forum/',{message:m.replace(/\t/g,'&#9;'),sm: $('#smon:checked').length,frmt1: $('#frmt:checked').length,ahtml1: $('#ahtml:checked').length,a:32}, function(data){var c = $('td.posttdMessage',data); bb.tags(c); bb.fix(c); w.set(c,'#prepost.ajMsgField') })
}

/* Cookies - взято с http://webcodes.ru/publ/1-1-0-1373 (by chu4) */

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

function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
}

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