function admin_ui_previewlink(e)
{
   admin_ui_loadadvancedhelp($(e).attr('href'));
   
   return false;
}

function admin_ui_loadadvancedhelp(url)
{
   $('#advhelploadingscreen').show();

   $('#advancedhelp').dialog('open');

   $('#advhelpcontent').css('max-height', $(window).height() - 150);

   $('#advhelpcontent').load(url + " #abstract", function() {
      externalLinks();
      $('#advhelploadingscreen').fadeOut('slow');
   });

   return false;
}

function admin_ui_opendialog(pkg, object, dialogfn, extraParams)
{
   var admindialog = $('#dialogmodal');

   var params = 'p=admin/' + pkg + '/' + object + '&adminoverridesection=dialogform';
   dialog_p = 'admin/' + pkg + '/' + object;

   if(dialogfn) {
      params += '&f=dialog_' + dialogfn;
      dialog_f = 'dialog_' + dialogfn;
   }
   else {
      params += '&f=dialog';
      dialog_f = 'dialog';
   }

   if(extraParams){
      if(jQuery.isPlainObject(extraParams)){
         extraParams = '&' + jQuery.param(extraParams);
      }
      params += extraParams;
   }

   $('#dialogloadingscreen').show();

   admindialog.dialog('open');

   admindialog.load('index.php #dialogformsectionbody > *', params, function (){

      $('#dialogmodal .focusable').attr('tabindex','1');
      $('#dialogmodal .editable').focus(function (e){
         if(!$(e.target).parent().parent().hasClass('multiplefield')){
            var phrasename = $(e.target).closest('.adminrow').attr('id').replace(/row$/g, '');
            if($('#' + phrasename + 'helptext').text().length > 0)
            {
               admin_ui_changehelp($('#' + phrasename + 'helptext').text());
            }
         }
         if(ckeditor){
            // set the global variable that will trigger creating a new editor
            // while it's destroying the current instance
            ck_new_idname = $(e.target).attr("id");
         }else{
            admin_ui_createeditor($(e.target).attr("id"));
         }
      });

      setupRelationFields(true);


      $('#dialogloadingscreen').fadeOut('slow');

   });
   
   
   

}

function admin_ui_submitdialog()
{
   $('#dialogmodal .relatedselect>*').attr('selected','selected');


   var admindialog = $('#dialogmodal');
   $('#dialogform').ajaxForm({
      dataType: 'xml',
      success: function (responseXML) {
         //admin_ui_displayresponse(xml);

         var response = $('#dialogresponse');

         //Draw attention to malformed fields.
         //   alert($('archonresponse', xml));
         if($('archonresponse', responseXML).attr('error') != 'false')
         {
            response.text($('message', responseXML).text());
            response.show();
            $('problemfield', responseXML).each(function (i) {
               // Focus only on first missed field.
               var callback;
               if(i == 0)
               {
                  callback = function () {
                     if($(this).attr('type') != 'hidden'){
                        $(this).focus();
                     }
                  };
               }
               else
               {
                  callback = function () {};
               }
               //dialog id prefix
               $('#dialog-' + $(this).text() + 'Input').effect('highlight', {}, 1500, callback);
            });

         //return false;
         }
         else
         {
            admindialog.dialog('close');
            if(dialogCallback){
               dialogCallback();
            }
            $('#successbox').text($('message', responseXML).text());
            $('#successbox').slideDown();
            setTimeout("$('#successbox').fadeOut('slow');",1400);
         }
      }
   });
   $('#dialogform').submit();
   
   $('#dialogform .relatedselect>*').removeAttr('selected');
}

function admin_ui_goto(p_var, params){
   page = 'index.php?p=' + p_var;
   if(params){
      page = page + '&' + $.param(params);
   }
   location.href = page;
}

function admin_ui_reloadfield(fieldname, params){
   var overridefield = fieldname;
   fieldname = fieldname.replace(/[\[\]]/gi, '');

   var parameters;
   if(fieldname.indexOf('dialog-') == -1){
      parameters = {
         p: request_p,         
         'IDs[]': $('#IDs').val(),
         adminoverridefield: overridefield
      };
   }else{
      parameters = {
         p: dialog_p,
         f: dialog_f,
         'IDs[]': $('#dialog-IDs').val(),
         adminoverridefield: overridefield
      };
   }

   if(params){
      var i;
      for (i in params) {
         parameters[i] = params[i];
      }
   }

   if('f' in parameters && !parameters.f)
   {
      delete parameters.f;
   }

   var fieldparams = {};
   $('.reloadparam:input').each(function() {
      fieldparams[$(this).attr('name')] = $(this).val();    
   });

   $.extend(parameters, fieldparams);

   $('#'+fieldname+'Field').load('index.php #'+fieldname+'Field>*', parameters, function () {
      $('#'+fieldname+'Field').change();
      admin_ui_activatereloadededitors(fieldname+'Field');
   });
}

function admin_ui_reloadrow(rowname){
   $('#'+rowname+'row .fieldcell').load('index.php #'+rowname+'row > .fieldcell >*', {
      p: request_p,
      'IDs[]': $('#IDs').val(),
      adminoverriderow: rowname
   }, function() {
      admin_ui_activatereloadededitors(rowname+'row .fieldcell');
   });
}

function admin_ui_processxml(xml){
   if($('id', xml).length > 0 && $('#IDs>option').val() == '0' && $('suppressredirect', xml).text() == 'false')
   {
      location.href = 'index.php?p=' + request_p + '&id=' + $('id', xml).text();
   }
   else if($('location', xml).length > 0)
   {
      location.href = $('location', xml).text();
   }
}

