/*
 * jQuery 1.2.6 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008/05/26 $
 * $Rev: 5685 $
 */
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();

/*******************************************************************************
 jquery.mb.components
 Copyright (c) 2001-2010. Matteo Bicocchi (Pupunzi); Open lab srl, Firenze - Italy
 email: info@pupunzi.com
 site: http://pupunzi.com

 Licences: MIT, GPL
 http://www.opensource.org/licenses/mit-license.php
 http://www.gnu.org/licenses/gpl.html
 ******************************************************************************/

/*
 * Name:jquery.mb.scrollable
 * Version: 1.5.7
 */

(function($) {
  $.mbScrollable= {
    plugin:"mb.scrollable",
    author:"MB",
    version:"1.5.7",
    defaults:{
      dir:"horizontal",
      width:950,
      elementsInPage:4,
      elementMargin:2,
      shadow:false,
      height:"auto",
      controls:"#controls",
      slideTimer:600,
      autoscroll:false,
      scrollTimer:6000,

      nextCallback:function(){},
      prevCallback:function(){}
    },

    buildMbScrollable: function(options){
      return this.each (function (){
        this.options = {};
        $.extend (this.options, $.mbScrollable.defaults);
        $.extend (this.options, options);

        var mbScrollable=this;
        mbScrollable.isVertical= mbScrollable.options.dir!="horizontal";
        var controls=$(mbScrollable.options.controls);
        mbScrollable.idx=1;
        mbScrollable.scrollTo=0;
        mbScrollable.elements= $(mbScrollable).children();
        mbScrollable.elements.addClass("scrollEl");
        controls.hide();

        $(mbScrollable).children().each(function(){$(this).wrap("<div class='SECont'></div>");});
        if (mbScrollable.options.shadow){
          $(mbScrollable.elements).css("-moz-box-shadow",mbScrollable.options.shadow);
          $(mbScrollable.elements).css("-webkit-box-shadow",mbScrollable.options.shadow);
        }
        mbScrollable.elements= $(mbScrollable).children();
        var eip= mbScrollable.options.elementsInPage<this.elements.size()?mbScrollable.options.elementsInPage:mbScrollable.elements.size();
        if(mbScrollable.isVertical){
          mbScrollable.singleElDim= (mbScrollable.options.height/eip)-mbScrollable.options.elementMargin;
          $(mbScrollable.elements).css({marginBottom:mbScrollable.options.elementMargin, height:mbScrollable.singleElDim, width:mbScrollable.options.width});
        }else{
          mbScrollable.singleElDim= (mbScrollable.options.width/eip)-mbScrollable.options.elementMargin;
          $(mbScrollable.elements).css({marginRight:mbScrollable.options.elementMargin, width:mbScrollable.singleElDim, display:"inline-block",float:"left" }); //float:"left"
        }
        this.elementsDim= (mbScrollable.singleElDim*mbScrollable.elements.size())+(mbScrollable.options.elementMargin*mbScrollable.elements.size());
        mbScrollable.totalPages= Math.ceil(mbScrollable.elements.size()/mbScrollable.options.elementsInPage);

        var adj= $.browser.safari && mbScrollable.options.elementsInPage>2?mbScrollable.options.elementMargin/(mbScrollable.options.elementsInPage):0;

        if(mbScrollable.isVertical)
          $(mbScrollable).css({overflow:"hidden", height:mbScrollable.options.height-adj,width:mbScrollable.options.width, paddingRight:5, position:"relative"});
        else
          $(mbScrollable).css({overflow:"hidden", width:mbScrollable.options.width-adj,height:mbScrollable.options.height,paddingBottom:5, position:"relative"});

        var mbscrollableStrip=$("<div class='scrollableStrip'/>").css({width:mbScrollable.elementsDim, position:"relative"});
        $(mbScrollable.elements).wrapAll(mbscrollableStrip);
        mbScrollable.mbscrollableStrip=$(mbScrollable).find(".scrollableStrip");
        $(mbScrollable.elements).hover(
                function(){
                  //                  console.debug(mbScrollable.autoScrollActive);
                  if(mbScrollable.autoScrollActive)
                    $(mbScrollable).mbStopAutoscroll();
                },
                function(){
                  if(mbScrollable.autoScrollActive)
                    $(mbScrollable).mbAutoscroll();
                });
        if(mbScrollable.options.autoscroll && mbScrollable.elements.size()>mbScrollable.options.elementsInPage){
          mbScrollable.autoScrollActive=true;
          $(mbScrollable).mbAutoscroll();
        }
        $(mbScrollable).mbPageIndex();
        $(mbScrollable).mbActivateControls();
        setTimeout(function(){
          $(".scrollEl").fadeIn();
        },1000);
        $(mbScrollable).mbManageControls();
      });
    },

    mbNextPage: function(auto){
      var mbScrollable= $(this).get(0);
      if (!auto) mbScrollable.autoScrollActive=false;

      if(mbScrollable.idx==mbScrollable.totalPages){
        $(mbScrollable).mbManageControls();
        return;
      }
      if (mbScrollable.options.nextCallback) mbScrollable.options.nextCallback();
      var adj=  $.browser.safari && mbScrollable.options.elementsInPage>2?mbScrollable.options.elementMargin/mbScrollable.options.elementsInPage:0;
      mbScrollable.scrollTo-=((mbScrollable.singleElDim+mbScrollable.options.elementMargin)*mbScrollable.options.elementsInPage)-adj;
      if (mbScrollable.isVertical){
        if ((mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.height))
          mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.height;
        $(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }else{
        if ((mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.width))
          mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.width;
        $(mbScrollable.mbscrollableStrip).animate({marginLeft:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }
      mbScrollable.idx+=1;
      $(this).mbManageControls();
    },

    mbPrevPage: function(auto){
      var mbScrollable= $(this).get(0);
      if (!auto) mbScrollable.autoScrollActive=false;

      if(mbScrollable.idx==1){
        $(mbScrollable).mbManageControls();
        return;
      }

      if (mbScrollable.options.prevCallback) mbScrollable.options.prevCallback();

      var adj=  $.browser.safari && mbScrollable.options.elementsInPage>2?mbScrollable.options.elementMargin/mbScrollable.options.elementsInPage:0;
      mbScrollable.scrollTo+=((mbScrollable.singleElDim+mbScrollable.options.elementMargin)*mbScrollable.options.elementsInPage)+adj;

      if (mbScrollable.isVertical){
        if (mbScrollable.scrollTo>=0) mbScrollable.scrollTo=0;
        $(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }else{
        if (mbScrollable.scrollTo>=0) mbScrollable.scrollTo=0;
        $(mbScrollable.mbscrollableStrip).animate({marginLeft:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }
      mbScrollable.idx-=1;
      $(this).mbManageControls();
    },

    mbFirstPage: function(){
      var mbScrollable= $(this).get(0);
      mbScrollable.autoScrollActive=false;

      mbScrollable.scrollTo=0;
      if (mbScrollable.isVertical){
        $(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }else{
        $(mbScrollable.mbscrollableStrip).animate({marginLeft:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }
      mbScrollable.idx=1;
      $(this).mbManageControls();
      $(mbScrollable).mbStopAutoscroll();
    },

    mbLastPage: function(){
      var mbScrollable= $(this).get(0);
      mbScrollable.autoScrollActive=false;

      if (mbScrollable.isVertical){
        mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.height;
        $(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }else{
        mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.width;
        $(mbScrollable.mbscrollableStrip).animate({marginLeft:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
      }
      mbScrollable.idx=mbScrollable.totalPages;
      $(mbScrollable).mbManageControls();
      $(mbScrollable).mbStopAutoscroll();
    },

    mbPageIndex: function(){
      var mbScrollable= $(this).get(0);
      var controls=$(mbScrollable.options.controls);
      var pages=controls.find(".pageIndex");
      if (pages){
        function getPage(i){
          mbScrollable.scrollTo=-((mbScrollable.singleElDim+mbScrollable.options.elementMargin)*(mbScrollable.options.elementsInPage*(i-1)));
          if(mbScrollable.isVertical){
            if (mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.height)
              mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.height;
            $(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
          }else{
            if (mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.width)
              mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.width;
            $(mbScrollable.mbscrollableStrip).animate({marginLeft:mbScrollable.scrollTo},mbScrollable.options.slideTimer);
          }
          mbScrollable.idx = Math.floor(i);
          $(mbScrollable).mbManageControls();
        }
        var n=0;
        for(var i=1;i<=mbScrollable.totalPages;i++){
          n++;
          var p=$("<span class='page'> "+n+" <\/span>").bind("click",function(){
            getPage($(this).html());
            $(mbScrollable).mbStopAutoscroll();
            mbScrollable.autoScrollActive=false;
          });
          pages.append(p);
        };
      }
    },
    mbAutoscroll:function(){
      var dir= "next";
      var mbScrollable= $(this).get(0);
      mbScrollable.autoScrollActive=true;

      if(mbScrollable.autoscroll) return;
      var timer=mbScrollable.options.scrollTimer+mbScrollable.options.slideTimer;
      mbScrollable.autoscroll = true;
      mbScrollable.auto = setInterval(function(){
        dir= mbScrollable.idx==1?"next":mbScrollable.idx==mbScrollable.totalPages?"prev":dir;
        if(dir=="next")
          $(mbScrollable).mbNextPage(true);
        else
          $(mbScrollable).mbPrevPage(true);
      },timer);
      $(mbScrollable).mbManageControls();
    },

    mbStopAutoscroll: function(){
      var mbScrollable= $(this).get(0);
      mbScrollable.autoscroll = false;
      clearInterval(mbScrollable.auto);
      $(mbScrollable).mbManageControls();

    },

    mbActivateControls: function(){
      var mbScrollable=$(this).get(0);
      var controls=$(mbScrollable.options.controls);
      controls.find(".first").bind("click",function(){$(mbScrollable).mbFirstPage();});
      controls.find(".prev").bind("click",function(){$(mbScrollable).mbStopAutoscroll();$(mbScrollable).mbPrevPage();});
      controls.find(".next").bind("click",function(){$(mbScrollable).mbStopAutoscroll();$(mbScrollable).mbNextPage();});
      controls.find(".last").bind("click",function(){$(mbScrollable).mbLastPage();});
      controls.find(".start").bind("click",function(){$(mbScrollable).mbAutoscroll();});
      controls.find(".stop").bind("click",function(){$(mbScrollable).mbStopAutoscroll();mbScrollable.autoScrollActive=false;});
    },

    mbManageControls: function(){
      var mbScrollable=$(this).get(0);
      var controls=$(mbScrollable.options.controls);
      if (mbScrollable.elements.size()<=mbScrollable.options.elementsInPage){
        controls.hide();
      }else{
        controls.fadeIn();
      }
      if (mbScrollable.idx==mbScrollable.totalPages){
        controls.find(".last").addClass("disabled");
        controls.find(".next").addClass("disabled");
      }else{
        controls.find(".last").removeClass("disabled");
        controls.find(".next").removeClass("disabled");
      }

      if (mbScrollable.idx==1){
        controls.find(".first").addClass("disabled");
        controls.find(".prev").addClass("disabled");
      }else{
        controls.find(".first").removeClass("disabled");
        controls.find(".prev").removeClass("disabled");
      }

      if (mbScrollable.autoscroll){
        controls.find(".start").addClass("sel");
        controls.find(".stop").removeClass("sel");
      }else{
        controls.find(".start").removeClass("sel");
        controls.find(".stop").addClass("sel");
      }
      controls.find(".page").removeClass("sel");
      controls.find(".page").eq(mbScrollable.idx-1).addClass("sel");
      controls.find(".idx").html(mbScrollable.idx+" / "+mbScrollable.totalPages);
    },

    goToPage: function(i,hasAnim) {
      var mbScrollable= $(this).get(0);
      var anim= hasAnim?0:mbScrollable.options.slideTimer;
      if (i>mbScrollable.totalPages) i=mbScrollable.totalPages;
      mbScrollable.scrollTo=-((mbScrollable.singleElDim+mbScrollable.options.elementMargin)*(mbScrollable.options.elementsInPage*(i-1)));
      if(mbScrollable.isVertical){
        if (mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.height)
          mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.height;
        $(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},anim);
      }else{
        if (mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.width)
          mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.width;
        $(mbScrollable.mbscrollableStrip).animate({marginLeft:mbScrollable.scrollTo},anim);
      }
      mbScrollable.idx = Math.floor(i);
      $(mbScrollable).mbManageControls();
      $(mbScrollable).mbStopAutoscroll();
      mbScrollable.autoScrollActive=false;
    }
/*
    //WIP 1.6.0
    mbAddElement: function(n){
      var mbScrollable=$(this).get(0);
      var newEl=$(n);
      newEl.addClass("scrollEl");

      $(mbScrollable).find(".scrollableStrip").append(newEl);
      newEl.wrap("<div class='SECont'/>");
      newEl.css({marginRight:mbScrollable.options.elementMargin, width:mbScrollable.singleElDim});
    }
*/
  };

  $.fn.mbScrollable=$.mbScrollable.buildMbScrollable;
  $.fn.mbNextPage=$.mbScrollable.mbNextPage;
  $.fn.mbPrevPage=$.mbScrollable.mbPrevPage;
  $.fn.mbFirstPage=$.mbScrollable.mbFirstPage;
  $.fn.mbLastPage=$.mbScrollable.mbLastPage;
  $.fn.mbPageIndex=$.mbScrollable.mbPageIndex;
  $.fn.mbgotoPage=$.mbScrollable.gotoPage;
  $.fn.mbAutoscroll=$.mbScrollable.mbAutoscroll;
  $.fn.mbStopAutoscroll=$.mbScrollable.mbStopAutoscroll;
  $.fn.mbActivateControls=$.mbScrollable.mbActivateControls;
  $.fn.mbManageControls=$.mbScrollable.mbManageControls;
  $.fn.goToPage=$.mbScrollable.goToPage;

//  $.fn.mbAddElement=$.mbScrollable.mbAddElement;

})(jQuery);

function HideShow(id,id1)
{
var el = document.getElementById(id);
var el1 = document.getElementById(id1);
el.style.display = 'none';
el1.style.display = 'block';
}

function email (login, sc)
{
        var serv = new Array;
        serv[0] = "svideos.ru";
        eml = login +  "@" + serv[sc];
        return eml;
}

function mylo (login, sc)
{
document.write (email(login, sc));
}

function namylo (login, sc, sub)
{
eml = "mailto:" + email(login, sc);
if (sub != "") eml += "?subject=" + sub;
window.location.href = eml;
}


var prev_comment = 0;

// Ответ на комментарий
function cr(comment_id)
{
	if (prev_comment && prev_comment != comment_id)
	{
		document.getElementById(prev_comment).style.display = 'none';
	}

	var div = document.getElementById(comment_id);
	
	if (div.style.display != 'block')
	{
		div.style.display = 'block';
	}
	else
	{
		div.style.display = 'none';
	}

	prev_comment = comment_id;
}

var temp_ChildId = '';
var temp_CurrenElementId = '';
var menu_timeout_id = 0;
var filter_timeout_id = 0;

// обработчик наведения мыши на меню
function TopMenuOver(CurrenElementId, ChildId)
{
	clearTimeout(menu_timeout_id);

	if (temp_CurrenElementId != ''
	&& temp_CurrenElementId != CurrenElementId)
	{
		var oTemp_ChildId = document.getElementById(temp_ChildId);

		if (oTemp_ChildId)
		{
			oTemp_ChildId.style.display = "none";
		}
	}

	temp_ChildId = ChildId;
	temp_CurrenElementId = CurrenElementId;

	if (CurrenElementId == undefined)
	{
		return false;
	}

	if (ChildId != '')
	{
		var oChildId = document.getElementById(ChildId);

		if (oChildId)
		{
			oChildId.style.display = "block";
			//oChildId.style.opacity = 0.4;
			//	oChildId.style.filter = 'alpha(opacity=100, style=1, finishopacity=60)';
			//oChildId.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0, style=0)";
		}
	}
}

// обработчик уведения мыши с меню
function TopMenuOut(CurrenElementId, ChildId)
{
	if (CurrenElementId == undefined)
	{
		return false;
	}

	if (ChildId != '')
	{
		var oChildId = document.getElementById(ChildId);
		if (oChildId)
		{
			menu_timeout_id = setTimeout(function (){oChildId.style.display = "none"}, 300);
		}
	}
}

// Функция обратного вызова для AddIntoCart
function callbackfunction_AddIntoCart(responseJS)
{
	// Результат принят
	sended_request = false;
	
	if (typeof responseJS != 'undefined')
	{
		// Данные.
		if (typeof responseJS.cart != 'undefined')
		{
			var little_cart = document.getElementById('little_cart');
			
			if (little_cart)
			{
				// Создадим скрытый SPAN для IE, в который поместим текст + скрипт.
				// Если перед <script> не будет текста, нехороший IE не увидит SCRIPT
				var span = document.createElement("span");
				span.style.display = 'none';
				span.innerHTML = "Stupid IE. " + responseJS.cart;

				runScripts(span.getElementsByTagName('SCRIPT'));
				
				little_cart.innerHTML = responseJS.cart;
			}
			else
			{
				alert('Ошибка! Краткая корзина не найдена');
			}
		}
	}
}

function AddIntoCart(shop_path, item_id, item_count)
{
	//location.href = shop_path + 'cart/?ajax_add_item_id=' + item_id + '&count=' + item_count;
	cmsrequest = shop_path + 'cart/?ajax_add_item_id=' + item_id + '&count=' + item_count;
	
	// Отправляем запрос backend-у
	sendRequest(cmsrequest, 'get', callbackfunction_AddIntoCart);
	
	return false;
}

// Функция обратного вызова для CheckBlogUrl
function callbackfunction_CheckBlogUrl(responseJS)
{
	// Результат принят
	sended_request = false;

	if (typeof responseJS != 'undefined')
	{
		// Данные.
		if (typeof responseJS.check_url_result != 'undefined')
		{
			var check_url = document.getElementById('check_url');

			if (responseJS.check_url_result == 0)
			{
				check_url.className = 'error';
				html = 'Адрес занят.';
			}
			else
			{
				check_url.className = 'green';
				html = 'Адрес свободен.';
			}

			if (check_url)
			{
				check_url.innerHTML = html;
			}
			else
			{
				alert('Ошибка! Блок для вывода результатов запроса не найден');
			}
		}
	}
}

function CheckBlogUrl(blog_path, blog_url, parent_id, id)
{
	cmsrequest = blog_path + '?ajax_check_blog_url=' + blog_url + '&group_parent_id=' + parent_id + '&group_id=' + id;

	var check_url = document.getElementById('check_url');

	if (check_url)
	{
		check_url.innerHTML = '<img src="/hostcmsfiles/images/ajax_loader_mini.gif"/>';
	}

	// Отправляем запрос backend-у
	sendBackgroundRequest(cmsrequest, 'get', callbackfunction_CheckBlogUrl);	

	return false;
}

// Установка или снятие всех флажков для checkbox'ов элементов.
function SelectAllItemsByPrefix(ASelect, prefix)
{
	element_array = document.getElementsByTagName("input");
	if (element_array.length > 0)
	{
		for (var i = 0; i < element_array.length; i++)
		{
			if (element_array[i].name.search(prefix) != -1)
			{
				// Устанавливаем checked
				element_array[i].checked = ASelect;
			}
		}

	}
}

//**
//* JsHttpRequest: JavaScript "AJAX" data loader
//*
//* @license LGPL
//* @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/
//* @version 5.x $Id$
//*/

// {{{
function JsHttpRequest() {
	// Standard properties.
	var t = this;
	t.onreadystatechange = null;
	t.readyState         = 0;
	t.responseText       = null;
	t.responseXML        = null;
	t.status             = 200;
	t.statusText         = "OK";
	// JavaScript response array/hash
	t.responseJS         = null;

	// Additional properties.
	t.caching            = false;        // need to use caching?
	t.loader             = null;         // loader to use ('form', 'script', 'xml'; null - autodetect)
	t.session_name       = "PHPSESSID";  // set to SID cookie or GET parameter name

	// Internals.
	t._ldObj              = null;  // used loader object
	t._reqHeaders        = [];    // collected request headers
	t._openArgs          = null;  // parameters from open()
	t._errors = {
		inv_form_el:        'Invalid FORM element detected: name=%, tag=%',
		must_be_single_el:  'If used, <form> must be a single HTML element in the list.',
		js_invalid:         'JavaScript code generated by backend is invalid!\n%',
		url_too_long:       'Cannot use so long query with GET request (URL is larger than % bytes)',
		unk_loader:         'Unknown loader: %',
		no_loaders:         'No loaders registered at all, please check JsHttpRequest.LOADERS array',
		no_loader_matched:  'Cannot find a loader which may process the request. Notices are:\n%'
	}

	/**
	* Aborts the request. Behaviour of this function for onreadystatechange()
	* is identical to IE (most universal and common case). E.g., readyState -> 4
	* on abort() after send().
	*/
	t.abort = function() { with (this) {
		if (_ldObj && _ldObj.abort) _ldObj.abort();
		_cleanup();
		if (readyState == 0) {
			// start->abort: no change of readyState (IE behaviour)
			return;
		}
		if (readyState == 1 && !_ldObj) {
			// open->abort: no onreadystatechange call, but change readyState to 0 (IE).
			// send->abort: change state to 4 (_ldObj is not null when send() is called)
			readyState = 0;
			return;
		}
		_changeReadyState(4, true); // 4 in IE & FF on abort() call; Opera does not change to 4.
	}}

	/**
	* Prepares the object for data loading.
	* You may also pass URLs like "GET url" or "script.GET url".
	*/
	t.open = function(method, url, asyncFlag, username, password) { with (this) {
		
		// Extract methor and loader from the URL (if present).
		if (url.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)) {
			this.loader = RegExp.$2? RegExp.$2 : null;
			method = RegExp.$3;
			url = RegExp.$4;
		}
		// Append SID to original URL. Use try...catch for security problems.
		try {
			if (
			document.location.search.match(new RegExp('[&?]' + session_name + '=([^&?]*)'))
			|| document.cookie.match(new RegExp('(?:;|^)\\s*' + session_name + '=([^;]*)'))
			) {
				url += (url.indexOf('?') >= 0? '&' : '?') + session_name + "=" + this.escape(RegExp.$1);
			}
		} catch (e) {}
		// Store open arguments to hash.
		_openArgs = {
			method:     (method || '').toUpperCase(),
			url:        url,
			asyncFlag:  asyncFlag,
			username:   username != null? username : '',
			password:   password != null? password : ''
		}
		_ldObj = null;
		_changeReadyState(1, true); // compatibility with XMLHttpRequest
		return true;
	}}

	/**
	* Sends a request to a server.
	*/
	t.send = function(content) {
		if (!this.readyState) {
			// send without open or after abort: no action (IE behaviour).
			return;
		}
		this._changeReadyState(1, true); // compatibility with XMLHttpRequest
		this._ldObj = null;

		// Prepare to build QUERY_STRING from query hash.
		var queryText = [];
		var queryElem = [];


		if (!this._hash2query(content, null, queryText, queryElem)) return;

		// Solve the query hashcode & return on cache hit.
		var hash = null;
		if (this.caching && !queryElem.length) {
			hash = this._openArgs.username + ':' + this._openArgs.password + '@' + this._openArgs.url + '|' + queryText + "#" + this._openArgs.method;
			var cache = JsHttpRequest.CACHE[hash];
			if (cache) {
				this._dataReady(cache[0], cache[1]);
				return false;
			}
		}

		// Try all the loaders.
		var loader = (this.loader || '').toLowerCase();
		if (loader && !JsHttpRequest.LOADERS[loader]) return this._error('unk_loader', loader);
		var errors = [];
		var lds = JsHttpRequest.LOADERS;
		for (var tryLoader in lds) {
			var ldr = lds[tryLoader].loader;
			if (!ldr) continue; // exclude possibly derived prototype properties from "for .. in".
			if (loader && tryLoader != loader) continue;
			// Create sending context.
			var ldObj = new ldr(this);
			JsHttpRequest.extend(ldObj, this._openArgs);
			JsHttpRequest.extend(ldObj, {
				queryText:  queryText.join('&'),
				queryElem:  queryElem,
				id:         (new Date().getTime()) + "" + JsHttpRequest.COUNT++,
				hash:       hash,
				span:       null
			});
			var error = ldObj.load();
			if (!error) {
				// Save loading script.
				this._ldObj = ldObj;
				JsHttpRequest.PENDING[ldObj.id] = this;
				return true;
			}
			if (!loader) {
				errors[errors.length] = '- ' + tryLoader.toUpperCase() + ': ' + this._l(error);
			} else {
				return this._error(error);
			}
		}

		// If no loader matched, generate error message.
		return tryLoader? this._error('no_loader_matched', errors.join('\n')) : this._error('no_loaders');
	}

	/**
	* Returns all response headers (if supported).
	*/
	t.getAllResponseHeaders = function() { with (this) {
		return _ldObj && _ldObj.getAllResponseHeaders? _ldObj.getAllResponseHeaders() : [];
	}}

	/**
	* Returns one response header (if supported).
	*/
	t.getResponseHeader = function(label) { with (this) {
		return _ldObj && _ldObj.getResponseHeader? _ldObj.getResponseHeader(label) : null;
	}}

	/**
	* Adds a request header to a future query.
	*/
	t.setRequestHeader = function(label, value) { with (this) {
		_reqHeaders[_reqHeaders.length] = [label, value];
	}}

	//
	// Internal functions.
	//

	/**
	* Do all the work when a data is ready.
	*/
	t._dataReady = function(text, js) { with (this) {
		if (caching && _ldObj) JsHttpRequest.CACHE[_ldObj.hash] = [text, js];
		responseText = responseXML = text;
		responseJS = js;
		if (js !== null) {
			status = 200;
			statusText = "OK";
		} else {
			status = 500;
			statusText = "Internal Server Error";
		}
		_changeReadyState(2);
		_changeReadyState(3);
		_changeReadyState(4);
		_cleanup();
	}}

	/**
	* Analog of sprintf(), but translates the first parameter by _errors.
	*/
	t._l = function(args) {
		var i = 0, p = 0, msg = this._errors[args[0]];
		// Cannot use replace() with a callback, because it is incompatible with IE5.
		while ((p = msg.indexOf('%', p)) >= 0) {
			var a = args[++i] + "";
			msg = msg.substring(0, p) + a + msg.substring(p + 1, msg.length);
			p += 1 + a.length;
		}
		return msg;
	}

	/**
	* Called on error.
	*/
	t._error = function(msg) {
		msg = this._l(typeof(msg) == 'string'? arguments : msg)
		msg = "JsHttpRequest: " + msg;
		if (!window.Error) {
			// Very old browser...
			throw msg;
		} else if ((new Error(1, 'test')).description == "test") {
			// We MUST (!!!) pass 2 parameters to the Error() constructor for IE5.
			throw new Error(1, msg);
		} else {
			// Mozilla does not support two-parameter call style.
			throw new Error(msg);
		}
	}

	/**
	* Convert hash to QUERY_STRING.
	* If next value is scalar or hash, push it to queryText.
	* If next value is form element, push [name, element] to queryElem.
	*/
	t._hash2query = function(content, prefix, queryText, queryElem) {
		if (prefix == null) prefix = "";
		if((''+typeof(content)).toLowerCase() == 'object') {
			var formAdded = false;
			if (content && content.parentNode && content.parentNode.appendChild && content.tagName && content.tagName.toUpperCase() == 'FORM') {
				content = { form: content };
			}
			for (var k in content) {
				var v = content[k];
				if (v instanceof Function) continue;
				var curPrefix = prefix? prefix + '[' + this.escape(k) + ']' : this.escape(k);
				var isFormElement = v && v.parentNode && v.parentNode.appendChild && v.tagName;

				if (isFormElement) {
					var tn = v.tagName.toUpperCase();

					if (tn == 'FORM') {
						// FORM itself is passed.
						formAdded = true;
					} else if (tn == 'INPUT' || tn == 'TEXTAREA' || tn == 'SELECT') {
						// This is a single form elemenent.
					} else {
						return this._error('inv_form_el', (v.name||''), v.tagName);
					}

					queryElem[queryElem.length] = { name: curPrefix, e: v };
				} else if (v instanceof Object) {
					this._hash2query(v, curPrefix, queryText, queryElem);
				} else {
					// We MUST skip NULL values, because there is no method
					// to pass NULL's via GET or POST request in PHP.
					if (v === null) continue;
					// Convert JS boolean true and false to corresponding PHP values.
					if (v === true) v = 1;
					if (v === false) v = '';
					queryText[queryText.length] = curPrefix + "=" + this.escape('' + v);
				}
				if (formAdded && queryElem.length > 1) {
					return this._error('must_be_single_el');
				}
			}
		} else {
			queryText[queryText.length] = content;
		}
		return true;
	}

	/**
	* Remove last used script element (clean memory).
	*/
	t._cleanup = function() {
		var ldObj = this._ldObj;
		if (!ldObj) return;
		// Mark this loading as aborted.
		JsHttpRequest.PENDING[ldObj.id] = false;
		var span = ldObj.span;
		if (!span) return;
		ldObj.span = null;
		var closure = function() {
			span.parentNode.removeChild(span);
		}
		// IE5 crashes on setTimeout(function() {...}, ...) construction! Use tmp variable.
		JsHttpRequest.setTimeout(closure, 50);
	}

	/**
	* Change current readyState and call trigger method.
	*/
	t._changeReadyState = function(s, reset) { with (this) {
		if (reset) {
			status = statusText = responseJS = null;
			responseText = '';
		}
		readyState = s;
		if (onreadystatechange) onreadystatechange();
	}}

	/**
	* JS escape() does not quote '+'.
	*/
	t.escape = function(s) {
		return escape(s).replace(new RegExp('\\+','g'), '%2B');
	}
}


// Global library variables.
JsHttpRequest.COUNT = 0;              // unique ID; used while loading IDs generation
JsHttpRequest.MAX_URL_LEN = 2000;     // maximum URL length
JsHttpRequest.CACHE = {};             // cached data
JsHttpRequest.PENDING = {};           // pending loadings
JsHttpRequest.LOADERS = {};           // list of supported data loaders (filled at the bottom of the file)
JsHttpRequest._dummy = function() {}; // avoid memory leaks


/**
* These functions are dirty hacks for IE 5.0 which does not increment a
* reference counter for an object passed via setTimeout(). So, if this
* object (closure function) is out of scope at the moment of timeout
* applying, IE 5.0 crashes.
*/

/**
* Timeout wrappers storage. Used to avoid zeroing of referece counts in IE 5.0.
* Please note that you MUST write "window.setTimeout", not "setTimeout", else
* IE 5.0 crashes again. Strange, very strange...
*/
JsHttpRequest.TIMEOUTS = { s: window.setTimeout, c: window.clearTimeout };

/**
* Wrapper for IE5 buggy setTimeout.
* Use this function instead of a usual setTimeout().
*/
JsHttpRequest.setTimeout = function(func, dt) {
	// Always save inside the window object before a call (for FF)!
	window.JsHttpRequest_tmp = JsHttpRequest.TIMEOUTS.s;
	if (typeof(func) == "string") {
		id = window.JsHttpRequest_tmp(func, dt);
	} else {
		var id = null;
		var mediator = function() {
			func();
			delete JsHttpRequest.TIMEOUTS[id]; // remove circular reference
		}
		id = window.JsHttpRequest_tmp(mediator, dt);
		// Store a reference to the mediator function to the global array
		// (reference count >= 1); use timeout ID as an array key;
		JsHttpRequest.TIMEOUTS[id] = mediator;
	}
	window.JsHttpRequest_tmp = null; // no delete() in IE5 for window
	return id;
}

/**
* Complimental wrapper for clearTimeout.
* Use this function instead of usual clearTimeout().
*/
JsHttpRequest.clearTimeout = function(id) {
	window.JsHttpRequest_tmp = JsHttpRequest.TIMEOUTS.c;
	delete JsHttpRequest.TIMEOUTS[id]; // remove circular reference
	var r = window.JsHttpRequest_tmp(id);
	window.JsHttpRequest_tmp = null; // no delete() in IE5 for window
	return r;
}


/**
* Global static function.
* Simple interface for most popular use-cases.
* You may also pass URLs like "GET url" or "script.GET url".
*/
JsHttpRequest.query = function(url, content, onready, nocache) {
	var req = new this();
	req.caching = !nocache;
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			onready(req.responseJS, req.responseText);
		}
	}
	req.open(null, url, true);
	req.send(content);
}


/**
* Global static function.
* Called by server backend script on data load.
*/
JsHttpRequest.dataReady = function(d) {
	var th = this.PENDING[d.id];
	delete this.PENDING[d.id];
	if (th) {
		th._dataReady(d.text, d.js);
	} else if (th !== false) {
		throw "dataReady(): unknown pending id: " + d.id;
	}
}


// Adds all the properties of src to dest.
JsHttpRequest.extend = function(dest, src) {
	for (var k in src) dest[k] = src[k];
}

/**
* Each loader has the following properties which must be initialized:
* - method
* - url
* - asyncFlag (ignored)
* - username
* - password
* - queryText (string)
* - queryElem (array)
* - id
* - hash
* - span
*/

// }}}

// {{{ xml
// Loader: XMLHttpRequest or ActiveX.
// [+] GET and POST methods are supported.
// [+] Most native and memory-cheap method.
// [+] Backend data can be browser-cached.
// [-] Cannot work in IE without ActiveX.
// [-] No support for loading from different domains.
// [-] No uploading support.
//
JsHttpRequest.LOADERS.xml = { loader: function(req) {
	JsHttpRequest.extend(req._errors, {
		xml_no:          'Cannot use XMLHttpRequest or ActiveX loader: not supported',
		xml_no_diffdom:  'Cannot use XMLHttpRequest to load data from different domain %',
		xml_no_headers:  'Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly',
		xml_no_form_upl: 'Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented'
	});

	this.load = function() {
		if (this.queryElem.length) return ['xml_no_form_upl'];

		// XMLHttpRequest (and MS ActiveX'es) cannot work with different domains.
		if (this.url.match(new RegExp('^([a-z]+://[^\\/]+)(.*)', 'i'))) {
			// We MUST also check if protocols matched: cannot send from HTTP
			// to HTTPS and vice versa.
			if (RegExp.$1.toLowerCase() != document.location.protocol + '//' + document.location.hostname.toLowerCase()) {
				return ['xml_no_diffdom', RegExp.$1];
			}
		}

		// Try to obtain a loader.
		var xr = null;
		if (window.XMLHttpRequest) {
			try { xr = new XMLHttpRequest() } catch(e) {}
		} else if (window.ActiveXObject) {
			try { xr = new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
			if (!xr) try { xr = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) {}
		}
		if (!xr) return ['xml_no'];

		// Loading method detection. We cannot POST if we cannot set "octet-stream"
		// header, because we need to process the encoded data in the backend manually.
		var canSetHeaders = window.ActiveXObject || xr.setRequestHeader;
		if (!this.method) this.method = canSetHeaders && this.queryText.length? 'POST' : 'GET';

		// Build & validate the full URL.
		if (this.method == 'GET') {
			if (this.queryText) this.url += (this.url.indexOf('?') >= 0? '&' : '?') + this.queryText;
			this.queryText = '';
			if (this.url.length > JsHttpRequest.MAX_URL_LEN) return ['url_too_long', JsHttpRequest.MAX_URL_LEN];
		} else if (this.method == 'POST' && !canSetHeaders) {
			return ['xml_no_headers'];
		}

		// Add ID to the url if we need to disable the cache.
		this.url += (this.url.indexOf('?') >= 0? '&' : '?') + 'JsHttpRequest=' + (req.caching? '0' : this.id) + '-xml';

		// Assign the result handler.
		var id = this.id;
		xr.onreadystatechange = function() {
			if (xr.readyState != 4) return;
			// Avoid memory leak by removing the closure.
			xr.onreadystatechange = JsHttpRequest._dummy;
			req.status = null;
			try {
				// In case of abort() call, xr.status is unavailable and generates exception.
				// But xr.readyState equals to 4 in this case. Stupid behaviour. :-(
				req.status = xr.status;
				req.responseText = xr.responseText;
			} catch (e) {}
			if (!req.status) return;
			try {
				// Prepare generator function & catch syntax errors on this stage.
				eval('JsHttpRequest._tmp = function(id) { var d = ' + req.responseText + '; d.id = id; JsHttpRequest.dataReady(d); }');
			} catch (e) {
				// Note that FF 2.0 does not throw any error from onreadystatechange handler.
				return req._error('js_invalid', req.responseText)
			}
			// Call associated dataReady() outside the try-catch block
			// to pass exceptions in onreadystatechange in usual manner.
			JsHttpRequest._tmp(id);
			JsHttpRequest._tmp = null;
		};

		// Open & send the request.
		xr.open(this.method, this.url, true, this.username, this.password);
		if (canSetHeaders) {
			// Pass pending headers.
			for (var i = 0; i < req._reqHeaders.length; i++) {
				xr.setRequestHeader(req._reqHeaders[i][0], req._reqHeaders[i][1]);
			}
			// Set non-default Content-type. We cannot use
			// "application/x-www-form-urlencoded" here, because
			// in PHP variable HTTP_RAW_POST_DATA is accessible only when
			// enctype is not default (e.g., "application/octet-stream"
			// is a good start). We parse POST data manually in backend
			// library code. Note that Safari sets by default "x-www-form-urlencoded"
			// header, but FF sets "text/xml" by default.
			xr.setRequestHeader('Content-Type', 'application/octet-stream');
		}
		xr.send(this.queryText);

		// No SPAN is used for this loader.
		this.span = null;
		this.xr = xr; // save for later usage on abort()

		// Success.
		return null;
	}

	// Override req.getAllResponseHeaders method.
	this.getAllResponseHeaders = function() {
		return this.xr.getAllResponseHeaders();
	}

	// Override req.getResponseHeader method.
	this.getResponseHeader = function(label) {
		return this.xr.getResponseHeader(label);
	}

	this.abort = function() {
		this.xr.abort();
		this.xr = null;
	}
}}
// }}}


// {{{ script
// Loader: SCRIPT tag.
// [+] Most cross-browser.
// [+] Supports loading from different domains.
// [-] Only GET method is supported.
// [-] No uploading support.
// [-] Backend data cannot be browser-cached.
//
JsHttpRequest.LOADERS.script = { loader: function(req) {
	JsHttpRequest.extend(req._errors, {
		script_only_get:   'Cannot use SCRIPT loader: it supports only GET method',
		script_no_form:    'Cannot use SCRIPT loader: direct form elements using and uploading are not implemented'
	})

	this.load = function() {
		// Move GET parameters to the URL itself.
		if (this.queryText) this.url += (this.url.indexOf('?') >= 0? '&' : '?') + this.queryText;
		this.url += (this.url.indexOf('?') >= 0? '&' : '?') + 'JsHttpRequest=' + this.id + '-' + 'script';
		this.queryText = '';

		if (!this.method) this.method = 'GET';
		if (this.method !== 'GET') return ['script_only_get'];
		if (this.queryElem.length) return ['script_no_form'];
		if (this.url.length > JsHttpRequest.MAX_URL_LEN) return ['url_too_long', JsHttpRequest.MAX_URL_LEN];

		var th = this, d = document, s = null, b = d.body;
		if (!window.opera) {
			// Safari, IE, FF, Opera 7.20.
			this.span = s = d.createElement('SCRIPT');
			var closure = function() {
				s.language = 'JavaScript';
				if (s.setAttribute) s.setAttribute('src', th.url); else s.src = th.url;
				b.insertBefore(s, b.lastChild);
			}
		} else {
			// Oh shit! Damned stupid Opera 7.23 does not allow to create SCRIPT
			// element over createElement (in HEAD or BODY section or in nested SPAN -
			// no matter): it is created deadly, and does not response the href assignment.
			// So - always create SPAN.
			this.span = s = d.createElement('SPAN');
			s.style.display = 'none';
			b.insertBefore(s, b.lastChild);
			s.innerHTML = 'Workaround for IE.<s'+'cript></' + 'script>';
			var closure = function() {
				s = s.getElementsByTagName('SCRIPT')[0]; // get with timeout!
				s.language = 'JavaScript';
				if (s.setAttribute) s.setAttribute('src', th.url); else s.src = th.url;
			}
		}
		JsHttpRequest.setTimeout(closure, 10);

		// Success.
		return null;
	}
}}
// }}}


// {{{ form
// Loader: FORM & IFRAME.
// [+] Supports file uploading.
// [+] GET and POST methods are supported.
// [+] Supports loading from different domains.
// [-] Uses a lot of system resources.
// [-] Backend data cannot be browser-cached.
// [-] Pollutes browser history on some old browsers.
//
JsHttpRequest.LOADERS.form = { loader: function(req) {
	JsHttpRequest.extend(req._errors, {
		form_el_not_belong:  'Element "%" does not belong to any form!',
		form_el_belong_diff: 'Element "%" belongs to a different form. All elements must belong to the same form!',
		form_el_inv_enctype: 'Attribute "enctype" of the form must be "%" (for IE), "%" given.'
	})

	this.load = function() {
		var th = this;

		if (!th.method) th.method = 'POST';
		th.url += (th.url.indexOf('?') >= 0? '&' : '?') + 'JsHttpRequest=' + th.id + '-' + 'form';

		// If GET, build full URL. Then copy QUERY_STRING to queryText.
		if (th.method == 'GET') {
			if (th.queryText) th.url += (th.url.indexOf('?') >= 0? '&' : '?') + th.queryText;
			if (th.url.length > JsHttpRequest.MAX_URL_LEN) return ['url_too_long', JsHttpRequest.MAX_URL_LEN];
			var p = th.url.split('?', 2);
			th.url = p[0];
			th.queryText = p[1] || '';
		}

		// Check if all form elements belong to same form.
		var form = null;
		var wholeFormSending = false;
		if (th.queryElem.length) {
			if (th.queryElem[0].e.tagName.toUpperCase() == 'FORM') {
				// Whole FORM sending.
				form = th.queryElem[0].e;
				wholeFormSending = true;
				th.queryElem = [];
			} else {
				// If we have at least one form element, we use its FORM as a POST container.
				form = th.queryElem[0].e.form;
				// Validate all the elements.
				for (var i = 0; i < th.queryElem.length; i++) {
					var e = th.queryElem[i].e;
					if (!e.form) {
						return ['form_el_not_belong', e.name];
					}
					if (e.form != form) {
						return ['form_el_belong_diff', e.name];
					}
				}
			}

			// Check enctype of the form.
			if (th.method == 'POST') {
				var need = "multipart/form-data";
				var given = (form.attributes.encType && form.attributes.encType.nodeValue) || (form.attributes.enctype && form.attributes.enctype.value) || form.enctype;
				if (given != need) {
					return ['form_el_inv_enctype', need, given];
				}
			}
		}

		// Create invisible IFRAME with temporary form (form is used on empty queryElem).
		// We ALWAYS create th IFRAME in the document of the form - for Opera 7.20.
		var d = form && (form.ownerDocument || form.document) || document;
		var ifname = 'jshr_i_' + th.id;
		var s = th.span = d.createElement('DIV');
		s.style.position = 'absolute';
		s.style.display = 'none';
		s.style.visibility = 'hidden';
		s.innerHTML =
		(form? '' : '<form' + (th.method == 'POST'? ' enctype="multipart/form-data" method="post"' : '') + '></form>') + // stupid IE, MUST use innerHTML assignment :-(
		'<iframe name="' + ifname + '" id="' + ifname + '" style="width:0px; height:0px; overflow:hidden; border:none"></iframe>'
		if (!form) {
			form = th.span.firstChild;
		}

		// Insert generated form inside the document.
		// Be careful: don't forget to close FORM container in document body!
		d.body.insertBefore(s, d.body.lastChild);

		// Function to safely set the form attributes. Parameter attr is NOT a hash
		// but an array, because "for ... in" may badly iterate over derived attributes.
		var setAttributes = function(e, attr) {
			var sv = [];
			var form = e;
			// This strange algorythm is needed, because form may  contain element
			// with name like 'action'. In IE for such attribute will be returned
			// form element node, not form action. Workaround: copy all attributes
			// to new empty form and work with it, then copy them back. This is
			// THE ONLY working algorythm since a lot of bugs in IE5.0 (e.g.
			// with e.attributes property: causes IE crash).
			if (e.mergeAttributes) {
				var form = d.createElement('form');
				form.mergeAttributes(e, false);
			}
			for (var i = 0; i < attr.length; i++) {
				var k = attr[i][0], v = attr[i][1];
				// TODO: http://forum.dklab.ru/viewtopic.php?p=129059#129059
				sv[sv.length] = [k, form.getAttribute(k)];
				form.setAttribute(k, v);
			}
			if (e.mergeAttributes) {
				e.mergeAttributes(form, false);
			}
			return sv;
		}

		// Run submit with delay - for old Opera: it needs some time to create IFRAME.
		var closure = function() {
			// Save JsHttpRequest object to new IFRAME.
			top.JsHttpRequestGlobal = JsHttpRequest;

			// Disable ALL the form elements.
			var savedNames = [];
			if (!wholeFormSending) {
				for (var i = 0, n = form.elements.length; i < n; i++) {
					savedNames[i] = form.elements[i].name;
					form.elements[i].name = '';
				}
			}

			// Insert hidden fields to the form.
			var qt = th.queryText.split('&');
			for (var i = qt.length - 1; i >= 0; i--) {
				var pair = qt[i].split('=', 2);
				var e = d.createElement('INPUT');
				e.type = 'hidden';
				e.name = unescape(pair[0]);
				e.value = pair[1] != null? unescape(pair[1]) : '';
				form.appendChild(e);
			}


			// Change names of along user-passed form elements.
			for (var i = 0; i < th.queryElem.length; i++) {
				th.queryElem[i].e.name = th.queryElem[i].name;
			}

			// Temporary modify form attributes, submit form, restore attributes back.
			var sv = setAttributes(
			form,
			[
			['action',   th.url],
			['method',   th.method],
			['onsubmit', null],
			['target',   ifname]
			]
			);
			form.submit();
			setAttributes(form, sv);

			// Remove generated temporary hidden elements from the top of the form.
			for (var i = 0; i < qt.length; i++) {
				// Use "form.firstChild.parentNode", not "form", or IE5 crashes!
				form.lastChild.parentNode.removeChild(form.lastChild);
			}
			// Enable all disabled elements back.
			if (!wholeFormSending) {
				for (var i = 0, n = form.elements.length; i < n; i++) {
					form.elements[i].name = savedNames[i];
				}
			}
		}
		JsHttpRequest.setTimeout(closure, 100);

		// Success.
		return null;
	}
}}
// }}}

/**
* HostCMS
*
* @author Hostmake LLC, http://www.hostcms.ru/
* @version 5.x
*/

if (typeof HostcmsEscape == 'undefined')
{
	// Ñîõðàíÿåì ñòàíäàðòíóþ ôóíêöèþ escape()
	//var escapeOrig = window.escape;

	// Ïåðåîïðåäåëÿåì ôóíêöèþ escape()
	//window.escape = function(str)
	function HostcmsEscape(str)
	{
		// Èíèöèàëèçèðóåì òàáëèöó ïåðåâîäà
		var trans = [];

		for (var i = 0x410; i <= 0x44F; i++)
		{
			trans[i] = i - 0x350; // À-ßà-ÿ
		}

		trans[0x401] = 0xA8; // ¨
		trans[0x451] = 0xB8; // ¸
		
		var ret = [];
		// Ñîñòàâëÿåì ìàññèâ êîäîâ ñèìâîëîâ, ïîïóòíî ïåðåâîäèì êèðèëëèöó
		for (var i = 0; i < str.length; i++)
		{
			var n = str.charCodeAt(i);

			if (typeof trans[n] != 'undefined')
			{
				n = trans[n];
			}
			if (n <= 0xFF)
			{
				ret.push(n);
			}
		}

		var res = escape(String.fromCharCode.apply(null, ret)).replace('+','%2B').replace(':','%3A').replace('/','%2F').replace('?','%3F').replace('=','%3D').replace('&','%26').replace('@','%40').replace('#','%23').replace('$','%24').replace(';','%3B');

		return res;
	}
}

// Ñîáûòèå - íàæàòèå êëàâèøè.
document.onkeydown = DoKeyDown;

// Ïîëüçîâàòåëüñêèé îáðàáîò÷èê ñîáûòèÿ íàæàòèÿ êëàâèø,
// äëÿ îáðàáîòêè Ctrl + ñòðåëêà.
function DoKeyDown(event)
{
	if (!document.getElementById)
	{
		return;
	}

	if (window.event)
	{
		event = window.event;
	}

	if (event.ctrlKey)
	{
		var Element = null;

		switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
		{
			case 0x25: // Íàçàä
			Element = document.getElementById ('id_prev');
			break;

			case 0x27: // Âïåðåä
			Element = document.getElementById ('id_next');
			break;
		}

		if (Element && Element.href)
		{
			// Ðåäèðåêò íà íóæíóþ ñòðàíèöó.
			document.location = Element.href;
		}
	}
}

function DisableTinyMCE()
{
	// Ðàáîòó ñ âèçóàëüíûì ðåäàêòîðîì âåä¸ì, åñëè ïðèøëè äàííûå äëÿ form_html
	if (typeof tinyMCE != 'undefined')
	{
		textarea_array = document.getElementsByTagName("textarea");

		for (var i=0; i < textarea_array.length; i++)
		{
			var elementId = textarea_array[i].id;

			if (tinyMCE.getInstanceById(elementId) != null)
			{
				textarea_array[i].disabled = true;
				tinyMCE.execCommand('mceRemoveControl', false, elementId);
			}
		}
	}
}

// âûïîëíÿåò ñêðèïòû èç ïîëó÷åííîãî îòâåòà îò ñåðâåðà
function runScripts(scripts)
{
	if (!scripts)
	{
		return false;
	}

	for (var i = 0; i < scripts.length; i++)
	{
		var thisScript = scripts[i];
		var text;

		if (thisScript.src)
		{
			var newScript = document.createElement("script");
			newScript.type = thisScript.type;
			newScript.language = thisScript.language;

			newScript.src = thisScript.src;
			document.getElementsByTagName('head')[0].appendChild(newScript);

			// Ïîëó÷àåì îáúåêò, ê êîòîðîìó ïðèìåíèì ðåáåíêà
			//var obj = document.getElementsByTagName('body')[0];
			//var obj = document.getElementById('id_form_' + AAdminFromsId);
			//obj.appendChild(newScript);
		}
		else if (text = (thisScript.text || thisScript.innerHTML))
		{
			var text = (""+text).replace(/^\s*<!\-\-/, '').replace(/\-\->\s*$/, '');

			var newScript = document.createElement("script");
			newScript.setAttribute("type", "text/javascript");
			newScript.text = text;

			var script_node = document.getElementsByTagName('head')[0].appendChild(newScript);

			// Íå ðàáîòàåò â IE, â íåì ðàáîòàåò newScript.text = text;
			//script_node.appendChild(document.createTextNode(text));
		}
	}
}

// action - àäðåñ ñòðàíèöû äëÿ çàïðîñ
// method - GET, POST, null - àâòîìàòè÷åñêîå îïðåäåëåíèå
// callback_function - ôóíêöèÿ îáðàòíîãî âûçîâà, êîòîðàÿ áóäåò âûçâàíà ïîñëå ïîëó÷åíèÿ îòâåòà îò backenad-à
function sendRequest(action, method, callback_function)
{
	var req = new JsHttpRequest();

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	// Ýòîò êîä âûçîâåòñÿ àâòîìàòè÷åñêè, êîãäà çàãðóçêà äàííûõ çàâåðøèòñÿ.
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			if (typeof callback_function != 'undefined')
			{
				callback_function(req.responseJS);
			}

			return true;
		}
	}

	req.open(method, action, true);

	// Îòñûëàåì äàííûå â îáðàáîò÷èê.
	req.send(null);

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";
}

//Çàãðóçêà ôîðìû
//AAction - îòíîñèòåëüíûé àäðåñ ôàéëà, êîòîðûé áóäåò çàïðîøåí
//AAdditionalParams - âíåøíèå ïåðåìåòðû, ïåðåäàâàåìûå â ñòðîêó çàïðîñà. Äîëæíû íà÷èíàòüñÿ ñ &
//AAdminFromsId - èäåíòèôèêàòîð ôîðìû öåíòðà àäìèíèñòðèðîâàíèÿ
//AOperation - èìÿ ñîáûòèÿ
//ALimit - òåêóùàÿ ñòðàíèöà, false - íå îòïðàâëÿòü ñòðàíèöó
//AOnPage - ÷èñëî ýëåìåíòîâ íà ñòðàíèöó
//AOrderFieldId - ID ïîëÿ, ïî êîòîðîìó èäåò ñîðòèðîâêà
//AOrderDirection - íàïðàâëåíèå ñîðòèðîâêè, 1 - ïî âîçðàñòàíèþ, 2 - ïî óáûâàíèþ
function DoLoadAjax(AAction, AAdditionalParams, AAdminFromsId, AOperation, ALimit, AOnPage, AOrderFieldId, AOrderDirection)
{
	// Îòêëþ÷àåì ñâÿçü ñ ðåäàêòîðàìè
	DisableTinyMCE();

	if (AOperation == '')
	{
		return false;
	}

	// Åñëè ïîëå ñîðòèðîâêè áûëî óêàçàíî - ïåðåäàäèì ïîëå è íàïðàâëåíèå ñîðòèðîâêè
	if (AOrderFieldId != 0)
	{
		sOrder = '&order_field_id=' + AOrderFieldId +
		'&order_field_direction=' + AOrderDirection;
	}
	else
	{
		sOrder = '';
	}

	// ×èñòî ýëåìåíîâ íà ñòðàíèöó.
	cbOnPage = document.getElementById('id_on_page');

	if (AOnPage)
	{
		sOnPage = '&admin_forms_on_page=' + AOnPage;
	}
	else
	{
		if (cbOnPage)
		{
			sOnPage = '&admin_forms_on_page=' + cbOnPage.options[cbOnPage.selectedIndex].value;
		}
		else
		{
			sOnPage = '';
		}
	}

	// Ñòðîêà çàïðîñà ñ âûáðàííûìè ýëåìåíòàìè è èõ çíà÷åíèÿìè.
	sElements = '';
	sFilter = '';

	// Äëÿ îïðåäåëíèÿ ïðèíàäëåæíîñòè ïîëÿ ôèëüòðó
	reg_filter = /admin_form_filter_.+/;

	element_array = document.getElementsByTagName("input");
	if (element_array.length > 0)
	{
		for (var i = 0; i < element_array.length; i++)
		{

			element_name = element_array[i].getAttribute('name');

			if (element_name == undefined)
			{
				continue;
			}

			// Îïðåäåëÿåì âûáðàíà ëè çàïèñü äëÿ ðåäàêòèðîâàíèÿ.
			if (element_name.search("check_") != -1 &&
			element_name.search("_fv_") == -1)
			//element_name.search("field_value") == -1)
			{
				if (element_array[i].checked)
				{
					sElements = sElements + '&' + element_name + '=1';

					// Èùåì çíà÷åíèÿ çàïèñåé.
					value_element_array = document.getElementsByTagName("input");
					if (value_element_array.length > 0)
					{
						for (var j = 0; j < value_element_array.length; j++)
						{
							value_element_name = value_element_array[j].name;

							if (typeof value_element_name == 'undefined')
							{
								continue;
							}

							// Ïðîâåðÿåì, ñîäåðæèò ëè â ñåáå èìÿ ÷åêáîêñà äëÿ çàïèñè.
							//if (value_element_name.search("field_value") != -1 &&
							if (value_element_name.search("_fv_") != -1 &&
							value_element_name.search(element_name) != -1)
							{
								if (value_element_array[j].getAttribute('type') == 'text')
								{
									sElements = sElements + '&' + value_element_name +
									'=' + value_element_array[j].value;
								}
								else if (value_element_array[j].getAttribute('type') == 'checkbox')
								{

									if (value_element_array[j].checked)
									{

										sElements = sElements + '&' + value_element_name + '=1';
									}
									else
									{

										sElements = sElements + '&' + value_element_name + '=0';
									}
								}
							}
						}
					}

					// Èùåì çíà÷åíèÿ çàïèñåé äëÿ select-îâ
					value_element_array = document.getElementsByTagName("select");
					if (value_element_array.length > 0)
					{
						for (var j = 0; j < value_element_array.length; j++)
						{
							value_element_name = value_element_array[j].name;

							if (typeof value_element_name == 'undefined')
							{
								continue;
							}

							// Ïðîâåðÿåì, ñîäåðæèò ëè â ñåáå èìÿ ÷åêáîêñà äëÿ çàïèñè.
							//if (value_element_name.search("field_value") != -1 &&
							if (value_element_name.search("_fv_") != -1 &&
							value_element_name.search(element_name) != -1)
							{
								sElements = sElements + '&' + value_element_name +
								'=' + HostcmsEscape(value_element_array[j].options[value_element_array[j].selectedIndex].value);
							}
						}
					}
				}
			}

			// Ìîæåò áûòü ýòî ýëåìåíò ôèëüòðà?
			if (reg_filter.test(element_name))
			{
				// Äîïèñûâàåì ê ïåðåäàâàåìûì äàííûì, òîëüêî åñëè çíà÷åíèå ôèëüòðà äî 255 ñèìâîëîâ
				if (element_array[i].value.length < 256)
				{
					sFilter = sFilter + '&' + element_name + '=' + HostcmsEscape(element_array[i].value);
				}
			}
		}
	}

	// Select-û èç ôèëüòðà
	element_array = document.getElementsByTagName("select");
	if (element_array.length > 0)
	{
		for (var i = 0; i < element_array.length; i++)
		{
			element_name = element_array[i].getAttribute('name');

			// Ìîæåò áûòü ýòî ýëåìåíò ôèëüòðà?
			if (reg_filter.test(element_name))
			{
				// Äîïèñûâàåì ê ïåðåäàâàåìûì äàííûì
				sFilter = sFilter + '&' + element_name + '=' + HostcmsEscape(element_array[i].value);
			}
		}
	}

	// Äàííûå êîòîðûå âñåãäà íóæíî ïåðåäàâàòü â çàïðîñ.
	sParams = AAdditionalParams;

	// Òåêóùàÿ ñòðàíèöà.
	//ALimit = '&limit=' + ALimit;

	//if (ALimit == 0)
	if (ALimit === false)
	{
		ALimit = '';
	}
	else
	{
		ALimit = '&limit=' + ALimit;
	}

	cmsrequest = AAction + '?admin_forms_id=' + AAdminFromsId +
	'&hostcmsAAction=' + HostcmsEscape(AAction) +
	'&hostcmsAAdditionalParams=' + HostcmsEscape(AAdditionalParams) +
	'&operation=' + AOperation + ALimit + sOnPage + sFilter +
	sElements + sOrder + sParams;

	if (cmsrequest.length < 2000)
	{
		method = 'get';
	}
	else
	{
		method = 'post';
	}

	// Îòïðàâëÿåì çàïðîñ backend-ó
	sendRequest(cmsrequest, method, callbackfunction_DoLoadAjax);
}

// Ôóíêöèÿ îáðàòíîãî âûçîâà äëÿ DoLoadAjax
function callbackfunction_DoLoadAjax(responseJS)
{
	// Ðåçóëüòàò ïðèíÿò
	sended_request = false;

	//if (typeof responseJS != 'undefined')
	if (responseJS != null)
	{
		if (typeof responseJS.error != 'undefined')
		{
			var div_id_message = document.getElementById('id_message');

			if (div_id_message)
			{
				div_id_message.innerHTML = responseJS.error;
			}
		}

		// Äàííûå.
		if (typeof responseJS.form_html != 'undefined')
		{
			// Óêàçûâàåì òåêóùèé ïóòü
			// Ìåíÿåì Location òîëüêî ïðè DoLoadAjax, åñëè âåðíóëèñü íàçàä - íå ìåíÿåì
			if (cmsrequest != ''
			&& function_exists('getCmsUrl')
			&& getCmsUrl() != cmsrequest)
			{
				setLocation(cmsrequest);
			}

			if (function_exists('saveLocation'))
			{
				// Ñîõðàíÿåì òåêóùèé ïóòü âñåãäà
				saveLocation(getCmsUrl());
			}

			// Îòêëþ÷àåì ñâÿçü ñ ðåäàêòîðàìè
			DisableTinyMCE();

			html = responseJS.form_html;

			document.getElementById('id_content').innerHTML = html;

			// Âûïîëíÿåì ñêðèïòû èç ïîëó÷åííîãî ñ ñåðâåðà HTML-à
			runScripts(document.getElementById('id_content').getElementsByTagName('SCRIPT'));

			// Ñáðàñûâàåì cmsrequest
			cmsrequest = '';
		}

		// Title.
		if (typeof responseJS.title != 'undefined' && responseJS.title != '')
		{
			document.title = responseJS.title;
		}

		// Ðåäèðåêò.
		if (typeof responseJS.redirect != 'undefined')
		{
			if (responseJS.redirect != '')
			{
				ShowLoadingScreen();
				location = responseJS.redirect;
			}
		}
	}
}

//Îòïðàâêà ôîðìû ìåòîäîì Get èëè Post
//AAction - îòíîñèòåëüíûé àäðåñ ôàéëà, êîòîðûé áóäåò çàïðîøåí
//AAdditionalParams - âíåøíèå ïåðåìåòðû, ïåðåäàâàåìûå â ñòðîêó çàïðîñà. Äîëæíû íà÷èíàòüñÿ ñ &
//ButtonObject - Îáúåêò íàæàòîé êíîïêè
//AAdminFromsId - èäåíòèôèêàòîð ôîðìû öåíòðà àäìèíèñòðèðîâàíèÿ
function doSendForm(AAction, AAdditionalParams, ButtonObject, AAdminFromsId, AOperation, ALimit, AOnPage)
{
	// Îáúåêò ðîäèòåëüñêîé ôîðìû ïî óìîë÷àíèþ
	var FormNode = ButtonObject.parentNode;

	// Ïîêà ðîäèòåëüñêàÿ ôîðìà íå ÿâëÿåòñÿ ôîðìîé
	while (FormNode.nodeName.toLowerCase() != 'form')
	{
		var FormNode = FormNode.parentNode;
	}

	// Ïîëó÷èì ID ôîðìû (íå ïóòàòü ñ ID ôîðìû öåíòðà àäìèíèñòðèðîâàíèÿ)
	FormID = FormNode.id;

	// Ïûòàåìñÿ ïîëó÷èòü ñêðûòûé îáúåêò äëÿ input-à
	var HiddenInput = document.getElementById(ButtonObject.name);

	// Ýëåìåíòà íåò, äîáàâèì åãî
	if (null == HiddenInput && undefined == HiddenInput || HiddenInput.type != 'hidden')
	{
		// Ñîçäàäèì ñêðûòé input, ò.ê. íàæàòûé íå ïåðåäàåòñÿ â ôîðìó
		var ElementInput = document.createElement("input");
		ElementInput.setAttribute("type", "hidden");
		ElementInput.setAttribute("id", ButtonObject.name);
		ElementInput.setAttribute("name", ButtonObject.name);

		// Äîáàâèì ñêðûòûé Input ê ôîðìå
		var InputNode = FormNode.appendChild(ElementInput);
	}

	// Ñîõðàíèì èç âèçóàëüíûõ ðåäàêòîðîâ äàííûå
	if (typeof tinyMCE != 'undefined')
	{
		tinyMCE.triggerSave();
	}

	var JsHttpRequestSendForm = new JsHttpRequest();

	// Êîä âûçûâàåòñÿ, êîãäà çàãðóçêà çàâåðøåíà
	JsHttpRequestSendForm.onreadystatechange = function ()
	{
		if (JsHttpRequestSendForm.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			if (typeof JsHttpRequestSendForm.responseJS != 'undefined')
			{
				// Âûâîäèì ðåçóëüòàò îøèáêè â ïåðåìåííóþ.
				if (typeof JsHttpRequestSendForm.responseJS.error != 'undefined')
				{
					var div_id_message = document.getElementById('id_message');

					if (div_id_message)
					{
						// Ñîçäàäèì ñêðûòûé SPAN äëÿ IE, â êîòîðûé ïîìåñòèì òåêñò + ñêðèïò.
						// Åñëè ïåðåä <script> íå áóäåò òåêñòà, íåõîðîøèé IE íå óâèäèò SCRIPT
						var span = document.createElement("span");
						span.style.display = 'none';
						span.innerHTML = "Stupid IE. " + JsHttpRequestSendForm.responseJS.error;

						runScripts(span.getElementsByTagName('SCRIPT'));

						// Çàíåñåì òåêñò ñîîáùåíèÿ òîëüêî ïîñëå âûïîëíåíèÿ ñêðèïòà
						div_id_message.innerHTML = JsHttpRequestSendForm.responseJS.error;
					}
				}

				// Äàííûå çàïèñûâàåì òîëüêî òîãäà, åñëè îíè åñòü è íå ïóñòûå.
				if (typeof JsHttpRequestSendForm.responseJS.form_html != 'undefined' && JsHttpRequestSendForm.responseJS.form_html != '')
				{
					// Îòêëþ÷àåì ñâÿçü ñ ðåäàêòîðàìè
					DisableTinyMCE();

					// Â êëèåíòñêîì ðàçäåëå íàì íå íóæíî ïîêàçûâàòü ðåçóëüòàò îòïðàâêè ôîðìû,
					// ïîýòîìó åñëè òàêîé ðåçóëüòàò ïðèøåë - çàêðûâàåì îêíî.
					HideWindow(prev_window);

					/*html = JsHttpRequestSendForm.responseJS.form_html;

					document.getElementById('id_content').innerHTML = html;

					// Âûïîëíÿåì ñêðèïòû èç ïîëó÷åííîãî ñ ñåðâåðà HTML-à
					runScripts(document.getElementById('id_content').getElementsByTagName('SCRIPT'));*/

				}
			}
			return true;
		}
	}

	// Îïðåäåëèì action ó ôîðìû
	//var FormAction = FormNode.getAttribute('action');
	// fix bug with IE 6 and getAttribute('') return [object]
	var FormAction = FormNode.attributes['action'].value;

	// Îïðåäåëèì ìåòîä ôîðìû
	var FormMethod = FormNode.getAttribute('method');

	if (AOnPage)
	{
		sOnPage = '&admin_forms_on_page=' + AOnPage;
	}
	else
	{
		sOnPage = '';
	}

	// Òåêóùàÿ ñòðàíèöà.
	if (ALimit == 0)
	{
		ALimit = '';
	}
	else
	{
		ALimit = '&limit=' + ALimit;
	}

	// ïåðåäà÷à ïàðàìåòðîâ AAdditionalParams ñäåëàíà ÿâíî, à íå ÷åðåç hostcmsAAdditionalParams
	FormAction += (FormAction.indexOf('?') >= 0 ? '&' : '?') + 'hostcmsAAction=' + HostcmsEscape(AAction) +
	'&hostcmsAAdditionalParams=' + HostcmsEscape(AAdditionalParams) + AAdditionalParams +
	'&operation=' + AOperation + ALimit + sOnPage;

	// Prepare request object (automatically choose GET or POST).
	JsHttpRequestSendForm.open(FormMethod, FormAction, true);

	JsHttpRequestSendForm.send( { query: FormNode } );

	// Î÷èñòèì ïîëå äëÿ ñîîáùåíèé
	var div_id_message = document.getElementById('id_message');

	if (div_id_message)
	{
		div_id_message.innerHTML = '';
	}

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	return false;
}


//Ôóíêöèÿ âûïîëíÿåò ñîáûòèå, óáèðàåò âûäåëåíèå âñåõ checkbox'îâ êðîìå íóæíîãî.
//AAction - îòíîñèòåëüíûé àäðåñ ôàéëà, êîòîðûé áóäåò çàïðîøåí
//AAdditionalParams - âíåøíèå ïåðåìåòðû, ïåðåäàâàåìûå â ñòðîêó çàïðîñà. Äîëæíû íà÷èíàòüñÿ ñ &
//AOperation - íàçâàíèå ñîáûòèÿ
//AItemName - êîäîâîå èìÿ ýëåìåíòà, íàä êîòîðûì ïðîèçâîäèòñÿ äåéñòâèå
//AAdminFromsId - èäåíòèôèêàòîð ôîðìû
//ALimit - òåêóùàÿ ñòðàíèöà
//AOnPage - ÷èñëî ýëåìåíòîâ íà ñòðàíèöó
//AOrderFieldId - ID ïîëÿ, ïî êîòîðîìó èäåò ñîðòèðîâêà
//AOrderDirection - íàïðàâëåíèå ñîðòèðîâêè, 1 - ïî âîçðàñòàíèþ, 2 - ïî óáûâàíèþ
function TrigerSingleAction(AAction, AAdditionalParams, AOperation, AItemName, AAdminFromsId, ALimit, AOnPage, AOrderFieldId, AOrderDirection)
{
	var ElementID = 'id_' + AItemName;

	cbItem = document.getElementById(ElementID);

	if (cbItem)
	{
		// Ïîëó÷àåì âñå input-û
		element_array = document.getElementsByTagName("input");

		// Åñëè ïîëó÷èëè õîòÿ áû îäèí
		if (element_array.length > 0)
		{
			// Ïðîõîäèìñÿ ïî ñïèñêó
			for (var i = 0; i < element_array.length; i++)
			{
				if (element_array[i].getAttribute('name') == null)
				{
					continue;
				}

				if (element_array[i].getAttribute('name').search("check_") != -1
				&& element_array[i].getAttribute('name').search("_fv_") == -1)
				//&& element_array[i].getAttribute('name').search("field_value") == -1)
				{
					element_array[i].checked = false;
				}
			}
		}
		cbItem.checked = true;
	}
	else
	{
		// Ïîëó÷èì ID èñòî÷íèêà è ID ýëåìåíòà
		var reg = /id_check_(\d+)_(\S+)/;
		var arr = reg.exec(ElementID);

		// arr[1] - ID èñòî÷íèêà
		// arr[2] - ID ýëåìåíòà

		// Äëÿ ýëåìåíà ñ ID = 0 ñîçäàäèì ÷åêáîêñ "íà ëåòó"
		//if (arr[2] == 0)
		//{
		// Ñîçäàäèì ñêðûòûé äèâ
		var ElementDiv = document.createElement("div");
		ElementDiv.setAttribute("style", "display: none");

		// Äîáàâèì ñêðûòûé div ê div-ó ñ çàãðóæàåìûìè äàííûìè
		//var DivNode = document.getElementById('id_form_' + AAdminFromsId).appendChild(ElementDiv);
		var DivNode = document.getElementById('id_content').appendChild(ElementDiv);

		// Ñîçäàäèì ÷åêáîêñ
		var ElementCheckbox = null;

		// Ïîïûòêà ñîçäàòü ýëåìåíò â ñòèëå "$%&*@#" IE 6-7.
		try {
			ElementCheckbox = document.createElement('<input name="'+AItemName+'" type="checkbox" checked="">');
		} catch (e) {
		}

		if (!ElementCheckbox)
		{
			ElementCheckbox = document.createElement("input");
			ElementCheckbox.setAttribute("type", "checkbox");
			ElementCheckbox.setAttribute("name", AItemName);
			ElementCheckbox.setAttribute("checked", true);
			ElementCheckbox.setAttribute("value", "1");  //
		}

		// Äîáàâèì ÷åêáîêñ ê ñêðûòîìó div-ó
		var ElementNode = DivNode.appendChild(ElementCheckbox);
		//}
	}

	var admin_forms_all_check = document.getElementById('id_admin_forms_all_check');

	// Åñëè ýëåìåíò âûáîðà âñåõ ÷åêáîêñîâ ñóùåñòâóåò
	if (admin_forms_all_check != undefined)
	{
		admin_forms_all_check.checked = false;
	}

	// Åñëè äëÿ äåéñòâèÿ áûë óêàçàí 0, òî óñòàíàâëèâàåì â false, ÷òîáû íå ïåðåäàâàòü ÿâíî limit â DoLoadAjax()
	if (ALimit == 0)
	{
		ALimit = false;
	}

	DoLoadAjax(AAction, AAdditionalParams, AAdminFromsId, AOperation, ALimit, AOnPage, AOrderFieldId, AOrderDirection);
}

//Îòïðàâêà ôîðìû ìåòîäîì Get èëè Post
//callback_function ôóíêöèÿ îáðàòíîãî âûçîâà
//AAdditionalParams - âíåøíèå ïåðåìåòðû, ïåðåäàâàåìûå â ñòðîêó çàïðîñà. Äîëæíû íà÷èíàòüñÿ ñ &
//ButtonObject - Îáúåêò íàæàòîé êíîïêè
function AjaxSendForm(callback_function, AAdditionalParams, ButtonObject)
{
	// Îáúåêò ðîäèòåëüñêîé ôîðìû ïî óìîë÷àíèþ
	var FormNode = ButtonObject.parentNode;

	// Ïîêà ðîäèòåëüñêàÿ ôîðìà íå ÿâëÿåòñÿ ôîðìîé
	while (FormNode.nodeName.toLowerCase() != 'form')
	{
		var FormNode = FormNode.parentNode;
	}

	// Ïîëó÷èì ID ôîðìû (íå ïóòàòü ñ ID ôîðìû öåíòðà àäìèíèñòðèðîâàíèÿ)
	FormID = FormNode.id;

	// Ïûòàåìñÿ ïîëó÷èòü ñêðûòûé îáúåêò äëÿ input-à
	var HiddenInput = document.getElementById(ButtonObject.name);

	// Ýëåìåíòà íåò, äîáàâèì åãî
	if (null == HiddenInput && undefined == HiddenInput || HiddenInput.type != 'hidden')
	{
		// Ñîçäàäèì ñêðûòé input, ò.ê. íàæàòûé íå ïåðåäàåòñÿ â ôîðìó
		var ElementInput = document.createElement("input");
		ElementInput.setAttribute("type", "hidden");
		ElementInput.setAttribute("id", ButtonObject.name);
		ElementInput.setAttribute("name", ButtonObject.name);

		// Äîáàâèì ñêðûòûé Input ê ôîðìå
		var InputNode = FormNode.appendChild(ElementInput);
	}

	// Ñîõðàíèì èç âèçóàëüíûõ ðåäàêòîðîâ äàííûå
	if (typeof tinyMCE != 'undefined')
	{
		tinyMCE.triggerSave();
	}

	var JsHttpRequestSendForm = new JsHttpRequest();

	// Êîä âûçûâàåòñÿ, êîãäà çàãðóçêà çàâåðøåíà
	JsHttpRequestSendForm.onreadystatechange = function ()
	{
		if (JsHttpRequestSendForm.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			if (typeof callback_function != 'undefined')
			{
				callback_function(JsHttpRequestSendForm.responseJS);
			}
			
			return true;
		}
	}

	// Îïðåäåëèì action ó ôîðìû
	// fix bug with IE 6 and getAttribute('') return [object]
	var FormAction = FormNode.attributes['action'].value;

	// Îïðåäåëèì ìåòîä ôîðìû
	var FormMethod = FormNode.getAttribute('method');

	// ïåðåäà÷à ïàðàìåòðîâ AAdditionalParams ñäåëàíà ÿâíî, à íå ÷åðåç hostcmsAAdditionalParams
	FormAction += (FormAction.indexOf('?') >= 0 ? '&' : '?') + AAdditionalParams;

	// Prepare request object (automatically choose GET or POST).
	JsHttpRequestSendForm.open(FormMethod, FormAction, true);

	JsHttpRequestSendForm.send( { query: FormNode } );

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	return false;
}

// Îòîáðàæåíèå ýêðàíà çàãðóçêè AJAX.
function ShowLoadingScreen()
{
	var fade_div = document.getElementById('id_admin_forms_fade');

	if (fade_div == null)
	{
		// Ñîçäàåì div
		var fade_div = document.createElement("div");
		var body = document.getElementsByTagName("body")[0];
		body.appendChild(fade_div);

		fade_div.id = "id_admin_forms_fade";

		fade_div.style.zIndex = 999;

		fade_div.className = "shadowed";

		fade_div.style.position = 'absolute';
		fade_div.style.left = '50%';
		fade_div.style.top = '50%';

		var fade_div_img = document.createElement("img");
		fade_div_img.id = 'id_fade_div_img';
		fade_div_img.src = '/hostcmsfiles/images/ajax_loader.gif';
		fade_div.appendChild(fade_div_img);

		var shadowed_tl = document .createElement("div");
		shadowed_tl.className = "tl";
		fade_div.appendChild(shadowed_tl);

		var shadowed_t = document.createElement("div");
		shadowed_t.className = "t";
		fade_div.appendChild(shadowed_t);

		var shadowed_tr = document.createElement("div");
		shadowed_tr.className = "tr";
		fade_div.appendChild(shadowed_tr);

		var shadowed_l = document.createElement("div");
		shadowed_l.className = "l";
		fade_div.appendChild(shadowed_l);

		var shadowed_r = document.createElement("div");
		shadowed_r.className = "r";
		fade_div.appendChild(shadowed_r);

		var shadowed_bl = document.createElement("div");
		shadowed_bl.className = "bl";
		fade_div.appendChild(shadowed_bl);

		var shadowed_b = document.createElement("div");
		shadowed_b.className = "b";
		fade_div.appendChild(shadowed_b);

		var shadowed_br = document.createElement("div");
		shadowed_br.className = "br";
		fade_div.appendChild(shadowed_br);

		// ïîëó÷àåì øèðèíó âûïàäàþùåãî áëîêà è óñòàíàâëèâàåì å¸ äëÿ âåðõíåé è íèæíåé ãðàíèöû
		groupChildElements = fade_div.children;

		if (groupChildElements != undefined)
		{
			for (i = 0; i < groupChildElements.length; i++)
			{
				if(groupChildElements[i].className == 'b' | groupChildElements[i].className == 't')
				{
					groupChildElements[i].style.width = fade_div.clientWidth + 'px';
				}

				if(groupChildElements[i].className == 'r' | groupChildElements[i].className == 'l')
				{
					groupChildElements[i].style.height = fade_div.clientHeight + 'px';
				}
			}
		}

		fade_div.style.display = 'none';
	}

	// Îòîáðàæàåì div
	fade_div.style.display = 'block';

	var arrayPageSize = getPageSize();

	// 0 - pageWidth, 1 - pageHeight, 2 - windowWidth, 3 - windowHeight
	var arrayPageSize = getPageSize();

	// 0 - scrOfX, 1 - scrOfY
	var arrayScrollXY = getScrollXY();

	// Îòîáðàæàåì äî îïðåäåëåíèÿ ðàçìåðîâ div-à
	var clientHeight = fade_div.clientHeight;
	fade_div.style.top = ((arrayPageSize[3] - clientHeight) / 2 + arrayScrollXY[1]) + 'px';

	var clientWidth = fade_div.clientWidth;
	fade_div.style.left = ((arrayPageSize[2] - clientWidth) / 2 + arrayScrollXY[0]) + 'px';
}

// Ñêðûòèå ýêðàíà çàãðóçêè AJAX.
function HideLoadingScreen()
{
	// Óáåðàåì çàòåìíåíèå.
	fade_div = document.getElementById('id_admin_forms_fade');

	if (typeof fade_div != 'undefined')
	{
		fade_div.style.display = "none";
	}
}

function AddLoadFileField(container_id, inpit_prefix)
{
	cbItem = document.getElementById(container_id);

	if (cbItem)
	{
		// Ïîëó÷àåì âñå input-û
		element_array = cbItem.getElementsByTagName("input");

		count_input = element_array.length;

		// <br/>
		var ElementBr = document.createElement("br");
		cbItem.appendChild(ElementBr);

		//<input
		var ElementInput = document.createElement("input");
		ElementInput.setAttribute("size", "30");
		ElementInput.setAttribute("name", inpit_prefix + (count_input + 1));
		ElementInput.setAttribute("type", "file");
		ElementInput.setAttribute("title", "Ïðèêðåïèòü ôàéë");
		//ElementInput.setAttribute("style", "margin-bottom: 20px");
		cbItem.appendChild(ElementInput);
	}
}

// action - àäðåñ ñòðàíèöû äëÿ çàïðîñ
// method - GET, POST, null - àâòîìàòè÷åñêîå îïðåäåëåíèå
// callback_function - ôóíêöèÿ îáðàòíîãî âûçîâà, êîòîðàÿ áóäåò âûçâàíà ïîñëå ïîëó÷åíèÿ îòâåòà îò backenad-à
function sendBackgroundRequest(action, method, callback_function)
{
	var req = new JsHttpRequest();

	// Ýòîò êîä âûçîâåòñÿ àâòîìàòè÷åñêè, êîãäà çàãðóçêà äàííûõ çàâåðøèòñÿ.
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			if (typeof callback_function != 'undefined')
			{
				callback_function(req.responseJS);
			}

			return true;
		}
	}

	req.open(method, action, true);

	// Îòñûëàåì äàííûå â îáðàáîò÷èê.
	req.send(null);

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";
	
	ShowLoadingScreen();
}

// Êðîññáðàóçåðíàÿ ôóíêöèÿ ïîëó÷åíèÿ ðàçìåðîâ ýêðàíà,
// èñïîëüçóåòñÿ â ôóíêöèè ShowLoadingScreen.
function getPageSize()
{
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY)
	{
		xScroll = window.innerWidth + window.scrollMaxX;
		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
		if(document.documentElement.clientWidth)
		{
			windowWidth = document.documentElement.clientWidth;
		}
		else
		{
			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 = xScroll;
	}
	else
	{
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
	return arrayPageSize;
}

// Ïîëó÷åíèå èíôîðìàöèè î ïîçèöèè ñêðîëà
function getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;

	if (typeof(window.pageYOffset ) == 'number' )
	{
		//Netscape
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	}
	else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
	{
		//DOM
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	}
	else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
	{
		//IE6
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}

	return [ scrOfX, scrOfY ];
}

function CreateWindow(windowId, windowTitle, windowWidth, windowHeight)
{
	var windowDiv = document.getElementById(windowId);

	if (windowDiv == undefined)
	{
		// Ñîçäàåì div äëÿ îêíà
		var fade_div = document.createElement("div");
		fade_div.setAttribute("id", windowId);
		var body = document.getElementsByTagName("body")[0];
		windowDiv = body.appendChild(fade_div);
	}

	// Òåíü
	windowDiv.className = "shadowed";

	if (windowWidth == '')
	{
		windowWidth = '300px';
	}

	windowDiv.style.width = windowWidth;

	if (windowHeight != '')
	{
		windowDiv.style.height = windowHeight;
	}

	var shadowed_tl = document.createElement("div");
	shadowed_tl.className = "tl";
	windowDiv.appendChild(shadowed_tl);

	var shadowed_t = document.createElement("div");
	shadowed_t.className = "t";
	windowDiv.appendChild(shadowed_t);

	var shadowed_tr = document.createElement("div");
	shadowed_tr.className = "tr";
	windowDiv.appendChild(shadowed_tr);

	var shadowed_l = document.createElement("div");
	shadowed_l.className = "l";
	windowDiv.appendChild(shadowed_l);

	var shadowed_r = document.createElement("div");
	shadowed_r.className = "r";
	windowDiv.appendChild(shadowed_r);

	var shadowed_bl = document.createElement("div");
	shadowed_bl.className = "bl";
	windowDiv.appendChild(shadowed_bl);

	var shadowed_b = document.createElement("div");
	shadowed_b.className = "b";
	windowDiv.appendChild(shadowed_b);

	var shadowed_br = document.createElement("div");
	shadowed_br.className = "br";
	windowDiv.appendChild(shadowed_br);

	// Âåðõíÿÿ ïîëîñî÷êà(äëÿ îòîáðàæåíèÿ ïóñòîãî çàãîëîâêà ïåðåäàòü ' ' - ïðîáåë)
	if(windowTitle != '')
	{
		var topbar = document.createElement("div");
		topbar.className = "topbar";
		windowDiv.insertBefore(topbar, windowDiv.childNodes[0]);
	}

	windowDiv.style.display = "none";

	// Çàêðûòü
	var wclose_img = document.createElement("img");
	wclose_img.src = '/hostcmsfiles/images/wclose.gif';

	wclose_img.onclick = function() {HideWindow(windowId); };

	if(windowTitle != '')
	{
		topbar.appendChild(wclose_img);

		// Çàãîëîâîê îêíà
		var textNode = document.createTextNode(windowTitle);
		topbar.appendChild(textNode);
	}
}

// Îòîáðàæàåò/ñêðûâàåò îêíî
function SlideWindow(windowId)
{
	var windowDiv = document.getElementById(windowId);

	if (windowDiv == undefined)
	{
		return false;
	}

	if (windowDiv.style.display == "block")
	{
		HideWindow(windowId);
	}
	else
	{
		ShowWindow(windowId);
	}
}

var prev_window = 0;

function ShowWindow(windowId)
{
	var windowDiv = document.getElementById(windowId);

	if (windowDiv == undefined)
	{
		return false;
	}

	// Äîáàâëåíî  && windowId.indexOf('edit_window_') == 0 äëÿ òîãî, ÷òîáû ïðè îòîáðàæåíèè âñïëûâàþùåãî îêîøêà ñ íàñòðîéêàìè èçîáðàæåíèÿ íå çàêðûâàëîñü âñïëûâàþùåå îêíî ÖÀ
	if (prev_window && prev_window != windowId && (windowId.indexOf('edit_window_') == 0 || prev_window.indexOf('edit_window_') !== 0))
	{
		HideWindow(prev_window);
	}

	prev_window = windowId;

	// 0 - pageWidth, 1 - pageHeight, 2 - windowWidth, 3 - windowHeight
	var arrayPageSize = getPageSize();

	// 0 - scrOfX, 1 - scrOfY
	var arrayScrollXY = getScrollXY();

	// Îòîáðàæàåì äî îïðåäåëåíèÿ ðàçìåðîâ div-à
	windowDiv.style.display = 'block';

	var clientHeight = windowDiv.clientHeight;
	var clientWidth = windowDiv.clientWidth;

	// Åñëè âûñîòà div-à áîëüøå âûñîòû îêíà
	if (clientHeight > arrayPageSize[3])
	{
		// Ïîëîæèì âûñîòó ðàâíîé 90% âûñîòû îêíà
		clientHeight = Math.round(arrayPageSize[3] * 0.9);
	}

	// Åñëè øèðèíà div-à áîëüøå øèðèíû îêíà
	if (clientWidth > arrayPageSize[2])
	{
		// Ïîëîæèì øèðèíó ðàâíîé 90% âûñîòû îêíà
		clientWidth = Math.round(arrayPageSize[2] * 0.9);
	}

	windowDiv.style.top = ((arrayPageSize[3] - clientHeight) / 2 + arrayScrollXY[1]) + 'px';

	windowDiv.style.left = ((arrayPageSize[2] - clientWidth) / 2 + arrayScrollXY[0]) + 'px';
}

// Óäàëÿåò äî÷åðíèå ýëåìåíòû ýëåìåíòà ñ ID, ðàâíûì node_id
function deleteChildNodes(node_id)
{
	var node = document.getElementById(node_id);

	if (node !== undefined)
	{
		if (node.hasChildNodes())
		{
			while (node.firstChild)
			{
				node.removeChild(node.firstChild);
			}
		}
	}
}

function HideWindow(windowId)
{
	var windowDiv = document.getElementById(windowId);

	if (windowDiv == undefined)
	{
		return false;
	}

	// Îêíî ðåäàêòèðîâàíèÿ ýëåìåíòîâ ÖÀ ïðè çàêðûòèè - óäàëÿåì ïîëíîñòüþ
	if (windowId.indexOf('edit_window_') == 0)
	{
		// Îòêëþ÷àåì ñâÿçü ñ ðåäàêòîðàìè
		DisableTinyMCE();

		// Óäàëÿåì äî÷åðíèå óçëû
		deleteChildNodes(windowId);

		// Óäàëÿåì îêíî
		windowDiv.parentNode.removeChild(windowDiv);
	}
	else
	{
		windowDiv.style.display = 'none';
	}
}

// Ìàãàçèí
function doSetLocation(shop_country_id, path)
{
	var req = new JsHttpRequest();

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			if (req.responseJS != undefined)
			{
				// Äàííûå.
				if (req.responseJS.result != undefined)
				{
					oSelect = document.getElementById(location_select_id);

					// Î÷èùàåì select
					oSelect.options.length = 0;

					// Äîáàâëÿåì çíà÷åíèå " ... "
					oSelect.options[oSelect.options.length] = new Option(" ... ", 0);

					for (var key in req.responseJS.result)
					{
						oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);
					}

					// Óñòàíàâëèâàåì ãîðîäà
					//doSetCity(oSelect.options[oSelect.selectedIndex].value);
					oCity = document.getElementById(city_select_id);
					oCity.options.length = 0;
					oCity.options[oCity.options.length] = new Option(" ... ", 0);

					oCityarea = document.getElementById(cityarea_select_id);
					oCityarea.options.length = 0;
					oCityarea.options[oCityarea.options.length] = new Option(" ... ", 0);
				}
			}
			return true;
		}
	}

	req.open('get', path + "?action=get_location&shop_country_id="+shop_country_id, true);

	// Îòñûëàåì äàííûå â îáðàáîò÷èê.
	req.send(null);

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";
}

function doSetCity(shop_location_id, path)
{
	var req = new JsHttpRequest();

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			if (req.responseJS != undefined)
			{
				// Äàííûå.
				if (req.responseJS.result != undefined)
				{
					oSelect = document.getElementById(city_select_id);

					// Î÷èùàåì select
					oSelect.options.length = 0;

					// Äîáàâëÿåì çíà÷åíèå " ... "
					oSelect.options[oSelect.options.length] = new Option(" ... ", 0);

					for (var key in req.responseJS.result)
					{
						oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);
					}

					// Óñòàíàâëèâàåì ðàéîíû
					//doSetCityArea(oSelect.options[oSelect.selectedIndex].value);

					oCityarea = document.getElementById(cityarea_select_id);
					oCityarea.options.length = 0;
					oCityarea.options[oCityarea.options.length] = new Option(" ... ", 0);
				}
			}
			return true;
		}
	}

	req.open('get', path + "?action=get_city&shop_location_id="+shop_location_id, true);

	// Îòñûëàåì äàííûå â îáðàáîò÷èê.
	req.send(null);

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";
}

