﻿var SplavControls={};

SplavControls.catIdFromURL=function (url){
    var re1=/^.*cat=([0-9]{4})-([0-9]{2})-([0-9]{2})\+([0-9]{2})%3a([0-9]{2})%3a([0-9]{2})\.([0-9]{6}).*$/;
    var re2=/^.*cat=([0-9]{20}).*$/;
    if(re1.test(url))
        return url.replace(re1,'$1$2$3$4$5$6$7');
    else if(re2.test(url))
        return url.replace(re2,'$1');
    else return null;
    }

SplavControls.any2id=function(any){
    var re1=/^([0-9]{4})-([0-9]{2})-([0-9]{2})\+([0-9]{2})%3a([0-9]{2})%3a([0-9]{2})\.([0-9]{6})$/i;
    var re2=/^([0-9]{20,26})$/;
    var re3=/^[a-z]{2}([0-9]{20,26})$/i;
    if(re1.test(any))
        return any.replace(re1,'$1$2$3$4$5$6$7');
    else if(re2.test(any))
        return any;
    else if(re3.test(any))
        return any.replace(re3,'$1');
    else return null;
    }


SplavControls.id2num=function(id)
    {var re=/[a-zA-Z]{2}([0-9]{20,26})/; if(re.test(id)) return id.replace(re,'$1'); return null;}

SplavControls.id2url=function(id){
    var re=/[a-zA-Z]{2}([0-9]{20,26})/; 
    if(re.test(id)) 
        return id.substr(2,4)+"-"+id.substr(6,2)+"-"+id.substr(8,2)+"+"+id.substr(10,2)+"%3a"+
                id.substr(12,2)+"%3a"+id.substr(14,2)+"."+id.substr(16,6);
    return null;
    }

SplavControls.id2cid=function(id){
    var re=/[a-zA-Z]{2}([0-9]{20,26})/; 
    if(re.test(id)) 
        return id.substr(2,4)+"-"+id.substr(6,2)+"-"+id.substr(8,2)+" "+id.substr(10,2)+":"+
               id.substr(12,2)+":"+id.substr(14,2)+"."+id.substr(16,6);
     return null;
    }

SplavControls.num2url=function (num)
    {var re=/[0-9]{20,26}/; 
     if(re.test(num))
        return num.substr(0,4)+"-"+num.substr(4,2)+"-"+num.substr(6,2)+"+"+num.substr(8,2)+"%3a"+
               num.substr(10,2)+"%3a"+num.substr(12,2)+"."+num.substr(14,6);
     return null;
     }

SplavControls.padeg=function(n)
    {
    n=Math.abs(n);
    n=Math.floor(n);
    var nHundreds=Math.floor(n/100);
    var tens=n-nHundreds*100;
    var nOnes=tens;
    if(nOnes>20)
        nOnes=tens-Math.floor(tens/10)*10;
    if( nOnes==1 )
        return 0;
    if( nOnes>1 && nOnes<5 )
        return 1;
    return 2;
    }
    
SplavControls.tovarov=function(n)
    {
    var tvrv=['товар','товара','товаров'];
    return tvrv[SplavControls.padeg(n)];
    }

SplavControls.rubley=function(n)
    {
    var rbley=['рубль','рубля','рублей'];
    return rbley[SplavControls.padeg(n)];
    }

SplavControls.vybrano=function(n,bInCart)
    {
    if(bInCart)
        return 'В корзине';
    var vbrno=['Выбран','Выбрано','Выбрано'];
    return vbrno[SplavControls.padeg(n)];
    }

SplavControls.hasAttribute = function(elem, attr)
    {return typeof elem.attributes[attr] != "undefined"; }; 
    
SplavControls.hasClass=function(elem, className)
    {
    if(!elem)return false;
    var rr=RegExp("(^|\\s)"+className+"(\\s|$)");
    return rr.test(elem.className);
    }

SplavControls.addClass=function(elem, className)
    {
    if(!elem)return;
    var rr=RegExp("(^|\\s)"+className+"(\\s|$)");
    if(!rr.test(elem.className))
        elem.className+=' '+className;
    }