function admin_ui_updatenamefield(fieldname){
   if($('#'+fieldname+'Input').val())
   {
      $('#curobjectname').html(admin_ui_decodebbcode($('#'+fieldname+'Input').val()));
   }
}

function admin_ui_reloadsection(sectionname, boundElements, callback){
   $('#'+sectionname+'fragment').load('index.php #'+sectionname+'sectionbody>*', {
      p: request_p,
      'IDs[]': $('#IDs').val(),
      adminoverridesection: sectionname
   }, function() {
      admin_ui_activatereloadededitors(sectionname+'fragment');
      admin_ui_triggerboundelements('load', boundElements);
      if(callback){
         jQuery.each(this, callback);
      }
   });
}

function admin_ui_getboundelements(){
   var boundElements = [];
   $('.bound').each(function() {
      boundElements.push($(this).attr("id"));
   });
   return boundElements;
}

function admin_ui_triggerboundelements(eventtype, boundElements){
   var i;
   for (i in boundElements){
      $('#'+boundElements[i]).trigger(eventtype);
   }
}

function admin_ui_dialogcallback(callback){
   dialogCallback = callback;
}


function admin_ui_changehelp(helpHTML, toggleHelp)
{
   if($('.fragment').hasClass('helptoggled') && $('#helpcontents').html() != admin_ui_decodebbcode(helpHTML))
   {
      $('#helpcontents').fadeOut('normal', function () {
         $(this).html(admin_ui_decodebbcode(helpHTML)).find('a').click(function() {

            return admin_ui_previewlink(this);
         });
      }).fadeIn();
   }
   else
   {
      $('#helpcontents').html(admin_ui_decodebbcode(helpHTML)).find('a').click(function() {
         return admin_ui_previewlink(this);
      });

      if(toggleHelp)
      {
         admin_ui_togglehelpbox();
      }
   }
}

function admin_ui_checkformchanges()
{
   if(formChange)
   {
      alert("You have unsaved changes! However, I cannot do anything about that right now because I'm merely an alert. How sad...");
   }
}

function admin_ui_pinhelp(unpin)
{
   if($('#helpbox').length == 0)
   {
      return;
   }

   if($.cookie('Archon_pinhelp') || unpin)
   {
      $.cookie('Archon_pinhelp', null, {
         path: cookiePath
      });

      $('#helppin img').attr('src', imagePath + '/unlocked.gif');
   }
   else
   {
      $.cookie('Archon_pinhelp', 'pinned', {
         path: cookiePath
      });

      $('#helppin img').attr('src', imagePath + '/locked.gif');
   }
}

function admin_ui_pinpackages(unpin)
{
   if($('#packagelist').length == 0)
   {
      return;
   }

   var path = document.location.pathname;
   var dir = path.substring(0, path.lastIndexOf('/')) + '/';

   if($.cookie('Archon_pinpackages') || unpin)
   {
      $.cookie('Archon_pinpackages', null, {
         path: cookiePath
      });

      $('#packagepin img').attr('src', imagePath + '/unlocked.gif');
   }
   else
   {
      $.cookie('Archon_pinpackages', 'pinned', {
         path: cookiePath
      });

      $('#packagepin img').attr('src', imagePath + '/locked.gif');
   }
}


function admin_ui_displayresponse(xml)
{

   // Draw attention to malformed fields.
   if($('archonresponse', xml).attr('error') != 'false')
   {
      var response = $('#response');

      response.text($('message', xml).text());

      response.dialog('open');


      $('problemfield', xml).each(function (i) {
         // Focus only on first missed field.
         var callback;
         if(i == 0)
         {
            callback = function () {
               $(this).focus();
            };
         }
         else
         {
            callback = function () {};
         }
         var field = $('#' + $(this).text() + 'Input');
         if(field.attr('type') != 'hidden' && !field.hasClass('hidden') && field.css('display') != 'none'){
            field.effect('highlight', {}, 1500, callback);
         }
      });

      return false;
   }
   else
   {
      $('#successbox').text($('message', xml).text());
      $('#successbox').slideDown();
      setTimeout("$('#successbox').fadeOut(1000);",1400);
   }

   return true;
}

function admin_ui_delete()
{
   if(permissionsDelete)
   {
      var $originalIDsOptions;

      // Need to move data around if deleting from browse section.
      if($('#moduletabs').tabs('option','selected') == $('#browsesectionbody .tabposition').text())
      {
         $originalIDsOptions = $('#IDs>option');

         $('#IDs').empty().append($('#browselistselect>:selected').clone());
         $('#IDs>option').attr('selected', 'yes');
      }

      $('#fInput').val('delete');

      $('#mainform').ajaxSubmit(function (xml) {

         // TODO: Make sure that false goes away before release or testing.
         if(admin_ui_displayresponse(xml))
         {
            location.href = 'index.php?p=' + request_p;
            return;
         }

         $('#fInput').val('store');
         $('#IDs').empty().append($originalIDsOptions);
         $originalIDsOptions.attr('selected', 'yes');

         useBrowseFilter();
      });
   }
}


function admin_ui_deletechildren()
{
   if(permissionsDelete)
   {
      var $originalIDsOptions;

      $originalIDsOptions = $('#IDs>option');

      $('#IDs').empty().append($('#hierarchicalbrowseselect>:selected').clone());
      $('#IDs>option').attr('selected', 'yes');

      $('#fInput').val('delete');

      $('#mainform').ajaxSubmit(function (xml) {
         admin_ui_displayresponse(xml);
   
         $('#fInput').val('store');
         $('#IDs').empty().append($originalIDsOptions);
         $originalIDsOptions.attr('selected', 'yes');

         hierarchicalbrowseFilter();
      });
   }
}

