﻿
tagEditor = 
{
  tagInput  : null,
  pid       : null,
  origTags  : null,
  
  init : function(originalTags, existingTagList, tagInputId, pid)
  {
    this.origTags = originalTags;
    this.tagInput = $('#' + tagInputId);
    this.pid = pid;
    
    setGlobalTags(eval('(' + existingTagList + ')'));

    $('#tagTip').hover(
      function() {
        ShowContent('tagTipContent');
      },
      function() {
        HideContent('tagTipContent');
      }
    );

    $(function () {
      tagEditor.tagInput.tagSuggest();
    });
  },

  handleOpen : function(popup)
  {
    //reset form
    $('#editTagsMessage').html('');
    tagEditor.tagInput.removeClass('invalid');
    disableButton('saveTagsButton');
    tagEditor.tagInput.val(this.origTags);    // Repopulate with original tags

    //centering with css
    popup.centerPopup();
		
    //load popup
    popup.loadPopup();
  },
  
  postInit : function(popup)
  {
    $('#saveTagsButton').bind('click', {popup: popup}, tagEditor.saveTags);
    tagEditor.tagInput.bind("keypress", {popup: popup}, tagEditor.keyDownSubmitCheck);
  },

  postLoad : function(popup)
  {
    tagEditor.tagInput.focus();
    //setCaretToPos(tagEditor.tagInput[0], tagEditor.tagInput.val().length);
    tagEditor.tagInput.setCursorPosition(tagEditor.tagInput.val().length);
  },
  
  keyDownSubmitCheck : function(event) 
  {
    if (!isEnabled('saveTagsButton'))
    {
      enableButton('saveTagsButton');
    }
    
    var popup = event.data.popup;

    if(event.keyCode == 13 && popup.popupStatus == 1)
    {
      tagEditor.saveTags(event);
      event.preventDefault();
    }
  },

  saveTags : function(event)
  {
    var popup = event.data.popup;

    //Validation
    var msg = '';
    tagEditor.tagInput.removeClass('invalid');

    if ($.trim(tagEditor.tagInput.val()).length == 0) {
      msg += 'No tags specified.<br />';
      tagEditor.tagInput.addClass('invalid');
    }

    if (msg.length > 0) {
      $('#editTagsMessage').html(msg);
      return;
    }

    // Reset/lock down form
    $('#editTagsMessage').html('');
    disableButton('saveTagsButton');


    $.ajax({
      type: "POST",
      url: $currentPageName + "/SaveTags",
      data: "{ 'pid': '" + tagEditor.pid + "', 'tags': '" + tagEditor.tagInput.val() + "', 'tagsRequired': true }",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(result) {
        if (result.d.ErrorMessages && result.d.ErrorMessages.length > 0)
        {
          $('#editTagsMessage').html(result.d.ErrorMessages[0]);
          enableButton('saveTagsButton');
        }
        else 
        {
          if (result.d.Value == 'OK')
          {
            location.reload();
          }
          else
          {
            popup.disablePopup();
          }
        }
        
      },
      error: function(result) {
        $('#editTagsMessage').html(result.status + ' ' + result.statusText);
      }
    });

  }

}


var cX = 0; var cY = 0; var rX = 0; var rY = 0;
function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}
function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}
if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
else { document.onmousemove = UpdateCursorPosition; }
function AssignPosition(d) {
if(self.pageYOffset) {
	rX = self.pageXOffset;
	rY = self.pageYOffset;
	}
else if(document.documentElement && document.documentElement.scrollTop) {
	rX = document.documentElement.scrollLeft;
	rY = document.documentElement.scrollTop;
	}
else if(document.body) {
	rX = document.body.scrollLeft;
	rY = document.body.scrollTop;
	}
if(document.all) {
	cX += rX; 
	cY += rY;
	}
d.style.left = (cX+10) + "px";
d.style.top = (cY+10) + "px";
}
function HideContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.display = "none";
}
function ShowContent(d) {
if(d.length < 1) { return; }
var dd = document.getElementById(d);
AssignPosition(dd);
dd.style.display = "block";
}
function ReverseContentDisplay(d) {
if(d.length < 1) { return; }
var dd = document.getElementById(d);
AssignPosition(dd);
if(dd.style.display == "none") { dd.style.display = "block"; }
else { dd.style.display = "none"; }
}

