dojo.require("dojo.io.*");
dojo.require("dojo.io.ScriptSrcIO");

function query_url(query, target) {
  var loc = document.location;
  return loc.protocol + "//" + loc.host + loc.pathname + "?q=" + query  + "&d=" + target;
}


function plusbutton(query, target) {
  var button = "<div id=plusone-cnt><div id='plusone-share'><g:plusone href='" + query_url(query, target) +"'></g:plusone></div></div>";
  return button;
}

function tweetbutton(query, target) {
  var m = target == "en" ? "English" : "Catalan";
  var tweet = "I found the " + m + " for '" + escape(query) + "' using";
  return "<iframe allowtransparency='true' frameborder='0' scrolling='no' src='http://platform.twitter.com/widgets/tweet_button.html?text="+escape(tweet)+"&url=" + escape(query_url(query, target)) + "' style='width:80px; height:20px;'></iframe>";

}


function likebutton(query, target) {

  return "<iframe src='http://www.facebook.com/plugins/like.php?href=" + escape(query_url(query, target)) + "&amp;send=false&amp;layout=button_count&amp;width=45&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=35' scrolling='no' frameborder='0' style='border:none; overflow:hidden; width:80px; height:35px; display:block;' allowTransparency='true'></iframe>"
}

function buildbuttons(q, target) {
    return plusbutton(q, target) + tweetbutton(q, target) + likebutton(q, target);
}

function renderButtons(target) {
  gapi.plusone.go("dresult_fc");
}

function show(data) {
  regexp = new RegExp("name=\"(.*?)\"")
  if (cancel != undefined) {
    cancel(); // kill auto complete
  }
  var div = dojo.byId("dresult_fc");
  var query = dojo.byId("word_fc").value;
  var output = "";
  var m = messages;
  _gaq.push(['_trackPageview', document.location.pathname + "async_lookup/" + query]); 
  if (data.conj) {
    output += data.conj;
    output += "<div id='share' style='margin-top:-120px'>";
    output += buildbuttons(query, "en");
    output += "</div>";
  } else {
    if (data.ce.length == 0 && data.ec.length == 0) {
      output = m.nohits;
      try{
       var pageTracker = _gat._getTracker("UA-72711-1");
       pageTracker._trackEvent('search', 'not_found', query);
       if (m.suggest && m.suggest != "") {
         skin['HEADER_TEXT'] = m.suggest;
       }
      } catch(err) {}  
    } else {
      try{
       var pageTracker = _gat._getTracker("UA-72711-1");
       pageTracker._trackEvent('search', 'found', query);
       if (m.improve && m.improve != "") {
         skin['HEADER_TEXT'] = m.improve;
       }
      } catch(err) {}  
    }
    if (data.ec.length > 0) {
      output += "<h3>" + m.ec +"</h3>";
    }
    for (i = 0; i < data.ec.length; ++i) {
      var match = regexp.exec(data.ec[i]);
      output += "<div id='share'>";
      output += buildbuttons(match[1], "en");
      output += "</div>";

      output += data.ec[i];
      output += "<br>";
    }
    if (data.ce && data.ce.length > 0) {
      output += "<h3>" + m.ce +"</h3>"
    }
    for (i = 0; i < data.ce.length; ++i) {
      var match = regexp.exec(data.ce[i]);
      output += "<div id='share'>";
      output += buildbuttons(match[1], "ca");
      output += "</div>";

      output += data.ce[i];
      output += "<br>";
    }
  }
  div.innerHTML =  output;
  renderButtons();
}

function lookup() {
  var div = dojo.byId("dresult_fc");
  div.innerHTML = messages.look;
  dojo.io.bind({
    url: "http://ibiblio.org/dacco/cgi-bin/json.py",
    transport: "ScriptSrcTransport",
    jsonParamName: "callback",
    load: function(type, data, event, kwArgs){show(data)},
    mimetype: "application/json",
    timeout: function() {
      dojo.byId("dresult_fc").innerHTML = messages.error
      _gaq.push(['_trackPageview', document.location.pathname + "async_lookup_timeout"]); 
    },
    formNode: dojo.byId("inlinesearch_fc"),
    timeoutSeconds: 10 //The number of seconds to wait until firing timeout callback in case of timeout.
  });
  return false;
}

function conjugate() {
  var div = dojo.byId("dresult_fc");
  div.innerHTML = messages.look;
  dojo.io.bind({
    url: "http://www.catalandictionary.org/en/conjugator/conj_json.php",
    transport: "ScriptSrcTransport",
    jsonParamName: "callback",
    load: function(type, data, event, kwArgs){show(data)},
    mimetype: "application/json",
    timeout: function() {
      dojo.byId("dresult_fc").innerHTML = messages.error
      _gaq.push(['_trackPageview', document.location.pathname + "async_conjugate_timeout"]); 
    },
    formNode: dojo.byId("inlinesearch_fc"),
    timeoutSeconds: 10 //The number of seconds to wait until firing timeout callback in case of timeout.
  });
  return false;
}