SplavControls.removeClass=function(elem, className)
    {
    if(!elem)return;
    var rr=RegExp("(^|\\s)"+className+"(\\s|$)");
    elem.className=elem.className
                    .replace(rr,'$1$2')
                    .replace(/(^\s)|(\s$)/g,'')
                    .replace(/\s\s/g,' ');
    }

SplavControls.findParentByTag=function(elem,tag)
    {
    if(!elem) return null;
    tag=tag.toUpperCase();
    while(elem.parentNode && (elem.parentNode.tagName!=tag) )
       elem=elem.parentNode;
    return elem.parentNode;
    }
    
SplavControls.back=function(elem)
    {
    var=p=SplavControls.findParentByTag(elem,'IFRAME');
    $(elem).css('cursor','wait');
    if(p) p.history.back();
    else window.history.back();
    }

SplavControls.forward=function(elem)
    {
    var=p=SplavControls.findParentByTag(elem,'IFRAME');
    $(elem).css('cursor','wait');
    if(p) p.history.forward();
    else window.history.forward();
    }

    
    
SplavControls.findParentByClass=function(elem,className)
    {
    if(!elem) return null;
    while(elem.parentNode && !SplavControls.hasClass(elem.parentNode,className) )
       elem=elem.parentNode;
    return elem.parentNode;
    }
  
SplavControls.getFirstChildByTag=function (p,tagName)
    {
    if(p)
        for(var i=0;i<p.childNodes.length;i++)
            if(p.childNodes[i].tagName == tagName)
                return p.childNodes[i]
    return null;
    }
    
SplavControls.removeSelection=function()
    {
    if (window.getSelection) { window.getSelection().removeAllRanges(); }
    else if (document.selection && document.selection.clear)
      document.selection.clear();
    }

SplavControls.Cookie=function(name)
    {
    this.$name=name;
    var allCookies=document.cookie;
    if(allCookies=="") return;
    var cookies=allCookies.split(';')
    var cookie=null;
    for(var i=0;i<cookies.length;i++){
        var cook=$.trim(cookies[i]);
        if(cook.substring(0,name.length+1)==(name+'=')){
            cookie=cook;
            break;
            }
        }
    if(cookie==null) return;
    var a=cookie.substring(name.length+1).split('&');
    for(var i=0;i<a.length;i++){
        try{
            var b=a[i].split('=');
            var c=decodeURIComponent(b[1])
            if( (b[0].charAt(0)=='$') || ((typeof this[b[0]])=='function') || (c.indexOf('function')>=0) )
                continue;
            this[b[0]]=c;
            }
        catch(e){}
        }        
    }

SplavControls.Cookie.prototype.store=function(daysToLive,path,domain,secure)
    {
    var cookieVal="";
    for(var prop in this){
        if((prop.charAt(0)=='$')||((typeof this[prop])=='function'))
            continue;
        if(cookieVal!="") cookieVal+='&';
        cookieVal+=prop+'='+encodeURIComponent(this[prop]);
        }
    var cookie=this.$name+'='+cookieVal;
    if(daysToLive||daysToLive==0) cookie+="; max_age="+daysToLive*24*3600;
    if(path) cookie+="; path="+path;
    if(domain) cookie+="; domain="+domain;
    if(secure) cookie+="; secure";
    document.cookie=cookie;
    }
    
SplavControls.Cookie.prototype.eStore=function(daysToLive,path,domain,secure)
{
if(this.enabled())
    this.store(daysToLive,path,domain,secure);
else
    this.store(null,path,domain,secure);
}

SplavControls.Cookie.prototype.remove=function(path,domain,secure)
    {
    for(var prop in this)
        if((prop.charAt(0)!='$')&&((typeof this[prop])!='function'))
            delete this[prop];
    this.store(0,path,domain,secure);
    }    

SplavControls.Cookie.prototype.enabled=function()
    {
    if(navigator.cookieEnabled != undefined) return navigator.cookieEnabled;
    if(SplavControls.Cockie.enabled.cache!=undefined ) return SplavControls.Cockie.enabled.cache;
    document.cookie="testcookie=test; max-age=10000";
    var cookies=document.cookie;
    if(cookies.indexOf("testcookie=test")<0)
        return SplavControls.Cockie.enabled.cache=false;
    document.cookie="testcookie=test; max-age=0";
    return SplavControls.Cockie.enabled.cache=true;
    }

