/*
  * LBV-Site-model.Common.JavaScript.Module Ver. 2.0
  * Copyright: Leonov Boris V., 2005-2010
  * E-Mail: lbv2rus@mail.ru
  *
  *
  * don't change after this line
*/

var tabheight;

function NewA()
{
  document.location="index.php";
}

function NewLocation(URL)
{
  document.location=URL;
}

function hideSubMenu(name)
{
  if (document.getElementById(name))
  {
    document.getElementById(name).style.display='none';
  }
}

function showSubMenu(name)
{
  if (document.getElementById(name).style.display=='block')
  {
    document.getElementById(name).style.display='none';
  }
  else
  {document.getElementById(name).style.display='block';}
}

function OnLoadFunctions() {

  if ($.browser.msie&&$.browser.version<9.0) {
  $('tr',$('div.SmDiv')).hover
    (
	function () {$(this).addClass('ndcolover');},
	function () {$(this).removeClass('ndcolover');}
    );}
   tabheight=window.outerHeight-360;
   if (tabheight<=0) tabheight=480;
   if (Ext.isIE) tabheight=600;
   if (Ext.isIE6) tabheight=480;
}

function LDAPUserSelect(login_name,f_name,auth_type_name,obj)
{
  document.getElementById(login_name).value=obj.value;
  for (var i=0; i<obj.options.length; i++) {
    if (obj.options[i].selected) {
  document.getElementById(f_name).value=obj.options[i].text;
  break;
  }}
  document.getElementById(auth_type_name).value="2";
}

function ModuleUnRegister(key)
{
  if (confirm("Удаление модуля приведет к удалению всех настроек модуля и таблиц модуля"))
  {
    NewLocation("?type=mod_settings&action=unregister&name="+key);
  }
}

function PopUpWindow(url,width,height)
{
    if (Ext.isIE)
    {
      NewLocation(url);
    }
    else
    {
      if(width>0 && height>0)
      popupWin=window.open(url, 'new_window', 'target=_blank,location,width='+width+',height='+height+',top=0,resizable,scrollbars,status');
      else
      popupWin=window.open(url);
    
      popupWin.focus();
      return false;
    }
}

function PopUpFrameCreate(name,url,width,height)
{
  var win;
  if (Ext.getCmp('PopUpFrame')==null)
  {
     win = new Ext.Window(
     {
	title: name,
	width: width,
	height: height,
	//minWidth: 100,
	//minHeight: 100,
	resizable: true,
	modal: true,
	layout: "fit",
        name:'PopUpFrame',
        id:'PopUpFrame',
	items: [
	{
	   xtype: "iframepanel",
	   border: false,
	   defaultSrc: url,
	   id:'PopUpFramePanel',
	   name:'PopUpFramePanel',
	   loadMask  : {msg:'Идет загрузка'}
 	}]
     });
   }
   else win=null;

   return win;
}

function PopUpFrameOpen(name,url,width,height)
{
  var win=PopUpFrameCreate(name,url,width,height);
  win.show();
  return true;
}

function PopUpFrameForViewOpen(name,url,width,height,id,tablename,type,backup_id)
{
    var win=PopUpFrameCreate(name,url,width,height);

    if (win!=null)
    {
     if(backup_id>0) win.addButton({text: 'Восстановить',handler: function(){FormInTabLoad(type,id,'','backup_restore','',backup_id);win.close();},iconCls: 'restoreIcon'});
     else {
      win.addButton({text: 'Редактировать',handler: function(){FormInTabLoad(tablename,id,'','edit','',null,type);win.close();},iconCls: 'editIcon'});
      win.addButton({text: 'Печать',handler: function(){PrintDataView(tablename,type,id);win.close();},iconCls: 'printIcon'});
      win.addButton({text: 'Удалить',handler: function(){if(SM_DeleteData(tablename,type,id)) win.close();},iconCls: 'deleteIcon'});
     }
     win.addButton({text: 'Закрыть',handler: function(){win.close();},iconCls: 'backIcon'});

     win.show();
    }
}

