// 2use popup() function: <a href="javascript:;" onClick="javascript:popup('name', '#link', 0, 0, 300, 150, 0, 0, 1, 1, 1); return false;"></a>
function popup(name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable){
	var wint = (screen.height - height) / 2;
	var winl = (screen.width - width) / 2;
	toolbar_str = toolbar ? 'yes' : 'no';
	menubar_str = menubar ? 'yes' : 'no';
	statusbar_str = statusbar ? 'yes' : 'no';
	scrollbar_str = scrollbar ? 'yes' : 'no';
	resizable_str = resizable ? 'yes' : 'no';
	window.open(url, name, 'left='+winl+',top='+wint+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
}

function simplepopup(url,width,height) {
	winl = (screen.width) ? (screen.width - width) / 2 : 0;
	wint = (screen.height) ? (screen.height - height) / 2 : 0;
	var settings = 'left='+winl+',top='+wint+',width='+(width+40)+',height='+(height+40)+',toolbar=no,menubar=no,status=yes,scrollbars=yes,resizable=no';
	var wnd = window.open(url,'imgpoint',settings);
	wnd.focus();
}

function emptypopup (name,width,height) {
	winl = (screen.width) ? (screen.width - width) / 2 : 0;
	wint = (screen.height) ? (screen.height - height) / 2 : 0;
	var settings = 'left='+winl+',top='+wint+',width='+width+',height='+height+',toolbar=no,menubar=no,status=yes,scrollbars=no,resizable=no';
	window.open('about:blank',name,settings);
}

function preloadImgs() {
	var d = document;
	if(d.images) {
		if(!d.IMGs) d.IMGs=new Array();
		var i,j=d.IMGs.length,a=preloadImgs.arguments;
		for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){
			d.IMGs[j]=new Image; d.IMGs[j++].src = base_path + 'img/' + a[i];
		}
	}
}
/*
function addEvent(obj, eventType,fn, useCapture) {
if (obj.addEventListener) {
obj.addEventListener(eventType, fn, useCapture);
return true;
} else {
if (obj.attachEvent) {
var r = obj.attachEvent("on"+eventType, fn);
return r;
}
}
}
*/

function $(element) {
	if (arguments.length > 1) {
		for (var i = 0, elements = [], length = arguments.length; i < length; i++)
		elements.push($(arguments[i]));
		return elements;
	}
	if (typeof element == 'string')
	element = document.getElementById(element);
	return element;
}


function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");

	document.cookie = curCookie;
}

// name - имя считываемого cookie

function getCookie(name) {
	var prefix = name + "=";
	var cookieStartIndex = document.cookie.indexOf(prefix);
	if (cookieStartIndex == -1) return null;
	var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
	if (cookieEndIndex == -1)cookieEndIndex = document.cookie.length;
	return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}


// name - имя cookie
// [path] - путь, для которого cookie действительно
// [domain] - домен, для которого cookie действительно

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		"; expires=Thu, 01-Jan-70 00:00:01 GMT"
	}
}


var __eventListeners = [];

function addEvent(instance, eventName, listener) {
	var listenerFn = listener;
	if (instance.addEventListener) {
		instance.addEventListener(eventName, listenerFn, false);
	} else if (instance.attachEvent) {
		listenerFn = function() {
			listener(window.event);
		}
		instance.attachEvent("on" + eventName, listenerFn);
	} else {
		throw new Error("Event registration not supported");
	}
	var event = {
		instance: instance,
		name: eventName,
		listener: listenerFn
	};
	__eventListeners.push(event);
	return event;
}
/* * * * * * * * * * * * * * * * */
function removeEvent(obj,evt,fn) {
	if (obj.removeEventListener)
	obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
	obj.detachEvent('on'+evt,fn);
}
/* * * * * * * * * * * * * * * * */
function unregisterAllEvents() {
	while (__eventListeners.length > 0) {
		removeEventListener(__eventListeners[0]);
	}
}
/* * * * * * * * * * * * * * * * */
function getTargetElement(evt) {
	var elem;
	if (evt.target) {
		elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target;
	} else {
		elem = evt.srcElement;
	}
	return elem;

}
/* * * * * * * * * * * * * * * * */
function popupimg(name, url, width, height){
	var imgss;
	winl = (screen.width) ? (screen.width - width) / 2 : 0;
	wint = (screen.height) ? (screen.height - height) / 2 : 0;
	//var winname = urlencode(name);
	var winname = name;
	var settings = 'left='+winl+',top='+wint+',width='+(width+40)+',height='+(height+40)+',toolbar=no,menubar=no,status=yes,scrollbars=yes,resizable=yes';
	myimgss = window.open('','imgpoint',settings);
	myimgss.document.write('<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>'+urldecode(winname)+'</title></head><body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><table height="100%" width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle"><a href="javascript:self.close();"><img src="'+url+'" name="fullbimg" alt="Click to close the window..." width="'+width+'" height="'+height+'" border="0"></a></td></tr></table></body></html>');
	myimgss.document.close();
	if(myimgss.window.focus) {
		myimgss.window.focus();
	}
}
/* * * * * * * * * * * * * * * * */
function urlencode(ch) {
	ch = escape(ch);
	ch = ch.replace(/[ ]/g,"%20");
	ch = ch.replace(/\+/g,"%2B");
	return ch;
}
function urldecode(ch) {
	ch = ch.replace(/[+]/g," ");
	return unescape(ch);
}
/* * * * * * * * * * * * * * * * */
function cPanels (id,active) {
	this.active = active;
	this.activeLink = null;
	this.ID = id;
	this.root = document.getElementById(id);
	this.childs = [];
	this.bookmarks = null;
	this.init = function (activeLink) {
		var i,j;
		if (this.root) {
			var elements = this.root.getElementsByTagName('div');
			if (elements) {
				j = 0;
				for (i in elements) {
					if (elements[i].className && (elements[i].className.indexOf('ptab') != -1)) {
						if (j == this.active) {
							elements[i].style.display = 'block';
							if (activeLink) {
								activeLink.className = 'selected';
								this.activeLink = activeLink;
							}
						}
						this.childs[j] = elements[i];
						j++;

					} else if(elements[i].className && (elements[i].className.indexOf('bookmarks') != -1)) {
						this.bookmarks = new cBookmarks(elements[i].id,this.active);
						this.bookmarks.init();
					}
				}
				this.total = j;
			}
		}
	}
	this.activate = function (pIndex,link) {
		if (this.childs[this.active]) {
			this.childs[this.active].style.display = 'none';
			if (this.bookmarks && this.bookmarks[this.active]) {
				this.bookmarks[this.active].id = '';
			}
			if (this.activeLink) {
				this.activeLink.className = '';
			}

		}
		if (this.childs[pIndex]) {
			this.childs[pIndex].style.display = 'block';
			this.active = pIndex;
			this.activeLink = link;
			if (this.activeLink) {
				this.activeLink.className = 'selected';
			}
			/*
			if (this.bookmarks[pIndex]) {
			this.bookmarks[pIndex].id = 'bmsel';
			}
			*/
			if (this.bookmarks) this.bookmarks.activate(pIndex);
		}
	}

	this.initRoot = function (obj) {
		this.root = obj;
		this.init();
	}
}

/* * * * * * * * * * * * * * * * */
function getOffsetLeft(el) {
	var left = el.offsetLeft;
	if (el.offsetParent) left += getOffsetLeft(el.offsetParent);
	return left;
}
/* * * * * * * * * * * * * * * * */
function getOffsetTop(el) {
	var top = el.offsetTop;
	//alert(el.nodeName + ' class:' + el.className + ' offset:' + el.offsetTop);
	if (el.offsetParent) top += getOffsetTop(el.offsetParent);
	return top;
}

/* * * * * * * * * * * * * * * * */
function validateform(fi,errormsg) {
	var el,noerr;
	noerr = true;
	for (var i in fi) {
		el = document.onfrm[fi[i]];
		if (el) {
			if (el.value == '') {
				noerr = false;
				el.style.background = '#ffdddd';
			} else {
				el.style.background = '#ffffff';
			}
		}
	}
	if (!noerr) alert(errormsg);
	return noerr;
}

/* * * * * * * * * * * * * * * * */
function setLang(lang) {
	var link = location.href;
	var preg = /^http:\/\/(\w{2,3}\.)?(.+)/;
	var rez;
	if (rez = link.match(preg)) {
		location.href = 'http://' + lang + '.' + rez[2];
	}
}
/* * * * * * * * * * * * * * * * */
function getPageScroll(){
	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll)
	return arrayPageScroll;
}

/* * * * * * * * * * * * * * * * */
function getPageSize(){

	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}
/* * * * * * * * * * * * * * * * */
function printPage(mode) {
	if ((mode == undefined) || (mode != 1)) {
		var wint = (screen.height - 600) / 2;
		var winl = (screen.width - 800) / 2;
		var url = location.href + '?print';
		window.open(url, 'Print', 'left='+winl+',top='+wint+',width=800,height=600,toolbar=no,menubar=no,status=yes,scrollbars=yes,resizable=no,location=no');
	} else {
		window.print();
	}
	return false;
}

/* * * * * * * * * * * * * * * * */
var dd_u = "undefined";

function WZDD()
{
	this.elements = new Array(0);
	this.obj = null;
	this.n = navigator.userAgent.toLowerCase();
	this.db = (document.compatMode && document.compatMode.toLowerCase() != "backcompat")?
	document.documentElement
	: (document.body || null);
	this.op = !!(window.opera && document.getElementById);
	if(this.op) document.onmousedown = new Function('e',
	'if(((e = e || window.event).target || e.srcElement).tagName == "IMAGE") return false;');
	this.ie = !!(this.n.indexOf("msie") >= 0 && document.all && this.db && !this.op);
	this.iemac = !!(this.ie && this.n.indexOf("mac") >= 0);
	this.ie4 = !!(this.ie && !document.getElementById);
	this.n4 = !!(document.layers && typeof document.classes != dd_u);
	this.n6 = !!(typeof window.getComputedStyle != dd_u && typeof document.createRange != dd_u);
	this.w3c = !!(!this.op && !this.ie && !this.n6 && document.getElementById);
	this.ce = !!(document.captureEvents && document.releaseEvents && !this.n6);
	this.px = this.n4? '' : 'px';
	this.tiv = this.w3c? 40 : 10;
}

var dd = new WZDD();

dd.Int = function(d_x, d_y)
{
	return isNaN(d_y = parseInt(d_x))? 0 : d_y;
};

dd.getScrollX = function()
{
	return dd.Int(window.pageXOffset || (dd.db? dd.db.scrollLeft : 0));
};
dd.getScrollY = function()
{
	return dd.Int(window.pageYOffset || (dd.db? dd.db.scrollTop : 0));
};

