var commmax=200;//Максимум букв в комментарии
var sellmax=256;//Максимум букв в выделении текстом
var teajax="/images/js/ajax_text_error.php";var feedajax="/request.php";//Адрес для отправки репорта, может быть любым!
var eat1=30;//Число символов для "поедания"
//############################################################################## Остальное лучше не трогать :)
var _ck="click";
var chrt="character";
var teall="";
function txtclean(e){return (""+e).replace(/[\r\n]+/g," ").replace(/^\s+|\s+$/g,"");}
function getfrag(){
	var rn0=null;var rn1=null;if(window.getSelection){rn1=window.getSelection();}else{
	if(document.getSelection){rn1=document.getSelection();}else{rn1=document.selection;}}
	if(rn1!=null){var pre="",rn0=null,suf="",pos=-1;if(rn1.getRangeAt){var r=rn1.getRangeAt(0);
	rn0=r.toString();var rn2=document.createRange();rn2.setStartBefore(r.startContainer.ownerDocument.body);
	rn2.setEnd(r.startContainer,r.startOffset);pre=rn2.toString();var rn3=r.cloneRange();
	rn3.setStart(r.endContainer,r.endOffset);rn3.setEndAfter(r.endContainer.ownerDocument.body);
	suf=rn3.toString();}else{if(rn1.createRange){var r=rn1.createRange();rn0=r.text;
	var rn2=rn1.createRange();rn2.moveStart(chrt,-eat1);rn2.moveEnd(chrt,-rn0.length);
	pre=rn2.text;var rn3=rn1.createRange();rn3.moveEnd(chrt,eat1);rn3.moveStart(chrt,rn0.length);
	suf=rn3.text;}else{rn0=""+rn1;}}var p;var s=(p=rn0.match(/^(\s*)/))&&p[0].length;
	var e=(p=rn0.match(/(\s*)$/))&&p[0].length;pre=pre+rn0.substring(0,s);
	suf=rn0.substring(rn0.length-e,rn0.length)+suf;rn0=rn0.substring(s,rn0.length-e);
	if(rn0==""){return null;}return {pre:pre,text:rn0,suf:suf,pos:pos};}else{alert('К сожалению, у вас устаревший браузер');return;}
}
function teerrform(){
	var txt=getfrag();if(!txt){return;}with(txt){
		pre=pre.substring(pre.length-eat1,pre.length).replace(/^\S{1,10}\s+/,"");
		suf=suf.substring(0,eat1).replace(/\s+\S{1,10}$/,"");
	}
	var txc=txtclean(txt.pre+txt.text+txt.suf);
	if(txc.length>sellmax){alert('Текст слишком длинный!');return;}
	$('#tetxt1').html(txt.pre);
	$('#tetxt2').html(txt.text);
	$('#tetxt3').html(txt.suf);teall=""+txt.pre+"___start"+txt.text+"___stop"+txt.suf;
	jQuery.fn.colorbox({inline:true, href:"#tebox", open:true, width:"550px"});
}
window.onload=function(){
	document.onkeypress = function(event) {
		event = (event) ? event : window.event;
		if(event.keyCode == 27){jQuery.fn.colorbox.close();}
		if ((event.keyCode == 13 || event.keyCode == 10) && event.ctrlKey == true){teerrform();}
	}
};
$('#tesend').live(_ck, function(){
	var cms=$('#tecomm').val();
	if(cms.length>commmax){alert('Ваш комментарий слишком длинный!');return false;}
    $('#tecomm').val("");
	$('#tetxt1, #tetxt2, #tetxt3').html("");
	jQuery.fn.colorbox.close();
	$.ajax({
		url: teajax,
		dataType: "script",
		type: "POST",
		data: 'url='+encodeURIComponent(document.location.href)+'&cm='+cms+'&ta='+teall+'&r='+Math.random(),
		error: function (a, textStatus, errorThrown){setTimeout(function(){window.alert('Спасибо, ваше сообщение успешно отправлено');},600);}
	});
});
$('#tecanc').live(_ck, function(){
	$('#tecomm').val("");
	jQuery.fn.colorbox.close();
});
//##############################################################################
function ded(e){
	return document.getElementById(e).value;
}
$('#feed_submit').live(_ck, function(){
	if(jQuery.browser.msie){
        var datax='url='+encodeURIComponent(document.location.href)+'&feed_name='+encodeURIComponent(ded('feed_name'))+'&feed_mail='+encodeURIComponent(ded('feed_mail'))+'&feed_text='+encodeURIComponent(ded('feed_text'))+'&r='+Math.random();
    	var dd=document;var el=dd.createElement('<iframe>');el.setAttribute('src',feedajax+'?'+datax+'&is_ie=1');dd.appendChild(el);
    }else{
    	var datax='url='+encodeURIComponent(document.location.href)+'&feed_name='+$('#feed_name').val()+'&feed_mail='+$('#feed_mail').val()+'&feed_text='+$('#feed_text').val()+'&r='+Math.random();
		$.ajax({
			url: feedajax,dataType: "script",type: "POST",data: datax,error: function (a, textStatus, errorThrown){ }
		});
	}
});
$('#feed_close, #feed_close2').live(_ck, function(){
	jQuery.fn.colorbox.close();
});
$('#feedback').live(_ck, function(){
	jQuery.fn.colorbox({inline:true, href:"#feedbox", open:true, width:"550px"});
});
function poeben(e,w){
	if(w==0){$('#feedbck').hide();$('#feed_name, #feed_mail, #feed_text').val('');}else{$('#feedbck').show();}$('#feederr').html(e);
	jQuery.fn.colorbox({inline:true, href:"#feeders", open:true, width:"550px"});
}
window.poeben=poeben;//

