<commit_before>
// two parts: under node-webkit and in simple browser

var devel = true
var gui = require('nw.gui')
var app = {
    tray: { obj: null ,stat: 'show' },
    w: null,
    config: { ExtApp: null }
}
var tools = {}

l10n = {
    tray: {
        title: 'SMSки'
        ,winvis: 'SMSки работают (окно видно)'
        ,wininv: 'SMSки работают (окно скрыто)'
    }
    ,extjsNotFound:
        'Не найден или не загрузился "ExtJS" (визуальная библиотека).\n' +
        'Нужно проверить конфигурацию программы "enjsms".'
    ,configLoadError:
        'Ошибка при чтении файла конфигурации!'
}

tools_common_uglify_js_closure(console ,app)

;(function node_webkit_uglify_js_closure(con ,app ,gui ,tools){
    app.w = gui.Window.get()
    app.w.showDevTools()

    setup_tray(app.tray ,app.w)

    load_config(app) && tools.load_extjs(app.w.window.document ,app.w.window)
    return

function load_config(app){
    var cfg
    var fs = require('fs')

    if(process._nw_app && (cfg = process._nw_app.argv[0])){// cmd line
        cfg = 'config/' + cfg
    } else {// HOME config
        if(process.env.HOME){
            cfg = process.env.HOME
        } else if(process.env.HOMEDRIVE && process.env.HOMEPATH){
            cfg = process.env.HOMEDRIVE +  process.env.HOMEPATH
        }
        cfg = cfg + '/.enjsms.js'
        try {
            fs.statSync(cfg)
        } catch (ex){
            cfg = null
        }
    }
    if(!cfg)// default
        cfg = 'config/cfg_default.js'

    try {
        app.config = (
            new Function('return (function(){ var config ; return ' +
                          fs.readFileSync(cfg ,'utf8') + '})()')
        )()
    } catch(ex){
        con.error('ERROR load_config:' + ex + '\n' + ex+ '\n' + cfg)
        app.w.window.alert(l10n.configLoadError + '\n' + ex + '\n' + cfg)
        return false
    }
    con.log('reading config: ' + cfg + ' done')
    return true
}

function setup_tray(t ,w){
    t.obj = new gui.Tray({ title: l10n.tray.title ,icon: 'web_assets/images/favicon.png' })
    t.obj.tooltip = l10n.tray.winvis

    t.obj.on('click' ,function onTrayClick(){
        if('show' == t.stat){// simple show,focus / hide
            t.stat = 'hide'
            t.obj.tooltip = l10n.tray.wininv
            w.hide()
        } else {
            w.show()
            t.obj.tooltip = l10n.tray.winvis
            t.stat = 'show'
        }
    })
    con.log('setup_tray: done')
}
})(console ,app ,gui ,tools)

//common

//;(
function tools_common_uglify_js_closure(con ,app){

    tools.load_extjs = load_extjs
    return

function load_extjs(doc ,w){
var extjs, path

    path = devel ? '../../../ext-4.2.1.883/' : 'extjs/'
    extjs = doc.createElement('link')
    extjs.setAttribute('rel', 'stylesheet')
    extjs.setAttribute('href', path + 'resources/css/ext-all.css')
    doc.head.appendChild(extjs)

    extjs = doc.createElement('script'),
    extjs.setAttribute('type' ,'application/javascript')
    extjs.setAttribute('charset' ,'utf-8')
    extjs.setAttribute('src' , path + 'ext-all.js')
    doc.head.appendChild(extjs)

    w.addEventListener('load' ,(extjs = function(){
        w.removeEventListener('load' ,extjs)
        if('undefined' != typeof Ext){
            con.log('ExtJS version: ' + Ext.getVersion('extjs'))
            //Ext.application(app.configExtApp)
        } else {
            con.err(l10n.extjsNotFound)
            w.alert(l10n.extjsNotFound)
        }
    }))
    con.log('load_extjs: done, waiting for ExtJS')
}
}
//)(console ,app)

// for express part:
/*

//  TODO; move after express setup      xhr.open('HEAD' ,'extjs/ext-all-debug.js' ,false) ,xhr.send()
        if('undefined' != typeof global) try {
            global.require('app_back.js')
        } catch (e) {
            start_failed('Работа программы не возможна. Отсуствует или повреждён файл `app_back.js`')
            return
        }
*/<commit_msg>fix console.error typo, remove trail comments<commit_after>
// two parts: under node-webkit and in simple browser