function PopUpFrameForBackUpOpen(name,url,width,height,id,tablename,type,backup_id)
{
   var win=PopUpFrameCreate(name,url,width,height);

   if (win!=null)
   {
     win.addButton({text: 'Восстановить',handler: function(){FormInTabLoad(tablename,id,'','backup_restore','',backup_id,type);win.close();},iconCls: 'editIcon'});
     win.addButton({text: 'Удалить',handler: function(){if(SM_DeleteData(tablename,type,id)) win.close();},iconCls: 'deleteIcon'});
     win.addButton({text: 'Закрыть',handler: function(){win.close();},iconCls: 'backIcon'});

     win.show();
   }
}

function PopUpFrameForModSettingsOpen(name,key,add)
{

   var url="admin.php?type=module&action=settings&name="+key;
   if (add!=null) url=url+add;
   
   var win=PopUpFrameCreate(name,url,500,600);

   if (win!=null)
   {
     win.addButton({text: 'Закрыть',handler: function(){win.close();},iconCls: 'closeIcon'});

     win.show();
   }
}

function PopUpFrameWithCloseButtonOpen(name,url,width,height)
{
    hideSubMenu('SubMenu');
    hideSubMenu('SystemSettings');

   var win=PopUpFrameCreate(name,url,width,height);
   
   if (win!=null)
   {
     win.addButton({text: 'Закрыть',handler: function(){win.close();},iconCls: 'closeIcon'});

     win.show();
   }
}

function FileBrowserOpen(url,width,height,name)
{
  var value="";
  if (document.getElementById(name))
  {
    value=document.getElementById(name).value;
  }
  url=url+'&path='+value;
  var win=PopUpFrameCreate('Файловый менеджер',url,530,610);
  win.show();
  return win.getId();
}

function FileBrowserInFormOpen(url,win_id_name,ftype)
{
  var width=530;
  if (ftype=='image') width=890;

  url=url+'';
  var win=PopUpFrameCreate('Файловый менеджер',url,width,650);
  win.show();
  document.getElementById(win_id_name).value=win.getId();
}

function FileBrowserSelect(value,to,fb,win_id)
{
  if (fb!="editor")
  {
    if (to!='')
    {
      parent.Ext.getCmp(to).setValue(value);
      var win = parent.Ext.getCmp(parent.document.getElementById(win_id).value);
      win.close();
    }
  }
  else
  {
     var win = tinyMCEPopup.getWindowArg("window");
     var input = tinyMCEPopup.getWindowArg("input");
     var res = tinyMCEPopup.getWindowArg("resizable");
     var inline = tinyMCEPopup.getWindowArg("inline");
     win.document.getElementById(input).value=value;
     // for image browsers: update image dimensions
     if (win.ImageDialog)
     {
       if (win.ImageDialog.getImageData) win.ImageDialog.getImageData();
       if (win.ImageDialog.showPreviewImage) win.ImageDialog.showPreviewImage(value);
     }

     // close popup window
     tinyMCEPopup.close();
  }
}

function myFileBrowser (field_name, url, type, win)
{
  var width=530;
  if (type=="image") width=870;
  url="/admin.php?type=filebrowser&source=editor&ftype="+type+"&name="+field_name;
  tinyMCE.activeEditor.windowManager.open({
        file : url,
        title : 'My File Browser',
        width : width,  // Your dimensions may differ - toy around with them!
        height : 610,
        resizable : "yes",
        scrollbars : true,
        inline : "yes",  // This parameter only has an effect if you use the inlinepopups plugin!
        close_previous : "no"
    }, {
        window : win,
        input : field_name
    });
    return false;
}

function FileBrowserDeleteFile(el,panel)
{
  if (el!=null && el.id!='')
  if (confirm("Удалить файл с сервера?")==true)
  {
    var param = [
     { name : 'delpath', value : el.id }
    ];

    jQuery.ajax({
    type: 'POST',
    url: '/admin.php?type=filebrowser&action=delete',
    data: param,
    dataType: 'json',
    success: function(res){
      if (res!=null)
      if (res.success)
      {
        //alert(res.path);
        var treeNode = panel.getNodeById(el.id).parentNode;
        treeNode.attributes.children = false;
        treeNode.reload();
      }
      else Ext.Msg.alert('Ошибка',res.error);}
    });
  }
}