function admin_ui_closetransferinterface()
{
   $('#IDs').empty().append($('#tempIDs > *'));
   $('#IDs>option').attr('selected', 'yes');
   $("#transfermodal").dialog('close');
}

function admin_ui_opentransferinterface()
{
   $('#transferIDs').empty().append($('#hierarchicalbrowseselect>:selected').clone());
   $('#transferIDs>option').attr('selected', 'yes');

   var str = '';
   $('#transferIDs > *').each(function () {
      str += $(this).text()+'<br />'
   } );
   $('#transfer-items').html(str);

   $('#tempIDs').empty().append($('#IDs > :selected'));
   $('#IDs').empty().append($('#transferIDs > *').clone());
   $('#IDs>option').attr('selected', 'yes');

   $('#transfermodal').dialog('open');
}

function admin_ui_transfer()
{
   if(permissionsUpdate)
   {
      $('#transferform').ajaxSubmit(function (xml) {
         admin_ui_displayresponse(xml);
         hierarchicalbrowseFilter();
      });
   }
}


// old version -- will be useful if we need to retain 
// transfer capabilities for other managers

//function admin_ui_transfer()
//{
//
//   var loadBlank;
//   var originalIDsOptions;
//
//   // Need to move data around if transferring from browse section.
//   if($('#moduletabs').tabs('option','selected') == $('#browsesectionbody .tabposition').text())
//   {
//      loadBlank = false;
//
//      // Decide if we're transferring the current object.
//      $('#browselistselect>:selected').each(function () {
//         if($('#IDs>option[value="' + $(this).val() + '"]').length > 0)
//         {
//            loadBlank = true;
//         }
//      });
//
//      originalIDsOptions = $('#transferIDs>option');
//
//      $('#transferIDs').empty().append($('#browselistselect>:selected').clone());
//      $('#transferIDs>option').attr('selected', 'yes');
//   }
//   else
//   {
//      loadBlank = true;
//
//      originalIDsOptions = $('#transferIDs>option');
//
//      $('#transferIDs').empty().append($('#IDs>:selected').clone());
//      $('#transferIDs>option').attr('selected', 'yes');
//   }
//
//   //$('#NewParentIDInput').val($('#ParentIDInput').val());
//
//   $('#transferform').ajaxSubmit(function (xml) {
//      admin_ui_displayresponse(xml);
//
//      $('#transferIDs').empty().append(originalIDsOptions);
//      originalIDsOptions.attr('selected', 'yes');
//
//      if(loadBlank)
//      {
//         location.href = 'index.php?p=' + request_p + '&id=' + $('#IDs').val();
//         return;
//      }
//
//      useBrowseFilter();
//   });
//}

function admin_ui_addnew(carryOverFields)
{
   $('#addcontrol').attr('href', 'index.php?p=' + request_p + '&selectedtab=1');
   jQuery.each(carryOverFields, function (i, val) {
      if($('#' + val + 'Input').val() && $('#' + val + 'Input').val() != 0)
      {
         $('#addcontrol').attr('href', $('#addcontrol').attr('href') + '&' + val + '=' + $('#' + val + 'Input').val());
      }
   });

   location.href = $('#addcontrol').attr('href');
}

function admin_ui_addnewchild(target, parentid, carryOverFields)
{
   $(target).attr('href', 'index.php?p=' + request_p + '&parentid=' + parentid + '&selectedtab=1');
   jQuery.each(carryOverFields, function (i, val) {
      if(val != 'ParentID' && $('#' + val + 'Input').val() && $('#' + val + 'Input').val() != 0)
      {
         $(target).attr('href', $(target).attr('href') + '&' + val + '=' + $('#' + val + 'Input').val());
      }
   });

   location.href = $(target).attr('href');
}


function admin_ui_relateobject(section, relatingClass)
{
   if($('#' + section + 'Unrelated' + relatingClass + 'IDs>:selected[value!=0]').length > 0)
   {
      var newlyRelated = $('#' + section + 'Unrelated' + relatingClass + 'IDs>:selected[value!=0]');

      //check if option=0 is there, and remove it
      $('#' + section + 'Related' + relatingClass + 'IDs>*[value=0]').remove();

      $('#' + section + 'Related' + relatingClass + 'IDs').append(newlyRelated);
      newlyRelated.removeAttr('selected');

      //      var arrRelated = new Array();
      //      //var arrOpts = jQuery.makeArray($('#' + section + 'Related' + relatingClass + 'IDs>*[value!=0]'));
      //      var arrOpts = $('#' + section + 'Related' + relatingClass + 'IDs>*[value!=0]');
      //      $(arrOpts).each(function (i, opt) {
      //         arrRelated[i]=$(opt).val();
      //      });

      $('#' + section + 'Related' + relatingClass + 'IDs').trigger('relationchange');

   }
//return false;

}

