/* JavaScript for DecentURL.com */

var ajaxTimeout = null;
var defaultInfo = "&nbsp;";

function ajaxGet(url, handler) {
  var req = null;
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (err1) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (err2) {
      }
    }
  }
  if (!req) {
    alert('Browser does not support Ajax!');
    return false;
  }
  req.onreadystatechange = function() { handler(req); };
  req.open('GET', url, true);
  req.send(null);
  ajaxTimeout = setTimeout(function() { timeoutHandler(req); }, 10000);
  return req;
}

function timeoutHandler(req) {
  req.abort();
  var info = document.getElementById('titleinfo');
  info.innerHTML = defaultInfo;
}

var lastTitle = '';

function ajaxHandler(req) {
  if (req.readyState == 4) {
    clearTimeout(ajaxTimeout);
    ajaxTimeout = null;
    var info = document.getElementById('titleinfo');
    info.innerHTML = defaultInfo;
    var stat;
    try {
      stat = req.status;
    } catch (err1) {
      stat = 500;
    }
    if (stat == 200) {
      var data;
      try {
        eval("data = " + req.responseText);
      } catch (err2) {
        data = ['err', ''];
      }
      if (data[0] == 'ok') {
        var title = document.getElementById('title');
        if (title.value === '' || title.value == lastTitle) {
          lastTitle = data[2];
          title.value = lastTitle;
        }
      }
    }
  }
}

var changeTimeout = null;
var lastUrl = null;

function grabTitle() {
  changeTimeout = null;
  var title = document.getElementById('title');
  if (title.value !== '' && title.value != lastTitle) { return; }
  var ugly = document.getElementById('ugly');
  if (ugly.value === '') { return; }
  var info = document.getElementById('titleinfo');
  info.innerHTML = 'grabbing title ...';
  lastUrl = ugly.value;
  ajaxGet(configRoot + 'api-title?l=36&u=' + encodeURIComponent(lastUrl), ajaxHandler);
}

function urlChanged(input) {
  var url = input.value;
  if (url === '' || url == lastUrl) { return; }
  if (!url.match(/^\s*([a-z][-+.a-z0-9]*:\/\/)?(.+\.[a-z0-9]{1,6})|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(:\d{1,5})?(\/.*)?$/i)) {
    return;
  }
  var title = document.getElementById('title');
  if (title.value !== '' && title.value != lastTitle) { return; }
  if (changeTimeout) { clearTimeout(changeTimeout); }
  changeTimeout = setTimeout(grabTitle, 600);
}

function copyText(text) {
  /* Thanks http://www.jeffothy.com/weblog/clipboard-copy/ */
  var copier = document.getElementById('copier');
  if (!copier) {
    copier = document.createElement('div');
    copier.id = 'copier';
    document.body.appendChild(copier);
  }
  copier.innerHTML = '';
  copier.innerHTML = '<embed src="' + configStatics + 'clipboard.swf" FlashVars="clipboard=' + escape(text) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
}

function copyMyurl(text, anchor) {
  copyText(text);
  anchor.innerHTML = 'copied';
}

function copyUrl(text, button) {
  copyText(text);
  button.innerHTML = 'Copied! Press Ctrl+V to paste it.';
}
