String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

function focusField(name) {
   document.forms[0].elements[name].focus();
}

var ajaxRequest;
function makeAjaxRequest(url, callback) {
   if (window.XMLHttpRequest) {
      ajaxRequest = new XMLHttpRequest();
   } else if (window.ActiveXObject) {
      ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
   }

   ajaxRequest.open("GET", url, true);
   ajaxRequest.onreadystatechange = callback;
   ajaxRequest.send(null);
}

function publishNewsItem(newsId) {
   makeAjaxRequest("ajax.ajax?action=publish&id=" + newsId, updateNewsListing);
}

function hideNewsItem(newsId) {
   makeAjaxRequest("ajax.ajax?action=hide&id=" + newsId, updateNewsListing);
}

function showNewsItem(newsId) {
   makeAjaxRequest("ajax.ajax?action=show&id=" + newsId, updateNewsListing);
}

function deleteNewsItem(newsId) {
   makeAjaxRequest("ajax.ajax?action=delete&id=" + newsId, updateNewsListing);
}

function moveItemUp(newsId) {
   makeAjaxRequest("ajax.ajax?action=moveUp&id=" + newsId, updateNewsListing);
}

function moveItemDown(newsId) {
   makeAjaxRequest("ajax.ajax?action=moveDown&id=" + newsId, updateNewsListing);
}

function updateNewsListing() {
   if (ajaxRequest.readyState == 4) {
      if (ajaxRequest.status == 200) {
         var xmlResponse = ajaxRequest.responseXML;
         var dataXmlItems = xmlResponse.getElementsByTagName("html");
         if (dataXmlItems.length > 0) {
            var newsListingContainer = document.getElementById("newsListing");
            newsListingContainer.innerHTML = dataXmlItems[0].firstChild.data;
         } else {
            var errorXmlItems = xmlResponse.getElementsByTagName("error");
            alert(errorXmlItems[0].firstChild.data);
         }
      } else {
         alert("Cannot load data!");
      }
   }
}

function hideOrDisplay(switchElement, focusId, blockId) {
   if (switchElement.checked) {
      document.getElementById(blockId).style.display = "";
      var focusEl = document.getElementById(focusId);
      if (focusEl) {
         focusEl.focus();
      }
   } else {
      document.getElementById(blockId).style.display = "none";
   }
}

function help(id) {
   var helpElement = document.getElementById(id);
   if (helpElement.style.display == "block") {
      helpElement.style.display = "none";
   } else {
      helpElement.style.display = "block";
   }
}

var currentFeed;
function selectNewsFeed(msg, element) {

    var tname = element.value;
    if (tname == '') {
        // create new feed
        name = prompt(msg, '');

        if (name != null) {
            makeAjaxRequest("ajax.ajax?action=createFeed&name=" + name, processCreateFeed);
        } else {
            // cancel
            element.value = currentFeed;
        }

    } else {
        var url = document.location.href;

        // in ".../newsinjector/x/config.html" replace x by new tname
        var ind = url.lastIndexOf("/");
        var page = url.substring(ind);
        url = url.substring(0, ind);
        ind = url.lastIndexOf("/") + 1;
        if (page.indexOf("/editNewsItem.html") == 0) {
            page = "/list.html"
        }
        url = url.substring(0, ind) + tname + page;

        document.location.href = url;
    }
}

function processCreateFeed() {
    if (ajaxRequest.readyState == 4) {
        if (ajaxRequest.status == 200) {
            var xmlResponse = ajaxRequest.responseXML;
            var errorXmlItems = xmlResponse.getElementsByTagName("error");
            if (errorXmlItems.length > 0) {
                alert(errorXmlItems[0].firstChild.data);
                document.getElementById('feedSelection').value = currentFeed;
            } else {
                // feed has been successfully created - show configuration page
                var dataItems = xmlResponse.getElementsByTagName("data");
                var feedUrl = dataItems[0].firstChild.data;
                document.location.href = feedUrl +  '/configuration.html';
            }
        } else {
            alert("Cannot load data!");
        }
    }
}

function deleteFeed(msg) {
    if (confirm(msg)) {
        document.location.href="delete.do";
    }
}