SplavControls.Tree=function(r,catalogId,filterFlags)
    {
    var root=document.getElementById(r);
    var prevClick=null;
    
    $('.tvExpandClosed > .tvExpand,.tvExpandOpen > .tvExpand',root).attr('title','Двойной щелчок раскрывает/закрывает всю ветку');
    
/*
    var n=document.getElementById('gr'+catalogId);
    if(n){
        var c1=n; var c2=n;
        do{                   //Find first children at last level and mark it as current node
            if(SplavControls.hasClass(c1,'tvNode')){
                c2=c1;
                c1=c1.getElementsByTagName('ul')[0];
                c1=c1 && c1.getElementsByTagName('li')[0];
                }
            else break;
            }while(c1);
        setCurrent(c2);
    
        do{                                             //Go UP and open all parents
            if(SplavControls.hasClass(c2,'tvNode')){
                c1=c2;
                openNode(c2);
                }
            c2=c2.parentNode;
            }while(c2 && c2.id!=r);
            
        }
*/
    $(root).bind('dblclick',function(event){
	        var clicked=event.target;
  	        var li=clicked.tagName=='LI'?clicked:SplavControls.findParentByTag(clicked,'LI');

            if(prevClick){
	                window.clearTimeout(prevClick);
	                prevClick=null;
	                }
	        if(SplavControls.hasClass(clicked, 'tvExpand') || 
	           SplavControls.hasClass(clicked, 'tvContent') ||
	           SplavControls.hasClass(clicked.parentNode, 'tvContent') ){
	            toggleChildren(li);
                SplavControls.removeSelection();
                }
            });
   
   
    $(root).bind('click',function(event){
	        var clicked=event.target;
	        var li=clicked.tagName=='LI'?clicked:SplavControls.findParentByTag(clicked,'LI');
            if(clicked.tagName=='A' && SplavControls.hasClass(li,'tvExpandLeaf') ){
                clickLeaf(clicked);
                return;
                }
	        if( SplavControls.hasClass(clicked, 'tvExpand') || clicked.tagName=='A'){
   	            if(prevClick){
	                window.clearTimeout(prevClick);
	                prevClick=null;
	                }
                prevClick=window.setTimeout(function(){prevClick=null;toggleNode(li);},0);
                event.preventDefault();
                return false;
                }
            });

    function toggleNode(n) {
        if(!n) return;
	    if(SplavControls.hasClass(n, 'tvExpandOpen')) closeNode(n);
        else if(SplavControls.hasClass(n, 'tvExpandClosed')) openNode(n);
        }
       
    function toggleChildren(n){
	    if(SplavControls.hasClass(n, 'tvExpandOpen')){$('.tvExpandClosed',n).each(function(){openNode(this)})}
        else if(SplavControls.hasClass(n, 'tvExpandClosed')){$('.tvExpandOpen',n).each(function(){closeNode(this)})}
        }
        
    function closeNode(n) {
        n.className=n.className.replace(/(^|\s)tvExpandOpen(\s|$)/, '$1tvExpandClosed$2');
        }

    function openNode(n){
        n.className=n.className.replace(/(^|\s)tvExpandClosed(\s|$)/, '$1tvExpandOpen$2');
        }
    
    function  clickLeaf(n){
        // Later ...
        }    

    function setCurrent(n){
        clearCurrent();
        if(SplavControls.hasClass(n,"tvExpandLeaf")){
            n.className+=' tvCurrent';
            $('.tvContent',n)[0].innerHTML+='<img alt="" src="/images/arrow.gif"/>';
            }
        var p=n;
        while(p=SplavControls.findParentByClass(p,'tvNode')){
            $('.tvContent',p)[0].className+=' tvCurrentParent';
            }
            
        openNode(n);
        }            

    function clearCurrent(){
        $('.tvCurrent').each(function(){
            this.className=this.className.replace(/(^|\s)tvCurrent(\s|$)/i,'$1$2').replace(/(^\s)|(\s$)/g,'').replace(/\s\s/g,' ');
            $('.tvContent',this).each(function(){
                this.innerHTML=this.innerHTML.replace(/<img.*>/i,'');
                });
            });
                  
        $('.tvCurrentParent').each(function(){
            this.className=this.className.replace(/(^|\s)tvCurrentParent(\s|$)/i,'$1$2').replace(/(^\s)|(\s$)/g,'').replace(/\s\s/g,' ');
            });
        
        }
    
    var tvFOff='tvFOff'
    var reF=new RegExp('(^|\\s)'+tvFOff+'(\\s|$)','ig')
    var tvIsLast='tvIsLast'
    var reL=new RegExp('(^|\\s)'+tvIsLast+'(\\s|$)','ig')
    
    root.toggleTreeFilters=function (node,flags){
        if(node==null)
            node=this;
        var childContainer=SplavControls.getFirstChildByTag(node,'UL');
        if(childContainer){
            var lastChild=null
            for(var i=0; i<childContainer.childNodes.length; i++){
                var child=childContainer.childNodes[i]
                if( child.tagName=='LI'){
                    child.className=child.className.replace(reL,'$1$2').replace(/(^\s)|(\s$)/g,'').replace(/\s\s/g,' ');
                    var splavFlags=filterFlags[child.id]||0;
                    if(flags==0 || (splavFlags & flags)!=0){
                        child.className=child.className.replace(reF,'$1$2').replace(/(^\s)|(\s$)/g,'').replace(/\s\s/g,' ');
                        lastChild=child;
                        this.toggleTreeFilters(child,flags);
                        }
                    else if(!SplavControls.hasClass(child,tvFOff))
                        child.className=child.className+' '+tvFOff;
                    }
                }
            if(lastChild)
                lastChild.className=lastChild.className+' '+tvIsLast;
            }
        }
    
    //$(function(){
    //    if(getFilterFlags){
    //        var flags=getFilterFlags();
     //       if(flags)
      //          root.toggleTreeFilters(null,flags);
       //     }
      //  });        
    }