function doSetCityArea(shop_city_id, path)
{
	var req = new JsHttpRequest();

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			if (req.responseJS != undefined)
			{
				// Äàííûå.
				if (req.responseJS.result != undefined)
				{
					oSelect = document.getElementById(cityarea_select_id);

					// Î÷èùàåì select
					oSelect.options.length = 0;

					// Äîáàâëÿåì çíà÷åíèå " ... "
					oSelect.options[oSelect.options.length] = new Option(" ... ", 0);

					for (var key in req.responseJS.result)
					{
						oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);
					}
				}
			}
			return true;
		}
	}

	req.open('get', path + "?action=get_cityarea&shop_city_id="+shop_city_id, true);

	// Îòñûëàåì äàííûå â îáðàáîò÷èê.
	req.send(null);

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";
}

// Ïëàâàþùèå áëîêè
// ïîëó÷àåì èñõîäíóþ ïîçèöèþ ïëàâàþùåãî áëîêà
function GetStyle(drag_object, axis)
{
	var str_value = "";

	if(document.defaultView && document.defaultView.getComputedStyle)
	{
		var css = document.defaultView.getComputedStyle(drag_object, null);
		str_value = css ? css.getPropertyValue(axis) : null;
	}
	else if(drag_object.currentStyle)
	{
		str_value = drag_object.currentStyle[axis];

		if (str_value == 'auto')
		{
			if (axis == 'top')
			{
				str_value = drag_object.offsetTop;
			}
			else
			{
				str_value = drag_object.offsetLeft;
			}
		}
	}

	return str_value;
}