var ws="<div style='display:none'><div id='tebox'><b>Ошибка в тексте:</b> (выделена красным цветом ниже)";
ws=ws+"<div id='teerdv'><span id='tetxt1'></span><span id='tetxt2'></span><span id='tetxt3'></span></div>";
ws=ws+"Послать сообщение?<br />Ваш браузер останется на этой же странице.<br /><br />";
ws=ws+"Так же вы можете ввести ваш комментарий к ошибке (не более "+commmax+" символов):<br /><textarea type='text' id='tecomm' /></textarea>";
ws=ws+"<div id='tebtns'><button id='tesend'>Отправить</button>&nbsp;<button id='tecanc'>Закрыть</button></div></div>";
ws=ws+"<div id='feedbox'><center><table border=0 cellpadding=0 cellspacing=0><tr><th colspan='2'><p>Форма обратной связи</th></tr>";
ws=ws+"<tr><td valign='top' align='right'><p>Имя</td><td><input type='text' id='feed_name' value='' /></td></tr>";
ws=ws+"<tr><td valign='top' align='right'><p>E-Mail</td><td><input type='text' id='feed_mail' value='' /></td></tr>";
ws=ws+"<tr><td valign='top' align='right'><p>Сообщение</td><td><textarea id='feed_text'></textarea></td></tr>";
ws=ws+"<tr><td valign='top' align='center' colspan='2'><button id='feed_submit'>Отправить</button>&nbsp;<button id='feed_close'>Закрыть</button></td></tr>";
ws=ws+"</table></center></div>";
ws=ws+"<div id='feeders'><div id='feederr'></div><a id='feedbck' href='javascript:void(0)' onclick='jQuery.fn.colorbox({inline:true, href:\"#feedbox\", open:true, width:\"550px\"});'>&#8592; Вернуться на форму обратной связи</a></div>";
ws=ws+"</div>";
document.write(ws);