dd.evt = function(d_e)
{
	this.but = (this.e = d_e || window.event).which || this.e.button || 0;
	this.button = (this.e.type == 'mousedown')? this.but
	: (dd.e && dd.e.button)? dd.e.button
	: 0;
	this.src = this.e.target || this.e.srcElement || null;
	this.src.tag = ("" + (this.src.tagName || this.src)).toLowerCase();
	this.x = dd.Int(this.e.pageX || this.e.clientX || 0);
	this.y = dd.Int(this.e.pageY || this.e.clientY || 0);
	if(dd.ie)
	{
		this.x += dd.getScrollX() - (dd.ie && !dd.iemac)*1;
		this.y += dd.getScrollY() - (dd.ie && !dd.iemac)*1;
	}
	this.modifKey = this.e.modifiers? this.e.modifiers&Event.SHIFT_MASK : (this.e.shiftKey || false);
};
/* * * * * * * * * * * * * * * * */
function cScroller () {//states: 1 - down , -1 - up , -2 - right , 2 - left
	this.objects = {};
	this.speed = 10;

	this.init = function (objID,state) {
		var obj = {};
		obj.obj = document.getElementById(objID);
		obj.state = state;
		obj.timer = null;
		obj.maxVertScroll = parseInt(obj.obj.scrollHeight) - parseInt(obj.obj.offsetHeight);
		obj.maxHorizScroll = (parseInt(obj.obj.scrollWidth) - parseInt(obj.obj.offsetWidth));
		this.objects[objID] = obj;
	}

	this.down = function (id,timer) {
		if (this.objects[id] == undefined) {
			this.init(id,1);
		}
		var obj = this.objects[id];
		if (timer == undefined) {
			obj.state = 1;
		}

		if ((obj.maxVertScroll > obj.obj.scrollTop) && (obj.state == 1)) {
			obj.obj.scrollTop = (obj.obj.scrollTop + this.speed);
			obj.timer = setTimeout(this.down.bind(this,id,true),100);
		}

	}

	this.right = function (id,timer) {
		if (this.objects[id] == undefined) {
			this.init(id,-2);
		}
		var obj = this.objects[id];
		if (timer == undefined) {
			obj.state = -2;
		}

		if ((obj.maxHorizScroll > obj.obj.scrollLeft) && (obj.state == -2)) {
			obj.obj.scrollLeft = (parseInt(obj.obj.scrollLeft) + this.speed);
			obj.timer = setTimeout(this.right.bind(this,id,true),100);
		}

	}


	this.up = function (id,timer) {
		if (this.objects[id] == undefined) {
			this.init(id,-1);
		}
		var obj = this.objects[id];
		if (timer == undefined) {
			obj.state = -1;
		}

		if ((obj.obj.scrollTop > 0) && (obj.state == -1)) {
			obj.obj.scrollTop = (parseInt(obj.obj.scrollTop) - this.speed);
			if (obj.obj.scrollTop < 0) obj.obj.scrollTop = 0;
			obj.timer = setTimeout(this.up.bind(this,id,true),100);
		}
	}


	this.left = function (id,timer) {
		if (this.objects[id] == undefined) {
			this.init(id,2);
		}
		var obj = this.objects[id];
		if (timer == undefined) {
			obj.state = 2;
		}

		if ((obj.obj.scrollLeft > 0) && (obj.state == 2)) {
			obj.obj.scrollLeft = (parseInt(obj.obj.scrollLeft) - this.speed);
			if (obj.obj.scrollLeft < 0) obj.obj.scrollLeft = 0;
			obj.timer = setTimeout(this.left.bind(this,id,true),100);
		}
	}

	this.stop = function (id) {
		if (this.objects[id]) {
			clearTimeout(this.objects[id].timer);
			this.objects[id].state = 0;
		}
	}



}
/* * * * * * * * * * * * * * * * */
var hiddenBlocks = {};

function setBlock(id,mode) {
	if (hiddenBlocks[id] == undefined) {
		hiddenBlocks[id] = document.getElementById(id);
	}
	var disp = mode ? 'block' : 'none';
	if (hiddenBlocks[id]) hiddenBlocks[id].style.display = disp;
}
/* * * * * * * * * * * * * * * * */
function toggleClass(obj,className) {
	if (obj.className) {
		var classes = obj.className.split(" ");
		var enable = false;
		obj.className = '';
		for (var i in classes) {
			if (classes[i] == className) {
				enable = true;
			} else {
				obj.className += classes[i] + ' ';
			}
		}
		if (!enable) obj.className += className;
	} else {obj.className = className}

}
/* * * * * * * * * * * * * * * * */
function clearTable(table) {
	if (table && table.tBodies) {
		while(table.tBodies.length > 0) {
			table.removeChild(table.tBodies[0]);
		}
	}
}
/* * * * * * * * * * * * * * * * */
function clearNode(node) {
	if (node.childNodes) {
		while(node.childNodes.length > 0) {
			node.removeChild(node.childNodes[0]);
		}
	}
}
/* * * * * * * * * * * * * * * * */
function fmtNumberEx(n,decimals,point,separator)
{
	point = point ? point : '.';
	separator = separator ? separator : ' ';
	var number = new Number(n);	
	var num = number.toFixed(decimals).split('.');	
	x1 = num[0];
	x2 = num.length > 1 ? point + num[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + separator + '$2');
	}
	return x1 + x2;
	/*
	point = point ? point : '.';
	separator = separator ? separator : ' ';
	var number = new Number(n);
	var num = number.toFixed(decimals).split('.');
	var newNum = "";
	var result = num[0];
	var remainder;
	while (result > 0)
	{
		result = Math.floor(num[0]/1000);
		remainder = num[0]%1000;
		num[0] = result;
		if (remainder < 1000) {remainder = separator + remainder;}
		newNum = "" + remainder + newNum;
	}
	if (newNum.indexOf(separator) === 0) {
		newNum = newNum.substr(1);
	}
	return newNum + point + num[1];
	*/
}
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
function fmtNumber(number, decimals, point, separator)
{
	if(!isNaN(number))
	{
		point = point ? point : '.';
		number = number.toString().split('.');
		separator = separator ? separator : ' ';
		if(separator)
		{
			var tmp_number = new Array();
			for(var i = number[0].length, j = 0; i > 0; i -= 3)
			{
				var pos = i > 0 ? i - 3 : i;
				tmp_number[j++] = number[0].substring(i, pos);
			}
			number[0] = tmp_number.reverse().join(separator);
		}
		if(decimals && number[1]) {
			//number[1] = Math.round(parseFloat(number[1].substr(0, decimals) + '.' + number[1].substr(decimals, number[1].length), 10));
			//number[1] = Math.round(parseFloat(number[1].substr(0, decimals) + '.' + number[1].substr(decimals, number[1].length), 10));
		} else {
			number.push('00');
		}
		return(number.join(point));
	}
	else return(null);
}
/* * * * * * * * * * * * * * * * */
function cBubbleBlock () {
	this.blocks = {};
	this.timers = {};
	this.inited = false;
	this.init = function () {
		var elems = document.getElementsByTagName('div');
		for (var i = 0; i < elems.length; i++) {
			if (elems[i].className && elems[i].className.match(/bubble/i))	{
				if (!elems[i].id) elems[i].id = 'bubble_' + i;				
				addEvent(elems[i],'mouseover',this.over.bindAsEventListener(this,elems[i].id));
				addEvent(elems[i],'mouseout',this.out.bindAsEventListener(this,elems[i].id));
				this.blocks[elems[i].id] = elems[i];
			}
		}
		this.inited = true;
	}

	this.over = function (e,id) {
		if (!this.inited) this.init();
		if (this.blocks[id]) {
			if (this.timers[id]) {
				clearTimeout(this.timers[id]);
				this.timers[id] = false;
			}
			this.blocks[id].style.display = 'block';
		}
	}

	this.out = function (e,id,mode) {
		if (!this.inited) this.init();
		if (this.blocks[id]) {
			if (this.timers[id]) {
				clearTimeout(this.timers[id]);
				this.timers[id] = false;
			}
			if (mode == undefined)
			{
				this.timers[id] = setTimeout(this.out.bind(this,false,id,true),2000);
			} else {
				this.blocks[id].style.display = 'none';
			}
		}
	}

}
/* * * * * * * * * * * * * * * * */
function cLangMaster (lang,labels) {
	this.lang = lang||'ru';
	this.labels = labels||{};
	this.setLabel = function(label,value) {this.labels[label] = value};
	this.setLabels = function(labels) { this.labels = labels};
	this.getLabel = function(label) {return this.labels[label]||''};
}
/* * * * * * * * * * * * * * * * */
function syncList(){}
syncList.prototype.sync = function(selectors , lang) {
        var el;        
	for (var i=0; i < selectors.length-1; i++) {

            if (el = $(selectors[i])) {
                //addEvent(el,'change',(function (o,id1,id2){return function(){o._sync(id1,id2);};})(this, selectors[i], selectors[i+1]));
                $(selectors[i]).onchange = (function (o,id1,id2){return function(){o._sync(id1,id2);};})(this, selectors[i], selectors[i+1]);
            } 

            
        }
        this.lang = lang || 'ru';
	$(selectors[0]).onchange();
}
syncList.prototype._sync = function (firstSelectId, secondSelectId)
{
	var firstSelect = $(firstSelectId);
	var secondSelect = $(secondSelectId);
        if (firstSelect && secondSelect) {
            secondSelect.length = 0;            
            if (firstSelect.length>0) {
                    var parentOpt = firstSelect.value;                    
                    if (parentOpt > 0 && this.dataList) {                        
                        for (var key in this.dataList) {                            
                            if (this.dataList[key].par == parentOpt) secondSelect.options[secondSelect.length] = new Option(this.dataList[key][this.lang], key);
                        }

                    }
            }            
            secondSelect.onchange && secondSelect.onchange();
        }
};


var MAX_DUMP_DEPTH = 10;

function dumpObj(obj, name, indent, depth) {

      if (depth > MAX_DUMP_DEPTH) {

             return indent + name + ": <Maximum Depth Reached>\n";

      }

      if (typeof obj == "object") {

             var child = null;

             var output = indent + name + "\n";

             indent += "\t";

             for (var item in obj)

             {

                   try {

                          child = obj[item];

                   } catch (e) {

                          child = "<Unable to Evaluate>";

                   }

                   if (typeof child == "object") {

                          output += dumpObj(child, item, indent, depth + 1);

                   } else {

                          output += indent + item + ": " + child + "\n";

                   }

             }

             return output;

      } else {

             return obj;

      }

}
var PT_TEXT = 1;
var PT_CHECKBOX = 2;
var PT_LIST = 3;
var PT_DATE = 4;
var PT_FILE = 5;
var PT_CUSTOM = 6;
var PT_NUMBER = 7;

//flags
var PF_ACTIVE = 1;
var PF_MANDATORY = 2;
var PF_TEXT = 4;
var PF_MULTISELECT = 8;
var PF_MULTILANG = 16;
var PF_NOFORM = 32;
var PF_HIDDEN = 64;
var PF_SELECT = 128;
var PF_REL_OR = 256;
var PF_COOKIE = 512;
var PF_QUICKFILTER = 1024;
var PF_MODULELIST = 2048;
var PF_SCREENSHOT = 4096;
var PF_ADDITIONAL = 8192;



//rule types

//rules  (duplicate in validate.js !!! )
var PR_NUMERIC = 1;
var PR_REGEXP = 2;
var PR_MIN = 3;
var PR_MAX = 4;
var PR_NOTEMPTY = 5;
var PR_MINLENGTH = 6;
var PR_MAXLENGTH = 7;
var PR_EMAIL = 8;

//property ACTIONS
var PA_LOCATION = 1;
var PA_SETFIELD = 2;
var PA_SCREENSHOT = 3;
//

var pSetLists = {};


///images


