﻿var isDebug = false; //!*

var supportedLanguages = [{ code: 'uk', name: 'Українська (Ukrainian)', flag: 'ua', host: "osobystist.com", def: true, regex: /^[а-ьА-ЬіІєЄюЮяЯїЇ \'’-]*$/ },
                          { code: 'uk', name: 'Українська (Ukrainian)', flag: 'ua', host: "test.osobystist.com", def: false, regex: /^[а-ьА-ЬіІєЄюЮяЯїЇ \'’-]*$/ },
                          { code: 'ru', name: 'Русский (Russian)', flag: 'ru', host: "lichnost.net", def: true, regex: /^[а-ьА-ЬЭэюЮяЯЁё -]*$/ },
                          { code: 'ru', name: 'Русский (Russian)', flag: 'ru', host: "test.lichnost.net", def: false, regex: /^[а-ьА-ЬЭэюЮяЯЁё -]*$/}];

var settings = {};
var s = {};
var wnd = {};
var XData = {};
var VISIBLE_RECORD_COUNT_LIMIT = 1000;

function getHostName() {
    var host = window.location.hostname;
    if (host.indexOf('www') == 0) return host.substring(4);
    else return host;
}

function getLanguage() {
    if (!_language) {
        var host = getHostName();
        for (var i = 0; i < supportedLanguages.length; i++)
            if (supportedLanguages[i].host == host) {
            _language = supportedLanguages[i].code;
            return _language;
        }
        if (host != 'localhost') alert("Unknown host: " + host);
        _language = 'ru';
    }
    return _language;
}
var _language;

var GV = 'ck'; // Gloabal Version

//---------------------------------------------------------

var RoleTypes = {
    admin: 1,
    developer: 2,
    tester: 3,
    usersmoderator: 4,
    articlesmoderator: 5,
    photosmoderator: 6,
    coach:101
}

var Framework = {};
Framework.sm = {}; // site mode
Framework.sm.main = { id: 0, name: 'main', icon: 'info', v: GV + 13 };
Framework.sm.about = { id: 1, name: 'about', v: GV + 1 };
Framework.sm.personalities = { id: 2, name: 'personalities', icon: 'user', v: GV + 4 };
Framework.sm.newusers = { id: 3, name: 'newusers', icon: 'user', v: GV + 1 };
Framework.sm.toparticles = { id: 4, name: 'toparticles', icon: 'articles', v: GV + 1 };
Framework.sm.newarticles = { id: 5, name: 'newarticles', icon: 'articles', v: GV + 1 };
Framework.sm.interview = { id: 8, name: 'interview', icon: 'interview', v: GV + 1};
Framework.sm.mblog = { id: 11, name: 'mblog', icon: 'mblog', v: GV + 2 };
Framework.sm.photos = { id: 6, name: 'photos', icon: 'photos', v: GV + 1 };
Framework.sm.competitions = { id: 7, name: 'competitions', v: GV + 2, language: 'uk' };
Framework.sm.support = { id: 9, name: 'support', v: GV + 1 };
Framework.sm.widgets = { id: 10, name: 'widgets', level1: true, v: GV + 2 };
Framework.siteModes = [Framework.sm.main, /*Framework.sm.about,*/Framework.sm.personalities, Framework.sm.newusers, Framework.sm.toparticles, Framework.sm.newarticles, Framework.sm.interview, Framework.sm.mblog,Framework.sm.photos, Framework.sm.competitions, Framework.sm.support, Framework.sm.widgets];

Framework.dm = {}; // debug mode
Framework.dm.log = { id: 0, name: 'log', roleType: RoleTypes.tester, v: GV + 3 };
Framework.dm.sperformance = { id: 1, name: 'sperformance', roleType: RoleTypes.developer, v: GV + 2 };
Framework.dm.serrors = { id: 2, name: 'serrors', roleType: RoleTypes.developer, v: GV + 1 };
Framework.dm.slogs = { id: 3, name: 'slogs', roleType: RoleTypes.developer, v: GV + 1 };
Framework.dm.shacks = { id: 4, name: 'shacks', roleType: RoleTypes.developer, v: GV + 1 };
Framework.dm.spam = { id: 5, name: 'spam', roleType: RoleTypes.developer, v: GV + 1 };
Framework.debugModes = [Framework.dm.log, Framework.dm.sperformance, Framework.dm.serrors, Framework.dm.slogs, Framework.dm.shacks, Framework.dm.spam];

Framework.srm = {};
Framework.srm.people = { id: 0, name: 'people', v: GV + 4 };
//Framework.srm.articles = { id: 1, name: 'articles', icon: 'articles',v: GV + 2 };
//Framework.srm.photos = { id: 2, name: 'photos', icon: 'photos', v: GV + 4 };
Framework.searchModes = [Framework.srm.people /*, Framework.srm.articles, Framework.srm.photos*/];

Framework.spm = {};
Framework.spm.faq = { id: 0, name: 'faq', icon:'question', v: GV + 3 };
Framework.supportModes = [Framework.spm.faq];

Framework.hfm = {};
Framework.hfm.books = { id: 0, name: 'books', icon: 'book', v: GV + 1 };
Framework.helpfulModes = [Framework.hfm.books];

Framework.frm = {};
Framework.frm.brief = { id: 0, name: 'brief', icon: 'info', v: GV + 2 };
Framework.frm.mblog = { id: 1, name: 'mblog', icon: 'mblog', v: GV + 2 };
Framework.frm.articles = { id: 2, name: 'articles', icon: 'articles', v: GV + 1 };
Framework.frm.rarticles = { id: 3, name: 'rarticles', icon: 'articles', v: GV + 1 };
Framework.frm.photos = { id: 5, name: 'photos', icon: 'photos', v: GV + 2 };
Framework.frm.cofriends = { id: 7, name: 'cofriends', icon: 'user', v: GV + 1 };
Framework.frm.pfriends = { id: 8, name: 'pfriends', icon: 'user', v: GV + 2 };
Framework.friendsModes = [Framework.frm.brief, Framework.frm.mblog, Framework.frm.articles, Framework.frm.rarticles, Framework.frm.photos, Framework.frm.cofriends, Framework.frm.pfriends];

Framework.um = {}; //user mode
Framework.um.info = { id: 0, name: 'info', icon:'info', privateOnly: false, subMenu: false, level1:true, v: GV + 21 };
Framework.um.contacts = { id: 1, name: 'contacts', privateOnly: false, subMenu: false, level1:true, v: GV + 13 };
//Framework.um.communities = {id:2, name:'communities'};
Framework.um.messages = { id: 3, name: 'messages', v: GV + 26 };
Framework.um.interview = { id: 9, name: 'interview', icon: 'interview', starOnly: true, exclusiveFlag:1, v: GV + 8 };
Framework.um.photos = { id: 4, name: 'photos', icon: 'photos', subMenu: true, level1: true, level2: true, v: GV + 16 };
Framework.um.mblog = { id: 8, name: 'mblog', icon: 'mblog', subMenu: false, level1: true, level2: false, v: GV + 2 };
Framework.um.articles = { id: 5, name: 'articles', icon: 'articles', subMenu: false, level1: true, level2: false, v: GV + 13 };
Framework.um.rarticles = { id: 6, name: 'rarticles', icon: 'articles', v: GV + 1 };
Framework.um.feedbacks = { id: 7, name: 'feedbacks', subMenu: false, v: GV + 9 };
Framework.um.reputation = { id: 11, name: 'reputation', v: GV + 5 };
//um.links = {id:7, name:'links'};
//um.forum = {id:8, name:'forum'};
//um.polls = {id:9, name:'polls'};
Framework.userModes = [Framework.um.info, Framework.um.contacts, Framework.um.messages, Framework.um.interview, Framework.um.photos, Framework.um.mblog, Framework.um.articles, Framework.um.rarticles, Framework.um.feedbacks, Framework.um.reputation];

Framework.dlgm = {};
Framework.dlgm.images = { id: 0, name: 'images', subMenu: true, v: GV + 2 };
Framework.dialogModes = [Framework.dlgm.images];

Framework.am = {}; // admin mode
Framework.am.visitors = { id: 0, name: 'visitors', roleType: RoleTypes.admin, v: GV + 9 };
Framework.am.users = { id: 1, name: 'users', roleType: RoleTypes.usersmoderator, v: GV + 1 };
Framework.am.articles = { id: 2, name: 'articles', icon: 'articles',roleType: RoleTypes.articlesmoderator,  v: GV + 1 };
Framework.adminModes = [Framework.am.visitors, Framework.am.users, Framework.am.articles];


Framework.xm = {}
Framework.xm.a = { id: 0, name: 'a', verticalBlock:true, v: GV + 7 };

Framework.apm = {
    tests: { id: 11, name: 'tests', roleType: RoleTypes.coach, v: GV + 1 }
};
Framework.applicationsModes = [Framework.apm.tests];

//---------------------------------------------------------

function getLanguageFileName() {
    return 's/' + getLanguage() + '.js?v=33' + GV;
};

function getLanguageFileName2() {
    return 's/' + getLanguage() + '2.js?v=17' + GV;
};

function getExtLanguageFileName() {
    return 'extjs/source/locale/ext-lang-' + getLanguage() + '.js?v=1';
};

if (!Loader) var Loader = {};

function getMediaBlockFileName()
{
    return "mediablock.js?v=15" + GV;
}

if (!Loader.mainFiles) Loader.mainFiles = [
    getLanguageFileName(),
    'extjs/adapter/ext/ext-base.js?v=1',
    'extjs/ext-all.js?v=1',
    getExtLanguageFileName(),
    'settings.js?v=10' + GV,
    'cclasses.js?v=37' + GV,
    'controls.js?v=41' + GV,
    'data.js?v=28' + GV,
    'htmlbuilder.js?v=44' + GV,
    'ws/visitorcach.ashx?v=5',
    'cframework.js?v=71' + GV,
    'modulecontrols.js?v=9' + GV
];

//if (isDebug) Loader.mainFiles.push('edata.js?v=25' + GV);

Loader.additionalFiles = [
    getLanguageFileName2(),
    'controls2.js?v=5' + GV,
    'wnd/registration.js?v=2' + GV,
    'wnd/address.js?v=1' + GV,
    'wnd/birthdate.js?v=2' + GV,
    'wnd/passwords.js?v=2' + GV,
    'wnd/info.js?v=1' + GV,
    'wnd/promo.js?v=2' + GV,
    'sounds/soundmanager.js?v=4' + GV
    //'blacklist.js?v=1' + GV,
];

Loader.privateUserFiles = [
    'wnd/choice.js?v=2' + GV,
    'wnd/prompt.js?v=3' + GV,
    'wnd/link.js?v=1' + GV,
    'wnd/list.js?v=2' + GV,
    'wnd/addlanguage.js?v=1' + GV,
    'wnd/nestedchoice.js?v=2' + GV,
    'wnd/articlecategory.js?v=1' + GV,
    'wnd/institution.js?v=1' + GV,

    'wnd/addfeedback.js?v=2' + GV,
    'wnd/prompt.js?v=3' + GV,
    'wnd/privacy.js?v=2' + GV,
    'wnd/images.js?v=2' + GV,
    'wnd/adduser.js?v=1' + GV,
    'wnd/blogs.js?v=2' + GV,
    'utils/upload.js?v=7' + GV,
    'utils/cropper.js?v=12' + GV
];

if (!Loader.mainCssFiles) Loader.mainCssFiles = [
    'extjs/resources/css/ext-all.css?v=2',
    'common.css?v=22' + GV
];

Loader.additionalCssFiles = [
    'additional.css?v=3' + GV
];

Loader.isEnable = function () {
    return YAHOO && YAHOO.util && YAHOO.util.Get && YAHOO.util.Get.script
}

Loader.load = function(files, onSuccess, onFailure) {
    YAHOO.util.Get.script(files, { onSuccess: onSuccess, onFailure: onFailure });
}

Loader.loadCss = function(files, onSuccess, onFailure) {
    YAHOO.util.Get.css(files, { onSuccess: onSuccess, onFailure: onFailure });
}

Loader.loadAdditionalFiles = function() {
    Loader.loadCss(Loader.additionalCssFiles, null, _onLoadingError);
    Loader.load(Loader.additionalFiles, null, _onLoadingError);
}

Loader.loadPrivateUserFiles = function() {
    if (this.privateUserFilesLoadedComplete) return;
    this.privateUserFilesLoadedComplete = true;
    Loader.load(Loader.privateUserFiles, null, _onLoadingError);
}


var MainEntryPoint = null; // must be assigned in loaded file

if (Loader.detectBrowser == undefined) Loader.detectBrowser = true;

function getSiteUrl() {
    var host = window.location.host;
    if (window.location.hostname == 'localhost') host += '/ui';
    return "http://" + host;
}

Loader.loadMainFilesInternal = function() {
    function f1() {
        if (Loader.detectBrowser && BrowserDetect.checkCapability() != 0) {
            window.location = getSiteUrl() + '/errors/notsupportedbrowser.aspx';
            return;
        }
        function f2() {
            Loader.load(Loader.mainFiles, function() { if (MainEntryPoint) MainEntryPoint(); }, _onLoadingError);
        }
        Loader.loadCss(Loader.mainCssFiles, f2, _onLoadingError);
    }
    Loader.load([getSiteUrl()+'/browserdetect.js?v=4'], f1, _onLoadingError);
}

Loader.loadMainFiles = function() {
    if (Loader.isEnable()) Loader.loadMainFilesInternal();
    else setTimeout(Loader.loadMainFiles, 80);
}

function _onLoadingError(a, b)
{
    alert('Loading error');
}

Loader.loadMainFiles(); // start!