var Tabs = {
	className: "tabs",
	activeClass: "active",

	addLoadEvent: function(event) {
		var oldLoad = window.onload;

		window.onload = function() {
			event();
			if (oldLoad) oldLoad();
		}
	},

	create: function(tabs, callbacks) {
		if (!tabs.length)
			this.createSingle(tabs, callbacks);
		else
			this.createGroup(tabs, callbacks);
	},

	createSingle: function(tab, callbacks) {
		if (this.Element.hasClass(tab, this.activeClass))
			this.Element.show(this.getTarget(tab));

		this.Element.addClickEvent(tab, function(e) {
			if (!Tabs._callback(this, callbacks, "click", e))
				return false;	// Cancel event.

			Tabs.Element.toggleClass(this, Tabs.activeClass);

			if (!Tabs._callback(this, callbacks, "show", e))
				return false;	// Callback handled visibility change.

			Tabs.Element.toggleVisibility(Tabs.getTarget(this));
		});
	},

	createGroup: function(tabs, callbacks) {
		var active;

		for (var i = 0; i < tabs.length; i++) {
			var tab = tabs[i];
			if (this.Element.hasClass(tab, this.activeClass)) {
				active = tab;
				this.Element.addClass(tab);
				this.Element.show(this.getTarget(tab));
			}
			else {
				this.Element.hide(this.getTarget(tab));
			}

			Tabs.Element.addClickEvent(tab, function(e) {
				if (!Tabs._callback(this, callbacks, "click", e, active))
					return false;	// Cancel event.

				Tabs.Element.removeClass(active, Tabs.activeClass);
				Tabs.Element.addClass(this, Tabs.activeClass);

				var from = active;
				active = this;

				if (!Tabs._callback(this, callbacks, "show", e, from))
					return false;	// Callback handled visibility change.

				Tabs.Element.hide(Tabs.getTarget(from));
				Tabs.Element.show(Tabs.getTarget(this));
			});
		}

		if (!active) {
			var tab = tabs[0];
			active = tab;

			this.Element.addClass(tab, this.activeClass);
			this.Element.show(this.getTarget(tab));
		}
	},

	_callback: function(element, callbacks, type, e, active) {
		if (callbacks && callbacks[type] && callbacks[type].call(element, e, active) === false)
			return false;

		return true;
	},

	getTarget: function(tab) {
		var match = /#(.*)$/.exec(tab.href);
		var target;

		if (match && (target = document.getElementById(match[1])))
			return target;
	},

	getElementsByClassName: function(className, tag) {
		var elements = document.getElementsByTagName(tag || "*");
		var list = new Array();

		for (var i = 0; i < elements.length; i++) {
			if (this.Element.hasClass(elements[i], this.className))
				list.push(elements[i]);
		}

		return list;
	}
};

Tabs.Element = {
	addClickEvent: function(element, callback) {
		var oldClick = element.onclick;

		element.onclick = function(e) {
			callback.call(this, e);
			if (oldClick) oldClick.call(this, e);	// Play nice with others.

			return false;
		}
	},

	addClass: function(element, className) {
		element.className += (element.className ? " " : "") + className;
	},

	removeClass: function(element, className) {
		element.className = element.className.replace(new RegExp("(^|\\s)" + className + "(\\s|$)"), "$1");
		if (element.className == " ")
			element.className = "";
	},

	hasClass: function(element, className) {
		return element.className && (new RegExp("(^|\\s)" + className + "(\\s|$)")).test(element.className);
	},

	toggleClass: function(element, className) {
		if (this.hasClass(element, className))
			this.removeClass(element, className);
		else
			this.addClass(element, className);
	},

	getStyle: function(element, property) {
		if (element.style[property]) return element.style[property];

		if (element.currentStyle)	// IE.
			return element.currentStyle[property];

		property = property.replace(/([A-Z])/g, "-$1").toLowerCase();	// Turns propertyName into property-name.
		var style = document.defaultView.getComputedStyle(element, "");
		if (style)
			return style.getPropertyValue(property);
	},

	show: function(element) {
		element.style.display = "";
		if (this.getStyle(element, "display") == "none")
			element.style.display = "block";
	},

	hide: function(element) {
		element.style.display = "none";
	},

	isVisible: function(element) {
		return this.getStyle(element, "display") != "none";
	},

	toggleVisibility: function(element) {
		if (this.isVisible(element))
			this.hide(element);
		else
			this.show(element);
	}
};