var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}
/* * * * * * * * * * * * * * * * * * * * * */
function emptyFunction() {}
/* * * * * * * * * * * * * * * * * * * * * */
var Try = {
  these: function() {
    var returnValue;

    for (var i = 0, length = arguments.length; i < length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}
/* * * * * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * * * * */
var $A = function(iterable) {
  if (!iterable) return [];

  var results = [];
  for (var i = 0, length = iterable.length; i < length; i++) results.push(iterable[i]);
  return results;

}
/* * * * * * * * * * * * * * * * * * * * * */
Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}

Function.prototype.bindAsEventListener = function(object) {
  var __method = this, args = $A(arguments), object = args.shift();
  return function(event) {
    return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
  }
}
/* * * * * * * * * * * * * * * * * * * * * */

Object.extend = function(destination, source) {
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}
/* * * * * * * * * * * * * * * * * * * * * */
var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ) || false;
  },

  activeRequestCount: 0
}

Ajax.Base = function() {};
Ajax.Base.prototype = {
  setOptions: function(options) {
    this.options = {
      method:       'post',
      asynchronous: true,
      contentType:  'application/x-www-form-urlencoded',
      encoding:     'utf8',
      parameters:   ''
    }
    Object.extend(this.options, options || {});

    this.options.method = this.options.method.toLowerCase();
  }
}

Ajax.Request = Class.create();
Ajax.Request.Events =
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
  _complete: false,

  initialize: function(url, options) {
    this.transport = Ajax.getTransport();
    this.setOptions(options);
    this.request(url);
  }
});
/* * * * * * * * * * * * * * * * * * * * * */

Ajax.Responders = {
  responders: [],

  include: function(responder) {
  	for (var i = 0; i < this.responders.length ; i++) {
  		if (responder == this.responders[i]) return true;
  	}
  	return false;
  },

  register: function(responder) {
	  if (!this.include(responder)) this.responders.push(responder);
  },

  unregister: function(responder) {
    this.responders = this.responders.without(responder);
  },

  dispatch: function(callback, request, transport) {
  	var responder;
    for (var i = 0; i < this.responders.length; i++) {
      responder = this.responders[i];
      if (typeof responder[callback] == 'function') {
        try {
          responder[callback].apply(responder, [request, transport]);
        } catch (e) {}
      }
    }
  }
}

Ajax.Responders.register({
  onCreate: function() {
    Ajax.activeRequestCount++;


  },
  onComplete: function() {
    Ajax.activeRequestCount--;
  }
});

/* * * * * * * * * * * * * * * * * * * * * */


/* * * * * * * * * * * * * * * * * * * * * */

Ajax.Request = Class.create();
Ajax.Request.Events =
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
  _complete: false,

  initialize: function(url, options) {
    this.transport = Ajax.getTransport();
    this.setOptions(options);
    this.request(url);
  },

  request: function(url) {
    this.url = url;
    this.method = this.options.method;
    var params = this.options.parameters;

    if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='

    try {
      Ajax.Responders.dispatch('onCreate', this, this.transport);

      this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous,this.options.username,this.options.password);

      if (this.options.asynchronous) setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);

      this.transport.onreadystatechange = this.onStateChange.bind(this);
      this.setRequestHeaders();

      var body = this.method == 'post' ? (this.options.postBody || params) : null;


      if (this.options.timeout) {
      	this.timeOut = setTimeout(this.requestTimeout.bind(this),this.options.timeout*1000);
      }


      this.transport.send(body);
    }
    catch (e) {
      this.dispatchException(e);
    }
  },

  requestTimeout: function () {
  	 var transport = this.transport, json = this.evalJSON();
	  if (transport.abort) transport.abort();
	  if (this.options.onFailure) {
			this.options.onFailure(transport,json);
	  }
  },

  onStateChange: function() {
    var readyState = this.transport.readyState;
    if (readyState > 1 && !((readyState == 4) && this._complete))
      this.respondToReadyState(this.transport.readyState);
  },

  setRequestHeaders: function() {
    var headers = {
      'X-Requested-With': 'XMLHttpRequest',
      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
    };

    if (this.method == 'post') {
      headers['Content-type'] = this.options.contentType +
        (this.options.encoding ? '; charset=' + this.options.encoding : '');

      /* Force "Connection: close" for older Mozilla browsers to work
       * around a bug where XMLHttpRequest sends an incorrect
       * Content-length header. See Mozilla Bugzilla #246651.
       */
      if (this.transport.overrideMimeType &&
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
            headers['Connection'] = 'close';
    }

    for (var name in headers)
      this.transport.setRequestHeader(name, headers[name]);
  },

  success: function() {
    return !this.transport.status
        || (this.transport.status >= 200 && this.transport.status < 300);
  },

  respondToReadyState: function(readyState) {
    var state = Ajax.Request.Events[readyState];
    var transport = this.transport, json = this.evalJSON();

    if (state == 'Complete') {
      try {
      	if (this.timeOut) clearTimeout(this.timeOut);
        this._complete = true;
        (this.options['on' + this.transport.status]
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
         || emptyFunction)(transport, json);
      } catch (e) {
        this.dispatchException(e);
      }
    }

    try {
      (this.options['on' + state] || emptyFunction)(transport, json);
      Ajax.Responders.dispatch('on' + state, this, transport, json);
    } catch (e) {
      this.dispatchException(e);
    }

    if (state == 'Complete') {
      // avoid memory leak in MSIE: clean up

      this.transport.onreadystatechange = emptyFunction;
    }
  },

  getHeader: function(name) {
    try {
      return this.transport.getResponseHeader(name);
    } catch (e) { return null }
  },

  evalJSON: function() {
    try {
      var json = this.getHeader('X-JSON');
      return json ? eval('(' + json + ')') : null;
    } catch (e) { return null }
  },

  evalResponse: function() {
    try {
      return eval(this.transport.responseText);
    } catch (e) {
      this.dispatchException(e);
    }
  },

  dispatchException: function(exception) {
    (this.options.onException || emptyFunction)(this, exception);
    Ajax.Responders.dispatch('onException', this, exception);
  }
});
var currentLBEl = null;
var selectBuff = null;
var imgs = [];
/* * * * * * * * * * * * * * * * */
function showLightBox(elID) {
	var objOverlay = document.getElementById('overlay');
	if (!objOverlay) {
		objOverlay = document.createElement('div');
		objOverlay.id = 'overlay';
		addEvent(objOverlay,'click',hideLightBox);
		objOverlay.innerHTML = '&nbsp;';
		document.body.appendChild(objOverlay);
	}
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	objOverlay.style.height = (arrayPageSize[1] + 'px');
	//objOverlay.style.width = (arrayPageSize[0] + 'px');
	objOverlay.style.width = (document.body.clientWidth + 'px');

	if (currentLBEl) {
		srcEl = document.getElementById(currentLBEl);
		if (srcEl) {
			srcEl.style.display = 'none';
		}
	}

	srcEl = document.getElementById(elID);
	if (srcEl) {
		srcEl.style.visibility = 'hidden';
		srcEl.style.display = 'block';
		var height = srcEl.clientHeight;
		var width = srcEl.clientWidth;
		var ttop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - height) / 2);
		
		if (ttop < 0) ttop = 5;
		
		srcEl.style.top = ttop + 'px';
		srcEl.style.left = (((arrayPageSize[0] - 20 - width) / 2) + 'px');
		srcEl.style.visibility = 'visible';
	}
	currentLBEl = elID;

	if (!selectBuff) {
		selectBuff = document.getElementsByTagName('select');
	}
	var vselects = srcEl.getElementsByTagName('select');
	var i,j,flag;
	for (i = 0;i < selectBuff.length;i++) {
		flag = 'hidden';
		for (j = 0;j < vselects.length;j++) {
			if (vselects[j] == selectBuff[i]) {
				flag = '';
				break;
			}
		}
		selectBuff[i].style.visibility = flag;

	}
	
	objOverlay.style.display = 'block';
}

/* * * * * * * * * * * * * * * * */
function hideLightBox() {
	var objOverlay = document.getElementById('overlay');
	if (objOverlay.blocked) return;
	objOverlay.style.display = 'none';
	var srcEl = document.getElementById(currentLBEl);
	if (srcEl) {
		srcEl.style.display = 'none';
		if (srcEl.onclose) {
			showLightBox(srcEl.onclose);
			srcEl.onclose = null;
			return;
		}
	}
	for (var i = 0;i < selectBuff.length;i++) {
		selectBuff[i].style.visibility = 'visible';
	}
	currentLBEl = null;
}

/* * * * * * * * * * * * * * * * */
function imgReady(lb) {
	//var imaga = imgs[(imgs.length-1)];
	var imaga = this;
	if (imaga) {
		var el = document.getElementById(lb);
		var arrayPageSize = getPageSize();
		var arrayPageScroll = getPageScroll();
		var width = (imaga.width + 20);
		var height = (imaga.height + 20);
		el.style.width = (width + 'px');
		el.style.height = (height + 'px');
		el.style.background = 'white url(\''+imaga.src+'\') no-repeat center center';
		var ttop = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - height) / 2));
		if (ttop < 0) ttop = 5;
		el.style.top = ttop + 'px';
		el.style.left = (((arrayPageSize[0] - 20 - width) / 2) + 'px');
	}

}

/* * * * * * * * * * * * * * * * */
function showBoxImage(elID,img) {
	var srcEl = document.getElementById(elID);
	srcEl.style.background = 'white url(\'images/icon_wait.gif\') no-repeat center center';
	showLightBox(elID);
	var imaga = new Image();
	imaga.onload = imgReady;
	imaga.src = img;
	imgs.push(imaga);
}
/* * * * * * * * * * * * * * * * */
var lbiInited = false;
function lightBoxImage(srcImg,onclose) {
	var srcEl;
	if (!lbiInited)
	{
		var a,img;
		srcEl = document.createElement('div');
		srcEl.id = 'lbImage';
		srcEl.style.zIndex = 120;srcEl.style.padding = '9px 0px 15px';srcEl.style.width = '200px';srcEl.style.height = '200px';srcEl.style.display = 'none';srcEl.style.position = 'absolute';
		addEvent(srcEl,'click',hideLightBox);

		a = document.createElement('a');
		a.href = 'javascript:;';
		addEvent(a,'click',hideLightBox);
		a.className = 'close';a.style.position = 'absolute';a.style.top = '0px';a.style.right = '0px';

		img = document.createElement('img');img.src = 'images/ico-close.gif';img.alt = 'X';
		a.appendChild(img);
		srcEl.appendChild(a);
		document.body.appendChild(srcEl);
		lbiInited = true;
	} else {
		srcEl = document.getElementById('lbImage');
	}

	srcEl.onclose = onclose ? onclose : null;
	srcEl.style.background = 'white url(\'images/icon_wait.gif\') no-repeat center center';
	showLightBox('lbImage');
	var imaga = new Image();
	imaga.onload = imgReady.bind(imaga,'lbImage');
	imaga.src = srcImg;
	imgs.push(imaga);


}

/* * * * * * * * * * * * * * * * */
function imgBranchReady() {
	var imaga = imgs[(imgs.length-1)];
	var el = document.getElementById('branchmap');
	el.src = imaga.src;

}
/* * * * * * * * * * * * * * * * */
function showBranchImage(elID,img) {
	var el = document.getElementById('branchmap');
	el.style.background = 'white url(\'images/icon_wait.gif\') no-repeat center center';
	showLightBox(elID);
	var imaga = new Image();
	imaga.onload = imgBranchReady;
	imaga.src = img;
	imgs.push(imaga);
}
/* * * * * * * * * * * * * * * * */