SplavControls.CatalogBranch=function(oid,filterFlags)
{
var oc=document.getElementById(oid);
if(oc)
    oc.toggleDetailFilters=function(flags){
        var cntVisible=0;
        $('li',oc).each(function(){
            if((flags==0)||(((filterFlags[this.id]||0)& flags)!=0)){
                    SplavControls.removeClass(this,'tvFOff');
                    cntVisible++;
                }
            else
               SplavControls.addClass(this,'tvFOff');
            });
            
        var gbNothing=document.getElementById('gbNothing');
        if(cntVisible) SplavControls.addClass(gbNothing,'tvFOff');
        else           SplavControls.removeClass(gbNothing,'tvFOff');
        }       
}

//status and pictures:
//0 - enabled,not pressed
//1 - pressed
//2 - mouse over (not status, only picture)
//3 - processing
//4 - disabled

SplavControls.BlinkingButton=function(bp,callBackOnClick) 
{
var img=new Image();
img.SplavData=new Object();
img.SplavData.cacheImages=new Array(bp.src.length);
for(var i=0; i<bp.src.length; i++){
    img.SplavData.cacheImages[i]=new Image();
    img.SplavData.cacheImages[i].src=bp.src[i];
	}
img.SplavData.status=bp.status;	
img.SplavData.dontShowProcess=bp.dontShowProcess;	
img.src=img.SplavData.cacheImages[img.SplavData.status].src;
img.alt=bp.title;
img.title=bp.title;
img.SplavData.num=bp.num;
if(bp.className) img.className=bp.className;	
img.SplavCallBackOnClick=callBackOnClick;
img.onmouseover=function(){if(this.SplavData.status!=4 && this.SplavData.status!=1 && this.SplavData.cacheImages[2]) this.src=this.SplavData.cacheImages[2].src;}
img.onmouseout=function(){if(this.SplavData.status!=4) this.src=this.SplavData.cacheImages[this.SplavData.status].src;}
img.setStatus=function(s) {this.SplavData.status=s; this.src=this.SplavData.cacheImages[s].src;}
img.getStatus=function(){return this.SplavData.status;}	
return img;
}

 
SplavControls.RadioBlinkingButton=function(bp,callBackOnClick) 
{
var img=new SplavControls.BlinkingButton(bp,callBackOnClick) ;
$(img).click(function(event){
	if(this.SplavData.status==1 || this.SplavData.status==4)
		return;
	this.setStatus(1); //3
	var siblings=this.parentNode.childNodes;
	var cnt=0;
	for(var i=0;i<siblings.length;i++){
	    if(siblings[i]!=this && siblings[i].setStatus){
	        cnt++;
		    if( siblings[i].SplavData.status!=4)
			    siblings[i].setStatus(0);
			}
	    }
    if(this.SplavData.dontShowProcess)
        this.SplavCallBackOnClick(this.SplavData.num);
    else{
        var me=this;
        SplavControls.showProcessing(event,function(){me.SplavCallBackOnClick(me.SplavData.num);});
        }
	});
return img;
}

