class page_admin extends PageControls {
constructor() {
    super()
	//Properties
};

//---- METHODS ----
prepareUI() {
	this.Page = app.CreateLayout( "Linear", "FillXY,VCenter" );
	//prepare layout hidden but use animation
    this.Page.SetVisibility( "Hide" );
    layContent.AddChild( this.Page );
    
	this.txt = app.CreateText( "[fa-calendar] {0}".format(T("page-admin_set-datetime")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize )
	this.txt.SetPadding(0, 0, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
        this.pad2 = function(n) { return n < 10 ? '0' + n : n }
        var date = new Date();
        PrepareSendMessage("Y{0}{1}{2}H{3}{4}{5}".format(
            date.getFullYear().toString(),      //year
            this.pad2(date.getMonth()+1),       //month
            this.pad2(date.getDate()),          //day
            this.pad2(date.getHours()),         //hour
            this.pad2(date.getMinutes()),       //minute
	        this.pad2(date.getSeconds())        //second
        ))
	});
	this.Page.AddChild( this.txt )
	
	this.txt = app.CreateText( "[fa-volume-down] {0}".format(T("page-admin_alarm-sound")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    this.dlg = app.CreateDialog( T("page-admin_alarm-sound"), "Modal" );
        this.dlg.SetOnBack( ()=>{
            this.dlg.Dismiss();
        });

        this.layDlg = app.CreateLayout( "linear", "Horizontal,FillXY" );
        this.dlg.AddLayout( this.layDlg );
    
        this.btn = app.CreateButton( "[fa-check] {0}".format(T("common_enable")), -1,-1, "FontAwesome,SingleLine" ) ;
        // this.btn.SetTextSize( this.OptionFontSize-10 );
        this.btn.SetPadding(0.02, 0.02, 0.02, 0.02);
        this.btn.SetOnTouch( ()=>{
            this.dlg.Dismiss();
            PrepareSendMessage("CC")
        });
        this.layDlg.AddChild( this.btn );
        
        this.btn = app.CreateButton( "[fa-ban] {0}".format(T("common_disable")), -1,-1, "FontAwesome,SingleLine" );
        // this.btn.SetTextSize( this.OptionFontSize-10 );
        this.btn.SetPadding(0.02, 0.02, 0.02, 0.02);
        this.btn.SetOnTouch( ()=>{
            this.dlg.Dismiss();
            PrepareSendMessage("DD")
        });
        this.layDlg.AddChild( this.btn );
    
        this.dlg.Show();
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-clock-o] {0}".format(T("page-admin_alarm-sound-time")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
        this.commonDialog("E", 3, T("page-admin_alarm-sound-time"), "{0}, {1}".format(
            T("page-admin_alarm-sound-time"),
            T("common_in-secods"))
        )
	});
	this.Page.AddChild( this.txt );
	
	
	this.txt = app.CreateText( "[fa-hourglass-start] {0}".format(T("page-admin_alarm-delay")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
        this.commonDialog("F", 3, T("page-admin_alarm-delay"), "{0}, {1}".format(
            T("page-admin_alarm-delay"),
            T("common_in-secods"))
        )
	});
	this.Page.AddChild( this.txt );	
	