/* * * * * * * * * * * * * * * * */

/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
var jTweener=function(){var Q=false;var D=60;var b=navigator.userAgent.toLowerCase();var a=/msie/.test(b)&&!/opera/.test(b);var B={};var W={};var X={time:1,transition:"easeoutexpo",namespace:"default",delay:0,prefix:{},suffix:{},onStart:undefined,onStartParams:undefined,onUpdate:undefined,onUpdateParams:undefined,onComplete:undefined,onCompleteParams:undefined};var J=["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor","borderColor"];var R=/^\s*([+\-])=\s*(\-?\d+)/;var V=false;var Z={};function U(){for(var c in jTweener.easingFunctions){Z[c.toLowerCase()]=jTweener.easingFunctions[c];}V=true;}function H(c,d){if(typeof c=="function"){if(d){c.apply(window,d);}else{c();}}}function G(f,c){if(f.style[c]){return f.style[c];}else{if(a){var e=f.currentStyle;if(c=="opacity"){f.style.zoom=1;return e.filter&&e.filter.indexOf("opacity=")>=0?parseFloat(e.filter.match(/opacity=([^)]*)/)[1])/100:1;}else{return f.currentStyle[c];}}else{if(document.defaultView&&document.defaultView.getComputedStyle){c=c.replace(/([A-Z])/g,"-$1").toLowerCase();var d=document.defaultView.getComputedStyle(f,"");return d&&d.getPropertyValue(c);}else{return null;}}}}function T(c){return(!(c instanceof Array)&&!c.jquery)?[c]:c;}function S(c){return c.nodeType?true:false;}function C(d){for(var c=0;c<J.length;c++){if(J[c]==d){return true;}}return false;}function A(c){return(typeof c=="function");}function E(d,c){var e=0;if(S(d)){e=G(d,c);}else{if(A(d[c])){e=d[c]();}else{e=d[c];}}return e;}function O(d,c){return parseFloat(E(d,c))||0;}function Y(d,e){if(W[d]&&W[d][e]){var f=W[d][e];for(var c=0;c<f.length;c++){H(f[c].func,f[c].params);}}}function M(i,d,h){var c=(i.suffix[d])?h+i.suffix[d]:h;if(A(i.target[d])){i.target[d].call(i.rawTarget,c);}else{if(i.targetPropeties[d].func){i.targetPropeties[d].func.call(i.rawTarget,h);}else{if(C(d)){var g=i.targetPropeties[d];i.target[d]=jTweener.Utils.Color.blend(g.start_color,g.end_color,h)+"";}else{try{if(a&&d=="opacity"&&S(i.rawTarget)){i.target.filter=(i.target.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(h).toString()=="NaN"?"":"alpha(opacity="+h*100+")");}else{i.target[d]=c;}}catch(f){}}}}}function F(){var c=(new Date()-0);var j=0;for(var l in B){var g=B[l];j++;for(var h=0;h<g.length;h++){var f=g[h];var n=c-f.startTime;var k=f.endTime-f.startTime;if(n>=k){for(var m in f.targetPropeties){var e=f.targetPropeties[m];M(f,m,e.b+e.c);}g.splice(h,1);H(f.onUpdate,f.onUpdateParams);H(f.onComplete,f.onCompleteParams);}else{for(var m in f.targetPropeties){var e=f.targetPropeties[m];M(f,m,f.easing(n,e.b,e.c,k));}H(f.onUpdate,f.onUpdateParams);}}Y(l,"onUpdate");if(!g.length){g=null;delete B[l];j--;Y(l,"onComplete");}}if(j>0){setTimeout(F,1000/D);}else{Q=false;}}function I(f,d){var c=0;if(f&&S(f)){f=f.style;}function e(h){for(var j=h.length-1;j>=0;j--){if(h[j].target==f){h.splice(j,1);c++;}}}if(!f&&d){B[d]=[];}else{if(d&&B[d]){e(B[d]);}else{for(var g in B){e(B[g]);}}}return c;}function K(d){var c={};for(var e in X){c[e]=d[e]||X[e];delete d[e];}if(A(c.transition)){c.easing=c.transition;}else{c.easing=Z[c.transition.toLowerCase()];}delete d.easing;return c;}function L(e){var c={};for(var d in e){if(e.hasOwnProperty(d)){c[d]=e[d];}}return c;}function N(h,k){k=L(k);var d=S(h);var e=K(k);e.rawTarget=h;e.target=(d)?h.style:h;e.targetPropeties={};var g;for(var j in k){if(!e.prefix[j]){e.prefix[j]="";}if(!e.suffix[j]){e.suffix[j]=(d&&j!="opacity")?"px":"";}var i=k[j];if(i===null){continue;}if(d){j=j.replace(/\-(\w)/g,function(m,l){return l.toUpperCase();});}if(C(j)){e.targetPropeties[j]={b:0,c:1,start_color:jTweener.Utils.getRGB(E(h,j)),end_color:jTweener.Utils.getRGB(i)};}else{if(A(i)){e.targetPropeties[j]={func:i,b:0,c:1};}else{var f=O(h,j);var c=i;if((g=R.exec(c))){c=f+(g[1]=="-"?-1:1)*parseFloat(g[2]);}else{c=parseFloat(c);}e.targetPropeties[j]={b:f,c:c-f};}}}return e;}function P(e,d){if(!V){U();}var c=d.delay||X.delay;setTimeout(function(){var f=N(e,d);f.startTime=(new Date()-0);f.endTime=f.time*1000+f.startTime;H(f.onStart,f.onStartParams);if(!B[f.namespace]){B[f.namespace]=[];}B[f.namespace].push(f);if(!Q){Q=true;F();}},c*1000);}return{addTween:function(e,c){e=T(e);for(var d=0;d<e.length;d++){P(e[d],c);}},addPercent:function(c){var d={};if(arguments.length==2){d=arguments[0];c=arguments[1];}P(d,c);return d;},addNSAction:function(f,e){e=e||X.namespace;if(!W[e]){W[e]={};}var c=W[e];for(var d in f){if(d.indexOf("Params")==-1){if(!c[d]){c[d]=[];}c[d].push({func:f[d],params:f[d+"Params"]});}}},removeNSActions:function(){switch(arguments.length){case 0:W={};break;default:var e=arguments[0];var f=[].splice.call(arguments,1);if(W[e]){if(f&&f.length){var c=W[e];for(var d=0;d<f.length;d++){delete c[f[d]];}}else{delete W[e];}}}},removeTween:function(){switch(arguments.length){case 0:B={};break;default:var e,c;if(arguments.length==1){if(typeof arguments[0]=="string"){e=arguments[0];}else{c=arguments[0];}}else{e=arguments[0];c=arguments[1];}if(c&&(c instanceof Array||c.jquery)){for(var d=0;
d<c.length;d++){I(c[d],e);}}else{I(c,e);}}}};}();jTweener.Utils={bezier2:function(A,D,C,B){return(1-A)*(1-A)*D+2*A*(1-A)*C+A*A*B;},bezier3:function(A,E,D,C,B){return Math.pow(1-A,3)*E+3*A*Math.pow(1-A,2)*D+3*A*A*(1-A)*C+A*A*A*B;},mergeObjects:function(){var A={};for(var C=0;C<arguments.length;C++){var D=arguments[C];if(!D){continue;}for(var B in D){A[B]=D[B];}}return A;},getRGB:function(B){var A;if(B&&B.constructor==jTweener.Utils.Color){return B;}if(A=/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/.exec(B)){return new jTweener.Utils.Color(parseInt(A[1],10),parseInt(A[2],10),parseInt(A[3],10));}if(A=/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*\)/.exec(B)){return new jTweener.Utils.Color(parseFloat(A[1],10)*2.55,parseFloat(A[2],10)*2.55,parseFloat(A[3],10)*2.55);}if(A=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(B)){return new jTweener.Utils.Color(parseInt(A[1],16),parseInt(A[2],16),parseInt(A[3],16));}if(A=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(B)){return new jTweener.Utils.Color(parseInt(A[1]+A[1],16),parseInt(A[2]+A[2],16),parseInt(A[3]+A[3],16));}return new jTweener.Utils.Color(0,0,0);}};jTweener.Utils.Color=function(C,B,A){this.r=Math.max(Math.min(Math.round(C),255),0);this.g=Math.max(Math.min(Math.round(B),255),0);this.b=Math.max(Math.min(Math.round(A),255),0);};jTweener.Utils.Color.blend=function(B,A,C){C=C||0;return new jTweener.Utils.Color(B.r+(A.r-B.r)*C,B.g+(A.g-B.g)*C,B.b+(A.b-B.b)*C);};jTweener.Utils.Color.prototype={r:0,g:0,b:0,toString:function(){return"rgb("+this.r+","+this.g+","+this.b+")";}};jTweener.easingFunctions={easeNone:function(B,A,D,C){return D*B/C+A;},easeInQuad:function(B,A,D,C){return D*(B/=C)*B+A;},easeOutQuad:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeInOutQuad:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInCubic:function(B,A,D,C){return D*(B/=C)*B*B+A;},easeOutCubic:function(B,A,D,C){return D*((B=B/C-1)*B*B+1)+A;},easeInOutCubic:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B+A;}return D/2*((B-=2)*B*B+2)+A;},easeInExpo:function(B,A,D,C){return(B==0)?A:D*Math.pow(2,10*(B/C-1))+A-D*0.001;},easeOutExpo:function(B,A,D,C){return(B==C)?A+D:D*1.001*(-Math.pow(2,-10*B/C)+1)+A;},easeInOutExpo:function(B,A,D,C){if(B==0){return A;}if(B==C){return A+D;}if((B/=C/2)<1){return D/2*Math.pow(2,10*(B-1))+A-D*0.0005;}return D/2*1.0005*(-Math.pow(2,-10*--B)+2)+A;},easeInElastic:function(C,A,G,F,B,E){var D;if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;D=E/4;}else{D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},easeOutElastic:function(C,A,G,F,B,E){var D;if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;D=E/4;}else{D=E/(2*Math.PI)*Math.asin(G/B);}return(B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A);},easeInOutElastic:function(C,A,G,F,B,E){var D;if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;D=E/4;}else{D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},easeInBack:function(B,A,E,D,C){if(C==undefined){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},easeOutBack:function(B,A,E,D,C){if(C==undefined){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},easeInOutBack:function(B,A,E,D,C){if(C==undefined){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},easeInBounce:function(B,A,D,C){return D-jTweener.easingFunctions.easeOutBounce(C-B,0,D,C)+A;},easeOutBounce:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}else{return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;}}}},easeInOutBounce:function(B,A,D,C){if(B<C/2){return jTweener.easingFunctions.easeInBounce(B*2,0,D,C)*0.5+A;}else{return jTweener.easingFunctions.easeOutBounce(B*2-C,0,D,C)*0.5+D*0.5+A;}}};jTweener.easingFunctions.linear=jTweener.easingFunctions.easeNone;(function(C){if(window.$t||!C){return ;}function B(G){return(typeof G=="function");}function F(){return C.Utils.mergeObjects.apply(this,arguments);}var A="__jto";var E=function(H,G){return new D(H,Array.prototype.slice.call(arguments,1));};function D(H,G){this.obj=H;this.options={};if(G instanceof Array){this.addOptions.apply(this,G);}else{this.addOptions(G);}}D.prototype={tween:function(){var G;if(arguments.length){G=Array.prototype.slice.call(arguments,0);G.unshift(this.options);G=F.apply(this,G);}else{G=this.options;}C.addTween(this.obj,G);return this;},percent:function(){var G=[];for(var H=0;H<arguments.length;H++){if(B(arguments[H])){var I={};I[A+H]=arguments[H];G.push(I);}else{G.push(arguments[H]);}}C.addPercent(this.obj,F.apply(this,G));return this;},stop:function(){C.removeTween(this.obj);
return this;},addOptions:function(){var G=Array.prototype.slice.call(arguments,0);G.unshift(this.options);this.options=F.apply(this,G);return this;},clearOptions:function(){this.options={};return this;},removeOptions:function(){for(var G=0;G<arguments.length;G++){delete this.options[String(arguments[G])];}return this;}};window.$t=E;})(jTweener);
/**
 * jQuery custom selectboxes
 * 
 * Copyright (c) 2008 Krzysztof Suszyński (suszynski.org)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * @version 0.6.1
 * @category visual
 * @package jquery
 * @subpakage ui.selectbox
 * @author Krzysztof Suszyński <k.suszynski@wit.edu.pl>
**/
jQuery.fn.selectbox = function(options){
	/* Default settings */
	var settings = {
		className: 'jquery-selectbox',
		animationSpeed: "fast",
		listboxMaxSize: 10,
		replaceInvisible: false
	};
	var commonClass = 'jquery-custom-selectboxes-replaced';
	var listOpen = false;
	var showList = function(listObj) {
		var selectbox = listObj.parents('.' + settings.className + '');
		listObj.slideDown(settings.animationSpeed, function(){
			listOpen = true;
		});
		selectbox.addClass('selecthover');
		jQuery(document).bind('click', onBlurList);
		return listObj;
	}
	var hideList = function(listObj) {
		var selectbox = listObj.parents('.' + settings.className + '');
		listObj.slideUp(settings.animationSpeed, function(){
			listOpen = false;
			jQuery(this).parents('.' + settings.className + '').removeClass('selecthover');
		});
		jQuery(document).unbind('click', onBlurList);
		return listObj;
	}
	var onBlurList = function(e) {
		var trgt = e.target;
		var currentListElements = jQuery('.' + settings.className + '-list:visible').parent().find('*').andSelf();
		if(jQuery.inArray(trgt, currentListElements)<0 && listOpen) {
			hideList( jQuery('.' + commonClass + '-list') );
		}
		return false;
	}
	
	/* Processing settings */
	settings = jQuery.extend(settings, options || {});
	/* Wrapping all passed elements */
	return this.each(function() {
		var _this = jQuery(this);
		if(_this.filter(':visible').length == 0 && !settings.replaceInvisible)
			return;
		var replacement = jQuery(
			'<div class="' + settings.className + ' ' + commonClass + '">' +
				'<div class="' + settings.className + '-moreButton" />' +
				'<div class="' + settings.className + '-list ' + commonClass + '-list" />' +
				'<span class="' + settings.className + '-currentItem" />' +
			'</div>'
		);
		jQuery('option', _this).each(function(k,v){
			var v = jQuery(v);
			var listElement =  jQuery('<span class="' + settings.className + '-item value-'+v.val()+' item-'+k+'">' + v.text() + '</span>');
			
			listElement.click(function(){
				
				var thisListElement = jQuery(this);				
				var thisReplacment = thisListElement.parents('.'+settings.className);
				var thisIndex = thisListElement[0].className.split(' ');
				for( k1 in thisIndex ) {
					if(/^item-[0-9]+$/.test(thisIndex[k1])) {
						thisIndex = parseInt(thisIndex[k1].replace('item-',''), 10);
						break;
					}
				};
				var thisValue = thisListElement[0].className.split(' ');
				for( k1 in thisValue ) {
					if(/^value-.+$/.test(thisValue[k1])) {
						thisValue = thisValue[k1].replace('value-','');
						break;
					}
				};
				thisReplacment
					.find('.' + settings.className + '-currentItem')
					.text(thisListElement.text());
				thisReplacment
					.find('select')
					.val(thisValue)
					.triggerHandler('change');
				var thisSublist = thisReplacment.find('.' + settings.className + '-list');
				if(thisSublist.filter(":visible").length > 0) {
					hideList( thisSublist );
				}else{
					showList( thisSublist );
				}
				if (settings.onchange){
					settings.onchange();
				}

			}).bind('mouseenter',function(){
				jQuery(this).addClass('listelementhover');
			}).bind('mouseleave',function(){
				jQuery(this).removeClass('listelementhover');
			});
			jQuery('.' + settings.className + '-list', replacement).append(listElement);
			if(v.filter(':selected').length > 0) {
				jQuery('.'+settings.className + '-currentItem', replacement).text(v.text());
			}
		});
		replacement.find('.' + settings.className + '-moreButton').click(function(){
			var thisMoreButton = jQuery(this);
			var otherLists = jQuery('.' + settings.className + '-list')
				.not(thisMoreButton.siblings('.' + settings.className + '-list'));
			hideList( otherLists );
			var thisList = thisMoreButton.siblings('.' + settings.className + '-list');
			if(thisList.filter(":visible").length > 0) {
				hideList( thisList );
			}else{
				showList( thisList );
			}
		}).bind('mouseenter',function(){
			jQuery(this).addClass('morebuttonhover');
		}).bind('mouseleave',function(){
			jQuery(this).removeClass('morebuttonhover');
		});
		_this.hide().replaceWith(replacement).appendTo(replacement);
		var thisListBox = replacement.find('.' + settings.className + '-list');
		var thisListBoxSize = thisListBox.find('.' + settings.className + '-item').length;
		var itemOffsetHeight = thisListBox.find('.' + settings.className + '-item')[0];
		//alert("OH:" + itemOffsetHeight.className + ' :' + itemOffsetHeight.height());
		var itemHeight = parseInt(jQuery(itemOffsetHeight).css('marginBottom')) + parseInt(jQuery(itemOffsetHeight).css('fontSize'));
		
		if(thisListBoxSize > settings.listboxMaxSize)
			thisListBoxSize = settings.listboxMaxSize;
		if(thisListBoxSize == 0)
			thisListBoxSize = 1;	
		var thisListBoxWidth = Math.round(_this.width() + 5);
	/*	if(jQuery.browser.safari)
			thisListBoxWidth = thisListBoxWidth * 0.94;*/
		replacement.css('width', thisListBoxWidth + 'px');

		thisListBox.css({
			width: Math.round(thisListBoxWidth-5) + 'px',
			height: (thisListBoxSize*itemHeight) + 'px'
		});
	});
}
jQuery.fn.unselectbox = function(){
	var commonClass = 'jquery-custom-selectboxes-replaced';
	return this.each(function() {
		var selectToRemove = jQuery(this).filter('.' + commonClass);
		selectToRemove.replaceWith(selectToRemove.find('select').show());
	});
}
function currListManager (root){
	this.root = $(root);
	this.blocks = [];
	this.curr = null;
	this.init = function (active){	
		if (active == undefined){
			active = 0;
		}
		var aels = this.root.getElementsByTagName('a');
		var divels = this.root.getElementsByTagName('div');
		var i;
		var j = 1;
		
		for (i in aels){
			if (aels[i].className == "tit"){
				
				addEvent(aels[i],'click',this.chooseCurr.bind(this,j));
				j++;
			}
		}
		j = 1;
		for (i in divels){
			if (divels[i].className == "ctype"){
				this.blocks[j] = divels[i];
				j++;
			}
		}
		if (this.blocks[active] != undefined){
			this.blocks[active].className = "ctype curr";
		}
	}
	this.chooseCurr = function (id){
		var i = 1;
		for (i;i < this.blocks.length;i++){
			if ((i == id)){
				if (id == this.curr){
					this.curr = null;
					this.blocks[i].className = "ctype";
				} else {
					this.blocks[i].className = "ctype curr";
					this.curr = id;
				}
			} else {
				this.blocks[i].className = "ctype";
			}
		}
		
	}
}
function UniToolbar()  {
	this.init = function() {
		this.cont = $('UCToolbar');
		this.frame = $('UCTframed');
		this.btn = $('closeToolbar');
		this.hmenu = $('hmenu');
		this.inited = true;
		this.state = 0;
	}
	
	this.open = function() {
		if (!this.inited)  this.init();
		if (this.state == 0)
		{
			this.cont.style.display = 'block';
			this.cont.style.height = '1px';
			jTweener.addTween(this.cont,{paddingTop:40,time:1});
			this.hmenu.className = 'opened';
			var t = this;
			
			jTweener.addTween(this.cont,{height:200,time:1,onComplete:function(){ jTweener.addTween(t.frame,{opacity:1})  }});
			this.state = 1;
		}
	}

	this.close = function() {
		if (!this.inited)  this.init();
		if (this.state == 1) {
			
			jTweener.addTween(this.cont,{paddingTop:0,time:1});
			
			jTweener.addTween(this.frame,{opacity:0,time:1});
			var t = this;
			jTweener.addTween(this.cont,{height:1,time:2,onComplete:function(){t.finalizeClose()}});
			
			
		}
	}

	this.finalizeClose = function () {
		this.cont.style.display = 'none';
		this.cont.style.height = '1px';
		this.hmenu.className = '';
		this.state = 0;
	}

	this.toggle = function () {
		if (!this.inited)  this.init();
		switch (this.state) {
			case 0: this.open();
				break;
			case 1: this.close();
				break;
		}
	}
}