function admin_ui_unrelateobject(section, relatingClass)
{
   //[value!=0]
   if($('#' + section + 'Related' + relatingClass + 'IDs>:selected[value!=0]').length > 0)
   {
      var newlyUnrelated = $('#' + section + 'Related' + relatingClass + 'IDs>:selected[value!=0]');

      $('#' + section + 'Unrelated' + relatingClass + 'IDs').append(newlyUnrelated);
      newlyUnrelated.removeAttr('selected');

      //      var arrRelated = new Array();
      //      // var arrOpts = jQuery.makeArray($('#' + section + 'Related' + relatingClass + 'IDs>*[value!=0]'));
      //      var arrOpts = $('#' + section + 'Related' + relatingClass + 'IDs>*[value!=0]');
      //
      //      $(arrOpts).each(function (i, opt) {
      //         arrRelated[i]=$(opt).val();
      //      });

      if($('#' + section + 'Related' + relatingClass + 'IDs>*').length == 0){
         $('#' + section + 'Related' + relatingClass + 'IDs').append('<option value="0" style="display:none"></option>');
      }

      $('#' + section + 'Related' + relatingClass + 'IDs').trigger('relationchange');

   }
//return false;

}


function admin_ui_togglehelpbox()
{
   var newMargin;
   var open;

   if($('.fragment').hasClass('helptoggled'))
   {
      $('#helptoggle').removeClass('toggled');
      $('#helpbox').css('bottom', 0);
      $('#helpbox').css('overflow', 'hidden');
      newMargin = $('#helpbox').css('margin-right');
      admin_ui_pinhelp(true);
      open = false;
   }
   else
   {
      $('#helptoggle').addClass('toggled');
      $('#helpbox').css('overflow', 'visible');
      $('#helpbox').css('bottom', 'auto');

      newMargin = $('#helpbox').outerWidth({
         margin: true
      }) + 'px';
      open = true;
   }

   /*$('.ui-tabs-panel').animate({marginRight: newMargin}, 'normal', function () {
        $(this).toggleClass('helptoggled');
    });*/

   $('.fragment').css('marginRight', newMargin);
   $('.fragment').toggleClass('helptoggled');

   return open;
}

function admin_ui_togglepackagelist()
{
   var newMargin;
   var imgSrc;
   var easing;

   if($('#main-content').hasClass('packagetoggled'))
   {

      newMargin = $('#packagelist').css('margin-left');
      imgSrc = imagePath + "/packageopen.gif";
      admin_ui_pinpackages(true);
   //   easing = 'expoout';
   }
   else
   {
      newMargin = $('#packagelist').outerWidth({
         margin: true
      });// + 'px';
      imgSrc = imagePath + "/packageclose.gif";
   //   easing = 'expoin';
   }


   //      $('#main-content').animate({
   //         marginLeft: newMargin
   //      }, 250, function () {
   //         $(this).toggleClass('packagetoggled');
   //         $('#packagetoggle img').attr('src', imgSrc);
   //      });

   $('#main-content').css('marginLeft', newMargin);
   $('#main-content').toggleClass('packagetoggled');
   $('#packagetoggle img').attr('src', imgSrc);
}


function admin_ui_markmultipledeletion(arrayname, id)
{
  
   if($('.multiplerow'+id).hasClass('deletetoggled'))
   {
      $('#' + arrayname + id + '_fDeleteInput').val('0');
      $('#' + arrayname + id +'row .multiplefield').fadeTo('normal', 1);
      $('#multipledelete'+id).html("Delete");
   }
   else
   {
      $('#' + arrayname + id + '_fDeleteInput').val('1');
      $('#' + arrayname + id +'row .multiplefield').fadeTo('normal', 0.25);
      $('#multipledelete'+id).html("Cancel");
   }
   $('.multiplerow'+id).toggleClass('deletetoggled');
}


//function admin_ui_sethierarchicalchangeevent(fieldname, containerid)
//{
//    $('#' + containerid + ' select').change(function () {
//        var loadparams = {
//            p: request_p,
//            'IDs[]': $('#IDs').val(),
//            adminoverridefield: fieldname
//        };
//
//        var generalFieldName = $(this).attr('name').replace(/(New$)|([\d]+$)/g, '');
//        var idName = generalFieldName.replace(/\[|\]/g, '');
//
//        if($(this).val() == 0 && $('#' + idName + 'ParentFieldName').text().length > 0)
//        {
//            var parentFieldName = $('#' + idName + 'ParentFieldName').text();
//            var parentFieldValue = $('#' + idName + 'ParentFieldValue').text();
//            loadparams[parentFieldName] = parentFieldValue;
//        }
//        else
//        {
//            loadparams[generalFieldName] = $(this).val();
//        }
//
//        $('#' + containerid).load('index.php #' + containerid + '>*', loadparams, function () {
//            admin_ui_sethierarchicalchangeevent(fieldname, containerid);
//        });
//    });
//}

function admin_ui_hierarchicalchange(wholefieldname, changedselect)//, multipleid)
{
   //   var loadparams = {
   //      p: request_p,
   //      'IDs[]': $('#IDs').val(),
   //      adminoverridefield: wholefieldname
   //   };

   var loadparams = {};

   var groupFieldName = $(changedselect).attr('name').replace(/(New$)|([\d]+$)/g, '').replace(/(New\]$)|([\d]+\]$)/g, ']');
   var idName = groupFieldName.replace(/\[|\]/g, '');

   if($(changedselect).val() == 0 && $('#' + idName + 'ParentFieldName').text().length > 0)
   {
      var parentFieldName = $('#' + idName + 'ParentFieldName').text();
      var parentFieldValue = $('#' + idName + 'ParentFieldValue').text();
      loadparams[parentFieldName] = parentFieldValue;
   }
   else
   {
      selfFieldName = $('#' + idName + 'SelfFieldName').text();
      loadparams[selfFieldName] = $(changedselect).val();
   }

   //   var containerid = wholefieldname.replace(/\[|\]/g, '') + 'Field';
   //   $('#' + containerid).load('index.php #' + containerid + '>*', loadparams);

   admin_ui_reloadfield(wholefieldname, loadparams);

   if(typeof useBrowseFilter == 'function')
   {
      useBrowseFilter();
   }
}