SplavControls.NotFixedBlinkingButton=function(bp,callBackOnClick) 
{
var img=new SplavControls.BlinkingButton(bp,callBackOnClick) ;
$(img).click(function(event){
	if(this.SplavData.status==1 || this.SplavData.status==4)
		return;
	this.setStatus(1); //3
    if(this.SplavData.dontShowProcess)
        this.SplavCallBackOnClick(this.SplavData.num);
    else{
        var me=this;
        SplavControls.showProcessing(event,function(){me.SplavCallBackOnClick(me.SplavData.num);});
        }
    if(this.SplavData.status!=4)
        this.setStatus(0);
	});
img.setStatus=function(s) {this.SplavData.status=s; this.src=this.SplavData.cacheImages[s].src;}	
return img;
}

SplavControls.FixedBlinkingButton=function(bp,callBackOnClick) 
{
var img=new SplavControls.BlinkingButton(bp,callBackOnClick) ;
$(img).click(function(event){
    if(this.SplavData.status==4)
        return;
   	this.setStatus(this.SplavData.status?0:1);

    if(this.SplavData.dontShowProcess)
        this.SplavCallBackOnClick(this.SplavData.num,this.SplavData.status);
    else{
        var me=this;
        SplavControls.showProcessing(event,function(){me.SplavCallBackOnClick(me.SplavData.num,me.SplavData.status);});
        }
	});
img.setStatus=function(s){
    this.SplavData.status=s; this.src=this.SplavData.cacheImages[s].src;
    }	
return img;
}

SplavControls.BlinkingButtons=function(outerControl,bp,pressed,callBackOnClick,button)
{
if(!outerControl)
	return;
for(var i=0;i<bp.src.length;i++){
	var cn;
	if(bp.className)cn=bp.className;
    if(i==0 && bp.firstClassName) cn+= cn?(' '+ bp.firstClassName):(bp.firstClassName);
    if(i==(bp.src.length-1) && bp.lastClassName ) cn+=cn?(' '+bp.lastClassName):(bp.lastClassName);
	   
	var btn=new button(
	            {className:cn, src:bp.src[i], title:bp.title[i],
	             num:i, status:i==pressed?1:0,dontShowProcess:bp.dontShowProcess},
	            callBackOnClick);
	outerControl.appendChild(btn);
	}
	
outerControl.setPressed=function(n)
    {
    var c=this.childNodes; var l=c.length;
    for(var i=0;i<l;i++)
        if(c[i].setStatus)
            c[i].setStatus(c[i].SplavData.num==n?1:0);
    }
}

//status and pictures:
//0 - enabled,not pressed
//1 - pressed
//2 - mouse over (not status, only picture)
//3 - processing
//4 - disabled