var devel = true
var gui = require('nw.gui')
var app = {
    tray: { obj: null ,stat: 'show' },
    w: null,
    config: { ExtApp: null }
}
var tools = {}

l10n = {
    tray: {
        title: 'SMSки'
        ,winvis: 'SMSки работают (окно видно)'
        ,wininv: 'SMSки работают (окно скрыто)'
    }
    ,extjsNotFound:
        'Не найден или не загрузился "ExtJS" (визуальная библиотека).\n' +
        'Нужно проверить конфигурацию программы "enjsms".'
    ,configLoadError:
        'Ошибка при чтении файла конфигурации!'
}

tools_common_uglify_js_closure(console ,app)

;(function node_webkit_uglify_js_closure(con ,app ,gui ,tools){
    app.w = gui.Window.get()
    app.w.showDevTools()

    setup_tray(app.tray ,app.w)

    load_config(app) && tools.load_extjs(app.w.window.document ,app.w.window)
    return

function load_config(app){
    var cfg
    var fs = require('fs')

    if(process._nw_app && (cfg = process._nw_app.argv[0])){// cmd line
        cfg = 'config/' + cfg
    } else {// HOME config
        if(process.env.HOME){
            cfg = process.env.HOME
        } else if(process.env.HOMEDRIVE && process.env.HOMEPATH){
            cfg = process.env.HOMEDRIVE +  process.env.HOMEPATH
        }
        cfg = cfg + '/.enjsms.js'
        try {
            fs.statSync(cfg)
        } catch (ex){
            cfg = null
        }
    }
    if(!cfg)// default
        cfg = 'config/cfg_default.js'

    try {
        app.config = (
            new Function('return (function(){ var config ; return ' +
                          fs.readFileSync(cfg ,'utf8') + '})()')
        )()
    } catch(ex){
        con.error('ERROR load_config:' + ex + '\n' + ex+ '\n' + cfg)
        app.w.window.alert(l10n.configLoadError + '\n' + ex + '\n' + cfg)
        return false
    }
    con.log('reading config: ' + cfg + ' done')
    return true
}

function setup_tray(t ,w){
    t.obj = new gui.Tray({ title: l10n.tray.title ,icon: 'web_assets/images/favicon.png' })
    t.obj.tooltip = l10n.tray.winvis

    t.obj.on('click' ,function onTrayClick(){
        if('show' == t.stat){// simple show,focus / hide
            t.stat = 'hide'
            t.obj.tooltip = l10n.tray.wininv
            w.hide()
        } else {
            w.show()
            t.obj.tooltip = l10n.tray.winvis
            t.stat = 'show'
        }
    })
    con.log('setup_tray: done')
}
})(console ,app ,gui ,tools)

//common

//;(
function tools_common_uglify_js_closure(con ,app){

    tools.load_extjs = load_extjs
    return

function load_extjs(doc ,w){
var extjs, path

    path = devel ? '../../../ext-4.2.1.883/' : 'extjs/'
    extjs = doc.createElement('link')
    extjs.setAttribute('rel', 'stylesheet')
    extjs.setAttribute('href', path + 'resources/css/ext-all.css')
    doc.head.appendChild(extjs)

    extjs = doc.createElement('script'),
    extjs.setAttribute('type' ,'application/javascript')
    extjs.setAttribute('charset' ,'utf-8')
    extjs.setAttribute('src' , path + 'ext-all.js')
    doc.head.appendChild(extjs)

    w.addEventListener('load' ,(extjs = function(){
        w.removeEventListener('load' ,extjs)
        if('undefined' != typeof Ext){
            con.log('ExtJS version: ' + Ext.getVersion('extjs'))
            //Ext.application(app.configExtApp)
        } else {
            con.error(l10n.extjsNotFound)
            w.alert(l10n.extjsNotFound)
        }
    }))
    con.log('load_extjs: done, waiting for ExtJS')
}
}
//)(console ,app)
{'fraction_non_alphanumeric': 0.15434985968194576, 'fraction_numerical': 0.006681812107443539, 'mean_word_length': 2.216158143532445, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4704558', 'n_tokens_mistral': 2684, 'n_tokens_neox': 2689, 'n_words': 522}