function FileBrowserDirCreate(el,panel)
{
  if (el!=null && el.id!='')
  Ext.Msg.prompt('Название', 'Введите название нового каталога', function(btn, text){
    if(btn=='ok' && text!='')
    {
       var param = [
       { name : 'path', value : el.id }
       ,{ name : 'new_dir', value : text }
       ];

       jQuery.ajax({
       type: 'POST',
       url: '/admin.php?type=filebrowser&action=create_dir',
       data: param,
       dataType: 'json',
       success: function(res){
         var treeNode = panel.getNodeById(res.reload_id);
         treeNode.attributes.children = false;
         treeNode.reload();
         }
       });
    }
  });
}

function FileBrowserMoveFile(filename,oldpath,newpath)
{
    var param = [
       { name : 'filename', value : filename }
       ,{ name : 'oldpath', value : oldpath.id }
       ,{ name : 'newpath', value : newpath.id }
       ];

       jQuery.ajax({
       type: 'POST',
       url: '/admin.php?type=filebrowser&action=movefile',
       data: param,
       dataType: 'json',
       success: function(res){
          if(res!=null)
          {
            if (res.success!=false)
            {
              newpath.attributes.children = false;
              newpath.reload();
            }
            else
            {
              Ext.Msg.alert(res.error1,res.error2);
              oldpath.reload();
            }
          }
          else oldpath.reload();
        }
       });
}

function TreeMoveItem(item,newpath,tablename,table,parent_name,tree)
{
    var param = [
       { name : 'type', value : 'table_work' }
       ,{ name : 'actiontree', value : 'moveitem' }
       ,{ name : 'action', value : 'view_tree' }
       ,{ name : 'item', value : item.id }
       ,{ name : 'newpath', value : newpath.id }
       ,{ name : 'tablename', value : tablename }
       ,{ name : 'table', value : table }
       ,{ name : 'parent_name', value : parent_name }
       ];

       jQuery.ajax({
       type: 'POST',
       url: 'getdata.php',
       data: param,
       dataType: 'json',
       success: function(res){
           if(res!=null)
           {
             if (res.success!=false)
             {
               newpath.attributes.children = false;
               newpath.reload();
             }
             else
             {
               Ext.Msg.alert(res.error1,res.error2);
               tree.getRootNode().reload();
             }
           }
           else
           {
             tree.getRootNode().reload();
           }
         }
       });
}

function ChildWindowClose(type)
{
  window.opener.jQuery('#'+type).flexReload();
  window.close();
}

function ChildFormTabCloseDelTinyMCE(fpname)
{ /*
  try{
    var fp=Ext.getCmp(fpname);
    if (fp!=null)
    {
      fp.removeAll(true);
    }
  }
  catch(e) {;} */
}

function ChildFormTabClose(type,fpname)
{
  //ChildFormTabCloseDelTinyMCE(fpname);
  
  FormsTabPanel.remove(FormsTabPanel.getActiveTab(),true);
  InitialTabPanel.setActiveTab(1);
  if (Ext.getCmp('TableTabPanel'+type)!=null)
  {
   if(jQuery('#'+type)!=null) jQuery('#'+type).flexReload();
   Ext.getCmp('TablesTabPanel').setActiveTab('TableTabPanel'+type);
  }
  else
  {
    TableInTabLoad(type,'','view');
  }
}

function Home()
{
  InitialTabPanel.setActiveTab(0);
  DesctopTabPanel.setActiveTab(0);
}