function cNewsManager (el){
	this.months = [];
	this.nblocks =[];
	this.root = document.getElementById(el);
	this.init = function (active){
		if (active == undefined){
			active = 1;
		}
		var aels = this.root.getElementsByTagName('a');
		var divels = this.root.getElementsByTagName('div');
		var i;
		var j = 1;
		for (i in aels){
			if (aels[i].className == "ncurr"){
				addEvent(aels[i],'click',this.chooseMonth.bind(this,j));
				this.months[j] = aels[i];
				j++;
			}
		}
		j = 1;
		for (i in divels){
			if (divels[i].className == "mnews"){
				if (j == active){
					divels[i].style.display = "block";
				}
				this.nblocks[j] = divels[i];
				j++;
			}
		}
		if (this.months[active] != undefined){
			this.months[active].className = "curr";
			this.nblocks[active].style.display = "block";
		} else {
			this.months[1].className = "curr";
			this.nblocks[1].style.display = "block";
		}
	}
	this.chooseMonth = function (id){
		var i = 1;
		for (i;i < this.months.length;i++){
			if (i == id){
				this.months[i].className = "curr";
				this.nblocks[i].style.display = "block";
			} else {
				this.months[i].className = "ncurr";
				this.nblocks[i].style.display = "none";
			}
		}
	}
}