function useRelationFilter(idname, highlight, dialog){

   var relationField = $('#'+idname+'Field');


   if(!dialog && $('#moduletabs').tabs('option', 'selected') != relationField.parents('table').siblings('.tabposition').text())
   {
      return;
   }


   if(highlight)
   {
      relationField.find('.filterfield').effect('highlight');
   }

   var arrRelated = new Array();
   var arrOpts = relationField.find('.relatedselect>*');
   $(arrOpts).each(function (i, opt) {
      arrRelated[i]=$(opt).val();
   });

   var p_var = request_p;
   var f_var = '';
   var ids = $('#IDs').val();
   if(dialog){
      p_var = dialog_p;
      f_var = dialog_f;
      ids = $('#dialog-IDs').val();
   }

   relationField.find('.unrelatedselect').load('index.php #'+idname+'relationlists .unrelatedselect>*', {
      p: p_var,
      f: f_var,
      'IDs[]': ids,
      adminoverridefield: idname,
      q: relationField.find('.filterfield').val(),
      'searchexclusions[]': arrRelated
   });

}

function setupRelationFields(dialog){
   $(function () {

      var filterfield;
      if(dialog){
         filterfield = $('#dialogmodal .relationfield .filterfield');
      }else{
         filterfield = $('.relationfield .filterfield');
      }

      filterfield.bind(($.browser.opera ? "keypress" : "keydown") + ".filter", function (e) {
         if(e.keyCode == 13)
         {
            return false;
         }

         var idname = $(e.target).closest('.relationfield').attr('id');

         clearTimeout(relationFilterTimeout);
         relationFilterTimeout = setTimeout(function () {
            useRelationFilter(idname, true, dialog);
         }, 400);
      });

      //            $('#<?php echo($IDName); ?>searchoptions select').bind("change", function() { use<?php echo($IDName); ?>relationFilter(false); });

      filterfield.bind("relationchange", function (e) {

         if($('#moduletabs').tabs('option','selected') == $(e.target).parents('table').siblings('.tabposition').text())
            useRelationFilter($(e.target).closest('.relationfield').attr('id'), true, dialog);
      });

      if(!dialog){
         $('#moduletabs').bind('tabsshow', function (event, ui) {
            $('.relationfield').each(function(){
               useRelationFilter($(this).attr('id'), false);
            });
         });
      }else{
         $('#dialogmodal .relationfield').each(function(){
            useRelationFilter($(this).attr('id'), false, true);
         });
      }



   });

}













function admin_ui_togglerow(rowName, rowSwitch, clearFields)
{
   rowSwitch = !rowSwitch;
   $('#' + rowName + 'row').toggleClass('disabledrow', rowSwitch);
   $('#' + rowName + 'row :input').attr('disabled', rowSwitch);
   $('#' + rowName + 'row .editable').toggleClass('disabled', rowSwitch);

   if(rowSwitch && clearFields){
      $('#' + rowName + 'row :input').clearFields();
      $('#' + rowName + 'row .relatedselect > option').attr('selected','selected');
      $('#' + rowName + 'row .unrelateitem').click();
   }
} 