function Draggable(drag_object)
{
	var xDelta = 0,
	yDelta = 0,
	xStart = 0,
	yStart = 0;

	// îñòàíîâèòü ñîáûòèå
	function EndDrag()
	{
		document.onmouseup = null;
		document.onmousemove = null;
	}

	// ñ÷èòàåì íîâóþ ïîçèöèþ ïðè ïåðåòàñêèâàíèè
	function Drag(drag_event)
	{
		drag_event = drag_event || window.event;

		xDelta = xStart - parseInt(drag_event.clientX);
		yDelta = yStart - parseInt(drag_event.clientY);

		xStart = parseInt(drag_event.clientX);
		yStart = parseInt(drag_event.clientY);

		drag_object.style.top = (parseInt(drag_object.style.top) - yDelta) + 'px';
		drag_object.style.left = (parseInt(drag_object.style.left) - xDelta) + 'px';
	}

	// íà÷àòü ïåðåòàñêèâàíèå
	function StartDrag(drag_event)
	{
		drag_event = drag_event || window.event;

		xStart = parseInt(drag_event.clientX);
		yStart = parseInt(drag_event.clientY);

		drag_object.style.top = parseInt(GetStyle(drag_object, 'top')) + 'px';
		drag_object.style.left = parseInt(GetStyle(drag_object, 'left')) + 'px';

		document.onmouseup = EndDrag;
		document.onmousemove = Drag;

		return false;
	}

	// ñâÿçûâàåì îáúåêò ñ ñîáûòèåì
	drag_object.onmousedown = StartDrag;
}