SplavControls.TextButton=function(bp,callBackOnClick) 
{
var txt=document.createElement('span');
txt.SplavData=new Object();
txt.SplavData.status=bp.status;	
txt.SplavData.dontShowProcess=bp.dontShowProcess;	
txt.innerHTML=bp.innerHTML;
txt.title=bp.title;
txt.SplavData.num=bp.num;
txt.SplavData.className=bp.className;
txt.SplavData.statusClasses=bp.statusClasses;
txt.SplavCallBackOnClick=callBackOnClick;

txt.setStatus=function(s){
    this.SplavData.status=s;
    var cl=this.SplavData.className;
    if(this.SplavData.statusClasses[s]){
        if(cl)
            cl +=' ';
        cl+=this.SplavData.statusClasses[s];
        }
    
    this.className=cl;
    }

txt.getStatus=function(){
    return this.SplavData.status;
    }	

$(txt).click(function(event){
	if(this.SplavData.status==1 || this.SplavData.status==4)
		return;
	this.setStatus(1); //3
    if(this.SplavData.dontShowProcess)
        this.SplavCallBackOnClick(this.SplavData.num);
    else{
        var me=this;
        SplavControls.showProcessing(event,function(){me.SplavCallBackOnClick(me.SplavData.num);});
        }
    if(this.SplavData.status!=4)
        this.setStatus(0);
	});
return txt;
}


SplavControls.CatalogViewModeButtons=function(outerControl,pressed,callBackOnClick)
{
SplavControls.BlinkingButtons(
		outerControl,
		{ className:'blinkingButton', firstClassName:'blinkingButtonFirst',lastClassName:'blinkingButtonLast',
			src:[
				['/images/viewmode/view-cell-out.gif','/images/viewmode/view-cell-active.gif','/images/viewmode/view-cell-over.gif'],
				['/images/viewmode/view-model-out.gif', '/images/viewmode/view-model-active.gif', '/images/viewmode/view-model-over.gif' ],
				['/images/viewmode/view-article-out.gif','/images/viewmode/view-article-active.gif','/images/viewmode/view-article-over.gif']
				],
			title:
			    ['Витрина','Группировка по моделям','Группировка по артикулам']
		},
		pressed,
		callBackOnClick,
		SplavControls.RadioBlinkingButton
	)
}

SplavControls.CartViewModeButtons=function(outerControl,pressed,callBackOnClick)
{
SplavControls.BlinkingButtons(
		outerControl,
		{ className:'blinkingButton', firstClassName:'blinkingButtonFirst',lastClassName:'blinkingButtonLast',
			src:[
				['/images/viewmode/view-model-out.gif', '/images/viewmode/view-model-active.gif', '/images/viewmode/view-model-over.gif' ],
				['/images/viewmode/view-article-out.gif','/images/viewmode/view-article-active.gif','/images/viewmode/view-article-over.gif'],
				['/images/viewmode/view-row-out.gif','/images/viewmode/view-row-active.gif','/images/viewmode/view-row-over.gif']
				],
			title:
			    ['Группировка по моделям','Группировка по артикулам','Без группировки']
		},
		pressed,
		callBackOnClick,
		SplavControls.RadioBlinkingButton
	)
if(outerControl && outerControl.setPressed){
    outerControl.oldSetPressed=outerControl.setPressed;
    outerControl.setPressed=function(n)
        {outerControl.oldSetPressed(n-1);}
    }	
}

SplavControls.CartAddButton=function(outerControl,callBackOnClick,bUpdate)
{
if(!outerControl)
	return;

var txtSave=bUpdate?'Сохранить изменения':'Добавить в корзину';
var txtTitle=bUpdate?'Щёлкните для сохранения':'Щёлкните для добавления в корзину';
   
var btn=new SplavControls.TextButton(
                     {  className:'tbtTextButton tbtCartAddButton',
                        innerHTML:txtSave,
                        statusClasses:['tbtTextButtonNormal tbtCartFull','tbtTextButtonPressed tbtCartLoading',null,'tbtCartLoading','tbtTextButtonDisabled tbtCartEmpty'],   
                        title:txtTitle
                     },
	                callBackOnClick);
outerControl.appendChild(btn);
btn.setStatus(4);
return btn;
}


SplavControls.ExpandCollapseButton=function(outerControl,callBackOnClick)
{
SplavControls.BlinkingButtons(
		outerControl,
		{   className:'tbtExpandCollapseButton',
		    src:[
				['/images/viewmode/button-plus.gif',  '/images/viewmode/button-minus.gif']
				],
			title:
			    ['Раскрыть/Закрыть всё']
		},
		-1,
		callBackOnClick,
		SplavControls.FixedBlinkingButton
	)
}