function showHint(obj,hintId,relative) {
	if (!obj.myHint) {
		var els = $(hintId);		
		if (els) {
			obj.myHint = els;
			obj.myHint.style.display = 'block';			
			var h = parseInt(obj.myHint.offsetHeight);
			var w = parseInt(obj.myHint.offsetWidth);
			var t = getOffsetTop(obj);
			if (relative) {
								
				obj.myHint.style.top = (-h - 3) + 'px';
				obj.myHint.style.right = 0 + 'px';
			
			} else {
				var pagesize = getPageSize();
				
				
				//obj.myHint.style.height = (h - 21) + 'px';
				t = t - h - 3;
				if (t < 0) t = 0;
				obj.myHint.style.top = t + 'px';
				var l = getOffsetLeft(obj) + parseInt(obj.offsetWidth);
				


				if (hintId == 'hint_call4') {
					if ((l+w) > pagesize[0]) {
						obj.myHint.style.left = (pagesize[0] - w - 10) + 'px';
					} else {
						obj.myHint.style.left = l + 15  + 'px';
					}
				} else {
					if ((l+w) > pagesize[0]) {
						obj.myHint.style.left = (pagesize[0] - w - 30) + 'px';
					} else {
						obj.myHint.style.left = l - 5  + 'px';
					}
				}
			}
		}
					
	}
	if (obj.myHint) {
		obj.myHint.style.display = 'block';
		obj.myHint.state = true;				
		jTweener.addTween(obj.myHint,{opacity:1,time:2});
	}
	
}

function hideHint(obj) {
	if (obj.myHint) {
		obj.myHint.state = false;
		obj.myHint.style.display = 'none';
		jTweener.addTween(obj.myHint,{opacity:0,time:1});
	}
}


function cBookmarScroller(cont) {
	this.cont = cont;
	this.step = 30;
	this.scroll = function(direction) {
		var scrollSize = this.step;
		if (this.cont) {
			jQuery(this.cont).animate({scrollLeft:"+="+scrollSize},500);
		}
	}
}
function scrollBookmarks(cont,scrollSize,direction) {
	scrollSize = scrollSize||(cont.offsetWidth/2);
	if (direction) scrollSize =-scrollSize;
	//cont.scrollLeft = 50;
	
	if (cont) {
		//alert('move ' + scrollSize + '::' +cont + '::' + cont.id + ' ' + cont.scrollHeight);
		//jTweener.addTween(cont,{scrollLeft:100});
		jQuery(cont).animate({scrollLeft:"+="+scrollSize},500);
	}	
}

function scrollBMto(cont,obj) {
	
	//alert('W: ' + obj.offsetWidth + ' , P:' + obj.parentNode.parentNode.offsetWidth);
	if (obj.parentNode && obj.parentNode.parentNode) {
		if ((obj.offsetWidth + obj.offsetLeft + 30) > obj.parentNode.parentNode.offsetWidth) {
			var l = obj.offsetLeft + obj.offsetWidth + obj.offsetWidth - obj.parentNode.parentNode.offsetWidth;
			if (l > obj.offsetLef) l = obj.offsetLeft;
			jQuery(cont).animate({scrollLeft:l},500);
		}
	}
}

function cTrackBar() {

	this.dragState = false;
	this.initScroller = function (obj) {		
		obj.inited = true;
		addEvent(document,'mousemove',this.dragMove.bindAsEventListener(this));
		addEvent(document,'mouseup',this.dragUp.bindAsEventListener(this));
		addEvent(obj,'mousedown',this.dragClick.bindAsEventListener(this));

		if (obj.parentNode) {

			obj.maxlen = parseInt(obj.parentNode.offsetWidth) - parseInt(obj.offsetWidth);
			obj.maxhei = parseInt(obj.parentNode.offsetHeight) - parseInt(obj.offsetHeight);
			obj.startX = getOffsetLeft(obj.parentNode);
			obj.startY = getOffsetTop(obj.parentNode);
		}
		this.scroller = obj;

	}

	this.dragClick = function(e) {
		if (!this.dragState) {
			this.dragState = 1;
		}
		if (e && e.preventDefault) e.preventDefault(); // DOM style
		e.returnValue = false;
		return false; //IE STYLE
	}

	this.dragMove = function(e) {
		if (this.dragState == 1) {
			var tmp = new dd.evt(e);
			
			var x = tmp.x - this.scroller.startX;
			if (x <= 0) {
				this.setScroller(0);
			} else if (x > this.scroller.maxlen) {
				this.setScroller(1);
			} else {
				var p = x  / this.scroller.maxlen;
				this.setScroller(p);
			}
		
			if (e.preventDefault) e.preventDefault(); // DOM style
			e.returnValue = false;
			return false; //IE STYLE
		}
	}

	this.dragUp = function (e) {
		if (this.dragState == 1)
		{
			this.dragState = 0;
		}
	}

	this.setScroller = function (percent,ignoreCallback) {
		if (this.scroller) {
			this.scroller.style.left = Math.floor(this.scroller.maxlen * percent) + 'px';
			if ((ignoreCallback == undefined) && this.scroller.callback) this.scroller.callback(percent);
		}
	}

	
}
function printLink(){
	var el = $('mprint');
	if (el){
		el.href = document.location +"?print";
	}
}
function add2Fav (url,title){
    if (!url) url = location.href;
	 if (!title) title = document.title;
	 //Gecko
	 if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) window.sidebar.addPanel (title, url, "");
	 //IE4+
	 else if (typeof window.external == "object") window.external.AddFavorite(url, title);
	 //Opera7+
	 else if (window.opera && document.createElement)
	 {
	   var a = document.createElement('A');
	   if (!a) return false; //IF Opera 6
	   a.setAttribute('rel','sidebar');
	   a.setAttribute('href',url);
	   a.setAttribute('title',title);
	   a.click();
	 }
	 else return false;

	 return true;
}
function loginBanking(){
	var el = $('regbankingsel');
	if (el){
		//document.location.href = el.value;
		window.open(el.value);
	}
}
function setRegLink(val){
	var el = $('regbanking');
	if (el){
		el.href = val;
	}
}

function cMacroRegion (el){
	this.months = [];
	this.nblocks =[];
	this.root = document.getElementById(el);
	this.init = function (){
		var aels = this.root.getElementsByTagName('a');
		var divels = this.root.getElementsByTagName('div');
		var i;
		var j = 1;
		for (i in aels){
			if (aels[i].className == "ncurr"){
				addEvent(aels[i],'click',this.chooseMonth.bind(this,j));
				this.months[j] = aels[i];
				j++;
			}
		}
		j = 1;
		for (i in divels){
			if (divels[i].className == "mnews"){
				this.nblocks[j] = divels[i];
				j++;
			}
		}
	}
	this.chooseMonth = function (id){
		var i = 1;
		for (i;i < this.months.length;i++){
			if (i == id){
				this.months[i].className = "curr";
				this.nblocks[i].style.display = "block";
			} else {
				this.months[i].className = "ncurr";
				this.nblocks[i].style.display = "none";
			}
		}
	}
}

function cChooseClock () {
	this.current = 0;	
	this.sektors = [0,9,10,11,12,1,2,3,4,5,6,7];
	this.labels = {};
	this.dest = null;
	this.destID = null;
	this.over = function (sektor) {
		sektor = this.sektors[sektor];
		$('bclock').style.backgroundPosition = '0 -' + (244*sektor) + 'px';
	}
	
	this.show = function() { 
		if (!this.inited) {
			this.setCurrent(this.current);
			this.inited = true;
		}
		showLightBox('chooseclock');
	}
	
	this.out = function () {		
		$('bclock').style.backgroundPosition = '0 0';
	}
	
	this.setCurrent = function (sektor) {
		sektor = this.sektors[sektor];
		$('cclock').style.backgroundPosition = '-252px -' + (244*sektor) + 'px';
	}
	
	this.chooseTime = function (sektor) {
		this.setCurrent(sektor);
		if (this.dest) {
			this.dest.value = this.labels[sektor].ti;
		}
		if (this.destID) {
			this.destID.value = this.labels[sektor].id;
		}
		hideLightBox();
	}
}


/* calendar */

var calMonths = {
	ru:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],
	ua:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],
	en:["January","February","March","April","May","June","July","August","September","October","November","December"]
};

var calMonthsOf = {
	ru:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]
}

var calDays = {
	ru:["П","В","С","Ч","П","С","В"],
	ua:["П","В","С","Ч","П","С","Н"],
	en:["Mo","Tu","We","Th","Fr","Sa","Su"]
}

function stDay(day) {
	if (day == 0) day = 7;
	return day;
}