function TableInTabLoad(table,lang_name,action,reload,start_reload)
{
  if(action=='' || action==null) action='view';
  
  var tab_name='TableTabPanel'+table;

  var param = [
   { name : 'table', value : table }
  ,{ name : 'type', value : 'table_work' }
  ,{ name : 'action', value : action }
  ,{ name : 'desttab', value : tab_name }
  ];

  hideSubMenu('SubMenu');
  hideSubMenu('SystemSettings');
  
  var pane;
  
 if (Ext.getCmp(tab_name)!=null && reload==null)
 {
   Ext.getCmp('TablesTabPanel').setActiveTab(tab_name);
   if (action=='view') jQuery('#'+table).flexReload();
 }
 else
 {
  if (Ext.getCmp(tab_name)==null)
  {
    pane=TablesTabPanel.add({
    title: lang_name,
    closable:true,
    name: tab_name,
    id: tab_name,
    autoScroll:true,
    autoHeight:true
    }).show();
    
    if (start_reload!=true)
    {
      var param1 = [
      { name : 'table', value : table }
     ,{ name : 'type', value : 'OnTabOpen_Table' }
     ,{ name : 'action', value : action }
     ,{ name : 'tab_name', value : tab_name }
     ];

     //Сохраняем открытие
     jQuery.ajax({
     type: 'POST',
     url: 'getdata.php',
     data: param1,
     dataType: 'json'});
    }
  }
  else pane=Ext.getCmp(tab_name);

  jQuery.ajax({
    type: 'POST',
    url: 'getdata.php',
    data: param,
    dataType: 'json',
    success: function(res)
    {
      if(res!=null)
      {
        if (res.success!=false)
        {
          if (lang_name=='')
          pane.setTitle(res.lang_name);
          pane.update(res.tabresult,true);
          pane.doLayout();
        }
        else
        {
          Ext.Msg.alert(res.error1,res.error2);
          TablesTabPanel.remove(pane);
        }
      }
      else
      {
         TablesTabPanel.remove(pane);
      }
    }
  });
 }
 if (start_reload!=true) InitialTabPanel.setActiveTab(1);
}

function SystemTableInTabLoad(type,tablename,action,lang_name)
{
  var param = [
   { name : 'type', value : type }
  ,{ name : 'table', value : tablename }
  ,{ name : 'action', value : action }
  ];

  hideSubMenu('SubMenu');
  hideSubMenu('SystemSettings');
  
  var pane;

 if (Ext.getCmp('TableTabPanel'+tablename)!=null)
 {
   Ext.getCmp('TablesTabPanel').setActiveTab('TableTabPanel'+tablename);
 }
 else
 {
  pane=TablesTabPanel.add({
    title: lang_name,
    closable:true,
    name: 'TableTabPanel'+tablename,
    id: 'TableTabPanel'+tablename,
    autoScroll:true,
    autoHeight:true
    }).show();

  jQuery.ajax({
    type: 'POST',
    url: 'getdata.php',
    data: param,
    dataType: 'json',
    success: function(res)
    {
      if(res!=null)
      {
        if (res.success!=false)
        {
          pane.update(res.tabresult,true);
          pane.doLayout();
        }
        else
        {
          Ext.Msg.alert(res.error1,res.error2);
          TablesTabPanel.remove(pane);
        }
      }
      else
      {
         TablesTabPanel.remove(pane);
      }
    }
  });
 }
 InitialTabPanel.setActiveTab(1);
}