SplavControls.RemoveAllButton=function(outerControl,callBackOnClick)
{
if(!outerControl)
	return;
  
var btn=new SplavControls.TextButton(
                     {  className:'tbtTextButton tbtRemoveAllButton',
                        innerHTML:'Очистить',
                        statusClasses:['tbtTextButtonNormal','tbtTextButtonPressed',null,'tbtTextButtonPressed','tbtTextButtonDisabled'],   
                        title:'Щёлкните для удаления всего товара'
                     },
	                callBackOnClick);
outerControl.appendChild(btn);
btn.setStatus(4);
return btn;
}

SplavControls.ClassButton=function(elm,classOn,classOff,callBackOnClick) 
{
elm.SplavData=new Object();
elm.SplavData.checked=false;
elm.className=classOff;
elm.setChecked=function(s) {this.SplavData.checked=s; if(s) this.className=classOn; else this.className=classOff;}
elm.getChecked=function(){return this.SplavData.checked;}
$(elm).bind('click',function(e){
    this.SplavData.checked=!elm.SplavData.checked;
    this.setChecked(this.SplavData.checked);
    callBackOnClick(e);
    });
return elm;
}



SplavControls.jsXhr=(typeof window.XSLTProcessor) != 'undefined';
SplavControls.msXhr=(typeof window.XSLTProcessor) == 'undefined';
SplavControls.xhr=
        ((typeof window.XSLTProcessor) != 'undefined') ?
			function() {
			    //alert('new window.XMLHttpRequest()');
				return new window.XMLHttpRequest();
			    } :
			function() {
			    var msVersions=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0"];
                for(var i=0;i<msVersions.length;i++){
                    try{var r=new ActiveXObject(msVersions[i]);
                        //alert('new '+msVersions[i]);
                        return r;
                        }
                    catch(err){}
                    }
			    }

SplavControls.msXmlDoc=function()
{
var msVersions=["MSXML2.DomDocument.6.0","MSXML2.DomDocument.3.0"];
for(var i=0;i<msVersions.length;i++){
    try{
        var o=new ActiveXObject(msVersions[i]);
        o.async=false;
        o.validateOnParse=false;
        o.resolveExternals=false;
        o.preserveWhiteSpace=false;
        return o;
        }
    catch(err){}
    }
throw new Error("can't create MS XML document");   
}

SplavControls.msFreeThreadedXmlDoc=function()
{
var msVersions=["MSXML2.FreeThreadedDOMDocument.6.0","MSXML2.FreeThreadedDOMDocument.3.0"];
for(var i=0;i<msVersions.length;i++){
    try{return new ActiveXObject(msVersions[i]);}
    catch(err){}
    }
throw new Error("can't create MS XML document");   
}

SplavControls.msXslTemplate=function()
{
var msVersions=["MSXML2.XSLTemplate.6.0","MSXML2.XSLTemplate.3.0"];
for(var i=0;i<msVersions.length;i++){
    try{return new ActiveXObject(msVersions[i]);}
    catch(err){}
    }
throw new Error("can't create MS XSL template");   
}

SplavControls.siteXmlDoc=function(url,para)
{this.url=url;this.doc=null;this.ajax=null;this.para=para;this.loadFailed=false;}

SplavControls.siteXmlDoc.prototype.clear=function()
{
if(this.ajax)
    this.ajax.abort();
this.ajax=null;
this.doc=null;
this.error=null;
this.loadFailed=false; 
this.xslt=null;
}