// ïîêàç îêíà ðåäàêòèðîâàíèÿ
function ShowEditWindow(caption, path, name)
{
	var oWindowId = 'edit_window_'+name;

	var oWindow = document.getElementById(oWindowId);

	if (oWindow == undefined)
	{
		// Ñîçäàåì îêíî
		CreateWindow(oWindowId, caption, '90%', '90%');

		var oWindow = document.getElementById(oWindowId);

		// <div id="subdiv">
		var ElementDiv = document.createElement("div");
		ElementDiv.setAttribute("id", "subdiv");
		var SubDiv = oWindow.appendChild(ElementDiv);

		var DivMessage = document.createElement("div");
		DivMessage.setAttribute("id", "id_message");
		var oDivMessage = SubDiv.appendChild(DivMessage);

		var DivContent = document.createElement("div");
		DivContent.setAttribute("id", "id_content");
		var oDivContent = SubDiv.appendChild(DivContent);

		// Çàïðîñ backend-ó
		var req = new JsHttpRequest();

		// Îòîáðàæàåì ýêðàí çàãðóçêè
		ShowLoadingScreen();

		req.onreadystatechange = function()
		{
			if (req.readyState == 4)
			{
				// Âîçâðàùàåì îáû÷íûé êóðñîð
				document.body.style.cursor = '';

				// Óáèðàåì çàòåìíåíèå.
				HideLoadingScreen();

				if (req.responseJS != undefined)
				{
					// Ñîîáùåíèå.
					// Âûâîäèì ðåçóëüòàò îøèáêè â ïåðåìåííóþ.
					if (typeof req.responseJS.error != 'undefined')
					{
						if (oDivMessage)
						{
							// Ñîçäàäèì ñêðûòûé SPAN äëÿ IE, â êîòîðûé ïîìåñòèì òåêñò + ñêðèïò.
							// Åñëè ïåðåä <script> íå áóäåò òåêñòà, íåõîðîøèé IE íå óâèäèò SCRIPT
							var span = document.createElement("span");
							span.style.display = 'none';
							span.innerHTML = "Stupid IE. " + req.responseJS.error;

							runScripts(span.getElementsByTagName('SCRIPT'));

							// Çàíåñåì òåêñò ñîîáùåíèÿ òîëüêî ïîñëå âûïîëíåíèÿ ñêðèïòà
							oDivMessage.innerHTML = req.responseJS.error;
						}
					}

					// Äàííûå çàïèñûâàåì òîëüêî òîãäà, åñëè îíè åñòü è íå ïóñòûå.
					if (typeof req.responseJS.form_html != 'undefined' && req.responseJS.form_html != '')
					{
						cmsrequest = path;
						
						// Óêàçûâàåì òåêóùèé ïóòü
						// Ìåíÿåì Location òîëüêî ïðè DoLoadAjax, åñëè âåðíóëèñü íàçàä - íå ìåíÿåì
						if (cmsrequest != ''
						&& function_exists('getCmsUrl')
						&& getCmsUrl() != cmsrequest)
						{
							setLocation(cmsrequest);
						}

						if (function_exists('saveLocation'))
						{
							// Ñîõðàíÿåì òåêóùèé ïóòü âñåãäà
							saveLocation(getCmsUrl());
						}
						
						// DisableTinyMCE();

						// Çàíåñåì òåêñò ñîîáùåíèÿ ÄÎ âûïîëíåíèÿ ñêðèïòà
						oDivContent.innerHTML = req.responseJS.form_html;
						
						// Ñîçäàäèì ñêðûòûé SPAN äëÿ IE, â êîòîðûé ïîìåñòèì òåêñò + ñêðèïò.
						// Åñëè ïåðåä <script> íå áóäåò òåêñòà, íåõîðîøèé IE íå óâèäèò SCRIPT
						var span = document.createElement("span");
						span.style.display = 'none';
						span.innerHTML = "Stupid IE. " + req.responseJS.form_html;

						runScripts(span.getElementsByTagName('SCRIPT'));
					}
				}
				return true;
			}
		}

		req.open('get', path, true);

		// Îòñûëàåì äàííûå â îáðàáîò÷èê.
		req.send(null);

		// Êóðñîð ñòàâèì íà ÷àñèêè.
		document.body.style.cursor = "wait";
	}
	else
	{
		// Îòêëþ÷àåì ñâÿçü ñ ðåäàêòîðàìè
		DisableTinyMCE();
		oDivMessage = document.getElementById("id_message");
		oDivMessage.innerHTML = '';
	}

	SlideWindow(oWindowId);
}