function FormInTabLoad(table,id,instance_name,action,lang_name,backup_id,type,start_reload)
{
  if (type==null || type=='') type='table_work';

  hideSubMenu('SubMenu');
  hideSubMenu('SystemSettings');
  
 var pane;
 var reload=true;

 var form_id=id
 if (action=='backup_restore') {form_id=backup_id;}
 
 var tab_name='FormTabPanel'+table+form_id;

 if (Ext.getCmp(tab_name)!=null)
 {
   if (InitialTabPanel.getActiveTab().id!='FormsTab')
   {
     Ext.getCmp('FormsTabPanel').setActiveTab(tab_name);
     reload=false;
   }
   else
   {
     pane=Ext.getCmp(tab_name);
     FormsTabPanel.setActiveTab(pane);
     var pane1=Ext.getCmp('MyFormPanel'+table+form_id);
     var pane2=Ext.getCmp('MyDataForm'+table+form_id);
     var pane3=Ext.getCmp('TableUserClass'+table);
     if(pane2!=null)
     {
       pane2.removeAll(true);
       pane2.destroy();
     }
     if(pane3!=null)
     {
       pane3.removeAll(true);
       pane3.destroy();
     }
     if(pane1!=null)
     {
       pane1.destroy();
     }
     Ext.ux.tmceInitialized=false;
   }
 }
 else
 {
  pane=FormsTabPanel.add({
    title: lang_name,
    closable:true,
    name: tab_name,
    id: tab_name,
    autoScroll:true,
    autoHeight:true,
    deferredRender:false
    }).show();
    
   if (start_reload!=true)
   {
     var param1 = [
     { name : 'type', value : 'OnTabOpen_Form' }
    ,{ name : 'form_type', value : type }
    ,{ name : 'table', value : table }
    ,{ name : 'action', value : action }
    ,{ name : 'id', value : id }
    ,{ name : 'tab_name', value : tab_name }
    ,{ name : 'backup_id', value : backup_id }
    ,{ name : 'lang_name', value : lang_name }
    ];

    //Сохраняем открытие
    jQuery.ajax({
    type: 'POST',
    url: 'getdata.php',
    data: param1,
    dataType: 'json'});
   }
 }

 if (start_reload!=true) InitialTabPanel.setActiveTab(2);
 if (reload)
 {
  var param = [
   { name : 'type', value : type }
  ,{ name : 'table', value : table }
  ,{ name : 'action', value : action }
  ,{ name : 'instance_name', value : instance_name }
  ,{ name : 'id', value : id }
  ,{ name : 'desttab', value : tab_name }
  ,{ name : 'backup_id', value : backup_id }
  ];

  jQuery.ajax({
    type: 'POST',
    url: 'getdata.php',
    data: param,
    dataType: 'json',
    success: function(res)
    {
      if(res!=null)
      {
        if (res.success!=false)
        {
          if (lang_name=='')
          {
            if (res.lang_name!=null)
            pane.setTitle(res.lang_name);
            else pane.setTitle('#');
          }
          pane.update(res.tabresult,true);
          pane.doLayout();
        }
        else
        {
          Ext.Msg.alert(res.error1,res.error2);
          FormsTabPanel.remove(FormsTabPanel.getActiveTab());
          InitialTabPanel.setActiveTab(1);
        }
      }
      else
      {
        FormsTabPanel.remove(FormsTabPanel.getActiveTab());
        InitialTabPanel.setActiveTab(1);
      }
      
    }
  });
 }
}

function FinTL(table,id,action,lang_name)
{
  FormInTabLoad(table,id,'',action,lang_name,null,'table_work');
}

function OnTabCloseJS(tabpanel,tab)
{
  //var fpname=str_replace('FormTabPanel','MyDataForm',tab.id);
  //ChildFormTabCloseDelTinyMCE(fpname);

  var param1 = [
   { name : 'type', value : 'OnTabClose' }
  ,{ name : 'tab_name', value : tab.id }
   ];

    //Сохраняем открытие
    jQuery.ajax({
    type: 'POST',
    url: 'getdata.php',
    data: param1,
    dataType: 'json'});
}

function SM_DeleteData(tablename,table,id) {
    var param = [
    { name : 'action', value : 'delete' },
    { name : 'tablename', value : tablename },
    { name : 'type', value : 'table_work' },
    { name : 'table', value : table },
    { name : 'delete_id', value : id }
    ];

    if (confirm("Удалить запись?"))
    {
       $.ajax({
       type: 'POST',
       url: 'getdata.php',
       data: param,
       dataType: 'json',
       success: function(res)
        {
          if(res!=null)
          if (res.success==false)
          {
            Ext.Msg.alert(res.error1,res.error2);
          }

        }
       });
       return true;
    }
    return false;
}

function PrintDataView(tablename,type,id)
{
  var url='admin.php?type=table_work&table='+type+'&action=print&id='+id;
  PopUpWindow(url,500,500);
}

var timeout=null;
function jQueryFilter(type) {
  if (timeout) clearTimeout(timeout);
  timeout = setTimeout(function(){jQuery("#"+type).flexFilter();}, 1000);
}

function jQueryPrintTable(type,xls) {
     var no_header="1";
     if (xls==true) no_header="xml";
     Ext.Msg.show({
     title:'Печать',
     msg: 'Вывести все таблицу? При ответе "Нет" будут применены все текущие фильтры.',
     buttons: Ext.Msg.YESNO,
     fn: function(btn)
     {
       var params=jQuery("#"+type).flexPrint();
       var print_mode="small";
       if (btn=='yes')
       {
         print_mode="full";
       }
       var url="admin.php?type=table_work&action=print&table="+type+"&no_header="+no_header+"&print_mode="+print_mode+params;
       if (!xls)
       PopUpWindow(url);
       else NewLocation(url);
     },
     icon: Ext.MessageBox.INFO
     });
}