SplavControls.siteXmlDoc.prototype.load=function(isXsl,callBack,errorCallBack)
{
if(this.doc)
    return callBack(this.doc);
if(this.ajax)
    return true;
this.loadFailed=false;
var me=this;
this.ajax=$.ajax({url:this.url,type:'get',data:this.para,dataType:(SplavControls.msXhr && isXsl)?'text':'xml',
                  async:true,ifModified:false,xhr:SplavControls.xhr,
                    success: isXsl?
                        ( SplavControls.msXhr?
                            function(doc,textStatus,xhr)        //ms xslt
                                {
                                me.doc=SplavControls.msFreeThreadedXmlDoc();
                                me.doc.loadXML(doc);
                                if(me.doc.parseError.errorCode!=0){
                                    me.error=me.doc.parseError.reason;
                                    me.doc=null;
                                    me.loadFailed=true;
                                    me.ajax=null;
                                    errorCallBack(this.url,me.error);
                                    return;
                                    }
                                me.xslt=new SplavControls.msXslTemplate();
                                me.xslt.stylesheet = me.doc;
                                me.loadFailed=false;
                                me.ajax=null;
                                //alert(me.url+' loaded');
                                callBack.call(me);
                                }  :
                            function(doc,textStatus,xhr)    //standatd xsslt
                                {
                                me.doc=doc;
                                me.xsltProc= new XSLTProcessor();
                                me.xsltProc.importStylesheet(me.doc);
                                me.loadFailed=false;
                                me.ajax=null;
                                //alert(me.url+' loaded');
                                callBack.call(me);
                                }
                            ):
                        function(doc,textStatus,xhr)        //simple xml
                            {
                            me.doc=doc;
                            me.loadFailed=false;
                            me.ajax=null;
                            //alert(me.url+' loaded');
                            callBack.call(me);
                            },
                    error:function(xhr,textStatus,errorThrown)
                        {
                        me.doc=null;
                        me.ajax=null;
                        me.loadFailed=true;
                        errorCallBack(this.url,textStatus,errorThrown);
                        }
                });
return(!!this.ajax);
}

SplavControls.siteXmlDoc.prototype.parseFromString=function(isXsl,strXml)
{
this.clear();
if(SplavControls.msXhr){            //ms
    this.doc= isXsl? SplavControls.msFreeThreadedXmlDoc():SplavControls.msXmlDoc();
    this.doc.loadXML(strXml);
    if(this.doc.parseError.errorCode!=0){
        this.error=this.doc.parseError.reason;
        this.doc=null;
        this.loadFailed=true;
        return null;
        }
    if(isXsl){
        this.xslt=new SplavControls.msXslTemplate();
        this.xslt.stylesheet = this.doc;
        }
    return this;                        //alert(me.url+' loaded');
    }
else{   //standatd xslt
    this.doc=(new DOMParser()).parseFromString(strXml,'text/xml');
    if(this.doc.documentElement.tagName=='parsererror'){
        this.doc.error=this.doc.documentElement.textContent;
        this.loadFailed=true;
        return null;
        }
    if(isXsl){
        this.xsltProc= new XSLTProcessor();
        this.xsltProc.importStylesheet(this.doc);
        }
    return this;
    }
}

SplavControls.showProcessing=function(e,f)
    {
    var imgId="ImgProcessing";
    var img=document.getElementById(imgId);
    if(!img){
        img=new Image();
        img.id=imgId;
        img.src="/images/tv/processing.gif";
        img.alt="processing";
        img.title="щаз"
        document.body.appendChild(img);            
        }
    $(img).css( {position:'absolute', left:e.pageX-8, top:e.pageY-8, zIndex:50, cursor:'auto', display:'block'} )
    window.setTimeout(function(){f();$(img).fadeOut();},0);
    
    }
    
SplavControls.hideProcessing=function(){$("#ImgProcessing").fadeOut();}

SplavControls.nextSibling=function(n){
    if(n)
        while(n=n.nextSibling)
            if(n.nodeType==1)
                break;
    return n;
    }

SplavControls.previousSibling=function(n){
    if(n)
        while(n=n.previousSibling)
            if(n.nodeType==1)
                break;
    return n;
    }    
    
SplavControls.ClearCatalogCash=function()
{
$.ajax({
        url:'/soap/clearcache.ashx',
        type:'get',
        async:true,
        dataType:'json',
        success:function(data,status,xhr){
                if(data.error) alert(data.error);
                else if(data.ok) location.reload();
                }
    }
);

}    

SplavControls.cbPriceLess=function(cb,editorCookie,editorCookiePriceLess)
{
var cook=new SplavControls.Cookie(editorCookie);
var pl=cook[editorCookiePriceLess];
if(pl && pl.toLowerCase()=='true')
    cb.checked=true;
else
    cb.checked=false;
$(cb).bind('change',
            function(){
                cook[editorCookiePriceLess]=this.checked;
                cook.store(0,'/');
                location.reload();
                });
}