Tabs.addLoadEvent(function() {
	var elements = Tabs.getElementsByClassName(Tabs.className);
	for (var i = 0; i < elements.length; i++) {
		var element = elements[i];

		if (element.tagName == "A") {
			Tabs.create(element);
		}
		else {	// Group
			var tabs = element.getElementsByTagName("a");
			var group = new Array();

			for (var t = 0; t < tabs.length; t++) {
				if (Tabs.getTarget(tabs[t]))
					group.push(tabs[t]);	// Only group actual tab links.
			}

			if (group.length) Tabs.create(group);
		}
	}
});

$(document).ready(function() {
  $(".sw").click(function(){
    var parent = $(this).attr("parent");
    $("#"+parent).toggle(200);
    $(this).toggleClass("curr");
  });
     $(".b1").hide(200);
     $(".b1:first").show(200);
     $("p.sw:first").toggleClass("curr");
});

$(document).ready(function() {
  $(".left_sw").click(function(){
    var parent = $(this).attr("parent");
    $("#"+parent).toggle();
    $(this).toggleClass("left_curr");
  });
     $(".left_b1").hide();
     $(".left_b1:first").show();
     $("p.left_sw:first").toggleClass("left_curr");
});

$(document).ready(function() {
 $(".m_sw").click(function(){
  $("div.m_b1").hide(200);
  var parent = $(this).attr("parent");
  $(this).parent().show();
  $("#"+parent).show();
$('body').scrollTo( $('#go'), 200 );
 });
 $(".m_b1").hide(200);
});

$(document).ready(function() {
 $(".sw_sw").click(function(){
  $("div.sw_b1").hide(200);
  var parent = $(this).attr("parent");
  $(this).parent().show();
  $("#"+parent).show(200);
 });
 $(".sw_b1").hide(200);
});