function cCalendar (id,lang,path) {
	if (id == null) {
		this.inited = false;
	} else {
		this.box = document.getElementById(id);
		this.title = document.getElementById('cal_title');
		this.body = document.getElementById('cal_body');
		this.inited = true;
	}
	this.path = path || 'images/admin/';
	this.current = new Date();
	this.year = this.current.getFullYear();
	this.month = this.current.getMonth();
	this.lang = lang;
	this.targetID = null;
	this.format = "d-m-Y";
	this.changeyear = false;
	this.disableHolidays = false;
	this.disablePastDays = false;


	this.getMonthTitle = function (month) {
		if (calMonths[this.lang] && calMonths[this.lang][month]) {
			return calMonths[this.lang][month];
		} else return '';
	}
	this.buildMonth = function() {
		var i,td,tr,a,tb;
		var dt = new Date(this.year,this.month,1,20,0,0);
		var today = new Date();
		var start = dt.getTime();
		var daystamp = 86400000;
		var msg = '';
		var dow = stDay(dt.getDay());
		var tb = document.createElement('tbody');
		tr = document.createElement('tr');
		if (dow > 1) {
			for (i = 1; i < dow ;i++) {
				td = document.createElement('td');
				tr.appendChild(td);
			}
		}

		this.clear();

		if (this.changeyear) {
			this.title.innerHTML = this.getMonthTitle(this.month) + ' ';
			if (this.inputyear)	this.inputyear.value = this.year;
		} else {
			this.title.innerHTML = this.getMonthTitle(this.month) + ' ' + this.year;
		}
		var activeDay;
		while (dt.getMonth() == this.month) {			
			td = document.createElement('td');
			if ((dt.getMonth() == today.getMonth()) && (dt.getDate() == today.getDate())) {
				td.className = 'selected';
			} else if (dow == 7) td.className = 'red';
			a = document.createElement('a');
			a.href = 'javascript:;';
			activeDay = true;
						
			if (this.disableHolidays && ( (dt.getDay() == 0) || (dt.getDay() == 6) ) ) {
				activeDay = false;				
			}
			
			if (this.disablePastDays && (dt < today)) {
				activeDay = false;
			}
			
			if (activeDay) {
				addEvent(a,'click',this.chooseDate.bindAsEventListener(this,dt));
			} else {
				a.className = 'disabled';
			}
			a.appendChild(document.createTextNode(dt.getDate()));
			td.appendChild(a);
			tr.appendChild(td);

			if (dow == 7) {
				tb.appendChild(tr);
				tr = document.createElement('tr');
			}
			dt = new Date((dt.getTime() + daystamp));
			dow = stDay(dt.getDay());
		}

		if (dow != 1) {
			for (i = dow; i <= 7 ; i++) {
				td = document.createElement('td');
				tr.appendChild(td);
			}
			tb.appendChild(tr);
		}
		this.body.appendChild(tb);

	}

	this.hide = function () {
		this.box.style.display = 'none';

	}

	this.show = function (obj,targetID,formatFunc) {
		if (targetID == undefined) {
			this.targetID = obj;
		} else {
			this.targetID = document.getElementById(targetID);
		}

		this.customFormat = formatFunc ? formatFunc : this.customFormat;

		var l,t;
		l = getOffsetLeft(obj);
		t = getOffsetTop(obj);
		if (!this.inited) this.init();
		this.box.style.display = 'block';
		this.box.style.left = (l + obj.offsetWidth) + 'px';
		var tt = (t - this.box.offsetHeight - 10);
		if (tt < 0 ) tt = 10;
		this.box.style.top = tt + 'px';

		this.buildMonth();
	}

	this.yearchange = function () {
		var y = parseInt(this.inputyear.value);
		if ( !isNaN(y) && y > 1930 && y <= this.current.getFullYear()) {
			this.year = y;
			this.buildMonth();
		}
	}

	this.next = function () {
		this.month++;
		if (this.month == 12) {
			this.month = 0;
			this.year++;
		}
		this.buildMonth();
	}

	this.prev = function () {
		this.month--;
		if (this.month == -1) {
			this.month = 11;
			this.year--;
		}
		this.buildMonth();
	}

	this.formatDate = function (dt,test) {
		var v;
		var result = '';
		for (var i = 0; i < this.format.length; i++) {
			switch (this.format.charAt(i)) {
			case 'Y':
				result += dt.getFullYear();
				break;
			case 'y':
				break;
			case 'F'://full month
				v = dt.getMonth();
				if (calMonthsOf[this.lang] && calMonthsOf[this.lang][v]) {
					result += calMonthsOf[this.lang][v];
				}
				break;
			case 'm':
				v = dt.getMonth();v++;
				if (v < 10) v = '0' + v;
				result += v;
				break;
			case 'd':
				v = dt.getDate();
				if (v < 10) v = '0' + v;
				result += v;
				break;
			default:
				result += this.format.charAt(i);

			}
		}
		return result;
	}

	this.chooseDate = function (e,dt) {
		var dest = this.targetID;
		if (dest) {
			dest.value = this.customFormat ? this.customFormat(dt) : this.formatDate(dt);
		}

		this.customFormat = null;

		this.hide();
	}

	this.clear = function() {
		if (this.body && this.body.tBodies) {
			while(this.body.tBodies.length > 0) {
				this.body.removeChild(this.body.tBodies[0]);
			}
		}
	}

	this.init = function (id) {
		var div,a,el,el2,i;
		this.box = document.createElement('div');
		this.box.className = 'calendar';
		if (id) this.box.id = id;
		div = document.createElement('div');
		div.className = 'head';
		//prev
		a = document.createElement('a');
		a.className = 'left';
		a.href = 'javascript:;';
		el = document.createElement('img');
		el.alt = 'Previous';
		el.src = this.path+'a_calendar_left.gif';
		a.appendChild(el);
		addEvent(a,'click',this.prev.bindAsEventListener(this));
		div.appendChild(a);
		//title
		this.title = document.createElement('span');
		this.title.className = 'center';
		div.appendChild(this.title);
		//Change Year
		if (this.changeyear) {
			this.inputyear = document.createElement('input');
			this.inputyear.id = 'calc_y';
			addEvent(this.inputyear,'keyup',this.yearchange.bindAsEventListener(this));
			div.appendChild(this.inputyear);
		}
		//next
		a = document.createElement('a');
		a.className = 'right';
		a.href = 'javascript:;';
		el = document.createElement('img');
		el.alt = 'Next';
		el.src = this.path+'a_calendar_right.gif';
		a.appendChild(el);
		addEvent(a,'click',this.next.bindAsEventListener(this));
		div.appendChild(a);
		this.box.appendChild(div);
		//days
		div = document.createElement('div');
		div.className = 'days';
		el = document.createElement('div');
		el.className  = 'day';

		for (i in calDays[this.lang]) {
			el2 = document.createElement('div');
			el2.appendChild(document.createTextNode(calDays[this.lang][i]));
			if (i == 6) el2.className = 'red';
			el.appendChild(el2);
		}
		div.appendChild(el);
		this.body = document.createElement('table');
		/*el = document.createElement('thead');
		el2 = document.createElement('img');
		el2.src = 'images/px.gif';
		el2.alt = '';
		el.appendChild(el2);
		this.body.appendChild(el);*/
		div.appendChild(this.body);
		this.box.appendChild(div);
		//footer
		div = document.createElement('div');
		div.className = 'submit';
		a = document.createElement('a');
		a.href = 'javascript:;';
		el = document.createElement('img');
		el.src = this.path+'calendar_close.gif';
		el.alt = 'X';
		a.appendChild(el);
		addEvent(a,'click',this.hide.bindAsEventListener(this));
		div.appendChild(a);
		this.box.appendChild(div);
		div = document.createElement('div');
		div.innerHTML = "<!--[if lte IE 6.5]><iframe></iframe><![endif]-->"
		this.box.appendChild(div);
		document.body.appendChild(this.box);
		this.inited = true;
	}

}

function validate_field(fi,reg) {
	if (fi.match(reg)) {
		return true;
	}
	return false;
}



function validateForm(frm,fi,validreg) {

	var el,noerr,frm;
	noerr = true;
	if (document.forms[frm])
	{
		frm = document.forms[frm];
	} else {
		return true;
	}

	for (var i in fi) {
		el = frm[fi[i]];

		if (el) {
			if (el.value == '') {
				noerr = false;
				el.style.background = '#ffdddd';
			} else {
				el.style.background = '#ffffff';
			}
		}
	}
	if (!noerr) {
		if (errmsg)	alert(errmsg);
	} else {
		var messages = '';
		for (i in validreg) {
			if (frm[i]) {
				if (!validate_field(frm[i].value,validreg[i])) {
					frm[i].style.background = '#ffdddd';
					messages += errormsg[i] + '\n';
					noerr = false;
				}
			}
		}
		if (!noerr) {
			alert(messages);
		}
	}

	return noerr;
}


function validateNumeric(value) {
	if (value.length == 0) return true;
	var v = parseFloat(value);
	if (isNaN(v) || (v != value)) return false;
	return true;
}

function validateRegExp(value,param) {
	var rg = new RegExp(param);
	if (value.match(rg)) {
		return true;
	}
	return false;
}

function validateEmail(value) {
	var rg = new RegExp(/^([a-zA-Z0-9_\.\-\+]+)@([a-zA-Z0-9\.\-\+]+)\.([a-zA-Z]{2,5})$/);
	if (value.match(rg)) {
		return true;
	}
	return false;
}

function validateMin(value,param) {
	value = parseFloat(value);
	if (value < parseFloat(param)) {
		return false;
	}
	return true;
}

function validateMax(value,param) {
	value = parseFloat(value);
	if (value > parseFloat(param)) {
		return false;
	}
	return true;
}

function validateMinLength(value,param) {
	if (value.length < param) return false;
	return true;
}

function validateMaxLength(value,param) {
	if (value.length > param) return false;
	return true;
}

function formValidate(frmname) {
	var frm,prefix,inp,i,j,rez,result;
	result = true;
	if (prefix = frmname.match(/^frm_(\w+)$/)) {
		prefix = prefix[1];
		if (document.forms[frmname]) {
			frm = document.forms[frmname];
			if (formRules[prefix]) {
				var rules = formRules[prefix];
				for (i in rules) {
					inp = 'prop_' + i;
					if (frm[inp]) {
						for (j in rules[i]) {
							rez = true;
							switch (rules[i][j].type) {
							case PR_NUMERIC:
								rez = validateNumeric(frm[inp].value);
								break;
							case PR_REGEXP:
								rez = validateRegExp(frm[inp].value,rules[i][j].value);
								break;
							case PR_MIN:
								rez = validateMin(frm[inp].value,rules[i][j].value);
								break;
							case PR_MAX:
								rez = validateMax(frm[inp].value,rules[i][j].value);
								break;
							case PR_NOTEMPTY:
								rez = !validateRegExp(frm[inp].value,'^\s*$');
								break;
							case PR_EMAIL:
								rez = !validateEmail(frm[inp].value);
								break;
							}
							if (!rez) {
								frm[inp].style.background = '#ffdddd';
								result = false;
							} else {
								frm[inp].style.background = '#ffffff';
							}
						}
					}
				}
			};
		};
	};
	return result;
}


/*
*	rules:[
*		{rule_id:5,type:2,value:"^$",order:1,label:"errlabel"}
*	]
*
*
*
*/

function cValidator (field,rules,rel,checkRelate) {
	this.field = field;
	this.rules = rules;
	this.rel = rel;
	this.orlogic = false;
	this.checkRelate = checkRelate;
	this.errMsg = [];
	this.mark = '';

	this.validate = function(value) {
		var i;
		if (this.rel && this.checkRelate) {
			if (!this.checkRelate(this.rel,this.orlogic)) {
				return true;
			}
		}

		result = true;
		this.errMsg = [];
		var rules = this.rules;
		for (i = 0;i < rules.length; i++) {
			rez = true;
			switch (rules[i].type) {
			case PR_NUMERIC:
				rez = validateNumeric(value);
				break;
			case PR_REGEXP:
				rez = validateRegExp(value,rules[i].value);
				break;
			case PR_MIN:
				rez = validateMin(value,rules[i].value);
				break;
			case PR_MAX:
				rez = validateMax(value,rules[i].value);
				break;
			case PR_NOTEMPTY:
				rez = !validateRegExp(value,'^\s*$');
				break;
			case PR_MINLENGTH:
				rez = validateMinLength(value,rules[i].value);
				break;
			case PR_MAXLENGTH:
				rez = validateMaxLength(value,rules[i].value);
				break;
			case PR_EMAIL:
				rez = validateEmail(value);
				break;
			}

			if (!rez) {
				result = false;
				if (this.rules[i].label) {
					this.errMsg.push(this.rules[i].label);
				}
			}
		}
		return result;
	}
	this.setMark = function(mark)
	{
		this.mark = mark;
	}
}


