

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

function bsDialogCtl(){
        var info       = "BASIS Simple Dialog Controller";
        this.sMsgLoading=sMsgLoading;
        var sMsgLoading=bsGUIGetLoaderElement();
        this.sMsgComplete=sMsgComplete;
        var sMsgComplete='<span>Готово</span>';
        
        this.hForm=hForm;
        /*r hForm      = null;*/
        var hForm=new bsForm3();
        this.hForm=hForm;
        this.aData=aData;
        var aData      = new Array();

        this.iItemId=iItemId;
        var iItemId=0;

        
    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.init=init;
    function init(a){
        

        aData=a;
        /*hForm=new bsForm3();*/
        hForm.init(aData['formid']);
		
		/*$('#'+aData['formcontainerid']).dialog('destroy'); !!!*/
		if( aData['nodialog']==1 ) {
			if( !aData['gridcontainerid'] )
				aData['gridcontainerid'] = aData['formcontainerid'].replace('Item','Grid');
			/*alert(aData['gridcontainerid']);*/
		}

        if( isset(aData['autoclose']) ) {
        }else{
            aData['autoclose']=true;
        }

        if( typeof(aData['json'])=='undefined' ) {
            aData['json']=false;
        }


        if(aData['submitid'] && aData['submitid']!=''){
        $('#'+aData['submitid']).click(function(e){
           submitForm();
        });
        }

        if(aData['canselid'] && aData['canselid']!=''){
        $('#'+aData['canselid']).click(function(e){
            hide();
            resetForm();
        });
        }

        /*
        $("form[name='"+aData['formid']+"'] *[use='f']").bind("change keyup click", function(e){
            if( $('#'+aData['submitid']).attr('disabled') ) {
                bsGUIFallBlock(aData['statid'],bsGUIGetAlertElement('не все обязательные поля заполнены верно'),5000);
            }else{
                bsGUIFallBlock(aData['statid'],' ',5000);
            }
        });
        */

        
    }

    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.submitForm=submitForm;
    function submitForm(){
    	
         	$('#'+aData['statid']).html(sMsgLoading);
            $('#'+aData['statid']).fadeTo(300, 0.9);
                              
            var v={
                'module':aData['module'],
                'action':aData['action'],
                'req'   :'save',
                'nodeid':nodeid,
                'provid':provid,
                'item':iItemId

            };


            
            if( typeof(aData['beforesubmit'])=='undefined' ){
            }else{
            	aData['beforesubmit']();
            }
            
            var vals=hForm.getValues();


            if( aData['json'] ) {                
                v['_data']=toJSON(vals);
            }else{
                for( key  in vals ) {
                    v[key]=(vals[key]);
                }
            }

            if( aData['fields'] ) {                
                for( key in aData['fields'] ) {
                    v[key]=(aData['fields'][key]);
                }
            }
           
            $.post(
                "/?",
                v,
                pSave,
                'json'
            );
    }
    
     
    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.setData=setData;
    function setData(a){
        aData=a;
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.get=get;
    function get(item){
        $('#'+aData['statid']).html(sMsgLoading);
        $('#'+aData['statid']).fadeTo(300, 0.9);
        iItemId=item;
        var v={
             'module':aData['module'],
             'action':aData['action'],
             'req'   :'get',
             'nodeid':nodeid,
             'provid':provid,
             'item':item
        };

            if( aData['fields'] ) {
                
                for( key in aData['fields'] ) {
                    v[key]=(aData['fields'][key]);
                }
            }
            
        $.post(
            "/?",
            v,
            pGet,
            'json'
        ); 
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.del=del;
    function del( items ){
            v={
                'module':aData['module'],
                'action':aData['action'],
                'req'   :'del',
                'nodeid':nodeid,
                'provid':provid,
                'items' :items
            };
            
            if( aData['fields'] ) {
                
                for( key in aData['fields'] ) {
                    v[key]=(aData['fields'][key]);
                }
            }

            
            $.post(
                "/?",
                v,
                pDel,
                'json'
            );
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.pSave=pSave;
    function pSave(ret,stat){
        
        if( stat='success' ) {
            if( ret['_errcode']=='complete' ) {
                bsGUIFallBlock(aData['statid'],sMsgComplete,5000);   
                
                if( typeof(aData['beforesave'])=='undefined' ){
            	}else{
            		aData['beforesave']();
            	}
                
                aData['onsave'](ret,stat);
                if( aData['autoclose'] ) {
                    hForm.resetValues();
                    iItemId=0;
                    hide();
                }

            }else{
                alert(ret['_errcode']);
            }

        }else{
            alert('Ошибка связи с сервером ('+stat+')');
        }       

    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.pGet=pGet;
    function pGet(ret,stat){
        if( stat='success' ) {
            if( ret['_errcode']=='complete' ) {
            	
            	if( typeof(aData['beforeget'])=='undefined' ){
            	}else{
            		aData['beforeget']();
            	}
            	
                hForm.setValues(ret);
                
                $('#'+aData['statid']).fadeTo(300, 0.0);
                aData['onload'](iItemId,ret,stat);
                show();
            }else{
                alert(ret['_errcode']);
            }

        }else{
            alert('Ошибка связи с сервером ('+stat+')');
        }
    }
    
    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.pDel=pDel;
    function pDel(ret,stat){
        
        if( stat='success' ) {
            if( ret['_errcode']=='complete' ) {
                aData['onsave'](ret,stat);
            }else{
                alert(ret['_errcode']);
            }

        }else{
            alert('Ошибка связи с сервером ('+stat+')');
        }       

    }
 

    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.hide=hide;
    function hide(){
    	
    	  
		if( typeof(aData['beforehide'])=='undefined' ){
		}else{
			aData['beforehide']();
		}
    	
		if( aData['nodialog']==1 ) {
			$('#'+aData['formcontainerid']).hide();
			$('#'+aData['gridcontainerid']).show();
		}else if(aData['nodialog']==2){
		} else {
			$('#'+aData['formcontainerid']).hide();
            if( typeof( $('#'+aData['formcontainerid']).dialog )!='undefined' ) {            
                $('#'+aData['formcontainerid']).dialog('close');
            }
		}
		
		if( typeof(aData['onhide'])=='undefined' ){
		}else{
			aData['onhide']();
		}
    }

    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.show=show;
    function show(){        
		if( aData['nodialog']==1 ) {
			$('#'+aData['gridcontainerid']).hide();
			$('#'+aData['formcontainerid']).show();
		}else if(aData['nodialog']==2){		
		} else {
			$('#'+aData['formcontainerid']).show();
			if( typeof( $('#'+aData['formcontainerid']).dialog )!='undefined' ) {            
                $('#'+aData['formcontainerid']).dialog('open');        
            }
		}
        aData['onshow']();
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.initForm=initForm;
    function initForm(){
        hForm.init(aData['formid']);         
    }

    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.resetForm=resetForm;
    function resetForm(){
        hForm.resetValues(); 
        iItemId=0;
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.create=create;
    function create(){
        hForm.resetValues(); 
        iItemId=0;
        aData['oncreate']();
        show();
    }

    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.setFields=setFields;
    function setFields(v){
    	alert('ы');
        aData['fields']=v;
    }

    /* ***************************************************************************************
     * 
     ************************************************************************************** */ 
    this.setItemId=setItemId;
    function setItemId(a){
        iItemId=a;
    }    

    /* ***************************************************************************************
     * 
     ************************************************************************************** */ 
    this.setValues=setValues;
    function setValues(a){
    	hForm.setValues(a);
    }   
    
    /* ***************************************************************************************
     * 
     ************************************************************************************** */ 
    this.getValues=getValues;
    function getValues(){
    	var r=hForm.getValues();
    	return r;
    }   
    
    

};


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

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

function bsFormCtl(){
        var info       = "BASIS Simple Form Controller";
        this.sMsgLoading=sMsgLoading;
        var sMsgLoading=bsGUIGetLoaderElement();
        this.sMsgComplete=sMsgComplete;
        var sMsgComplete='<span>Готово</span>';
        
        this.hForm=hForm;
        /*r hForm      = null;*/
        var hForm=new bsForm3();
        this.aData=aData;
        var aData      = new Array();

        this.iItemId=iItemId;
        var iItemId=0;

        
    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.init=init;
    function init(a){
        
        
        aData=a;

        if( !aData['autoget'] && aData['autoget']!=false) {
            aData['autoget']=true;
        }

        /*hForm=new bsForm3();*/
        hForm.init(aData['formid']);

        $('#'+aData['submitid']).click(function(e){
        		
        		if(typeof(aData['beforesave'])=='function'){
        			aData['beforesave']();
        		}
        	
        	
            $('#'+aData['statid']).html(sMsgLoading);
            $('#'+aData['statid']).fadeTo(300, 0.9);
                              
            var v={
                'module':aData['module'],
                'action':aData['action'],
                'req'   :'save',
                'nodeid':nodeid,
                'provid':provid
            };
            
            if( typeof(aData['json'])=='undefined' ) {
                aData['json']=false;
            }            
            
            var vals=hForm.getValues();
            if( aData['json'] ) {                
                v['_data']=toJSON(vals);
            }else{
                for( key  in vals ) {
                    v[key]=(vals[key]);
                }
            }


            if( aData['fields'] ) {
                
                for( key in aData['fields'] ) {
                    v[key]=(aData['fields'][key]);
                }
            }

            $.post(
                "/?",
                v,
                pSave,
                'json'
            );
        });

        if( aData['autoget'] ) {
            get();
        }

       

        /*
        $("form[name='"+aData['formid']+"'] *[use='f']").bind("change keyup click", function(e){
            if( $('#'+aData['submitid']).attr('disabled') ) {
                bsGUIFallBlock(aData['statid'],bsGUIGetAlertElement('не все обязательные поля заполнены верно'),5000);
            }else{
                bsGUIFallBlock(aData['statid'],' ',5000);
            }
        });
        */

       



    }



    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.get=get;
    function get(item){
        $('#'+aData['statid']).html(sMsgLoading);
        $('#'+aData['statid']).fadeTo(300, 0.9);
        iItemId=item;
        var v={
             'module':aData['module'],
             'action':aData['action'],
             'req'   :'get',
             'nodeid':nodeid,
             'provid':provid
        };

            if( aData['fields'] ) {
                
                for( key in aData['fields'] ) {
                    v[key]=(aData['fields'][key]);
                }
            }


        $.post(
            "/?",
            v,
            pGet,
            'json'
        ); 
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.pSave=pSave;
    function pSave(ret,stat){
        
        if( stat='success' ) {
            if( ret['_errcode']=='complete' ) {
                bsGUIFallBlock(aData['statid'],sMsgComplete,5000);
                aData['onsave'](ret,stat);
            }else{
                alert(ret['_errcode']);
            }
        }else{
            alert(ret);
        }       

    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.pGet=pGet;
    function pGet(ret,stat){
        if( stat='success' ) {
            if( ret['_errcode']=='complete' ) {
                hForm.setValues(ret);
                $('#'+aData['statid']).fadeTo(300, 0.0);
                aData['onload'](ret,stat);
            }else{
                alert(ret['_errcode']);
            }
        }else{
            alert(ret);
        }
    }

    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.initForm=initForm;
    function initForm(){
        hForm.init(aData['formid']);         
    }


    /* ***************************************************************************************
     * 
     ************************************************************************************** */
    this.setFields=setFields;
    function setFields(v){
        aData['fields']=v;
    }


    
    

};