function row_over(object)
{
	if (object.className == 'row_table') object.className = 'row_table_over';
}

function row_out(object)
{
	if (object.className == 'row_table_over') object.className = 'row_table';
}

function row_over_odd(object)
{
	if (object.className == 'row_table_odd') object.className = 'row_table_over_odd';
}

function row_out_odd(object)
{
	if (object.className == 'row_table_over_odd') object.className = 'row_table_odd';
}


function menu_row_over(object)
{
	if (object.className == 'menu_out') object.className = 'menu_over';
}

function menu_row_out(object)
{
	if (object.className == 'menu_over') object.className = 'menu_out';
}

function SlideLayer(Num)
{
	var el = document.getElementById(Num);

	if (el.style.display=="block")
	{
		el.style.display="none";
	}
	else
	{
		el.style.display="block";
	}
}

// =============================================
// Ôóíêöèè ðàáîòû ñ ìåíþ
// =============================================
changeFontSizeTimer = new Array();

function HostCMSMenuOver(CurrenElementId, LevelMenu, ChildId)
{
	CurrenElement = document.getElementById(CurrenElementId);
	if (CurrenElementId == undefined)
	{
		return false;
	}

	decor(CurrenElementId, LevelMenu);
	if (ChildId != '')
	{
		ChildId = document.getElementById(ChildId);
		showHideMenu(ChildId);
	}
}

