﻿<?xml version="1.0" encoding="UTF-8"?>
<Module>
 <ModulePrefs 
 title="Share It"
 description="Enable your visitors to easily share your blog posts on their favorite social networks."
 author="Barry Welch @ Daring Labs"
 author_email="btwelchy@gmail.com"
 thumbnail="http://fcgadgets.appspot.com/images/shareit_screen_tf.jpg"
 screenshot="http://fcgadgets.appspot.com/images/shareit_screen_tf.jpg">
   <Require feature="opensocial-0.8"/>
   <Require feature="views"/>
   <Require feature="dynamic-height"/>
   <Require feature="skins"/>
 </ModulePrefs>
 <Content type="html">
 <![CDATA[

<style type="text/css">
 {
   font-family: arial,sans-serif;
   overflow-y: hidden;
   overflow-x: hidden;
   background-color: transparent;
 }
 body{
   background-color: transparent;
 }
 .infotext{
   color: gray;
 }
 .smalltext{
   font-size: 11px;
 }
 .medsmalltext{
   font-size: 10px;
 }
 .medtext{
   font-size: 12px;
 }
 .largetext{
   font-size: 17px;
 } 
 a:link {
   color: #2A5DB0;
 }
 a:visited {
   color: #2A5DB0;
 }
 a:hover {
   color: #2A5DB0;
   background-color: #ffffff;
   text-decoration: none;
 }
 a:active { 
   color: #2A5DB0;
 }
 </style>

<div id='app_wide' style='overflow: hidden;'>
  <div id="canvas_app" style='background-color: white;'>
    <div id='list_view' class='medtext'>
      <div id='content' style='background-color: white; overflow: auto; padding: 4px;'>
      </div>
    </div>

    <div class='medsmalltext' style='border-top: 1px solid #ccc; background-color: #e0ecff; height: 20px;'>
      <div id='paging_controls' style='overflow: hidden; padding: 2px 0px 4px 6px;'>
      </div>
    </div>
  </div>
</div>

<script type="text/javascript">
 var caller_url = null;
 var common_page_data_key = null;
 var community = null;
 var base_url = "http://fcgadgets.appspot.com/";
 var share_schema = ["pageurl", "type", "count"];
  
 var req_params = {};
 req_params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM;
 req_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
 req_params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.NONE;

_IG_RegisterOnloadHandler(function() {
   adjh();
   
   var gadget_prefs = new gadgets.Prefs();
   var params = gadgets.views.getParams();

   app_lang = gadget_prefs.getLang();
   app_domain = opensocial.getEnvironment().getDomain();
   caller_url = get_caller_url();

   // Get the community for now, use it later
   var req = opensocial.newDataRequest();
   var opt_params = {};
   req.add(req.newFetchPersonRequest('OWNER', opt_params), 'community');
   req.send(function(dataResponse){
     community = dataResponse.get("community").getData();
   });
   
   renderWithoutCount();
});

 function renderWithoutCount(){
    var title = "Check out this site";
    var link = escape(caller_url);
   
    var fb_url = "http://www.facebook.com/share.php?u="+link+"&t="+title;
    var tw_url = "http://twitter.com/home?status="+title+":%20"+link;

    var html = new Array();
   
    html.push("<div>");
    html.push("  <table cellspacing=0 cellpadding=0 style='width: 100%;'>");
    html.push("    <tr>");
    html.push("      <td class='medtext' style='width: 20px; vertical-align: middle; text-align: left;'>");
    html.push("        <a href=\"" + fb_url + "\" target=\"_blank\" onclick=\"share('facebook')\" >");
    html.push("          <img src='"+gadgets.io.getProxyUrl('http://fcgadgets.appspot.com/images/facebook.gif')+"' style='width: 20px; height: 20px; margin-right: 4px; border: 0px solid #ccc;' />");
    html.push("        </a>");
    html.push("      </td>");
    html.push("      <td class='medtext' style='vertical-align: middle; text-align: left;'>");
    html.push("        <a href=\"" + fb_url + "\" target=\"_blank\" onclick=\"share('facebook')\" >");
    html.push("          Share this on Facebook");
    html.push("        </a>");
    html.push("      </td>");
    html.push("    </tr>");
    html.push("  </table>");
    html.push("</div>");

    html.push("<div style='margin-top: 3px;'>");
    html.push("  <table cellspacing=0 cellpadding=0 style='width: 100%;'>");
    html.push("    <tr>");
    html.push("      <td class='medtext' style='width: 20px; vertical-align: middle; text-align: left;'>");
    html.push("        <a href=\"" + tw_url + "\" target=\"_blank\" onclick=\"share('twitter')\" >");
    html.push("          <img src='"+gadgets.io.getProxyUrl('http://fcgadgets.appspot.com/images/twitter.gif')+"' style='width: 20px; height: 20px; margin-right: 4px; border: 0px solid #ccc;' />");
    html.push("        </a>");
    html.push("      </td>");
    html.push("      <td class='medtext' style='vertical-align: middle; text-align: left;'>");
    html.push("        <a href=\"" + tw_url + "\" target=\"_blank\" onclick=\"share('twitter')\" >");
    html.push("          Tweet this");
    html.push("        </a>");
    html.push("      </td>");
    html.push("    </tr>");
    html.push("  </table>");
    html.push("</div>");

    html.push("<div id='sharecount'>");
    html.push("  <div class='smalltext infotext' style='margin-top: 6px;'>");
    html.push("    <a href=\"Javascript:void(0)\" onclick=\"show_stats();\" style='text-decoration: none;'>View stats</a>");
    html.push("  </div>");
    html.push("</div>");

    getElem('content').innerHTML=html.join("");
    
    html = new Array();
    var randomize = Math.random()*10;
    if(randomize > 5){
      html.push("<a href=\"http://www.appointron.com/appointron-for-blogger?utm_source=shareit&utm_medium=text_ad&utm_content=textad&utm_campaign=shareit\" target=\"_blank\" title=\"New Gadgets\"><img src='"+gadgets.io.getProxyUrl('http://fcgadgets.appspot.com/images/information.png')+"' style='border: 0px; margin-bottom: -4px;' /> (NEW) Appointment gadget &gt;&gt;</a>");
    //} else if(randomize > 0){
    //  html.push("<a href=\"http://www.shareitpro.com\" target=\"_blank\" title=\"Get more shares on Facebook and Twitter\"><img src='"+gadgets.io.getProxyUrl('http://fcgadgets.appspot.com/images/information.png')+"' style='border: 0px; margin-bottom: -4px;' /> [NEW!] Try Share It-Pro &gt;&gt;</a>");
    } else {
      html.push("<a href=\"http://fcgadgets.blogspot.com/\" target=\"_blank\"><img src='"+gadgets.io.getProxyUrl('http://fcgadgets.appspot.com/images/information.png')+"' style='border: 0px; margin-bottom: -4px;' /> Get more gadgets for your site</a>");
    }
    getElem('paging_controls').innerHTML=html.join("");

    adjh();

    if(caller_url != null && caller_url.indexOf("www.blogger.com") != -1){
      var html = new Array();
      html.push("<div class='medtext' style='margin-top: 15px;'>");
      html.push(" <h4 style='color: #555; margin-top: 2px; margin-bottom: 2px;'>You might also like...</h4>");
      html.push(" <table cellspacing=5 cellpadding=0 style='width: 250px;'>");
      html.push("  <tr>");
      html.push("   <td style='text-align: center;'>");
      html.push("    <a href='http://www.blogger.com/add-gadget?url=http%3a%2f%2fmobilemetrics.appspot.com%2fge%2fxml%3fak%3dappointments' target='_blank'><img src='http://appointron.appspot.com/images/badge-blogger.png' style='border: 0px; height: 50px;' /></a>");
      html.push("   </td>");
      html.push("   <td class='medtext' style='text-align: center;'>");
      html.push("    <a href='http://www.blogger.com/add-gadget?url=http%3a%2f%2fmobilemetrics.appspot.com%2fge%2fxml%3fak%3dappointments' target='_blank'>Take appointments right from your blog</a>");
      html.push("   </td>");
      html.push("  </tr>");
      html.push("  <tr style='height: 5px;'>");
      html.push("   <td style='height: 5px;'></td>");
      html.push("   <td style='height: 5px;'></td>");
      html.push("  </tr>");
      html.push("  <tr>");
      html.push("   <td style='text-align: center;'>");
      html.push("    <a href='http://www.blogger.com/add-gadget?url=http%3a%2f%2fmobilemetrics.appspot.com%2fge%2fxml%3fak%3dadspace' target='_blank'><img src='http://mobilemetrics.appspot.com/images/adspace_blogger_directory_img.png' style='border: 0px; height: 50px;' /></a>");
      html.push("   </td>");
      html.push("   <td class='medtext' style='text-align: center;'>");
      html.push("    <a href='http://www.blogger.com/add-gadget?url=http%3a%2f%2fmobilemetrics.appspot.com%2fge%2fxml%3fak%3dadspace' target='_blank'>Rent your blog space to advertisers</a>");
      html.push("   </td>");
      html.push("  </tr>");
      html.push(" </table>");
      html.push("</div>");
      html.push("<br/>");

      getElem("app_wide").innerHTML= getElem("app_wide").innerHTML + html.join("");
      adjh();
    }
 }

 function show_stats(){
   var url = base_url+"s/f?n="+Math.random()+"&guid="+community.getId()+"&pageurl="+caller_url;
   gadgets.io.makeRequest(url, function(shareData){
     var shares = get_objects_from_xml(shareData.data.getElementsByTagName("share"), share_schema);
     
     var sharecount = 0;
     var twitter_sharecount = "0";
     var facebook_sharecount = "0";
     var myspace_sharecount = "0";
     var delicious_sharecount = "0";
     var reddit_sharecount = "0";
     var digg_sharecount = "0";
     var stumbleupon_sharecount = "0";
     var windowslive_sharecount = "0";
     var googlebookmarks_sharecount = "0";
      
     for(var i=0; i<shares.length; i++){
       var type = shares[i][1];
       sharecount += parseInt(shares[i][2]);
         
       if(type=="twitter"){
         twitter_sharecount = shares[i][2];
       } else if(type=="facebook"){
         facebook_sharecount = shares[i][2];
       } else if(type=="myspace"){
         myspace_sharecount = shares[i][2];
       } else if(type=="delicious"){
         delicious_sharecount = shares[i][2];
       } else if(type=="reddit"){
         reddit_sharecount = shares[i][2];
       } else if(type=="digg"){
         digg_sharecount = shares[i][2];
       } else if(type=="stumbleupon"){
         stumbleupon_sharecount = shares[i][2];
       } else if(type=="windowslive"){
         windowslive_sharecount = shares[i][2];
       } else if(type=="googlebookmarks"){
         googlebookmarks_sharecount = shares[i][2];
       }
     }
     
     var html = new Array();

     html.push("<div class='smalltext infotext' style='margin-top: 6px;'>");
     html.push("  This has been shared <b>"+sharecount+"</b> times.");
     html.push("</div>");

     getElem('sharecount').innerHTML=html.join("");
     adjh();
     
   }, req_params);
 }
  
 function share(type){
   var url = base_url+"shareit/add_share?n="+Math.random()+"&guid="+community.getId()+"&pageurl="+caller_url+"&type="+type;
   gadgets.io.makeRequest(url, function(shareData){
     // Do nada
   }, req_params);
 }
 
 function get_caller_url(){
   return gadgets.util.getUrlParameters()['caller'];
 }

 function adjh(){
   setTimeout("gadgets.window.adjustHeight()", 1);
 }

 function getElem(elemid){
   return document.getElementById(elemid);
 }

  function get_objects_from_xml(recordNodes, schema_info){
    var records = new Array;

    for (var i=0; i<recordNodes.length; i++){
      var columnList = recordNodes.item(i).childNodes;

      // Create an array for each record
      records[i] = new Array;

      for(var k=0; k<schema_info.length; k++){

        if(typeof(schema_info[k]) == "string"){
          for(var j=0; j<columnList.length; j++){
            var columnName = columnList.item(j).nodeName;

            if(columnName == schema_info[k]){
               if(columnList.item(j).firstChild != null){
                 records[i][k] = columnList.item(j).firstChild.nodeValue;
               } else {
                 records[i][k] = "";
               }
            }
          }
        } else if(typeof(schema_info[k]) == "object"){
          for(var j=0; j<columnList.length; j++){
            var columnName = columnList.item(j).nodeName;

            if(columnName == schema_info[k][0]){
              var subschema_info = schema_info[k][2]; // Index 2 = Actual array of column elements
              var subrecord_nodes = columnList.item(j).getElementsByTagName(schema_info[k][1]) // Index 1 = Tag name
              records[i][k] = get_objects_from_xml(subrecord_nodes, subschema_info);
            }
          }
        }
      }
    }

    return records;
  }
</script>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-10947467-1");
pageTracker._trackPageview();
} catch(err) {}</script>

 ]]>
 </Content>
</Module>
