
var core_trans = [];
for (var i = 0x410; i <= 0x44F; i++){
        core_trans[i] = i - 0x350; // А-Яа-я
}
core_trans[0x401] = 0xA8;    // Ё
core_trans[0x451] = 0xB8;    // ё
// Сохраняем стандартную функцию escape()
var core_escapeOrig = window.escape;
// Переопределяем функцию escape()
window.escape = function(str){
        var ret = [];
        // Составляем массив кодов символов, попутно переводим кириллицу
        for (var i = 0; i < str.length; i++){
                var n = str.charCodeAt(i);
                if (typeof core_trans[n] != 'undefined'){
                        n = core_trans[n];
                }
                if( n == 32 || n == 10 || n == 13 )
                {
                        ret.push('%'.charCodeAt(0));
                        ret.push('2'.charCodeAt(0));
                        ret.push('0'.charCodeAt(0));
                }
                else if (n <= 0xFF){
                        ret.push(n);
                }
        }
        return core_escapeOrig(String.fromCharCode.apply(null, ret));
}
/*Array.prototype.inArray = function (value) {
       /* var i;
        for (i=0; i < this.length; i++) {
                if (this[i] === value) {
                        return true;
                }
        }
        return false;*/
//}
core_inArray = function (arr,value) {
        var i;
        for (i=0; i < arr.length; i++) {
                if (arr[i] === value) {
                        return true;
                }
        }
        return false;
}
Function.prototype.bind = function(object,arguments) {
           var method = this;
           return function() {
                   method.apply(object,arguments) ;
                   //method.apply(arguments) ;
               //return method.apply(object, arguments) ;
           }
}
function core_allImg(how){
        if(!how){
                if(core.is_img == false){
                        how='none';
                }else{
                        return;
                }
        }
        var imgs=document.images;
        for(i in imgs){
                if(imgs[i].style){

                        //imgs[i].style.visibility='hidden';
                }
        }
        //alert(getFather(imgs[4]));
}
function Core(){
        this.img_px_href='images/img_sys/px.gif';//пиксель для распорок
        this.common_table;//объект работающий с таблицами портала
        this.urlGetFile=core_web_folder+'php/getFile.php';//обработчик ajax запросов
        this.php_config_file=core_web_folder+'php/configPhpFromJS.php';//конфигурационный файл php работающий на стороне сервера паралельно со стороной клиента
        this.double_phrase="Не нажимайте второй раз";//title сообщение при повторном нажании
        this.is_img;//true либо false
        this.cookies;//куки
        this.php_session_id;//идентификатор сессии php
        this.php_session_name;//имя сессии php
        this.web_folder;
        this.isDOM=document.getElementById ;//DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
        this.isOpera=this.isOpera5=window.opera && this.isDOM; //Opera 5+
        this.isOpera6=this.isOpera && window.print; //Opera 6+
        this.isOpera7=this.isOpera && document.readyState; //Opera 7+
        this.isMSIE=this.isMSIE4=document.all && document.all.item && !this.isOpera; //Microsoft Internet Explorer 4+
        this.isMSIE5=this.isDOM && this.isMSIE; //MSIE 5+
        this.isNetscape4=document.layers; //Netscape 4.*
        this.isMozilla=this.isDOM && navigator.appName=="Netscape"; //Mozilla или Netscape 6.*
        this.setSessionId=function(id){
                this.php_session_id=id;
        }
        this.setSessionName=function(name){
                this.php_session_name=name;
        }
        this.setWebFolder=function(web_folder){
                this.host=web_folder;
                this.web_folder='http://'+web_folder;//папка содержащия скрипты портала
        }
        this.getFather=function(elem){
                el=(elem.parentElement)?elem.parentElement.parentElement:elem.parentNode.parentNode;
                return el;
        }
        this.getParent=function(elem){
                el=(elem.parentElement)?elem.parentElement:elem.parentNode;
                return el;
        }
        this.isHaveClass = function(el,class_name){
                if(el&&el.className){
                        if (((' '+el.className+' ').indexOf(' '+class_name+' ') != -1)){
                                return true;
                        }
                }
                return false;
        }

        this.extractCookies=function(){
                this.cookies=new Object();
                var name, value;
                var beginning, middle, end;
                for (name in this.cookies){
                        this.cookies=new Object();
                        break;
                }
                beginning=0;
                while(beginning< document.cookie.length){
                        middle=document.cookie.indexOf('=',beginning);
                        end=document.cookie.indexOf(';',beginning);
                        if(end==-1){
                                end=document.cookie.length;
                        }
                        if((middle>end)||(middle==-1)){
                                name=document.cookie.substring(beginning, end);
                                value='';
                        }
                        else{
                                name=document.cookie.substring(beginning, middle);
                                value=document.cookie.substring(middle+1,end);
                        }
                        this.cookies[name]=unescape(value);
                        beginning=end+2;
                }
        }
        this.initButtonFunc=function(){
                /*ищем все кнопки*/
                btn=document.getElementsByTagName('input');
                for(var i=0;i<btn.length;i++){
                        if(btn.type=='button'){
                                switch(btn[i].value.toLowerCase()){
                                        case 'yes':
                                                btn[i].value='Да';
                                        break;
                                        case 'no':
                                                        btn[i].value='Нет';
                                        break;
                                        case 'cancel':
                                                        btn[i].value='Отмена';
                                        break;
                                        case 'view':
                                                        btn[i].value='Обзор';
                                        break;
                                        default:
                                                btn[i].value=btn[i].value;
                                }
                        }
                }
        }
        this.searcClassName=function(obj,name){
                if (((' '+obj.className+' ').indexOf(" "+name+" ") != -1)){
                        return true;
                }else{
                        return false;
                }
        }
        this.initIcoFunc=function(){
                /*ищим все иконки*/
                var ico=document.getElementsByTagName('span');
                for(var i=0;i<ico.length;i++){
                        if(this.searcClassName(ico[i],'core_ico_func')){
                                switch(ico[i].innerHTML.toLowerCase()){
                                        case 'search':

                                                break;
                                        case 'no':
                                                        ico[i].innerHTML='Нет';
                                                break;
                                        case 'cancel':
                                                        ico[i].innerHTML='Отмена';
                                                break;
                                        default:
                                        break;
                                }
                                ico[i].className=ico[i].className+'_'+ico[i].innerHTML;
                                ico[i].innerHTML='&nbsp&nbsp&nbsp&nbsp&nbsp';
                        }
                }
        }
        this.commonTableInit=function(obj){
                /*Инициализация таблиц портала*/
                this.common_table.init(obj);
        }
        this.tgetSelectedLine=function(table){
                var result=this.common_table.tgetSelectedLine(table);
                return result;
        }

        this.isImage=function(){
                document.cookie='core_image_is=true';
                this.is_img=true;
        }
        this.doImage=function(){//проверка включенности картинок
                //создаём картинку и смотрим загрузиться или нет
                this.extractCookies();//смотрим отметку в куках включены или нет картинки
                if(this.cookies['core_image_is']=='false'){
                        this.is_img=false;
                }else{
                        this.is_img=true;
                }

                document.cookie='core_image_is=false';
                image = document.createElement("img");
                image.onload=this.isImage.bind(this);
                image.src ="/core/portal/kernel/img/px.gif";

        }
        this.returnEvtObj=function(evt){
                elem=(evt=='[object Event]'||evt=='[object MouseEvent]')?
                        evt.target:(window.event)?
                                        window.event.srcElement:evt;
                return elem
        }
        this.addStyle=function(obj,addStyle,delStyle){
                var str=obj.className;
                arr=str.split(' ');
                CS=new Array;
                if(delStyle){
                        for(var i=0;i<arr.length;i++){
                                if(arr[i]!=delStyle){
                                        CS.push(arr[i]);

                                }
                        }
                }else{
                        CS=arr;
                }
                if(addStyle){
                        var rfid=false;
                        for(var i=0;i<CS.length;i++){
                                if(CS[i]==addStyle){
                                        rfid=true;
                                }
                        }
                        if(!rfid){
                                CS.push(addStyle);
                        }
                }
                csstr=CS.join(" ");
                obj.className=csstr;
        }
        this.addHandler=function(object, event, handler){
                this.removeHandler(object, event, handler);
                if (typeof(object.addEventListener)!= 'undefined'){//mozila
                        object.addEventListener(event, handler, false);
                }
                else if (typeof(object.attachEvent)!= 'undefined'){//ie
                        object.attachEvent('on' + event, handler);
                }
        }
        this.removeHandler=function(object, event, handler)
        {
                if (typeof(object.removeEventListener)!= 'undefined'){
                        object.removeEventListener(event, handler, false);
                }else if (typeof(object.detachEvent)!= 'undefined'){
                        object.detachEvent('on' + event, handler);
                }
        }
        this.reloadInvalid=function(sel,value,className){
                className=className||'invalid'
                if(sel.tagName=='SELECT'){
                        value=value||0;
                        if(sel.value==value){
                                core.addStyle(sel,className);
                        }else{
                                core.addStyle(sel,'',className);
                        }
                }else if(sel.tagName=='INPUT'){
                        value=value||'';
                        if(sel.value==value){
                                core.addStyle(sel,className);
                        }else{
                                core.addStyle(sel,'',className);
                        }
                }
        }
        this.viewObject=function(name){
                /*вспомогательная функция показывает состав объекта*/
                var obj = eval(name), i;
                if(!obj){
                        alert("\""+name+"\" ia not an object");
                        return;
                }
                var w_Test = open("","Test","width=600,height=500,scrollbars=1");
                if(!w_Test){
                        window.alert("Cannot open window for "+name);
                        return;
                }
                w_Test.document.open();
                for(i in obj)
                        w_Test.document.write(name+"."+i+"="+obj[i]+"<br>");
                w_Test.document.close();
        }
        this.findTegInCont=function(element,teg){//возвращает первую форму найденную в контейнере element
                var el=element;



                for(i in el.childNodes){
                        if(typeof(el.childNodes.item(i))!='number'){
                        if(el.childNodes.item(i)){
                        if(el.childNodes.item(i)!=null){
                                //window.alert(el.childNodes.item(i).tagName);
                                if(el.childNodes.item(i).tagName==teg){
                                        finded_teg=el.childNodes.item(i);
                                        return finded_teg;
                                }else{
                                                if(el.childNodes.item(i).hasChildNodes()){
                                                        finded_teg=this.findTegInCont(el.childNodes.item(i),teg);
                                                        if(finded_teg!==false){
                                                                return finded_teg;
                                                        }
                                                }
                                        }
                        }
                        }
                        }
                }

                return false
        }
        this.setFocusOnFormInput=function(element){//устанавливаем фокус на первый элемент пераданной формы
                var form;

                var el=document.getElementById(element);
                if(el.tagName=='FORM'){
                        form=el;
                }else{
                        form=this.findTegInCont(el,'FORM');
                }
                if(form){
                        if(form.tagName=='FORM'){
                                if(form['elements'][0]&&form['elements'][0].tagName=='INPUT'){
                                        if(form['elements'][0].type=='hidden'){
                                                return;
                                        }
                                        form['elements'][0].focus();
                                }
                        }
                }
        }
        this.setPhpSide=function(what){
                var url=this.php_config_file+'?what='+what;
                this.ajax_do(url);
        }
        this.ajax_do=function(url){

                if (url.substring(0, 4) != 'http') {
                        var base_url=this.web_folder;
                        url = base_url + url;
                }
                //alert(escape(location.href));
                url+=(url.match(/\?/)?'&':'?')+Math.random()+'&burl='+escape(location.href);
                //alert(url);
                var jsel = document.createElement('SCRIPT');// Создаем новый JS элемент
                jsel.type = 'text/javascript';
                jsel.src = url;

                //на следующей строке ослик тихо сообщает об ошибки :(
                document.body.appendChild(jsel);// Дописываем элемент к документу
        }
        this.ajax_get=function(url, el, doit) {//url файла данные из которого будут вставлены el, затем запуститься код doit
                var base_url=this.web_folder;
                if(doit){
                        evalit=escape(doit);
                }else{
                        evalit='';
                }
                // Has element been passed as object or id-string?
                if (typeof(el) == 'string') {
                        el = document.getElementById(el);
                }
                // Valid el?
                if (el == null) {
                        return false;
                }

                if (url.substring(0, 4) != 'http') {// Does URL begin with http?
                        url = this.web_folder +url;
                }
                var pattern=/\?/;
                url+=(pattern.test(url))?'&':'?';
                var ses=this.php_session_name+'='+this.php_session_id;
                url+=ses;//определяем сессию для запрашиваемого файла php
                getfile_url = this.urlGetFile+'?'+ses+'&eval='+evalit+'&url=' + escape(url) + '&el=' + escape(el.id);
                this.ajax_do (getfile_url);
                return true;
        }
        this.newWin=function(url){
                var pattern=/\?/;
                url+=(pattern.test(url))?'&':'?';
                url+=this.php_session_name+'='+this.php_session_id;
                var win=window.open(url,"RLP","height=600, width=800, alwaysRaised=yes, dependent=yes, resizable=yes, status=no, titlebar=no, toolbar=no, z-lock=yes, scrollbars=yes",true);
                return win;
        }
        this.lockClick=function(){
                return false;
        }
        this.getScrollX=function(){
                if (this.isMSIE||this.isOpera7) return document.body.scrollLeft;
                if (this.isNetscape4||this.isOpera||this.isMozilla) return window.pageXOffset;
                return 0;
        }
        this.getScrollY=function(){
                if (this.isMSIE||this.isOpera7) return document.body.scrollTop;
                if (this.isNetscape4||this.isOpera||this.isMozilla) return window.pageYOffset;
                return 0;
        }
        this.getWidthVisible=function(){
                /*# MSIE — document.body.clientWidth, clientHeight
                # Netscape, Mozilla, Opera — innerWidth, innerHeight*/
                if(this.isMSIE){
                        return document.body.clientWidth;
                }else if (this.isNetscape4||this.isOpera||this.isMozilla) {
                        return innerWidth;
                }

        }
        this.getHeightVisible=function(){
                if(this.isMSIE){
                        return document.body.clientHeight;
                }else if (this.isNetscape4||this.isOpera||this.isMozilla){
                        return innerHeight;
                }
        }
        this.getBounds=function(element){
                //Эта функция возвращает объект со свойствами left, top, width и height, определяющими координаты элемента относительно верхнего угла страницы и его размер.
                var left = element.offsetLeft;
                var top = element.offsetTop;
                for (var parent = element.offsetParent; parent; parent = parent.offsetParent){
                        left += parent.offsetLeft;
                        top += parent.offsetTop;
                        }
                var width=element.offsetWidth;
                var height=element.offsetHeight;

                if(core.isMozilla||this.isNetscape4){
                        var widthFull=document.width;
                        var heightFull=document.height;
                }else if(core.isMSIE5||core.isOpera7){
                        var widthFull=document.body.scrollWidth;
                        var heightFull=document.body.scrollHeight;
                }else{
                        var widthFull=document.body.scrollWidth;
                        var heightFull=document.body.scrollHeight;
                }

                return {left: left, top: top, width: width , height: height,widthFull:widthFull, heightFull:heightFull};
        }
        testKey=function(e){
                /*Иногда требуется ограничить содержимое текстового поля лишь определенными символами. Следующий код позволит вводить в текстовое поле только символы латинского алфавита, цифры и знак подчеркивания:*/
                  //onkeypress="return testKey(evt)"
                  // Make sure to use event.charCode if available
                  var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode);

                // Ignore special keys
                if (e.ctrlKey || e.altKey || key < 32){
                        return true;
                }
                key = String.fromCharCode(key);
                return /\w/.test(key);
        }
        /*this.ajax_do=function(url){
                var base_url=this.web_folder;
                // Начинается с http?
                if (url.substring(0, 4) != 'http') {
                        url = base_url + url;
                }

                var jsel = document.createElement('SCRIPT');// Создаем новый JS элемент
                jsel.type = 'text/javascript';
                alert(url);
                jsel.src = url;
                //var pattern=new RegExp("/?");
                //var next=(pattern.test(url))?'&':'?';
                //url+=next+this.php_session_name+'='+this.php_session_id;//определяем сессию для запрашиваемого файла php
                //document.write(url);
                //на следующей строке ослик тихо сообщает об ошибки :(
                document.body.appendChild(jsel);// Дописываем элемент к документу

        }*/

        this.justOneClick=function(evt,t){
                var t=t||0;
                el=this.returnEvtObj(evt);
                if(el.title!=this.double_phrase){
                        if(t=='debug'){
                                alert('Кнопка нажата первый раз return true. Был изменён title.');
                        }
                        el.title=this.double_phrase;
                        return true;
                }else{
                        if(t=='debug'){
                                alert('Кнопка нажата второй раз return false');
                        }
                        return false;
                }
        }
        this.bInfo=function(){
/*
                var str = '';
                str += '?dom=' + ( document.getElementById ? 1 : 0 );
                str += '&opera=' + ( window.opera ? 1 : 0 );
                str += '&print=' + ( window.print ? 1 : 0 );
                str += '&ready=' + ( document.readyState ? 1 : 0 );
                str += '&item=' + ( document.all && document.all.item ? 1 : 0 );
                str += '&layers=' + ( document.layers ? 1 : 0 );
                str += '&moz=' + ( navigator.appName=="Netscape" ? 1 : 0 );
                this.ajax_do( core_web_folder+'php/binfo.php' + str );
*/
      var uah = ''; var ual = '';
          if( this.isOpera )
          {
            uah = 'Opera';
                if( this.isOpera7 ) ual = '7';
                else if( this.isOpera6 ) ual = '6';
                else if( this.isOpera5 ) ual = '5';
          }
          else if( this.isMSIE )
          {
            uah = 'MSIE';
                if( this.isMSIE5 ) ual = '5';
                else if( this.isMSIE4 ) ual = '4';
          }
          else if( this.isNetscape4 ) { uah = 'NN'; ual = '4'; }
          else if( this.isMozilla ) { uah = 'Moz'; }
          str = '?uah=' + uah + '&ual=' + ual;
          this.ajax_do( core_web_folder+'php/binfo.php' + str );
        }
        this.id2el=function(el){
                if(typeof(el)=='string'){
                        el=document.getElementById(el);
                }
                return el;
        }
        this.hideShow=function(div){
                var div=core.id2el(div);
                if(div.style.display=='none'){
                        div.style.display='';
                }else{
                        div.style.display='none';
                }
        }
        this.getNumName=function(num,str1,str2,str3){
           num=''+num;
           text=str3;
           var numv=num.substr(-1);
           var numvv=num.substr(-2,1);
           if(num.length>1&&numvv==1){
           }else{
                 if(numv==1){
                    text=str1;
                 }else if(numv==2||numv==3||numv==4){
                    text=str2;
                 }
           }
           return text;
        }
}

function core_one_click(el){
        if(typeof(el)=='string'){
                el=document.getElementById(el);
        }
        if(el){
                core.addHandler(el,'click',core.justOneClick.bind(core));
        }else{
        }
}