function HostCMSMenuOut(CurrenElementId, LevelMenu, ChildId)
{
	CurrenElement = document.getElementById(CurrenElementId);

	if (CurrenElementId == undefined)
	{
		return false;
	}

	unDecor(CurrenElementId, LevelMenu);
	if (ChildId != '')
	{
		ChildId = document.getElementById(ChildId);
		showHideMenu(ChildId);
	}
}

// Ôóíêöèè ñêðûòèÿ-îòêðûòèÿ ìåíþ
function showHideMenu(ChildId)
{
	if (ChildId == undefined)
	{
		return false;
	}

	if (ChildId.style.display == "block")
	{
		ChildId.style.display = "none";
	}
	else
	{
		ChildId.style.display = "block";

		// ïîëó÷àåì øèðèíó âûïàäàþùåãî áëîêà è óñòàíàâëèâàåì å¸ äëÿ âåðõíåé è íèæíåé ãðàíèöû
		groupChildElements = ChildId.children;

		if (groupChildElements != undefined)
		{
			for (i = 0; i < groupChildElements.length; i++)
			{
				if(groupChildElements[i].className == 'b' | groupChildElements[i].className == 't')
				{
					groupChildElements[i].style.width = ChildId.clientWidth + 'px';
				}

				if(groupChildElements[i].className == 'r' | groupChildElements[i].className == 'l')
				{
					groupChildElements[i].style.height = ChildId.clientHeight + 'px';
				}
			}
		}
	}
}