	this.txt = app.CreateText( "[fa-bell-o] {0}".format(T("page-admin_arm-delay")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    this.commonDialog("G", 2, T("page-admin_arm-delay"), "{0}, {1}".format(
	        T("page-admin_arm-delay"),
	        T("common_in-secods"))
        )
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-plug] {0}".format(T("page-admin_power-loss-information")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    this.commonDialog("M", 2, T("page-admin_power-loss-information"), "{0}, {1}".format(
	        T("page-admin_power-loss-information"),
	        T("common_in-minutes"))
        )
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-binoculars] {0}".format(T("page-admin_5th-zone-monitoring-perion")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
        //TODO: logika laiko parinkimui
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-exchange] {0}".format(T("page-admin_alarm-interlock-relay-time")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    this.commonDialog("RT", 3, T("page-admin_alarm-interlock-relay-time"), "{0}, {1}".format(
	        T("page-admin_alarm-interlock-relay-time"),
	        T("common_in-secods")),
	        false
        )
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-wifi] {0}".format(T("page-admin_WAC-time")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    this.commonDialog("GT", 3, T("page-admin_WAC-time"), "{0}, {1}".format(
	        T("page-admin_WAC-time"),
	        T("common_in-secods")),
	        false
        )
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-key] {0}".format(T("page-admin_change-pin-code")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    this.dlg = app.CreateDialog( T("page-admin_change-pin-code"), "Modal" );
        this.dlg.SetOnBack( ()=>{
            this.dlg.Dismiss();
        });
        
        this.layDlg = app.CreateLayout( "linear", "Vertical,FillXY" );
        this.dlg.AddLayout( this.layDlg );

        this.txt = app.CreateText( T("page-admin_change-pin-code-new"), -1, -1, "Multiline," )
        // this.txt.SetTextSize( this.OptionFontSize-20 );
        this.layDlg.AddChild( this.txt );
        
        this.codeInput = app.CreateTextEdit( "", false, false, "AutoSelect,SigleLine,Numbers" );
        this.codeInput.SetHint("####")
        // this.codeInput.SetTextSize( this.OptionFontSize-20 );
        this.codeInput.SetOnChange( ()=>{
            // four digits
            if(! /(^[0-9]{4}$)/.test(this.codeInput.GetText()) && this.codeInput.GetText().length >= 4){
                this.codeInput.SetText("")
                app.ShowPopup( T("common_validation-error") );
                this.AnimateError(this.codeInput);
            }     
        });

        this.layDlg.AddChild( this.codeInput );

        //checkbox
        this.chk = app.CreateCheckBox(T("page-admin_change-pin-code-remember"))
        this.layDlg.AddChild( this.chk );
        
        //submit button
        this.btn = app.CreateButton( "[fa-check] {0}".format(T("common_submit")), -1,-1, "FontAwesome,SingleLine" ) ;
        // this.btn.SetTextSize( this.OptionFontSize-10 );
        this.btn.SetPadding(0.02, 0.02, 0.02, 0.02);
        this.btn.SetOnTouch( ()=>{
            if(this.codeInput.GetText().length == 4 ){
                if( this.chk.GetChecked() ){
                    g_global.Settings.PinCode = this.codeInput.GetText();
                    WriteSettingsFile();
                }
                this.dlg.Dismiss();
                PrepareSendMessage("P{0}".format(
                    this.codeInput.GetText()
                ));
            }
        });
        this.layDlg.AddChild( this.btn );
        
        this.dlg.Show();
	});
	this.Page.AddChild( this.txt );
	
	this.txt = app.CreateText( "[fa-retweet] {0}".format(T("page-admin_restart")), -1, -1, "Multiline,FontAwesome" )
	this.txt.SetTextSize( this.OptionFontSize );
	this.txt.SetPadding(0, this.paddingTop, 0, 0);
	this.txt.SetOnTouchUp( ()=>{
	    PrepareSendMessage("RESTART");
	});
	this.Page.AddChild( this.txt );
};

commonDialog(commandKey, digitsCount, modalTitle, hint, hash=true){
    this.dlg = app.CreateDialog( modalTitle, "Modal" );
    this.dlg.SetOnBack( ()=>{
        this.dlg.Dismiss();
    });
    
    this.layDlg = app.CreateLayout( "linear", "Vertical,FillXY" );
    this.dlg.AddLayout( this.layDlg );

    this.txt = app.CreateText( hint, -1, -1, "Multiline," )
    this.txt.SetMargins( 0.01, 0, 0.01, 0 )
    // this.txt.SetTextSize( this.OptionFontSize-20 );
    this.layDlg.AddChild( this.txt );
    
    this.codeInput = app.CreateTextEdit( "", false, false, "AutoSelect,SigleLine,Numbers" );
    // this.codeInput.SetTextSize( this.OptionFontSize-20 );
    this.codeInput.SetHint("{0}-{1}".format(
        "0".repeat(digitsCount),
        "9".repeat(digitsCount)
    
    ))
    
    this.codeInput.SetOnChange( ()=>{
        // dynamic nuber of digits
        let regex = new RegExp("(^[0-9]{"+ digitsCount +"}$)");     // dynamic regex formation
        if(! regex.test(this.codeInput.GetText()) && this.codeInput.GetText().length >= digitsCount){
            this.codeInput.SetText("")
            app.ShowPopup( T("common_validation-error") );
            this.AnimateError(this.codeInput);
        }     
    });

    this.layDlg.AddChild( this.codeInput );
    
    //submit button
    this.btn = app.CreateButton( "[fa-check] {0}".format(T("common_submit")), -1,-1, "FontAwesome,SingleLine" ) ;
    // this.btn.SetTextSize( this.OptionFontSize-10 );
    this.btn.SetPadding(0.02, 0.02, 0.02, 0.02);
    this.btn.SetOnTouch( ()=>{
        if(this.codeInput.GetText().length == digitsCount ){
            this.dlg.Dismiss();
            PrepareSendMessage("{0}{1}{2}".format(
                commandKey,
                this.codeInput.GetText(),
                (hash) ? "#" : ""
            ));
        }
        else{
            this.AnimateError(this.codeInput);
        }
    });
    this.layDlg.AddChild( this.btn );
    
    this.dlg.Show();

}

}  // end of class