/*extern ufJS, ufJSActions, ufJSParser, openUILink */
/*
Danish User Script version 2
To be used with the Operator extension for Firefox
Adds support for the danish blogosphere + maps services
Based on code from the Operator extension created by Michael Kaply, IBM, http://www.kaply.com/weblog/
Modified by Pelle Wessman, Pelles kodfabrik, http://kodfabrik.se/
Modfied by Soren Johannessen http://www.microformats.dk/ (2007-04-25)
Upgraded to now work with Operator 0.8  (2007-06-05) - Many thanks to  Michael Kaply for taking your time to fix this User Script
Other Operator 0.8 User Scripts see http://www.kaply.com/weblog/operator-user-scripts/ 
2007-06-30 - Now added with map services Google Maps Denmark, Findvej.dk and Eniro Denmark. 
*/

function dk_init() {
  
  var overskrift = {
    description: "Find interessante blogs på overskrift.dk",
    icon: "http://overskrift.dk/favicon.ico",
    pkUrl: "http://overskrift.dk/tag/",
    pkUrl2 : "",
    scope: {
      semantic: {
        "tag" : "tag"
      }
    },
    doAction: function(semanticObject, semanticObjectType) {
      if (semanticObject.tag) {
        return this.pkUrl + encodeURIComponent(semanticObject.tag.replace(/\+/, ' ')) + this.pkUrl2;
      }
    },
    clone: function(){
      var newObject = new this.constructor();
      newObject.__proto__ = this;
      return newObject;
    }
  };
  
  var mitkbh = overskrift.clone();
  mitkbh.description = "Søg på  MitKBH";
  mitkbh.icon = "http://mitkbh.dk/favicon.ico";
  mitkbh.pkUrl = "http://mitkbh.dk/search.php?search=";
  
  var kbhrundt = overskrift.clone();
  kbhrundt.description = "Søg på KBH360";
  kbhrundt.icon = "";
  kbhrundt.pkUrl = "http://kbh360.dk/search.php?search=";
  
  var hq = overskrift.clone();
  hq.description = "Find fotos på 23 Home";
  hq.icon = "http:/23hq.com/favicon.ico";
  hq.pkUrl = "http://23hq.com/tag/";
  
  
  var computerworld = overskrift.clone();
  computerworld.description = "Find det samme emne på ComputerWorld";
  computerworld.icon = "";
  computerworld.pkUrl = "http://computerworld.dk/tag/";
  
  SemanticActions.add("overskrift_search_tags", overskrift);
  SemanticActions.add("mitkbh_search_tags", mitkbh);
  SemanticActions.add("kbhrundt_search_tags", kbhrundt);
  SemanticActions.add("hq_search_tags", hq);
  SemanticActions.add("computerworld_dk_search_tags", computerworld);
}


var google_maps_danmark = {
  description: "Find på Google Maps Danmark",
  shortDescription: "Google Maps Danmark",
  icon: "http://maps.google.dk/favicon.ico",
  scope: {
    semantic: {
      "geo" : "geo",
      "adr" : "adr"
    }
  },
  doAction: function(semanticObject, semanticObjectType) {
    var url;
    if ((semanticObjectType == "hCard") || (semanticObjectType == "adr")) {
      var adr;
      if (semanticObjectType == "hCard") {
        adr = semanticObject.adr[0];
      } else {
        adr = semanticObject;
      }
      if (adr) {
      	return this.pkAdr(adr);
      }
    } else if (semanticObjectType == "geo") {
      if (semanticObject.latitude && semanticObject.longitude) {
        return this.pkGeo(semanticObject);
      }
    }
  },
  pkAdr: function(adr) {
    var url = "http://maps.google.dk/maps?q=";
    if (adr["street-address"]) {
      url += adr["street-address"].join(", ");
      url += ", ";
    }
    if (adr["postal-code"]) {
      url += adr["postal-code"];
      url += ", ";
    }
    if (adr.region) {
      url += adr.region;
      url += ", ";
    }
    if (adr.locality) {
      url += adr.locality;
      url += ", ";
    }
    if (adr["country-name"]) {
      url += adr["country-name"];
    }
    if (url.lastIndexOf(", ") == (url.length - ", ".length)) {
      url = url.substring(0, url.lastIndexOf(", "));
    }
    return url;
  },
  pkGeo: function(semanticObject) {
  	return "http://maps.google.dk/maps?ll=" + semanticObject.latitude + "," + semanticObject.longitude + "&q=" + semanticObject.latitude + "," + semanticObject.longitude;
  },
  pkClone: function(){
    var newObject = new this.constructor();
    newObject.__proto__ = this;
    return newObject;
  }
};
SemanticActions.add("google_maps_danmark", google_maps_danmark);


var findvej = google_maps_danmark.pkClone();
findvej.description = "Find på Findvej.dk";
findvej.shortDescription = "Findvej.dk";
findvej.icon = "http://www.findvej.dk/findvej.ico";
findvej.pkGeo = function(semanticObject) {
  	return "http://www.findvej.dk/?zoom=16&maptype=1" + "&longitude=" + semanticObject.longitude + "&latitude=" + semanticObject.latitude;
};
findvej.pkAdr = function(adr) {
    var url = "http://www.findvej.dk/";
    if (adr["street-address"]) {
      url += adr["street-address"].join(", ");
      url += ", ";
    }
    if (adr["postal-code"]) {
      url += adr["postal-code"];
      url += ", ";
    }
    if (adr.region) {
      url += adr.region;
      url += ", ";
    }
    if (adr.locality) {
      url += adr.locality;
      url += ", ";
    }
    if (adr["country-name"]) {
      url += adr["country-name"];
    }
    if (url.lastIndexOf(", ") == (url.length - ", ".length)) {
      url = url.substring(0, url.lastIndexOf(", "));
    }
    return url;
};
SemanticActions.add("findvej", findvej);

var eniro = google_maps_danmark.pkClone();
eniro.description = "Find på Eniro";
eniro.shortDescription = "Eniro";
eniro.icon = "http://kort.eniro.dk/favicon.ico";
eniro.pkGeo = function(semanticObject) {
  	return "http://kort.eniro.dk/query?what=map&mapstate=4;" + semanticObject.longitude + ";" + semanticObject.latitude;
};
eniro.pkAdr = function(adr) {
    var url = "http://kort.eniro.dk/query?what=map&mop=aq&geo_area=";
    if (adr["street-address"]) {
      url += adr["street-address"].join(", ");
      url += ", ";
    }
    if (adr["postal-code"]) {
      url += adr["postal-code"];
      url += ", ";
    }
    if (adr.region) {
      url += adr.region;
      url += ", ";
    }
    if (adr.locality) {
      url += adr.locality;
      url += ", ";
    }
    if (adr["country-name"]) {
      url += adr["country-name"];
    }
    if (url.lastIndexOf(", ") == (url.length - ", ".length)) {
      url = url.substring(0, url.lastIndexOf(", "));
    }
    return url;
};
SemanticActions.add("eniro", eniro);




dk_init();