var tooltip = {

	/* НАЧАЛО НАСТРОЕК */
	options: {
		attr_name: "tooltip", // наименование создаваемого tooltip'ого атрибута
		blank_text: "(откроется в новом окне)", // текст для ссылок с target="_blank"
		newline_entity: "&", // укажите пустую строку (""), если не хотите использовать в tooltip'ах многострочность; ежели хотите, то укажите тот символ или символы, которые будут заменяться на перевод строки
		max_width: 250, // максимальная ширина tooltip'а в пикселах; обнулите это значение, если ширина должна быть нелимитирована
		delay: 20, // задержка при показе tooltip'а в миллисекундах
		skip_tags: ["link", "style"] // теги, у которых не обрабатываем атрибуты alt и title
	},
	/* КОНЕЦ НАСТРОЕК */

	t: document.createElement("DIV"),
	c: null,
	g: false,
	canvas: null,

	m: function(e){
		if (tooltip.g){
			var x = window.event ? event.clientX + (tooltip.canvas.scrollLeft || document.body.scrollLeft) : e.pageX;
			var y = window.event ? event.clientY + (tooltip.canvas.scrollTop || document.body.scrollTop) : e.pageY;
			tooltip.a(x, y);
		}
	},

	d: function(){
		tooltip.canvas = document.getElementsByTagName(document.compatMode && document.compatMode == "CSS1Compat" ? "HTML" : "BODY")[0];
		tooltip.t.setAttribute("id", "tooltip");
		document.body.appendChild(tooltip.t);
		if (tooltip.options.max_width) tooltip.t.style.maxWidth = tooltip.options.max_width + "px"; // all but ie
		var a = document.all && !window.opera ? document.all : document.getElementsByTagName("*"); // in opera 9 document.all produces type mismatch error
		var l = a.length;
		for (var i = 0; i < l; i++){

			if (!a[i] || tooltip.options.skip_tags.in_array(a[i].tagName.toLowerCase())) continue;

			var tooltip_title = a[i].getAttribute("title"); // returns form object if IE & name="title"; then IE crashes; so...
			if (tooltip_title && typeof tooltip_title != "string") tooltip_title = "";

			var tooltip_alt = a[i].getAttribute("alt");
			var tooltip_blank = a[i].getAttribute("target") && a[i].getAttribute("target") == "_blank" && tooltip.options.blank_text;
			if (tooltip_title || tooltip_blank){
				a[i].setAttribute(tooltip.options.attr_name, tooltip_blank ? (tooltip_title ? tooltip_title + " " + tooltip.options.blank_text : tooltip.options.blank_text) : tooltip_title);
				if (a[i].getAttribute(tooltip.options.attr_name)){
					a[i].removeAttribute("title");
					if (tooltip_alt && a[i].complete) a[i].removeAttribute("alt");
					tooltip.l(a[i], "mouseover", tooltip.s);
					tooltip.l(a[i], "mouseout", tooltip.h);
				}
			}else if (tooltip_alt && a[i].complete){
				a[i].setAttribute(tooltip.options.attr_name, tooltip_alt);
				if (a[i].getAttribute(tooltip.options.attr_name)){
					a[i].removeAttribute("alt");
					tooltip.l(a[i], "mouseover", tooltip.s);
					tooltip.l(a[i], "mouseout", tooltip.h);
				}
			}
			if (!a[i].getAttribute(tooltip.options.attr_name) && tooltip_blank){
				//
			}
		}
		document.onmousemove = tooltip.m;
		window.onscroll = tooltip.h;
		tooltip.a(-99, -99);
	},
	
	_: function(s){
		s = s.replace(/\&/g,"&amp;");
		s = s.replace(/\</g,"&lt;");
		s = s.replace(/\>/g,"&gt;");
		return s;
	},

	s: function(e){
		if (typeof tooltip == "undefined") return;
		var d = window.event ? window.event.srcElement : e.target;
		if (!d.getAttribute(tooltip.options.attr_name)) return;
		var s = d.getAttribute(tooltip.options.attr_name);
		if (tooltip.options.newline_entity){
			var s = tooltip._(s);
			s = s.replace(eval("/" + tooltip._(tooltip.options.newline_entity) + "/g"), "<br />");
			tooltip.t.innerHTML = s;
		}else{
			if (tooltip.t.firstChild) tooltip.t.removeChild(tooltip.t.firstChild);
			tooltip.t.appendChild(document.createTextNode(s));
		}
		tooltip.c = setTimeout(function(){
			tooltip.t.style.visibility = 'visible';
		}, tooltip.options.delay);
		tooltip.g = true;
	},

	h: function(e){
		if (typeof tooltip == "undefined") return;
		tooltip.t.style.visibility = "hidden";
		if (!tooltip.options.newline_entity && tooltip.t.firstChild) tooltip.t.removeChild(tooltip.t.firstChild);
		clearTimeout(tooltip.c);
		tooltip.g = false;
		tooltip.a(-99, -99);
	},

	l: function(o, e, a){
		if (o.addEventListener) o.addEventListener(e, a, false); // was true--Opera 7b workaround!
		else if (o.attachEvent) o.attachEvent("on" + e, a);
			else return null;
	},

	a: function(x, y){
		var w_width = tooltip.canvas.clientWidth ? tooltip.canvas.clientWidth + (tooltip.canvas.scrollLeft || document.body.scrollLeft) : window.innerWidth + window.pageXOffset;
		var w_height = window.innerHeight ? window.innerHeight + window.pageYOffset : tooltip.canvas.clientHeight + (tooltip.canvas.scrollTop || document.body.scrollTop); // should be vice verca since Opera 7 is crazy!

		if (document.all && document.all.item && !window.opera) tooltip.t.style.width = tooltip.options.max_width && tooltip.t.offsetWidth > tooltip.options.max_width ? tooltip.options.max_width + "px" : "auto";
		
		var t_width = tooltip.t.offsetWidth;
		var t_height = tooltip.t.offsetHeight;

		tooltip.t.style.left = x + 8 + "px";
		tooltip.t.style.top = y + 8 + "px";
		
		if (x + t_width > w_width) tooltip.t.style.left = w_width - t_width + "px";
		if (y + t_height > w_height) tooltip.t.style.top = w_height - t_height + "px";
	}
}

Array.prototype.in_array = function(value){
	var l = this.length;
	for (var i = 0; i < l; i++)
		if (this[i] === value) return true;
	return false;
};

var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (root){
	if (root.addEventListener) root.addEventListener("load", tooltip.d, false);
	else if (root.attachEvent) root.attachEvent("onload", tooltip.d);
}