// Ôóíêöèè îôîðìëåíèÿ
function changeFontSize(CurrenElementId, change, limit)
{
	var CurrenElement = document.getElementById(CurrenElementId);

	if (CurrenElement)
	{
		var CurrFontSize = CurrenElement.style.fontSize ? parseInt(CurrenElement.style.fontSize) : 10;
		if (CurrFontSize != limit)
		{
			CurrenElement.style.fontSize = (CurrFontSize + change) + 'pt';
			changeFontSizeTimer[CurrenElementId] = setTimeout('changeFontSize("'+CurrenElementId+'", '+change+', '+limit+')', 1);
		}
	}
}

// Ôóíêöèÿ âèçóàëüíîãî îôîðìëåíèÿ ýëåìåíòîâ ìåíþ
function decor(CurrenElementId, LevelMenu)
{
	var CurrenElemen = document.getElementById(CurrenElementId);

	if (LevelMenu == 1) // äëÿ ïåðâîãî óðîâíÿ âëîæåííîñòè
	{
		CurrenElement.style.background = "url('/hostcmsfiles/images/line3.gif') repeat-x 0 100%";
		var child = CurrenElement.children;

		if (changeFontSizeTimer[CurrenElementId] != '')
		{
			clearTimeout(changeFontSizeTimer[CurrenElementId]);
		}
		changeFontSize(CurrenElement.id, 1, 13);

		// ïðèïîäíåìàåì li ïðè íàâåäåíèè
		//CurrenElementId.style.top = (navigator.userAgent.indexOf('Firefox') != -1)? '-2px':'-6px';
	}
	else // äëÿ âòîðîãî óðîâíÿ âëîæåííîñòè
	{

	}
}