function cFormValidator() {
	this.forms = [];
	this.cssError = 'error';
	this.markErrors = true;
	this.errMsg = {};
	this.checkRelate = null;//relations function
	this.showErrors = false;//show error messages
	this.initInputForStructs = false;//если используется не js построение формы, пробывать инициализивать input в структуре pItems

	this.addForm = function(frm,fields) {
		this.forms[frm.getAttribute('name')] = {form:frm};		
		if (fields) {
			var vl = [];
			for (var i in fields) {				
				vl.push(new cValidator(i,fields[i]));
			}

			this.forms[frm.getAttribute('name')].validators = vl;
		} else {
			this.forms[frm.getAttribute('name')].validators = [];
		}
	}

	this.addValidators = function(frmname,fields) {
		if (this.forms[frmname]) {
			for (var i in fields) {
				this.forms[frmname].validators.push(new cValidator(i,fields[i]));
			}
		}
	}

	this.removeValidators = function(frmname,field) {
		if (this.forms[frmname]) {
			var v = this.forms[frmname].validators;
			var b = [];
				for (i = 0 ; i < v.length; i++) {
					if (v[i].field != field ) {
						b.push(v[i]);
					};
				}
			this.forms[frmname].validators = b;
		}
	}

	this.removeFieldSet = function (frmname)
	{
		if (this.forms[frmname]) {			
			var v = this.forms[frmname].validators;
			var b = [];
				for (i = 0 ; i < v.length; i++) {
					if (v[i].mark != 'fieldset' ) {
						b.push(v[i]);
					}
				}
			this.forms[frmname].validators = b;
		}
	}
	this.ruleExists = function (ruleList, ruletype) {
		for (var i=0;i<ruleList.length;i++) {
			if (ruleList[i].type == ruletype) {
				return true;
			}
		}
		return false;
	}

	this.addFieldSet = function (frmname,struct,dmode) {
		if (struct && struct.length) {
			var n,v;
			for (var i in struct) {
				if (struct[i].flags&PF_MANDATORY) {
					if (!struct[i].rules) struct[i].rules = [];
					if (!this.ruleExists(struct[i].rules, PR_NOTEMPTY)) {
						struct[i].rules.push({type:PR_NOTEMPTY,label:"emptyfield"});
					}
				}
				
				if (struct[i].type == PT_NUMBER) {
					if (!struct[i].rules) struct[i].rules = [];
					if (!this.ruleExists(struct[i].rules, PR_NUMERIC)) {
						struct[i].rules.push({type:PR_NUMERIC,label:"mustbenumeric"});
					}
				} 
				
				if (struct[i].rules && struct[i].rules.length) {
					if (struct[i].field) {
						n = struct[i].field;
					} else {
						n = dmode ? 'inp' + struct[i].id: 'item_value' + struct[i].id;
					}
					if (this.initInputForStructs) {
						struct[i].input = this.forms[frmname].form[n] ? this.forms[frmname].form[n] : null;						
					}
					v = new cValidator(n,struct[i].rules,struct[i].rel,this.checkRelate);
					v.setMark('fieldset');
					v.orlogic = struct[i].flags&PF_REL_OR;
					this.forms[frmname].validators.push(v);
				}
			}
		}
	}

	this.clearValidators = function(frmname) {
		if (this.forms[frmname]) {
			this.forms[frmname].validators = [];
		}
	}

	this.validateForms = function() {
		var result = {};
		for (var i = 0;i < arguments.length;i++) {
			if (this.forms[arguments[i]]) {
				result[arguments[i]] = this.validate(this.forms[arguments[i]]);
			}
		}
		return result;
	}

	this.validateForm = function (frmname) {
		if (this.forms[frmname]) {
			return this.validate(this.forms[frmname]);
		} else {
			return true;
		}
	}

	this.validate = function (frm) {
		var i,k,result,value;
		var f = frm.form;var v = frm.validators;
		this.errMsg[frm] = {};
		result = true;
		for (i = 0 ; i < v.length; i++) {
			if (f[v[i].field]) {
				if (f[v[i].field].length)
				{					
					value = '';
					for (k = 0; k < f[v[i].field].length;k++ )
					{						
						if (f[v[i].field][k].checked || f[v[i].field][k].selected) value = f[v[i].field][k].value;
					}
				} else {
					value = f[v[i].field].value;
				}
				if (!v[i].validate(value)) {
					if (this.markErrors) {
						this.markError(f[v[i].field],v[i].errMsg);
					}
					result = false;
					if (v[i].errMsg.length) {
						this.errMsg[frm][v[i].field] = v[i].errMsg;
					}
				} else if (this.markErrors) {
					this.clearError(f[v[i].field]);
				}
			}
		}
		return result;
	}

	this.markErrorList = function(frmname,fieldList,fieldPrefix) {

		if (this.forms[frmname]) {
			var f = this.forms[frmname].form;
			var fi;
			for (i in fieldList) {				
				fi = (fieldPrefix||'') + i;				
				if (f[fi]) {					
					this.markError(f[fi],fieldList[i]);
				}
			}
		}
	}

	this.markError = function(field,msgs) {
		
		var cl;		
		if (!field.nodeName)
		{			
			if (field[0] && field[0].parentNode) {
				this.markError(field[0].parentNode,msgs);
			}
			return;
		}
		
		

		if (this.showErrors) {
			if (msgs && langMaster) {
				/*
				while(field.nextSibling) {
					cl = field.nextSibling;
					if (cl && cl.className == this.cssError) {
						cl.parentNode.removeChild(cl);
					} else {
						break;
					}
				}
				*/
				this.clearError(field);
				for (var i in msgs) {
					if (msgs[i] != 'none')
					{
						d = (document.createElement('div'));
						d.className = this.cssError;
						var errtxt = langMaster.getLabel(msgs[i]);
						if (errtxt != '') {
							d.appendChild(document.createTextNode(errtxt));
						}
						
						if (field.econt || (field.econt = document.getElementById('econt_'+field.id))) {
							field.econt.appendChild(d);
						} else { 						
							if (field.nextSibling) {							
								field.parentNode.insertBefore(d,field.nextSibling);
							} else {							
								field.parentNode.appendChild(d);
							}
						}
					}
				}
			}
		}

		field.validateError = true;

	  	if (field.className && (cl = field.className.split(/\s/))) {
			for (var i in cl) {
				if (cl[i] == this.cssError) return;
			}
			field.className += ' ' + this.cssError;
	  	} else {
	  		field.className = this.cssError;
		}



	}

	this.clearError = function(field) {
		var cl;
		if (!field.nodeName)
		{
			if (field[0] && field[0].parentNode) this.clearError(field[0].parentNode);
			return;
		}

		if (field.className && (cl = field.className.split(/\s/))) {
			var cm = [];
			for (var i in cl) {
				if (cl[i] != this.cssError) cm.push(cl[i]);
			}
			field.className = cm.join(' ');
			field.validateError = false;
		}
		if (this.showErrors) {			
			if (field.econt || (field.econt = document.getElementById('econt_'+field.id))){
				clearNode(field.econt);
			} else {						
				while(field.nextSibling) {
					cl = field.nextSibling;
					if (cl && cl.className == this.cssError) {
						cl.parentNode.removeChild(cl);
					} else {
						break;
					}
				}
			}
		}
	}
}

var formValidator = new cFormValidator();
var formRules = {};
var lang_labels = {add_favorite_title:"Ukrsotsbank",all:"All",all_fr:"Total",allcont:"All contacts",allcurr:"All currencies",back:"Back",block1:"General Information",block1f1:"Name of franchise",block1f10:"Number of employees",block1f2:"Owner of franchise",block1f3:"Foundation year of the company",block1f4:"Year of franchising activity start up",block1f5:"Country-origin of franchise",block1f6:"Description of franchise  (terms & conditions, why is it different from competitors)",block1f7:"Number of own objects",block1f8:"Number of franchising objects",block1f9:"Sales turnover in USD",block2:"Regional authorities on franchise usage",block2f1:"Territory",block2f2:"Head Office of the Franchisor mother-company",block3:"Description of the franchising package",block3f1:"Duration of the concession agreement (license) (years)",block3f10:"Post-startup support (please, indicate your service in details)",block3f11:"Trainings for franchisee and its staff",block3f12:"Shipment of goods / equipment",block3f2:"Cost of franchise (flat payment) (USD)",block3f3:"Royalty and other regular payments ",block3f4:"Required investments (USD)",block3f5:"Buy back period (months)",block3f6:"Profitability of 1 franchising object (%)",block3f7:"Business format standards (manual describing the work of the franchising object)",block3f8:"Provision of advertising materials (in details)",block3f9:"Initial support from franchisor (please, indicate your service in details)",block3fm:"Describe the components of the Franchising package",block4:"Other",block4f1:"Requirements to franchisee",block4f2:"Network expansion forecast for current (next) year)",block4f3:"Number of potential franchisees requiring bank’s financing",block4f4:"Your proposals as to the collaboration",block5:"Contact Information",block5f1:"Contact person",block5f2:"Тel",block5f3:"E-mail",bookm:"Add to bookmarks",branch:"Branch",bsup:"Customer Service",caccounts:"Retail accounts",cachin:"Receiving cash",calc:"Calculate",calc_annuity:"Annuity",calc_avansrate:"% Rates of advance payment",calc_creditpay:"Credit",calc_creditsum:"Credit ",calc_creditterm:"Term",calc_decreasing:"Standard",calc_monthpay:"Monthly payment",calc_percentpay:"Percents",calc_pertypecapit:"Capitalization",calc_pertypechoose:"Interest payment mode",calc_pertypeendofterm:"In the end of term",calc_pertypeeverymonth:"Monthly",calc_refillchoose:"Replenishment mode",calc_refilldisable:"Not allowed",calc_refillenable:"Allowed",calc_remain:"Remain",calc_totalpay:"Total",career:"Career",catms:"ATMs",cbuy:"Bid",cclients:"Corporate clients",cexchange:"Exchange offices",change:"Change",choosecreditproduct:"Choose credit product",city:"City",citytwopoint:"City:",contacts:"Contacts",copyright:"PJSC &quot;Ukrsotsbank&quot;. All rights reserved.",csell:"Ask",cservice:"Choose your product",currarch:"Archive of currencies",currconvert:"Currency converter",currency:"Currency",cusd:"US Dollars withdrawals",dateend:"Exp date",day:"day",day2:"days",days:"days",def_meta:"UniCredit Bank  - PJSC «Ukrsotsbank»",demo:"Demo",discl_new:"Disclaimer",disclaimer:"Disclaimer",disclaimer_important:"Urgent",emailb:"Email",enddate:"Final date",english:"English",enter_code:"Enter code",enteremail:"please enter your e-mail ",eur:"EUR",expl_bl2:"(if there is any restrictions ,  for example you are the owner of master franchise of the non-resident company)",facebook:"Facebook",faq:"Faq",fb_lang:"en_US",feedback:"Feedback",feedback2:"Contact Center",first:"First",fis_pidpr:"Self-Employed",fiz_lica:"Individuals",forperiod:"For the period",from:"from",goto_press:"Back to Press Centre",income_tax:"Net income",ipayments:"Instant payments",jurlitsa:"Legal entities",last:"Last",last_price:"Last Price",licence:"License #5 of NBU dated 29.06.2010",link_pacage:"Packages of banking services",link_pacage2:"Necessary Documents",links:"Links",mobile:"Mobile communication",month:"month",month2:"months",months:"months",more:"more",news:"News",newssubscribe:"News subscription",next:"Next",no:"no ",not_decide:"Haven’t decided",obanking:"Online Banking",od:"Odnoklassniki",oncecomission:"Comssion",order:"Order",orequest:"Online application",pack_choosen:"The package of banking services  is chosen.",pay_bills:"Pay your bills",pclients:"Private clients",pda:"Pda-version",percents:"Interests",period:"Period",persscenter:"Press-center",phone:"Phone",phone0800:"0 800 5000 20",phone23032:"+38 044-230-32-45",pr:"Feedback",prev:"Previous",print:"Print",privacy:"Privacy",prnt_vers:"Printable version",pservices:"Services",quarter:"quarter",rate:"Rate",rate_uah:"UAH rate",raty:"rate",readmore:"Read more",reg_now:"Register now!",region:"Region",regiontwopoint:"Region:",resh:"Decision",responsible:"Responsibles for web site content",roundclock:"24h",rss:"RSS",russian:"Русский",search:"Search",security_garant:"Security center",selcat:"Select category",selfservice:"Branches & ATMs",services:"Services",sitemap:"Site map",slang:"en",summ:"Amount",support:"Support",systemr:"System requirements",tlogin:"Login",tmore:"More",tno:"no ",to:"till",today:"Today",tomain:"To main",tomorrow:"Tomorrow",total:"Total",tsel:"Select",twitter:"Twitter",tyes:"yes ",uah:"UAH",ukr_fr:"In Ukraine",ukrainian:"Українська",unicreditt:"PJSC «UNICREDIT BANK»",usd:"USD",vk:"Vkontakte",week:"week",week2:"weeks",weeks:"weeks",worktime:"Business hours",year:"year",year2:"years",yearrate:"Rate",years:"years",yes:"yes ",your_pack:"The package that suits you is:",yourdepo:"Your deposit",opcm:"Order phone call or meeting"};

