//DetailsView Callback functions

//фиксируем баг обновления fckEditora
 
function FCKEdPatch() {
        //это признак fckEd:
        //<div id=dv_articles_description_FCKEditor name=dv$articles$description$FCKEditor>
        //сюда мы их будем складывать а потом обрабатывать
     var fckEds = new Array();       
     var divs =document.getElementsByTagName('DIV');
     for (i=0;i<divs.length;i++)
     {
        if (divs[i].id!='' && divs[i].id.indexOf('_FCKEditor')>-1)
            fckEds.push(divs[i].id);
     }
     
     for (i=0;i<fckEds.length;i++)
     {
        //это ид дива соотв.
        var outerDivId=fckEds[i];
        var outerDiv=document.getElementById(outerDivId);
        
        //теперь движемся по иерархии
        //<div id=dv_articles_description_FCKEditor name=dv$articles$description$FCKEditor>
        
        //<div>
        
        var innerDiv=outerDiv.getElementsByTagName('DIV')[0];

       
        //это скрытое поле и надо обновить в результате
        //<input type="hidden" id="dv_articles_description" 
        //   name="dv$articles$description" 
        //     value="xdddddddddddcvxewrwerwerwerwercvdd" />

        
        var hiddenValueField=innerDiv.getElementsByTagName('INPUT')[0];
        var hiddenValueFieldID=hiddenValueField.id;
        if (hiddenValueFieldID!=outerDivId.substring(0,outerDivId.length-10)) { alert ('FCK Callback Patch: Wrong Hidden Value Field'); return}
        
        //<input type="hidden" id="dv_articles_description___Config" value="ContentLangDirection=rtl&amp;DefaultLanguage=he&amp;AutoDetectLanguage=false" />

        //так не работает        
       // var outerFrame=innerDiv.frames[0];
        
        //первый фрейм (текст - в третьем)
        //<iframe id="dv_articles_description___Frame" src="/new jobs/admin/includes/FCKeditor/editor/fckeditor.html?InstanceName=dv_articles_description&amp;Toolbar=Default" width="600px" height="250px" frameborder="no" scrolling="no"></iframe></div></div>
        
        //поскольку id этого фрейма есть - дальше уже просто
        var outerFrameId=hiddenValueFieldID + '___Frame';
        var outerFrame=document.getElementById(outerFrameId);
        ///вот этот почему то не работает с двумя и боьше фреймами
        //var innerFrame=outerFrame.document.frames[0].document.frames[0];
               
        //вот собственно текст
        //var innerHTML=innerFrame.document.body.innerHTML;
        //а вот это почему то работает
        var innerHTML=document.frames[i].document.frames[0].document.body.innerHTML;
        
        //теперь обновляем
        hiddenValueField.value=innerHTML;

     }   
 
}     

var dvAfterCommand;
//возвращать результат return стремно - поскольку при href это просто стирает страницу и 
//заполняет ее результатом
//поэтому делаем такую переменную
var DetailsViewRowCommandResult;
function DetailsViewRowCommand(target,command,afterCommandScript) {

    //команда после выполнения колбэка
    dvAfterCommand=afterCommandScript;

    //target - это uniqueID контроля
    var args=target.split(':');

    var eventTarget=args[0];
    //аргумент - название команды плюс dataKeyValue
    var eventArgument=command +'$'+ args[1];
    //ф-ция вызываемая после завершения кол-бэка
    var eventCallback=DetailsViewCallBackResult;

    var context=args[0].replace(/\$/g,"_") + ':' + command + ':' + args[1];

    if (command=='Delete' && !confirm(getLocalizedMessage('AreYouSureToDelete')+ '?')) return;

    if (command=='Update' || command=='Insert' || command=='Save')
    {
        var validate=true;
        var validationGroup=args[0].replace(/\$/g,"_");
       // validationGroup="";
        
        //if (command=='Insert') validationGroup +='Insert';
        FCKEdPatch();
        

    }
    //waitPopup('show');
    result=  DoCallback(eventTarget,eventArgument,eventCallback,context,true,validate,validationGroup);
    if (result!=undefined) {
        alert(getLocalizedErrorMessage(result) + '\n' + ValidationSummaryErrorMessages(validationGroup));
        DetailsViewRowCommandResult= false;
    } else {
    
        DetailsViewRowCommandResult= true;
    }
    
}


function DetailsViewCallBackResult(result,context) {

// first - row;second - validators
    
    waitPopup('show');
    args=context.split(':');
    controlId=args[0];
    command=args[1];
    dataKeyValues=args[2];
    
    //insert failed
      waitPopup('hide');
      
    //по идее, команда должна иметь преимущство перед редиректом
      
  
   
   if (dvAfterCommand!=null && dvAfterCommand!='') 
    {
        if (typeof(dvAfterCommand)!='function') {
        //раскрываем хитрую подстановку кавычек
            dvAfterCommand=dvAfterCommand.replace(/&quote;/g,'"');
            dvAfterCommand=dvAfterCommand.replace(/{quote}/g,'"');
            dvAfterCommand=dvAfterCommand.replace(/&quot;/g,'"');
            eval(dvAfterCommand);
        } else
            dvAfterCommand(result);
                
        return;
    }
   
    if (result=='' && command=='Insert') {alert(getLocalizedMessage('SuccessfullyAdded')); return};
    if (result=='' && command=='Update') return;
 
  
         //редирект после добавления новой записи
    if (result.substring(0,9)=='redirect:') {
        window.navigate(result.substring(9));
        return;   
    }  
    
       
  
   if (command=='Save') alert(getLocalizedMessage('SuccessfullySaved'));
    
    
  
    
   control=document.getElementById(controlId);
   
   control.outerHTML=result;
    
  
    
    
    
}