// Ôóíêöèÿ âèçóàëüíîãî îôîðìëåíèÿ ýëåìåíòîâ ìåíþ
function unDecor(CurrenElementId, LevelMenu)
{
	var CurrenElemen = document.getElementById(CurrenElementId);
	if (LevelMenu==1)
	{
		clearTimeout(changeFontSizeTimer[CurrenElementId]);
		CurrenElement.style.background = "url('/hostcmsfiles/images/line1.gif') repeat-x 0 100%";
		changeFontSize(CurrenElement.id, -1, 10);
	}
	else
	{
		//CurrenElementId.style.background = (navigator.userAgent.indexOf('MSIE') == -1)? 'url(/hostcmsfiles/images/fon_li.png) repeat-y 0 0':'url(/hostcmsfiles/images/fon_li.gif) repeat-y 0 0';
	}
}

function SetGradeMessage(message_id, grade_val)
{
	// Çàïðîñ backend-ó
	var req = new JsHttpRequest();

	// Îòîáðàæàåì ýêðàí çàãðóçêè
	ShowLoadingScreen();

	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			// Âîçâðàùàåì îáû÷íûé êóðñîð
			document.body.style.cursor = '';

			// Óáèðàåì çàòåìíåíèå.
			HideLoadingScreen();

			return true;
		}
	}

	req.open('get', "./?action=set_message_grade&helpdesk_message_id="+message_id+"&grade="+grade_val, true);

	// Îòñûëàåì äàííûå â îáðàáîò÷èê.
	req.send(null);

	// Êóðñîð ñòàâèì íà ÷àñèêè.
	document.body.style.cursor = "wait";
}

/**
 * Îáíîâëåíèå êàðòèíêè CAPTCHA
 * captchaKey - èäåíòèôèêàòîð CAPTCHA
 * captchaHeight - âûñîòà êàðòèíêè ñ CAPTCHA
 */
function ReNewCaptcha(captchaKey, captchaHeight)
{	
	if (document.images['captcha'] != undefined)
	{
		var antiCache = Math.floor(Math.random()*100000);
		document.images['captcha'].src = "/captcha.php?get_captcha=" + captchaKey + "&height=" + captchaHeight + "&anc=" + antiCache;
	}
}

/**
 * Îáíîâëåíèå êàðòèíêè CAPTCHA äëÿ êàðòèíêè ïî åå ID
 * captchaKey - èäåíòèôèêàòîð CAPTCHA
 * captchaHeight - âûñîòà êàðòèíêè ñ CAPTCHA
 */
function ReNewCaptchaById(imageId, captchaKey, captchaHeight)
{	
	// Ïûòàåìñÿ ïîëó÷èòü ñêðûòûé îáúåêò äëÿ input-à
	var captchaObject = document.getElementById(imageId);

	// Ýëåìåíòà íåò, äîáàâèì åãî
	if (null != captchaObject && undefined !== captchaObject)
	{
		var antiCache = Math.floor(Math.random()*100000);
		captchaObject.src = "/captcha.php?get_captcha=" + captchaKey + "&height=" + captchaHeight + "&anc=" + antiCache;
	}
}

// Îòîáðàæàåò/ñêðûâàåò áëîê
function ShowHide(divId)
{
	var windowDiv = document.getElementById(divId);

	if (windowDiv == undefined)
	{
		return false;
	}

	if (windowDiv.style.display == "block")
	{
		windowDiv.style.display = 'none';
	}
	else
	{
		windowDiv.style.display = 'block';
	}
}

//Ôóíêöèÿ îáðàòíîãî âûçîâà ïðè çàãðóçêå ôîðìû äîáàâëåíèÿ íà äîñêó îáúÿâëåíèé
function callbackfunction_showFormAddItem(responseJS)
{
	if (typeof responseJS != 'undefined')
	{
		HideLoadingScreen();
	
		// Äàííûå.
		if (typeof responseJS.result != 'undefined')
		{
			html = responseJS.result;

			document.getElementById('AddItemForm').innerHTML = html;

			// Âûïîëíÿåì ñêðèïòû èç ïîëó÷åííîãî ñ ñåðâåðà HTML-à
			runScripts(document.getElementById('AddItemForm').getElementsByTagName('SCRIPT'));
			
			// Î÷èùàåì ïîëå ñîîáùåíèé
			var div_id_message = document.getElementById('AddItemMessage');

			if (div_id_message)
			{
				div_id_message.innerHTML = '';
			}
			
			//cr('AddItemForm');
		}
	}
}

//Ôóíêöèÿ îáðàòíîãî âûçîâà ïðè îòïðàâêå äîáàâëåíèÿ íà äîñêó îáúÿâëåíèé
function callbackfunction_SendFormItem(responseJS)
{
	if (typeof responseJS != 'undefined')
	{
		if (responseJS.message != 'undefined')
		{
			var div_id_message = document.getElementById('AddItemMessage');

			if (div_id_message)
			{
				div_id_message.innerHTML = responseJS.message;
				
				// Âûïîëíÿåì ñêðèïòû èç ïîëó÷åííîãî ñ ñåðâåðà HTML-à
				runScripts(div_id_message.getElementsByTagName('SCRIPT'));
				
				// Ïåðåõîäèì ê ñîîáùåíèþ
				window.location.href = (window.location.href.indexOf('#') >= 0 ? window.location.href : window.location.href + '#FocusAddItemMessage');
			}
		}
	}
}

function ShowImgWindow(title, src, width, height)
{
	obj = window.open("", "", "scrollbars=0,dialog=0,minimizable=1,modal=1,width="+width+",height="+height+",resizable=0");
	obj.document.write("<html>");
	obj.document.write("<head>");
	obj.document.write("<title>"+title+"</title>");
	obj.document.write("</head>");
	obj.document.write("<body topmargin=0 leftmargin=0 marginwidth=0 marginheight=0>");
	obj.document.write("<img src=\""+src+"\" width=\""+width+"\" height=\""+height+"\" />");
	obj.document.write("</body>");
	obj.document.write("</html>");
	obj.document.close();
}

function getElementsByName_iefix(tag, name) 
{
	var elem = document.getElementsByTagName(tag);
	var arr = new Array();

	var iarr = 0;
	
	for(i = 0; i < elem.length; i++)
	{
		att = elem[i].getAttribute("name");

		if(att == name)
		{
			arr[iarr] = elem[i];
			iarr++;
		}
	}
	return arr;
}

// Èçìåíåíèå âûñîòû áëîêà
function changeHeightFloatBlockBorder (oBorder, iHeightAttribute, iStyleTop)
{
	var iElementHeight = 0;
	
	for (i = 0; i < oBorder.length; i++)
	{
		iElementHeight = oBorder[i].parentNode.offsetHeight + iHeightAttribute;

		if (iElementHeight > 0)
		{
			oBorder[i].style.height = iElementHeight + 'px';
			oBorder[i].style.top = iStyleTop + 'px';
		}
	}
}

/*
	Watermark v3.0.6 (June 21, 2010) plugin for jQuery
	http://jquery-watermark.googlecode.com/
	Copyright (c) 2009-2010 Todd Northrop
	http://www.speednet.biz/
	Dual licensed under the MIT or GPL Version 2 licenses.
*/
(function(b){var l="function",j="password",d="maxLength",f="type",c=true,a="",e=false,t="watermark",u,m=t,i="watermarkClass",q="watermarkFocus",k="watermarkSubmit",o="watermarkMaxLength",h="watermarkPassword",g="watermarkText",s=":data("+m+")",n=":text,:password,:search,textarea",p=["Page_ClientValidate"],r=e;b.extend(b.expr[":"],{search:function(b){return "search"===(b.type||a)},data:function(g,i,h){var f,d=/^((?:[^=!^$*]|[!^$*](?!=))+)(?:([!^$*]?=)(.*))?$/.exec(h[3]);if(d){f=b(g).data(d[1]);if(f!==u){if(d[2]){f=a+f;switch(d[2]){case "=":return f==d[3];case "!=":return f!=d[3];case "^=":return f.slice(0,d[3].length)==d[3];case "$=":return f.slice(-d[3].length)==d[3];case "*=":return f.indexOf(d[3])!==-1}}return c}}return e}});b.watermark={version:"3.0.6",options:{className:t,useNative:c},hide:function(a){b(a).filter(s).each(function(){b.watermark._hide(b(this))})},_hide:function(b,n){var m=b.val()||a,k=b.data(g)||a,l=b.data(o)||0,j=b.data(i);if(k.length&&m==k){b.val(a);if(b.data(h))if((b.attr(f)||a)==="text"){var e=b.data(h)||[],c=b.parent()||[];if(e.length&&c.length){c[0].removeChild(b[0]);c[0].appendChild(e[0]);b=e}}if(l){b.attr(d,l);b.removeData(o)}if(n){b.attr("autocomplete","off");window.setTimeout(function(){b.select()},1)}}j&&b.removeClass(j)},show:function(a){b(a).filter(s).each(function(){b.watermark._show(b(this))})},_show:function(e){var t=e.val()||a,k=e.data(g)||a,p=e.attr(f)||a,s=e.data(i);if((t.length==0||t==k)&&!e.data(q)){r=c;if(e.data(h))if(p===j){var n=e.data(h)||[],m=e.parent()||[];if(n.length&&m.length){m[0].removeChild(e[0]);m[0].appendChild(n[0]);e=n;e.attr(d,k.length)}}if(p==="text"||p==="search"){var l=e.attr(d)||0;if(l>0&&k.length>l){e.data(o,l);e.attr(d,k.length)}}s&&e.addClass(s);e.val(k)}else b.watermark._hide(e)},hideAll:function(){if(r){b.watermark.hide(n);r=e}},showAll:function(){b.watermark.show(n)}};b.fn.watermark=function(r,o){var p="string";if(!this.length)return this;var s=e,t=typeof r===p;if(typeof o==="object"){s=typeof o.className===p;o=b.extend({},b.watermark.options,o)}else if(typeof o===p){s=c;o=b.extend({},b.watermark.options,{className:o})}else o=b.watermark.options;if(typeof o.useNative!==l)o.useNative=o.useNative?function(){return c}:function(){return e};return this.each(function(){var v="dragleave",u="dragenter",x=this,e=b(x);if(!e.is(n))return;if(e.data(m)){if(t||s){b.watermark._hide(e);t&&e.data(g,r);s&&e.data(i,o.className)}}else{if(o.useNative.call(x,e))if((a+e.css("-webkit-appearance")).replace("undefined",a)!==a&&(e.attr("tagName")||a)!=="TEXTAREA"){t&&e.attr("placeholder",r);return}e.data(g,t?r:a);e.data(i,o.className);e.data(m,1);if((e.attr(f)||a)===j){var y=e.wrap("<span>").parent(),l=b(y.html().replace(/type=["']?password["']?/i,'type="text"'));l.data(g,e.data(g));l.data(i,e.data(i));l.data(m,1);l.attr(d,r.length);l.focus(function(){b.watermark._hide(l,c)}).bind(u,function(){b.watermark._hide(l)}).bind("dragend",function(){window.setTimeout(function(){l.blur()},1)});e.blur(function(){b.watermark._show(e)}).bind(v,function(){b.watermark._show(e)});l.data(h,e);e.data(h,l)}else e.focus(function(){e.data(q,1);b.watermark._hide(e,c)}).blur(function(){e.data(q,0);b.watermark._show(e)}).bind(u,function(){b.watermark._hide(e)}).bind(v,function(){b.watermark._show(e)}).bind("dragend",function(){window.setTimeout(function(){b.watermark._show(e)},1)}).bind("drop",function(c){var b=c.originalEvent.dataTransfer.getData("Text");e.val().replace(b,a)===e.data(g)&&e.val(b);e.focus()});if(x.form){var p=x.form,w=b(p);if(!w.data(k)){w.submit(b.watermark.hideAll);if(p.submit){w.data(k,p.submit);p.submit=function(c,a){return function(){var d=a.data(k);b.watermark.hideAll();if(d.apply)d.apply(c,Array.prototype.slice.call(arguments));else d()}}(p,w)}else{w.data(k,1);p.submit=function(a){return function(){b.watermark.hideAll();delete a.submit;a.submit()}}(p)}}}}b.watermark._show(e)})};p.length&&b(function(){for(var a,c,d=p.length-1;d>=0;d--){a=p[d];c=window[a];if(typeof c===l)window[a]=function(a){return function(){b.watermark.hideAll();return a.apply(null,Array.prototype.slice.call(arguments))}}(c)}})})(jQuery);


/*******************************************************************************************/
// jquery.event.wheel.js - rev 1
// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
// Liscensed under the MIT License (MIT-LICENSE.txt)
// http://www.opensource.org/licenses/mit-license.php
// Created: 2008-07-01 | Updated: 2008-07-14
// $(body).bind('wheel',function(event,delta){    alert( delta>0 ? "up" : "down" );    });
/*******************************************************************************************/
;(function($){$.fn.wheel=function(a){return this[a?"bind":"trigger"]("wheel",a)};$.event.special.wheel={setup:function(){$.event.add(this,b,wheelHandler,{})},teardown:function(){$.event.remove(this,b,wheelHandler)}};var b=!$.browser.mozilla?"mousewheel":"DOMMouseScroll"+($.browser.version<"1.9"?" mousemove":"");function wheelHandler(a){switch(a.type){case"mousemove":return $.extend(a.data,{clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY});case"DOMMouseScroll":$.extend(a,a.data);a.delta=-a.detail/3;break;case"mousewheel":a.delta=a.wheelDelta/120;if($.browser.opera)a.delta*=-1;break}a.type="wheel";return $.event.handle.call(this,a,a.delta)}})(jQuery);