function admin_ui_encodebbcode(data, suppressNewLines)
{
      // remove divs
   data = data.replace( /<div.*?>([^]*?)<\/div>/gi, '$1');

   data = data.replace( /\&amp;/gi, '&');

   data = data.replace( /<br \/>/gi, '');

   data = data.replace( /\n/gi, '');
   data = data.replace( /<p>/gi, '');

   if(suppressNewLines){
      data = data.replace( /<\/p>/gi, '');
   }else{
      data = data.replace( /<\/p>/gi, '\n');
   }
   data = admin_ui_trim(data);

   data = data.replace(/\&nbsp;/gi, ' ');

   // [b]
   data = data.replace( /<(?:b|strong)>(.+?)<\/(?:b|strong)>/gi, '[b]$1[/b]') ;

   // [i]
   data = data.replace( /<(?:i|em)>(.+?)<\/(?:i|em)>/gi, '[i]$1[/i]') ;

   // [u]
   data = data.replace( /<u>(.+?)<\/u>/gi, '[u]$1[/u]') ;

   // [sup]
   data = data.replace( /<sup>(.+?)<\/sup>/gi, '[sup]$1[/sup]') ;
    
   // [sub]
   data = data.replace( /<sub>(.+?)<\/sub>/gi, '[sub]$1[/sub]') ;

   // [url]
   data = data.replace( /<a .*?href=(["'])(.+?)\1.*?>[\s]*(.+?)[\s]*<\/a>/gi, '[url=$2]$3[/url]') ;

   data = data.replace( /\&lt;/gi, '<');
   data = data.replace( /\&gt;/gi, '>');


   return data ;
}


function admin_ui_truncatebbcode(data){
   data = data.replace(/(.+?)\[.*/, '$1');
   data = data.replace(/\s+$/,'');

   return data;
}

function admin_ui_trim(str) {
   return str.replace(/^\s+|\s+$/g,"");
}


function admin_ui_decodebbcode(data)
{
   data = data.replace(/[ ]{2}/gi, '&nbsp; ');

   data = data.replace( /</gi, '&lt;');
   data = data.replace( />/gi, '&gt;');

   // [b]
   data = data.replace( /\[b\](.+?)\[\/b]/gi, '<strong>$1</strong>' ) ;
   //data = data.replace( /\[b\][\s]*\[\/b]/gi, '' ) ;

   // [i]
   data = data.replace( /\[i\](.+?)\[\/i]/gi, '<em>$1</em>' ) ;

   // [u]
   data = data.replace( /\[u\](.+?)\[\/u\]/gi, '<u>$1</u>' ) ;

   // [sup]
   data = data.replace( /\[sup\](.+?)\[\/sup\]/gi, '<sup>$1</sup>' );

   // [sub]
   data = data.replace( /\[sub\](.+?)\[\/sub\]/gi, '<sub>$1</sub>' );

   // [url]
   data = data.replace( /\[url\](.+?)\[\/url]/gi, '<a href="$1">$1</a>' ) ;
   data = data.replace( /\[url\=([^\]]+)](.+?)\[\/url]/gi, '<a href="$1">$2</a>' ) ;

   if(data.indexOf('\n') != -1){
      data = '<p>' + data.replace( /\n/gi, '</p><p>') + '</p>';
   }

   return data;
}

function admin_ui_childrenlistchange()
{
   if($('#hierarchicalbrowseselect>:selected').length == 0)
   {
      $('#hierarchicalbrowsecontrols a.deletecontrol').addClass('disabled');
      $('#hierarchicalbrowsecontrols a.updatecontrol').addClass('disabled');

      $('#addcontrol').removeClass('disabled');
      if(permissionsDelete){
         $('#deletecontrol').removeClass('disabled');
      }
      if(permissionsUpdate){
         $('#transfercontrol').removeClass('disabled');
         $('#savecontrol').removeClass('disabled');
      }

      $('#hierarchicalbrowsecontrols a.selectall').removeClass('disabled');
      $('#hierarchicalbrowsecontrols a.deselectall').addClass('disabled');


   }
   //    else if($('#' + idprefix + 'childrenlistselect>:selected').length == 1)
   //    {
   //        location.href = 'index.php?p=' + request_p + '&id=' + $('#' + idprefix + 'childrenlistselect>:selected').val();
   //
   //    }
   else if($('#hierarchicalbrowseselect>:selected').length >= 1)
   {
      if(permissionsDelete)
      {
         $('#hierarchicalbrowsecontrols a.deletecontrol').removeClass('disabled');
      }
      if(permissionsUpdate)
      {
         $('#hierarchicalbrowsecontrols a.updatecontrol').removeClass('disabled');
      }

      $('#addcontrol').addClass('disabled');
      $('#deletecontrol').addClass('disabled');
      $('#transfercontrol').addClass('disabled');
      $('#savecontrol').addClass('disabled');

      if($('#hierarchicalbrowseselect>option:selected').length == $('#hierarchicalbrowseselect>option').length)
      {
         $('#hierarchicalbrowsecontrols a.selectall').addClass('disabled');
         $('#hierarchicalbrowsecontrols a.deselectall').removeClass('disabled');
      }
      else
      {
         $('#hierarchicalbrowsecontrols a.selectall').removeClass('disabled');
         $('#hierarchicalbrowsecontrols a.deselectall').removeClass('disabled');
      }
   }
}





function admin_ui_createeditor(idname)
{
   if ( ckeditor )
   {
      return;
   }
   // clear the global variable if set, to signify that this is
   // the editor represented by that new ID
   ck_new_idname = null;
	
   var html = $('#'+idname+'Input').val();
   
   if($('#'+idname).hasClass('namefield')){
      ckeditor = CKEDITOR.replace( idname,
      {
         toolbar:
         [
         ['Bold','Italic','Underline'],
         ['SpecialChar']
         ],
         height: 40,
         width: '60%',
         resize_enabled: false,
         removePlugins: 'elementspath',
         keystrokes:
         [
         [ 13, 'blur' ],
         [ CKEDITOR.SHIFT + 13, 'blur' ],
         [ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],
         [ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],
         [ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],


         [ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
         [ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
         [ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],

         [ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ]
         ]
      });
   }else{
      ckeditor = CKEDITOR.replace( idname );
   }
   ckeditor.on('instanceReady', function() {

      ckeditor.setData(admin_ui_decodebbcode(html));
      ckeditor.focus();

      var in_cmenu = false; //CKEDITOR.ui.floatPanel.getBlock();
      //      ckeditor.contextMenu.onShow(function() {
      //          in_cmenu = true;
      //      });
      //      ckeditor.contextMenu.onHide(function() {
      //          in_cmenu = false;
      //      });

      ckeditor.on('blur', function(e){
         // if there is a dialog or right-click menu, the ckeditor blurs, we don't want to destroy in that case
         if(CKEDITOR.dialog.getCurrent() == null && !in_cmenu){
            admin_ui_removeeditor();     
         }
      });
   });

}



function admin_ui_updateeditorinput()
{
   if(!ckeditor)
      return;

   ckeditor.updateElement();

   var idname = ckeditor.name;

   if(escapeXML){
      if($('#'+idname).hasClass('namefield')){
         $('#'+idname+'Input').val(admin_ui_encodebbcode(ckeditor.getData(), true));
         var str = $('#'+idname).html();
         str = str.replace(/<p>/gi, '');
         str = str.replace(/<\/p>/gi, '');
         $('#'+idname).html(str);
      }else{
         $('#'+idname+'Input').val(admin_ui_encodebbcode(ckeditor.getData()));
      }
   }else{
      $('#'+idname+'Input').val(ckeditor.getData());
   }

   $('#'+idname+'Input').change();
}



function admin_ui_removeeditor()
{
   if ( !ckeditor )
      return;

   admin_ui_updateeditorinput();


   ckeditor.destroy();
   ckeditor = null;

   // start a new editor if an ID was passed
   if(ck_new_idname){
      admin_ui_createeditor(ck_new_idname);
   }
}




function admin_ui_activatereloadededitors(selector){
   $('#'+selector+' .focusable').attr('tabindex','1');
   
   $('#'+selector+' .editable').bind('focus', function (e){
      if(ckeditor){
         // set the global variable that will trigger creating a new editor
         // while it's destroying the current instance
         ck_new_idname = $(e.target).attr("id");
      }else{
         admin_ui_createeditor($(e.target).attr("id"));
      }
   });
}


function admin_ui_submit(){
   admin_ui_removeeditor();
   $('.relatedselect>*').attr('selected','selected');
   $('#mainform').submit();
   $('.relatedselect>*').removeAttr('selected');
}



function admin_ui_delegationbind(eventtype, selector, callback)
{
   $(document).bind(eventtype, function (e) {
      if($(e.target).is(selector))
      {
         return callback(e);
      }
   });
}

function admin_ui_confirm(text, callback){
   var response = $('#response');

   response.text(text);

   response.dialog('open');

   response.dialog('option', 'buttons', {
      Ok: function(){
         $(this).dialog('close');
         if(callback){
            jQuery.each(this, callback);
         }
         $(this).dialog('option','buttons', {
            Ok: function(){
               $(this).dialog('close');
            }
         });
      },
      Cancel: function(){
         $(this).dialog('close');
         $(this).dialog('option','buttons', {
            Ok: function(){
               $(this).dialog('close');
            }
         });
      }
   });
}

function admin_ui_init(){

   $.metadata.setType("class");

   $(".combobox").combobox();

   //   $('input').focus(function(e){
   //      $(e.target).addClass('inputfocus', 250);
   //   });
   //   $('input').blur(function(e){
   //      $(e.target).removeClass('inputfocus', 750);
   //   });

 //  admin_ui_delegationbind('click load')



   // One event for all help links.
   admin_ui_delegationbind('click', '.helplink', function (e) {
      var phrasename = $(e.target).metadata().phrasename;
      var packageid = $(e.target).metadata().packageid;
      var moduleid = $(e.target).metadata().moduleid;

      $.ajax({
         url: 'index.php',
         dataType: 'html',
         data: {
            p: 'admin/core/ajax',
            f: 'getphrase',
            phrasename: phrasename,
            phrasetypeid: descriptionID,
            moduleid: moduleid,
            packageid: packageid
         },
         success: function(data) {
            if(data){
               admin_ui_changehelp(data, true);
               $('#editphrase').attr('target', '_blank');
               $('#editphrase').attr('href', '?p=admin/core/phrases&f=predict&phrasename='+phrasename+'&phrasetypeid='+descriptionID+'&moduleid='+moduleid+'&packageid='+packageid
               );
            //            }else{
            //               admin_ui_changehelp(data.error, true);
            }
         }
      });
   //      if($('#' + phrasename + 'helptext').text().length > 0)
   //      {
   //         admin_ui_changehelp($('#' + phrasename + 'helptext').text(), true);
   //      }
   });

   //   admin_ui_delegationbind('click', '.adminrow :input', function (e) {
   //      var phrasename = $(e.target).closest('.adminrow').attr('id').replace(/row$/g, '');
   //      if($('#' + phrasename + 'helptext').text().length > 0)
   //      {
   //         admin_ui_changehelp($('#' + phrasename + 'helptext').text());
   //      }
   //   });

   $('.adminrow :input').focus(function (e) {
      var phrasename = $(e.target).closest('.adminrow').attr('id').replace(/row$/g, '');
      if($('#' + phrasename + 'helptext').text().length > 0)
      {
         admin_ui_changehelp($('#' + phrasename + 'helptext').text());
      }
   });

   // One event for all checkboxes.
   admin_ui_delegationbind('change', '.fieldcheckbox', function (e) {
      var inputid = $(e.target).attr('id').replace(/CheckboxInput$/g, 'Input');
      $('#' + inputid).val($(e.target).is(':checked') ? '1' : '0');
      $('#' + inputid).change();
   });

   admin_ui_delegationbind('change', '.fieldradiobutton', function (e) {
      var hiddenelement = $(e.target).parent().siblings(':hidden');
      hiddenelement.val($(e.target).siblings().andSelf().filter(':checked').val());
      hiddenelement.change();
   });

   //   $('.radiobuttonset').buttonset();


  
   admin_ui_delegationbind('change', '.hierarchicalselectfield select', function (e) {
      var idname = $(e.target).closest('.adminfieldwrapper').attr('id').replace(/Field/i, '');
      admin_ui_hierarchicalchange(idname, $(e.target));
   });



   //TODO: Move me to a better place and maybe use a better class
   admin_ui_delegationbind('click', '.fullcontrol', function (e) {
      $(e.target).parent().siblings().children(':checkbox').attr("checked", $(e.target).attr("checked"));
   });


   $('#moduletabs').bind('tabsshow', function (event, ui) {
      if($('#helptoggle').hasClass('toggled') && !$.cookie('Archon_pinhelp')){
         admin_ui_togglehelpbox();
      }
   });

   if(request_p == 'admin/avsap/avsapassessments' || request_p == 'admin/avsap/avsapinstitutions' || request_p == 'admin/avsap/avsapstoragefacilities' || request_p == 'admin/avsap/avsapassessmentreport')
   {
      $("#logobox > a > img").attr("src",imagePath+"/AvSAPlogo1.png");
   }

   externalLinks();

   $('.focusable').attr('tabindex','1');

   //   $('#controlbuttons a').hover(
   //      function () {
   //         if(!$(this).hasClass('disabled')){
   //            $(this).addClass('ui-state-hover')
   //         }
   //      },
   //      function () {
   //         $(this).removeClass('ui-state-hover')
   //      }
   //      );

   if($('.fragment').hasClass('helptoggled'))
   {
      $('#helptoggle').addClass('toggled');
      $('#helpbox').css('overflow', 'visible');
      $('#helpbox').css('bottom', 'auto');
   }

   /*  if(!$.browser.msie) //or opera?
       {
            $('#page-wrap').corners('25px top');
            $('#inside').corners('18px');
            $('#header').corners('18px top');
            $('#footer').corners('18px bottom');
            $('#packagelist').corners('15px br');
            $('#modulewrapper').corners('20px');
            $('#moduletitle').corners('20px top');
            $('#storebox').corners('20px bottom');
            $('#helpbox').corners('15px');
            //$('input#submitbutton').corner('10px');
       }*/


   var activeindex = 0;
   var itr = 0;
   $('.package-header').each(function () {
      var aprcode = request_p.replace( /admin\/(.+?)\/[a-z]*/gi, '$1');
      if($(this).hasClass(aprcode)){
         activeindex = itr;
      }
      itr++;
   });


   $('#packageaccordion').accordion({
      header: ".package-header",
      autoHeight: true,
      animated: "bounceslide",
      collapsible: true,
      active: activeindex
   });

   $('#packageaccordion .ui-accordion-content li:nth-child(odd)').addClass('odd-accordion-content');


  
   $('#response').dialog({
      modal:true,
      autoOpen:false,
      overlay:{
         opacity: 0.4,
         background: "black"
      },
      title: 'Admin Response',
      draggable:false,
      resizable: false,
      beforeClose: function(){
         $(this).empty();
      },
      buttons:{
         Ok: function(){
            $(this).dialog('close');
         }
      }
   });
   


   $('#dialogmodal').dialog({
      modal:true,
      autoOpen: false,
      width: 780,
      minHeight: 400,
      position: ['center', 60],
      overlay:{
         opacity: 0.3,
         background: "black"
      },
      resizable: false,
      draggable: false,
      buttons: {
         'Save': function(){
            admin_ui_submitdialog();
         },
         'Cancel': function(){
            $(this).dialog('close');
         }
      }
   });


   $('#advancedhelp').dialog({
      modal:true,
      autoOpen: false,
      title: 'Advanced Help',
      position: ['center', 30],
      width: 780,
      minHeight: 400,
      overlay:{
         opacity: 0.5,
         background: "black"
      },
      resizable: false,
      draggable: false,
      buttons: {
         'Close': function(){
            $(this).dialog('close');
         }
      }
   });



   $('#reporttable').dataTable({
      "bAutoWidth": false,
      //                                 "bProcessing": true,
      "aoColumns": [null,null,null,null,null,null,{
         "bSortable": false
      }]

   });


   admin_ui_delegationbind('click', '.permissionstable input:checkbox', function (e) {
      $("input[name='setadvpermissions']").val(true);
      var isChecked = $(e.target).attr("checked");
      if(isChecked == '')
      {
         $(e.target).parent().siblings().children('.fullcontrol').attr("checked", '');
      }
   });

   $('.ui-tabs-disabled').fadeTo('normal', 0.35);


   $('.editable').focus(function (e){
      if(!$(e.target).parent().parent().hasClass('multiplefield')){
         var phrasename = $(e.target).closest('.adminrow').attr('id').replace(/row$/g, '');
         if($('#' + phrasename + 'helptext').text().length > 0)
         {
            admin_ui_changehelp($('#' + phrasename + 'helptext').text());
         }
      }
      if($(e.target).hasClass('disabled')){
         return;
      }
      if(ckeditor){
         // set the global variable that will trigger creating a new editor
         // while it's destroying the current instance
         ck_new_idname = $(e.target).attr("id");
      }else{
         admin_ui_createeditor($(e.target).attr("id"));
      }
   });

   $('.editable a').attr('target', '_blank');

   if(!$('#quicksearchfield').attr('disabled')){
      $('#quicksearchfield').autocomplete({
         source: function(request, response) {
            $.ajax({
               url: 'index.php',
               dataType: 'jsonp',
               data: {
                  p: request_p,
                  f: 'search',
                  searchtype: 'json',
                  q: request.term
               },
               success: function(data) {
                  response($.map(data.results, function(item) {
                     return {
                        label: item.string,
                        value: item.string,
                        id: item.id
                     }
                  }))
               }
            })
         },
         minLength: 2,
         select: function(event, ui) {
            if(ui.item.id){
               location.href = 'index.php?p='+request_p+'&id=' + ui.item.id;
            }
         },
         open: function() {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
         },
         close: function() {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
         }
      });
   }

   if(jQuery.browser.msie && jQuery.browser.version < 7.0)
   {
      $('#modulemain').bgiframe();
   }

   setupRelationFields();
}

$(function () {

   admin_ui_init();
      
});

