var t = null;							// Universal Timer

$().ready(function () {
  if ($('.user-class-1').length || !$('#menu li').length) $('.help-link').remove();
  manageDialogBox('#bookmarkDialog', '#bookMarkTrigger', 'MyBookmarks.aspx?1=1', '#contentBookmarkDialog')
  manageDialogBox('#searchDialog', '#searchTrigger', 'MySearch.aspx?1=1', '#contentSearchDialog')
  confirmBookmark();
  confirmSaveSearch();
  confirmDialog();
  confirmZoomImage();
  setupZoom();
  setupUpgrade();
  $('#quicksearch-text').focus(function () {
    if (this.value == 'Enter search terms') {
      this.value = '';
    }
  });
});

function registerDialogOpener(trigger, dialog) {
  $(trigger).click(function(){$(dialog).dialog('open');return false;});
}

function setupDialog(dialog, trigger, options) {
  var theoptions = {
    autoOpen: false,
    modal: true,
    show: 'fade',
    hide: 'fade',
		minWidth: 370,
		minHeight: 255,
		maxWidth: 800,
		maxHeight: 800,
    position: ['center','center']
  };
  $.extend(theoptions, options);
  $(dialog).dialog(theoptions);
  if (trigger)
    registerDialogOpener(trigger,dialog);
}

function manageDialogBox(dialog, trigger, ajaxUrl, ajaxTarget) {
	setupDialog(dialog, trigger, 
    {
      open: function(){$(ajaxTarget).load(ajaxUrl + '&hash=' + Math.random() + ' #mainTable2');}
    } 
  );
}

function confirm(msg,callback) {
  $('#confirm')
    .dialog('open')
    .find('p.jqmConfirmMsg')
      .html(msg)
    .end()
    .find(':button:visible')
      .one('click', function () {
        if (this.value == 'Yes') {
          if (typeof callback == 'string')
            window.location.href = callback;
          else
            callback();
        }
        $('#confirm').dialog('close');
      });
}

function confirmDialog() {
  setupDialog('#confirm');
  $('a.confirm').click(function() {
    confirm('You are about to logout from ACH Rules Online.', 'index.aspx?logout='); 
    return false;
  });
}

function confirmBookmark() {
  setupDialog('#nameBookmark', '#bookmark', {
    open: function () {
      var page = parseInt($('#bookmark')[0].hash.match(/\d+/)[0]);
      var lastpage = 0;
      var options = [];
      $('#navigatorBody a').each(function () {
        var mypage = parseInt(this.hash.match(/\d+/)[0]);
        if (mypage > page)
          return false;
        if (mypage <= page) {
          if ((mypage > lastpage || mypage < page) && options.length)
            options = [];
          options.push({
            value: this.id.substring(1),
            text:
              (new Array($(this).parents('li').length).join('&nbsp;&nbsp;')) // produces (length -1)*2 spaces
              + $(this).text()
          });
          lastpage = mypage;
        }
      });
      $('#sectionBookmarkField option').remove();
      $.each(options, function (i, opt) {
        $('#sectionBookmarkField').append($('<option/>').attr('value', opt.value).html(opt.text));
      });
      $(this).dialog('option', 'width', $('#sectionBookmarkField')[0].offsetWidth + 22);
    },
    buttons: {
      Add: function () {
        var query = '';
        var name = $('#titleBookmarkField').attr('value');
        var doc = $('#sectionBookmarkField').val();
        if (!doc) {
          alert("Didn't get current document. Please try again.");
          return;
        }
        var trimmed = name.replace(/^\s+|\s+$/g, '');
        var page = $('#CurrentPage').val();
        if (!page) {
          alert("Didn't get current page. Please try again.");
          return;
        }

        if (trimmed == '') {
          alert('Please enter a name for the bookmark.');
          return;
        }
        query = 'MyBookmarks.Status=AddBookmark&MyBookmarks.Name=' + escape(trimmed) + '&MyBookmarks.DocumentID=' +
          doc + '&MyBookmarks.Page=' + page;
        $.post('MyBookmarks.aspx', query, function (data) { $('#nameBookmark').dialog('close'); });
        $(this).dialog('close');
      },
      Cancel: function () { $(this).dialog('close'); }
    }
  });
}

function confirmZoomImage() {
  setupDialog('#nameZoomImage', null, {maxWidth: 1180, maxHeight: 710});
}

/*****************************************************************************
 * manage SaveSearch box 
 *****************************************************************************/
function confirmSaveSearch() {

  setupDialog('#nameSaveSearch', '#saveSearch', {
    buttons: { Save: 
      function(){
		    var query = '';
		    var name = $('#titleSaveSearchField').attr('value');
		    var trimmed = name.replace(/^\s+|\s+$/g, '');
		
		    if (trimmed == ''){
			    alert('Please enter a name of the search');
			    return;
		    }
		    query = getSaveSearchQueryString();
		    if (query == ''){
			    alert('Bad search parameters');
			    $(this).dialog('close');
			    return;
		    }
		    $.post('search.aspx', query, function (data){$('#nameSaveSearch').dialog('close');});
      }
    },
    Cancel: function (){$(this).dialog('close');}
  });
}


function getSaveSearchQueryString(){
	var str = '';
	str += getSaveSearchValue('AllWords');
	str += getSaveSearchValue('Phrase');
	str += getSaveSearchValue('OneOfWords');
	if (str == '') return str;
	str += getSaveSearchValue('NoneWords');
	str += getSaveSearchValue('SectionTypeID');
	str += 'SearchForm.Name=' + $('#titleSaveSearchField').attr('value') + '&';
	str += 'SearchForm.Status=SaveSearch';
	return str;
}

function getSaveSearchValue(paramId){
	var val = document.getElementById('SaveSearch.'+paramId).value;
	if ((val != null) && (val != ''))
		return 'SearchForm.' + paramId + '=' + val + '&';
	else
		return '';
}

function deleteBookmark(BookmarkID) {
  $("#contentBookmarkDialog").load(
    'MyBookmarks.aspx #mainTable2',
    { 'MyBookmarks.Status': 'DeleteBookmark', 'MyBookmarks.DeleteBookmarkID': BookmarkID }
  );
}

function deleteSearch(SearchID) {
  $("#contentSearchDialog").load('MySearch.aspx #mainTable2', { 'MySearch.DeleteSearchID': SearchID });
}

function setupZoom() {
  setupDialog('#nameZoomImage', null, { width: 710, height: 500, position: ['center', 70] });
}

function setupUpgrade() {
  setupDialog('#upgrade', '#upgradeTrigger');
}