function AuthFormCreate(name,login,password,button_name,first)
{
  try{
    if (Ext.getCmp('AuthPopUp'))
    Ext.getCmp('AuthPopUp').close();
  }
  catch(e) {;}

  var win = new Ext.Window(
     {
	title: name,
	width: 400,
	autoHeight: true,
	resizable: false,
	closable: false,
	modal: true,
	layout: "fit",
        name:'AuthPopUp',
        id:'AuthPopUp',
	items:
        new Ext.FormPanel(
	{
	   xtype: "formpanel",
	   autoHeight:true,
           labelAlign:'top',
           frame:true,
           bodyStyle:'padding:0px;vertical-align:middle',
           defaults: {anchor: '-25'},
           defaultType: 'textfield',
           name:'Auth_DataForm',
           id:'Auth_DataForm',
           items:[
           {fieldLabel: login,xtype: 'textfield',name:'userid', id:'userid',vtype:'NotNull'}
           ,{fieldLabel: password,xtype: 'textfield',inputType:'password',name:'password', id:'password',vtype:'NotNull'
           ,listeners:
           {
             specialkey: function(field, e)
             {
               if (e.getKey() == e.ENTER)
               {
                 Ext.getCmp('auth_submit_button').fireEvent('click');
               }
               if (e.getKey() == e.ESC)
               {
                 field.setValue('');
               }
             }
           }}
           ],
           buttons:[
           {
             text: button_name,
             id: 'auth_submit_button',
             listeners:{ click: function() {
               var form=Ext.getCmp('Auth_DataForm');
               if (form.form.isValid()) {
                 form.getForm().submit({
                 clientValidation: true,
                 url: 'getdata.php',
                 waitMsg: 'Обработка...',
                 success: function(form, action) {
                   NewLocation('admin.php');
                 },
                 failure: function(form, action) {
                   switch (action.failureType) {
                     case Ext.form.Action.CLIENT_INVALID:
                         Ext.Msg.alert('Неудача', 'Ошибка в обязательных полях');
                         break;
                     case Ext.form.Action.CONNECT_FAILURE:
                         Ext.Msg.alert('Неудача', 'Ошибка соединения с сервером');
                        break;
                     case Ext.form.Action.SERVER_INVALID:
                        Ext.Msg.alert('Неудача', action.result.error2);
                   }
                 }
                })
               }
               //если форма не валидна
               else {Ext.Msg.alert('Неудача','Обязательные поля не заполнены');}
             }
           }}]
 	})
     });
     if (first==true)
     {
       var form=Ext.getCmp('Auth_DataForm');
       form.insert(2,{fieldLabel: password,xtype: 'textfield',inputType:'password',name:'password2', id:'password2',vtype:'password',initialPassField:'password'});
     }
     win.show();
}




function str_replace ( search, replace, subject ) {	// Replace all occurrences of the search string with the replacement string
	//
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Gabriel Paderni

	if(!(replace instanceof Array)){
		replace=new Array(replace);
		if(search instanceof Array){//If search	is an array and replace	is a string, then this replacement string is used for every value of search
			while(search.length>replace.length){
				replace[replace.length]=replace[0];
			}
		}
	}

	if(!(search instanceof Array))search=new Array(search);
	while(search.length>replace.length){//If replace	has fewer values than search , then an empty string is used for the rest of replacement values
		replace[replace.length]='';
	}

	if(subject instanceof Array){//If subject is an array, then the search and replace is performed with every entry of subject , and the return value is an array as well.
		for(k in subject){
			subject[k]=str_replace(search,replace,subject[k]);
		}
		return subject;
	}

	for(var k=0; k<search.length; k++){
		var i = subject.indexOf(search[k]);
		while(i>-1){
			subject = subject.replace(search[k], replace[k]);
			i = subject.indexOf(search[k],i);
		}
	}

	return subject;

}
