
/*  common/js/SocialHistory.js  */
/*
 * Added cache for result and check for current page
 *
 *
 * Social Limit - Only the social you care about.
 *
 * Enables your site to know which social bookmarking badges to display to your
 * visitors. It tells you all social sites the user has gone to, or you can
 * query for a specific one.
 *
 * For example:
 *
 *    var sl = SocialHistory();
 *    alert( sl.doesVisit("Digg") ); // Returns true/false, -1 if unknown.
 *    var listOfVisitedSites = sl.visitedSites();
 *    var checkedSites = sl.checkedSites();
 *
 * If you want to add more sites to check, you can pass that in as a dictionary
 * to History:
 *
 *    var more = { "Humanized": "http://humanized.com",
 *                 "Azarask.in": ["http://azarask.in", "http://azarask.in/blog"]
 *               };
 *    var sl = SocialHistory(more);
 *    alert( sl.doesVisit("Humanized") );
 *
 * For a list of built-in sites, see the sites variable below.
 *
 * Copyright (c) 2008 Aza Raskin (http://azarask.in/blog)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */

var SocialHistory = function( moreSites ){
  var sites = {
    "Orkut": ["http://www.orkut.com/", "http://www.orkut.com/Main#Home"],
    "Twitter": ["http://twitter.com/", "http://twitter.com/login"],
    "Digg": ["http://digg.com", "http://digg.com/login"],
    "Reddit": ["http://reddit.com", "http://reddit.com/new/", "http://reddit.com/controversial/", "http://reddit.com/top/", "http://reddit.com/r/reddit.com/", "http://reddit.com/r/programming/"],
    "StumbleUpon": ["http://stumbleupon.com"],
    "Yahoo Buzz": ["http://buzz.yahoo.com"],
    "Facebook": ["http://facebook.com/home.php", "http://facebook.com", "https://login.facebook.com/login.php"],
    "Del.icio.us": ["https://secure.del.icio.us/login", "http://del.icio.us/"],
    "MySpace": ["http://www.myspace.com/"],
    "Technorati": ["http://www.technorati.com"],
    "Newsvine": ["https://www.newsvine.com", "https://www.newsvine.com/_tools/user/login"],
    "Songza": ["http://songza.com"],
    "Slashdot": ["http://slashdot.org/"],
    "Ma.gnolia": ["http://ma.gnolia.com/"],
    "Blinklist": ["http://www.blinklist.com"],
    "Furl": ["http://furl.net", "http://furl.net/members/login"],
    "Mister Wong": ["http://www.mister-wong.com"],
    "Current": ["http://current.com", "http://current.com/login.html"],
    "Menaeme": ["http://meneame.net", "http://meneame.net/login.php"],
    "Oknotizie": ["http://oknotizie.alice.it", "http://oknotizie.alice.it/login.html.php"],
    "Diigo": ["http://www.diigo.com/", "https://secure.diigo.com/sign-in"],
    "Funp": ["http://funp.com", "http://funp.com/account/loginpage.php"],
    "Blogmarks": ["http://blogmarks.net"],
    "Yahoo Bookmarks": ["http://bookmarks.yahoo.com"],
    "Xanga": ["http://xanga.com"],
    "Blogger": ["http://blogger.com"],
    "Last.fm": ["http://www.last.fm/", "https://www.last.fm/login/"],
    "N4G": ["http://www.n4g.com"],
    "Faves": ["http://faves.com", "http://faves.com/home", "https://secure.faves.com/signIn"],
    "Simpy": ["http://www.simpy.com", "http://www.simpy.com/login"],
    "Yigg": ["http://www.yigg.de"],
    "Kirtsy": ["http://www.kirtsy.com", "http://www.kirtsy.com/login.php"],
    "Fark": ["http://www.fark.com", "http://cgi.fark.com/cgi/fark/users.pl?self=1"],
    "Mixx": ["https://www.mixx.com/login/dual", "http://www.mixx.com"],
    "Google Bookmarks": ["http://www.google.com/bookmarks", "http://www.google.com/ig/add?moduleurl=bookmarks.xml&hl=en"],
    "Subbmitt": ["http://subbmitt.com/"],
    "GoogleMail": ["https://mail.google.com/mail/?tab=om", "https://mail.google.com/mail/", "https://mail.google.com/mail/?shva=1#inbox"]
  };

  for( var site in moreSites ) {
    // If we don't have the site, create the URL list.
    if( typeof( sites[site] ) == "undefined" ) sites[site] = [];

    // If the value is string, just push that onto the URL list.
    if( typeof( moreSites[site] ) == "string" )
      sites[site].push( moreSites[site] );
    else
      sites[site] = sites[site].concat( moreSites[site] );
  }

  function checkSites(sites) {
      var visited = {};

      function getStyle(el, scopeDoc,styleProp) {
        if (el.currentStyle)
          var y = el.currentStyle[styleProp];
        else if (window.getComputedStyle)
          var y = scopeDoc.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
        return y;
      }

      function remove( el ) {
        el.parentNode.removeChild( el );
      }

      // Code inspired by:
      // bindzus.wordpress.com/2007/12/24/adding-dynamic-contents-to-iframes
      function createIframe() {
        var iframe = document.createElement("iframe");
        iframe.style.position = "absolute";
        iframe.style.visibility = "hidden";

        document.body.appendChild(iframe);

        // Firefox, Opera
        if(iframe.contentDocument) iframe.doc = iframe.contentDocument;
        // Internet Explorer
        else if(iframe.contentWindow) iframe.doc = iframe.contentWindow.document;

        // Magic: Force creation of the body (which is null by default in IE).
        // Also force the styles of visited/not-visted links.
        iframe.doc.open();
            iframe.doc.write('<style>');
            iframe.doc.write("a{color: #000000; display:none;}");
            iframe.doc.write("a:visited {color: #FF0000; display:inline;}");
            iframe.doc.write('</style>');
        iframe.doc.close();

        // Return the iframe: iframe.doc contains the iframe.
        return iframe;
      }

      var iframe = createIframe();

      function embedLinkInIframe( href, text ) {
        var a = iframe.doc.createElement("a");
        a.href = href;
        a.innerHTML = site;
        iframe.doc.body.appendChild( a );
      }

      for( var site in sites ) {
        var urls = sites[site];
        for( var i=0; i<urls.length; i++ ) {
          // You have to create elements in the scope of the iframe for IE.
          embedLinkInIframe( urls[i], site );

          // Automatically try variations of the URLS with and without the "www"
          if( urls[i].match(/www\./) ){
            var sansWWW = urls[i].replace(/www\./, "");
            embedLinkInIframe( sansWWW, site );
          } else {
            // 2 = 1 for length of string + 1 for slice offset
            var httpLen = urls[i].indexOf("//") + 2;
            var withWWW = urls[i].substring(0, httpLen ) + "www." + urls[i].substring( httpLen );
            embedLinkInIframe( withWWW, site );
          }

        }
      }

      var links = iframe.doc.body.childNodes;
      for( var i=0; i<links.length; i++) {
        // Handle both Firefox/Safari, and IE (respectively)
        var displayValue = getStyle(links[i], iframe.doc, "display");
        var didVisit = displayValue != "none";

        if( didVisit ){
          visited[ links[i].innerHTML ] = true;
        }
      }

      remove( iframe );
      return visited;
  }

  var visited = checkSites({
    "current": [document.location.href]
  });

  // if visited == {} - magic will not work any more
  if (visited["current"]) {
    visited = checkSites(sites);
  }

  return new (function(){

    var usedSites = [];
    for( var site in visited ){
      usedSites.push( site );
    }

    // Return an array of visited sites.
    this.visitedSites = function() {
      return usedSites;
    }

    // Return true/false. If we didn't check the site, return -1.
    this.doesVisit = function( site ) {
      if( typeof( sites[site] ) == "undefined" )
        return -1;
      return typeof( visited[site] ) != "undefined";
    }

    var checkedSites = [];
    for( var site in sites ){
      checkedSites.push( site );
    }
    // Return a list of the sites checked.
    this.checkedSites = function(){
      return checkedSites;
    }
  })();
}


/*  new/common/js/cookie.js  */
/*
Script Name: Javascript Cookie Script
Author: Public Domain, with some modifications
Script Source URI: http://techpatterns.com/downloads/javascript_cookies.php
Version 1.1.2
Last Update: 5 November 2009

Changes:
1.1.2 explicitly declares i in Get_Cookie with var
1.1.1 fixes a problem with Get_Cookie that did not correctly handle case
where cookie is initialized but it has no "=" and thus no value, the
Get_Cookie function generates a NULL exception. This was pointed out by olivier, thanks
1.1.0 fixes a problem with Get_Cookie that did not correctly handle
cases where multiple cookies might test as the same, like: site1, site
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/

// this fixes an issue with the old method, ambiguous values
// with this test document.cookie.indexOf( name + "=" );

// To use, simple do: Get_Cookie('cookie_name');
// replace cookie_name with the real cookie name, '' are required
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = '';
	try {
		a_all_cookies = document.cookie.split( ';' );
	} catch(err) {
	};
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	var i = '';

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	// if the expires variable is set, make the correct expires time, the
	// current script below will set it for x number of days, to make it
	// for hours, delete * 24, for minutes, delete * 60 * 24
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) +
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/**
 * Global variable that contains domain for cookies
 *
 * @type {String}
 */
var sCookieDomain = '.avaaz.org';
/*  new/common/js/global.js  */
/**
 * This file used for miscellaneous functions, need entire all all project
 */

/**
 * Get image src according to current page port (80|443). #566 bug in IE
 * @param string input SRC of need image in amazon
 */
function get_secure_src(input) {
    // trim string (IE - burn in the hell!)
    return (
        document.location.protocol === 'https:' &&
            input.indexOf('amazonaws.com') !== -1
        ) ? input.replace(/\s*((\S+\s*)*)/, "$1").replace(/((\s*\S+)*)\s*/, "$1").replace(/^http:\/\//, "https://") : input;
}

function SetEmailDomain(email) {
    var domain, my_email, ind;

    if (email) {
        my_email = email;
        ind = my_email.indexOf("@");
        domain = my_email.substr((ind + 1));
        domain = domain.split('.')[0];
    }
    domain = domain || 'other';
    Set_Cookie('lastusedemail', domain, "", "/", sCookieDomain);
}

function SetDomain(domain) {
    Set_Cookie('lastusedemail', domain, 180, "/", sCookieDomain);
}

function GetEmailDomain() {
    var domain = Get_Cookie('lastusedemail');
    if (!domain) {
        return 'other';
    }
    return domain;
}

function formSpreadGetUserHashFromUrl() {
    var aUrlParams = window.location.search.replace('?', '').split('&'),
        sEntry = '';
    for (var i = 0; i < aUrlParams.length; i++) {
        sEntry = aUrlParams[i];
        if (sEntry.indexOf('=') === -1 && !/^\d+$/.test(sEntry) && sEntry.length >= 6) {
            return sEntry.substring(1);
        }
    }
    return '';
}


function setLocalCountry(element) {
    var $element = $(element);
    var callback = function (data) {
        $element.val(data.COUNTRY);
        $element.trigger('change');
    };
    detectLocalInformation(callback);
}

function detectLocalInformation(callback) {
    if ('undefined' !== typeof detectLocalInformation.localData) {
        if ('function' === typeof callback) {
            callback(detectLocalInformation.localData);
        }
    } else {
        $.post('/new/common/js/localsettings.js.php',
            function (response) {
                detectLocalInformation.localData = response;
                if ('function' === typeof callback) {
                    callback(response);
                }
            }, 'json');
    }
}

function pushStateOnPostaction(sUrlHash) {
    if (supportsHistoryApi()) {
        if ('' !== sUrlHash) {
            window.history.pushState({hash: sUrlHash}, 'hash ' + sUrlHash, '?' + sUrlHash);
        }
    }
}

function initSocialHistory() {
    if ('function' === typeof SocialHistory) {
        if ($('form').length > 0) {
            var sl = SocialHistory();
            var visited_sites = sl.visitedSites().join(',');
            if (visited_sites && visited_sites.length) {
                $('form').each(
                    function () {
                        $(this).append(
                            "<input name=\"user_social_history\" type=\"hidden\" value=\"" + visited_sites + "\" />"
                        );
                    }
                );
            }
        }
    }
}

function getArgs(query) {
    var args = {};
    query = query ? query : location.search.substring(1);     // Get query string
    var pairs = query.split("&");                 // Break at ampersand
    for (var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');          // Look for "name=value"
        if (pos === -1) {
            continue;                  // If not found, skip
        }
        var argname = pairs[i].substring(0, pos);  // Extract the name
        var value = pairs[i].substring(pos + 1);    // Extract the value
        value = decodeURIComponent(value);        // Decode it, if needed
        args[argname] = value;                    // Store as a property
    }
    return args;                                  // Return the object
}

function getArgsWithHash() {
    var query = location.search.substring(1);
    query += '&';
    query += location.hash.substring(1);
    return getArgs(query);
}

/**
 * Replaces tokens in text
 *
 * @param oData tokens with prelacements
 * @param sText text to parse
 *
 * @return {String}
 */
function getEdgeData(oData, sText) {
    if (sText) {
        for (var sKey in oData) {
            if (oData.hasOwnProperty(sKey)) {
                var oRegEx = RegExp('{' + sKey + '}', 'ig');
                sText = sText.replace(oRegEx, oData[sKey]);

                oRegEx = RegExp('tag_open' + sKey + 'tag_close', 'ig');
                sText = sText.replace(oRegEx, oData[sKey]);
            }
        }
    }
    return sText;
}

function hashing(no_cookies) {
    var args = {};
    var userhash = null;
    var value;
    var argname;
    // Get uneascped query string. we do unescape in order toi convert values like this bwPewdb%26v%3D18633
    var query = unescape(location.search.substring(1));
    // Break at ampersand
    var pairs = query.split("&");
    for (var i = 0; i < pairs.length; i++) {
        // Look for "name=value"
        var pos = pairs[i].indexOf('=');
        if (pos === -1) {
            argname = pairs[i];
            args[argname] = null;
            // If not found, skip
        } else {
            argname = pairs[i].substring(0, pos);  // Extract the name
            value = pairs[i].substring(pos + 1);    // Extract the value
            value = decodeURIComponent(value);        // Decode it, if needed
            args[argname] = value;                    // Store as a property
        }
    }
    var cnt = 0;
    var daily_briefing_subscribe = RegExp("^dbsp[0-9]+");
    var daily_briefing_news = RegExp("^dbn[0-9]+");

    for (var h in args) {
        if (args.hasOwnProperty(h)) {
            var name = false;
            cnt++;
            if (h === 'v') {
                name = 'blast_version';
                value = parseInt(args[h], 10);
            } else if (h.length > 6 && args[h] === null) {
                name = 'hash';
                value = h;
            } else if ((daily_briefing_subscribe.test(h) || daily_briefing_news.test(h)) && args[h] === null) {
                name = 'hash';
                value = h;
            }
            if (name) {
                if (name === 'hash') {
                    // remove all characters after space
                    if (value.indexOf(' ') > 0) {
                        value = value.substr(0, value.indexOf(' '));
                    }

                    var aMatches = value.match(/https?:\/\//i);
                    if (aMatches) {
                        value = value.substr(0, value.indexOf(aMatches[0]));
                    }

                    // and replace all non letters, digits or hyphens with empty string
                    value = value.replace(/[^a-z\-0-9]+/ig, '');
                    userhash = value;
                }
                if (true !== no_cookies) {
                    Set_Cookie(name, value, null, "/", '.avaaz.org');
                    $('form').each(function () {
                        $(this).append('<input type="hidden" name="' + name + '" value="' + value + '"/>');
                    });
                }
            }
        }
    }
    return userhash;
}

function getUserHash(no_prefix) {
    var userhash = hashing(true);
    if (userhash && true === no_prefix) {
        userhash = userhash.substr(-6);
    }
    return userhash;
}

function count(mixed_var, mode) {
    var key, cnt = 0;
    if (mixed_var === null) {
        return 0;
    } else if (mixed_var.constructor !== Array && mixed_var.constructor !== Object) {
        return 1;
    }
    if (mode === 'COUNT_RECURSIVE') {
        mode = 1;
    }
    if (mode !== 1) {
        mode = 0;
    }
    for (key in mixed_var) {
        if (mixed_var.hasOwnProperty(key)) {
            cnt++;
            if (mode === 1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object)) {
                cnt += this.count(mixed_var[key], 1);
            }
        }
    }
    return cnt;
}

function get_country_list(options, callback) {
    var def_opt = {
            'pp': false,
            'lang': 'en',
            'cid': 0,
            'group': 0
        },
        options = $.extend(def_opt, options),
        request_url = '/stat/act/ajaxGetCountry.php/type=json&lang=';

    if (options.lang) {
        request_url += options.lang;
    }
    if (options.pp) {
        request_url += ('&pp=true');
    }
    if (options.cid && options.cid !== "0") {
        request_url += ('&cid=' + options.cid);
    }
    if (options.group && options.group !== "0") {
        request_url += ('&group=' + options.group);
    }
    if (get_country_list.cachedData && get_country_list.cachedData[request_url]) {
        if ('function' === typeof callback) {
            callback(get_country_list.cachedData[request_url], options);
        }
        return true;
    }
    return $.ajax({
        url: request_url,
        success: function (data) {
            if ('function' === typeof callback) {
                callback(data, options);
            }
        },
        dataType: 'json'
    });
}

function update_country_by_ajax(options, callback) {
    return get_country_list(options, function (data, options) {
        var html = '';
        options = $.extend({'context': ''}, options);
        if (options.empty) {
            html += ('<option value="">' + options.empty + '</option>');
        }
        for (var i = 0; i < data.length; i++) {
            if (data[i].id !== '') {
                html += ("<option value='" + data[i].id + "'>" + data[i].value + "</option>");
            }
        }
        $(options.el, options.context).html(html);
        if (options.val) {
            $(options.el, options.context).val(options.val);
        }
        if (options.cb) {
            options.cb();
        }

        if (options.trigger_change) {
            $(options.el, options.context).trigger('change');
        }
    });
}

function createModalLoadingOverlay(options) {
    if ($("#modalLoadingOverlay").length === 0) {
        // create the modal window
        $('<div id="modalLoadingOverlay" style="display:none;"><div style="margin: 200px auto;"><img src="/images/ajax-loader3.gif" width="130" height="130"/></div></div>').appendTo('body');

        if (!options || options.click !== false) {
            $("#modalLoadingOverlay").click(function () {
                hideModalLoadingOverlay();
            });
        }

        if (!options || options.escape !== false) {
            $(document).keyup(function (e) {
                if (e.keyCode === 27) {
                    hideModalLoadingOverlay();
                }
            });
        }
    }
}
function showModalLoadingOverlay() {
    createModalLoadingOverlay();
    $("#modalLoadingOverlay").css('z-index', '9999').fadeIn();
}

function hideModalLoadingOverlay() {
    $('#modalLoadingOverlay').fadeOut();
}

/*Add Validation for History Support*/
function supportsHistoryApi() {
    return (window.history && 'pushState' in history);
}

function trackGAEvent(category, action, label) {
    _gaq.push(['_trackEvent', category, action, label]);
}

function get_standard_language_code(lang) {
    switch (lang) {
        case 'po': lang = 'pt'; break;
        case 'jp': lang =  'ja'; break;
    }

    return lang;
}

(function ($) {
    var fbReady = $.Deferred();
    $.fn.facebookReady = function (fn) {
        $.fbready.promise().done(fn);
        return this;
    };
    jQuery.extend({
        fbready: function () {
            fbReady.resolveWith(document, [ jQuery ]);
        }
    });
    $.fbready.promise = function (obj) {
        return fbReady.promise(obj);
    };
    $(document).bind("facebook:ready", function () {
        $.fbready();
    });
})(jQuery);
(function ($) {
    var taggingReady = $.Deferred();
    $.fn.taggingReady = function (fn) {
        $.taggingready.promise().done(fn);
        return this;
    };
    jQuery.extend({
        taggingready: function () {
            taggingReady.resolveWith(document, [ jQuery ]);
        }
    });
    $.taggingready.promise = function (obj) {
        return taggingReady.promise(obj);
    };
    $(document).bind("tagging_tool:ready", function () {
        $.taggingready();
    });
})(jQuery);

$(document).facebookReady(function () {
    $(document).ready(function () {
        $('.fb_image_upload').each(function () {
            var that = this;
            $(this).click(function (e) {
                var wnd = window.open('', "fb_upload_name", "width=20,height=20");
                window.focus();
                function uploadImageToFacebook() {
                    FB.api('/photos', 'post', {
                        message: $(that).data('image_description'),
                        access_token: FB.getAccessToken(),
                        url: $(that).data('image')
                    }, function (response) {
                        if (!response || response.error) {
                            console.log(response);
                            wnd.close();
                        } else {
                            wnd.location.href = 'http://www.facebook.com/photo.php?fbid=' + response.id + '&type=1&makeprofile=1&makeuserprofile=1';
                            wnd.resizeTo(900, 900);
                            wnd.focus();
                        }
                    });
                }

                FB.getLoginStatus(function (response) {
                    if (response.status === 'unknown') {
                        FB.login(function () {
                            uploadImageToFacebook();
                        });
                    } else {
                        uploadImageToFacebook();
                    }
                });
                e.preventDefault();
            });
        });
    });
});
$(document).ready(function () {
    //original referrer logic
    if ('undefined' !== typeof crossdomainGlobalStorage) {
        //trying to get original referrer from storage
        crossdomainGlobalStorage.getItem('original_referrer', 'session', function (referrer) {
            //check if referrer exists
            if (null === referrer) {
                //referrer doesn't exist, save referrer
                referrer = document.referrer;
                crossdomainGlobalStorage.setItem('original_referrer', 'session', document.referrer);
            } else {
                Set_Cookie('original_referrer', referrer, null, "/", '.avaaz.org');
            }
            //append for each form on a page original referrer
            $('form').each(
                function () {
                    $(this).append("<input name=\"original_referrer\" type=\"hidden\" value=\"" + referrer + "\" />");
                }
            );
        });
    }
    if (!Get_Cookie('original_referrer')) {
        Set_Cookie('original_referrer', document.referrer, null, "/", '.avaaz.org');
    }

    var supports_history_api = supportsHistoryApi();
    $('form').each(
        function () {
            if (supports_history_api) {
                $(this).append("<input name=\"supports_history_api\" type=\"hidden\" value=\"" + supports_history_api + "\" />");
            }
        }
    );
    var resize_fix_footer = function () {
        $('.bg-blue-big, .bg-blue, #footer, .bg-blue-slidshow-controls, .bg-blue-middle, .bg_blue-manage').css('width', '100%');
        var elements = ['.bg-blue-big', '.bg-blue', '#footer', '.bg-blue-slidshow-controls', '.bg-blue-middle', '.bg_blue-manage'];
        var width = $(document).width();
        for (var i = 0; i < elements.length; i++) {
            if ($(elements[i]).length) {
                if (width > $(elements[i]).width()) {
                    $(elements[i]).css('width', width);
                }
            }
        }
    };

    $(window).resize(resize_fix_footer);
    resize_fix_footer();
    hashing();
    $('img[securesrc]').each(function () {
        var el = $(this);
        el.attr('src', get_secure_src(el.attr('securesrc')));
    });

    initSocialHistory();

    // Traffic split - change HOME links to traffic split source
    var sSplitOrigin = Get_Cookie('split_origin');
    if (sSplitOrigin) {
        $('#logo > a, #nav > .links > .first > a').attr('href', sSplitOrigin);
    }

    $('a.form-submit').on('click', function (e) {
        $(this).closest("form").submit();
        e.preventDefault();
    });
});

window.bFacebookReady = false;
$(document).facebookReady(function () {
    window.bFacebookReady = true;
});

/*  new/common/js/jquery.toggleval.js  */
/* -------------------------------------------------- *
 * ToggleVal 3.0
 * Updated: 01/15/2010
 * -------------------------------------------------- *
 * Author: Aaron Kuzemchak
 * URL: http://aaronkuzemchak.com/
 * Copyright: 2008-2010 Aaron Kuzemchak
 * License: MIT License
** -------------------------------------------------- */

(function($) {
	// main plugin function
	$.fn.toggleVal = function(theOptions) {
		// check whether we want real options, or to destroy functionality
		if(!theOptions || typeof theOptions == 'object') {
			theOptions = $.extend({}, $.fn.toggleVal.defaults, theOptions);
		}
		else if(typeof theOptions == 'string' && theOptions.toLowerCase() == 'destroy') {
			var destroy = true;
		}

		return this.each(function() {
			// unbind everything if we're destroying, and stop executing the script
			if(destroy) {
				$(this).unbind('focus.toggleval').unbind('blur.toggleval').removeData('defText');
				return false;
			}

			// define our variables
			var defText = '';

			// let's populate the field, if not default
			switch(theOptions.populateFrom) {
				case 'title':
					if($(this).attr('title')) {
						defText = $(this).attr('title');
						$(this).val(defText);
					}
					break;
				case 'label':
					if($(this).attr('id')) {
						defText = $('label[for="' + $(this).attr('id') + '"]').text();
						$(this).val(defText);
					}
					break;
				case 'custom':
					defText = theOptions.text;
					$(this).val(defText);
					break;
				default:
					defText = $(this).val();
			}

			// let's give this field a special class, so we can identify it later
			// also, we'll give it a data attribute, which will help jQuery remember what the default value is
			$(this).addClass('toggleval').data('defText', defText);

			// now that fields are populated, let's remove the labels if applicable
			if(theOptions.removeLabels == true && $(this).attr('id')) {
				$('label[for="' + $(this).attr('id') + '"]').remove();
			}

			// on to the good stuff... the focus and blur actions
			$(this).bind('focus.toggleval', function() {
				if($(this).val() == $(this).data('defText')) { $(this).val(''); }

				// add the focusClass, remove changedClass
				$(this).addClass(theOptions.focusClass);
			}).bind('blur.toggleval', function() {
				if($(this).val() == '' && !theOptions.sticky) { $(this).val($(this).data('defText')); }

				// remove focusClass, add changedClass if, well, different
				$(this).removeClass(theOptions.focusClass);
				if($(this).val() != '' && $(this).val() != $(this).data('defText')) { $(this).addClass(theOptions.changedClass); }
					else { $(this).removeClass(theOptions.changedClass); }
			});
		});
	};

	// default options
	$.fn.toggleVal.defaults = {
		focusClass: 'tv-focused', // class during focus
		changedClass: 'tv-changed', // class after focus
		populateFrom: 'title', // choose from: default, label, custom, or title
		text: null, // text to use in conjunction with populateFrom: custom
		removeLabels: false, // remove labels associated with the fields
		sticky: false // if true, default text won't reappear
	};

	// create custom selectors
	// :toggleval for affected elements
	// :changed for changed elements
	$.extend($.expr[':'], {
		toggleval: function(elem) {
			return $(elem).data('defText') || false;
		},
		changed: function(elem) {
			if($(elem).data('defText') && $(elem).val() != $(elem).data('defText')) {
				return true;
			}
			return false;
		}
	});
})(jQuery);
/*  new/common/js/jquery.infieldlabel.js  */
/*
 * jquery.infieldlabel
 * A simple jQuery plugin for adding labels that sit over a form field and fade away when the fields are populated.
 *
 * Copyright (c) 2009 - 2013 Doug Neiner <doug@dougneiner.com> (http://code.dougneiner.com)
 * Source: https://github.com/dcneiner/In-Field-Labels-jQuery-Plugin
 * Dual licensed MIT or GPL
 *   MIT (http://www.opensource.org/licenses/mit-license)
 *   GPL (http://www.opensource.org/licenses/gpl-license)
 *
 * @version 0.1.4
 */
(function ($) {

    $.InFieldLabelsSetPosition = function() {
        $('.set-label-position').filter(':visible').each(function(){
            $(this).trigger('setLabelPosition');
        }).removeClass('set-label-position');
    }

  $.InFieldLabels = function (label, field, options) {
    // To avoid scope issues, use 'base' instead of 'this'
    // to reference this class from internal events and functions.
    var base = this;

    // Access to jQuery and DOM versions of each element
    base.$label = $(label);
    base.label  = label;

    base.$field = $(field);
    base.field  = field;

    base.$label.data("InFieldLabels", base);
    base.showing = true;

    base.init = function () {
      var initialSet;

      // Merge supplied options with default options
      base.options = $.extend({}, $.InFieldLabels.defaultOptions, options);

      // Add provided class name to the label, if set
      if ( base.options.className ) {
        base.$label.addClass(base.options.className);
      }

      // Check if the field is already filled in
      // add a short delay to handle autocomplete
      setTimeout(function() {
        if (base.$field.val() !== "") {
          base.$label.hide();
          base.showing = false;
        } else {
          base.$label.show();
          base.showing = true;
        }
      }, 200);
      if (base.$label.data('context')) {
          base.$label.click(function (e) {
              e.preventDefault();
              base.$field.trigger('focus');
          });
      }
      base.$field.focus(function () {
        base.fadeOnFocus();
      }).blur(function () {
        base.checkForEmpty(true);
      }).bind('keydown.infieldlabel', function (e) {
        // Use of a namespace (.infieldlabel) allows us to
        // unbind just this method later
        base.hideOnChange(e);
      }).bind('paste', function () {
        // Since you can not paste an empty string we can assume
        // that the field is not empty and the label can be cleared.
        base.setOpacity(0.0);
      }).change(function () {
        base.checkForEmpty();
      }).bind('onPropertyChange', function () {
        base.checkForEmpty();
      }).bind('keyup.infieldlabel', function () {
        base.checkForEmpty();
      });

      if ( base.options.pollDuration > 0 ) {
        initialSet = setInterval( function () {
        if (base.$field.val() !== "") {
          base.$label.hide();
          base.showing = false;
          clearInterval( initialSet );
        }
      }, base.options.pollDuration );

      }
    };

    // If the label is currently showing
    // then fade it down to the amount
    // specified in the settings
    base.fadeOnFocus = function () {
      if (base.showing) {
        base.setOpacity(base.options.fadeOpacity);
      }
    };

    base.setOpacity = function (opacity) {
      base.$label.stop().animate({ opacity: opacity }, base.options.fadeDuration);
      base.showing = (opacity > 0.0);
    };

    // Checks for empty as a fail safe
    // set blur to true when passing from
    // the blur event
    base.checkForEmpty = function (blur) {
      if (base.$field.val() === "") {
        base.prepForShow();
        base.setOpacity(blur ? 1.0 : base.options.fadeOpacity);
      } else {
        base.setOpacity(0.0);
      }
    };

    base.prepForShow = function () {
      if (!base.showing) {
        // Prepare for a animate in...
        base.$label.css({opacity: 0.0}).show();

        // Reattach the keydown event
        base.$field.bind('keydown.infieldlabel', function (e) {
          base.hideOnChange(e);
        });
      }
    };

    base.hideOnChange = function (e) {
      if (
          (e.keyCode === 16) || // Skip Shift
          (e.keyCode === 9) // Skip Tab
        ) {
        return;
      }

      if (base.showing) {
        base.$label.hide();
        base.showing = false;
      }

      // Remove keydown event to save on CPU processing
      base.$field.unbind('keydown.infieldlabel');
    };

    // Run the initialization method
    base.init();
  };

  $.InFieldLabels.defaultOptions = {
    fadeOpacity: 0.5, // Once a field has focus, how transparent should the label be
    fadeDuration: 300, // How long should it take to animate from 1.0 opacity to the fadeOpacity
    pollDuration: 0, // If set to a number greater than zero, this will poll until content is detected in a field
    enabledInputTypes: [ "text", "search", "tel", "url", "email", "password", "number", "textarea" ],
    className: false // Class assigned to enhanced labels
  };


  $.fn.inFieldLabels = function (options) {
    var allowed_types = options && options.enabledInputTypes || $.InFieldLabels.defaultOptions.enabledInputTypes;

    return this.each(function () {
      // Find input or textarea based on for= attribute
      // The for attribute on the label must contain the ID
      // of the input or textarea element
      var for_attr = $(this).attr('for'), field, restrict_type, context;
      if (!for_attr) {
        return; // Nothing to attach, since the for field wasn't used
      }
      // Find the referenced input or textarea element
      if ($(this).data('context')) {
          field = $('#' + for_attr, $(this).data('context')).get(0);
      } else {
          field = document.getElementById( for_attr );
      }

      if ( !field ) {
        return; // No element found
      }

      // Restrict input type
      restrict_type = $.inArray( field.type, allowed_types );

      if ( restrict_type === -1 && field.nodeName !== "TEXTAREA" ) {
        return; // Again, nothing to attach
      }

      // Only create object for matched input types and textarea
      (new $.InFieldLabels(this, field, options));
    });
  };

}(jQuery));

/*  new/common/js/actions.js  */
$(document).ready(function()
{
    /* adjust styling for macosx-based browsers */
    if (navigator.appVersion.indexOf('Mac') != -1 || $.browser.safari) {
        var timestamp = Math.round((new Date()).getTime() / (1000 * 3600));
        /* use timestamp exported with tracking */
        if(window['tracking'] && window['tracking'].stamp) {
            timestamp = window['tracking'].stamp;
        }
        $('head').append('<link type="text/css" rel="stylesheet" media="all" href="/stat/new/css/css.php/s=macosx.less_'+ timestamp + '&fe=%252Fnew%252Fcss%252Fblue%252Fmacosx.less&h=macosx.less_' + timestamp + '" />');
    }

    if ($('html').attr('dir')=='rtl' && (navigator.appVersion.indexOf('Mac') != -1 || $.browser.safari)) {
        $('.title-ribbon, .photo-ribbon').wrap('<div class="rtlwrap">');
    }

    if (typeof jQuery.fn.toggleVal == 'function') {
        $('.form-text').toggleVal();
    }

    // onrollover link for #focus-photo-feature
    $("#focus-photo-feature .content a").hover(
        function () {
            $(this).find('img').attr('src', function() {
                return this.src.replace('.png', '_ovr.png');
            });
        },
        function () {
            $(this).find('img').attr('src', function() {
                return this.src.replace('_ovr', '');
            });
        }
    );
});

$(document).ready(function(){
    if ('function' === typeof $('label').inFieldLabels) {
        $("label.labeloverlay").inFieldLabels();
    }

    $('form').each(function(){
        var input_js = document.createElement('input');
            input_js.setAttribute('type', 'hidden');
            input_js.setAttribute('name', 'secure_validation');
            input_js.value = new Date();
        this.appendChild(input_js);
        var used_js = document.createElement('input');
            used_js.setAttribute('type', 'hidden');
            used_js.setAttribute('name', 'used_js');
            used_js.value = new Date();
        this.appendChild(used_js);
    });

    if (typeof signup_button_text != "undefined") {
        $oSignupPlaceholder = $('.form-sign .form-broken-js');
        replacePlaceholderWith($oSignupPlaceholder, signup_button_text);
    }

    if (typeof donate_button_text != "undefined") {
        $oDonatePlaceholder = $('.form-donate .form-broken-js');
        replacePlaceholderWith($oDonatePlaceholder, donate_button_text);
    }

    // TODO: Probably this two could be merged
    if (typeof signup_fb_button_text != "undefined") {
        $oJanrainSignPlaceholder = $('.janrain-sign .form-broken-js');
        replacePlaceholderWith($oJanrainSignPlaceholder, signup_fb_button_text);
    }

    if (typeof joinus_fb_button_text != "undefined") {
        $oJanrainJoinUsPlaceholder = $('.form-janrain .form-broken-js');
        replacePlaceholderWith($oJanrainJoinUsPlaceholder, joinus_fb_button_text);
    }

});

function replacePlaceholderWith(oPlaceholder, mData) {

    if (typeof mData == 'object') {
        for (i = 0; i < mData.length; ++i) {
            $(oPlaceholder[i]).replaceWith(mData[i]);
        }
    } else {
        oPlaceholder.replaceWith(mData)
    }

}

/*  common/js/jquery.validate.min.js  */
/**
 * jQuery Validation Plugin 1.9.0
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2011 Jörn Zaefferer
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function(c){c.extend(c.fn,{validate:function(a){if(this.length){var b=c.data(this[0],"validator");if(b)return b;this.attr("novalidate","novalidate");b=new c.validator(a,this[0]);c.data(this[0],"validator",b);if(b.settings.onsubmit){a=this.find("input, button");a.filter(".cancel").click(function(){b.cancelSubmit=true});b.settings.submitHandler&&a.filter(":submit").click(function(){b.submitButton=this});this.submit(function(d){function e(){if(b.settings.submitHandler){if(b.submitButton)var f=c("<input type='hidden'/>").attr("name",
    b.submitButton.name).val(b.submitButton.value).appendTo(b.currentForm);b.settings.submitHandler.call(b,b.currentForm);b.submitButton&&f.remove();return false}return true}b.settings.debug&&d.preventDefault();if(b.cancelSubmit){b.cancelSubmit=false;return e()}if(b.form()){if(b.pendingRequest){b.formSubmitted=true;return false}return e()}else{b.focusInvalid();return false}})}return b}else a&&a.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing")},valid:function(){if(c(this[0]).is("form"))return this.validate().form();
else{var a=true,b=c(this[0].form).validate();this.each(function(){a&=b.element(this)});return a}},removeAttrs:function(a){var b={},d=this;c.each(a.split(/\s/),function(e,f){b[f]=d.attr(f);d.removeAttr(f)});return b},rules:function(a,b){var d=this[0];if(a){var e=c.data(d.form,"validator").settings,f=e.rules,g=c.validator.staticRules(d);switch(a){case "add":c.extend(g,c.validator.normalizeRule(b));f[d.name]=g;if(b.messages)e.messages[d.name]=c.extend(e.messages[d.name],b.messages);break;case "remove":if(!b){delete f[d.name];
    return g}var h={};c.each(b.split(/\s/),function(j,i){h[i]=g[i];delete g[i]});return h}}d=c.validator.normalizeRules(c.extend({},c.validator.metadataRules(d),c.validator.classRules(d),c.validator.attributeRules(d),c.validator.staticRules(d)),d);if(d.required){e=d.required;delete d.required;d=c.extend({required:e},d)}return d}});c.extend(c.expr[":"],{blank:function(a){return!c.trim(""+a.value)},filled:function(a){return!!c.trim(""+a.value)},unchecked:function(a){return!a.checked}});c.validator=function(a,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              b){this.settings=c.extend(true,{},c.validator.defaults,a);this.currentForm=b;this.init()};c.validator.format=function(a,b){if(arguments.length==1)return function(){var d=c.makeArray(arguments);d.unshift(a);return c.validator.format.apply(this,d)};if(arguments.length>2&&b.constructor!=Array)b=c.makeArray(arguments).slice(1);if(b.constructor!=Array)b=[b];c.each(b,function(d,e){a=a.replace(RegExp("\\{"+d+"\\}","g"),e)});return a};c.extend(c.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",
    validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:c([]),errorLabelContainer:c([]),onsubmit:true,ignore:":hidden",ignoreTitle:false,onfocusin:function(a){this.lastActive=a;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass);this.addWrapper(this.errorsFor(a)).hide()}},onfocusout:function(a){if(!this.checkable(a)&&(a.name in this.submitted||!this.optional(a)))this.element(a)},
    onkeyup:function(a){if(a.name in this.submitted||a==this.lastElement)this.element(a)},onclick:function(a){if(a.name in this.submitted)this.element(a);else a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).addClass(b).removeClass(d):c(a).addClass(b).removeClass(d)},unhighlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).removeClass(b).addClass(d):c(a).removeClass(b).addClass(d)}},setDefaults:function(a){c.extend(c.validator.defaults,
    a)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:c.validator.format("Please enter no more than {0} characters."),
    minlength:c.validator.format("Please enter at least {0} characters."),rangelength:c.validator.format("Please enter a value between {0} and {1} characters long."),range:c.validator.format("Please enter a value between {0} and {1}."),max:c.validator.format("Please enter a value less than or equal to {0}."),min:c.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){function a(e){var f=c.data(this[0].form,"validator"),g="on"+e.type.replace(/^validate/,
    "");f.settings[g]&&f.settings[g].call(f,this[0],e)}this.labelContainer=c(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||c(this.currentForm);this.containers=c(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var b=this.groups={};c.each(this.settings.groups,function(e,f){c.each(f.split(/\s/),function(g,h){b[h]=e})});var d=
    this.settings.rules;c.each(d,function(e,f){d[e]=c.validator.normalizeRule(f)});c(this.currentForm).validateDelegate("[type='text'], [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",a).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",
    a);this.settings.invalidHandler&&c(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){this.checkForm();c.extend(this.submitted,this.errorMap);this.invalid=c.extend({},this.errorMap);this.valid()||c(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(a){this.lastElement=
    a=this.validationTargetFor(this.clean(a));this.prepareElement(a);this.currentElements=c(a);var b=this.check(a);if(b)delete this.invalid[a.name];else this.invalid[a.name]=true;if(!this.numberOfInvalids())this.toHide=this.toHide.add(this.containers);this.showErrors();return b},showErrors:function(a){if(a){c.extend(this.errorMap,a);this.errorList=[];for(var b in a)this.errorList.push({message:a[b],element:this.findByName(b)[0]});this.successList=c.grep(this.successList,function(d){return!(d.name in a)})}this.settings.showErrors?
    this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){c.fn.resetForm&&c(this.currentForm).resetForm();this.submitted={};this.lastElement=null;this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b=0,d;for(d in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==
    0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{c(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(a){}},findLastActive:function(){var a=this.lastActive;return a&&c.grep(this.errorList,function(b){return b.element.name==a.name}).length==1&&a},elements:function(){var a=this,b={};return c(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&
    a.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in b||!a.objectLength(c(this).rules()))return false;return b[this.name]=true})},clean:function(a){return c(a)[0]},errors:function(){return c(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=c([]);this.toHide=c([]);this.currentElements=c([])},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers)},
    prepareElement:function(a){this.reset();this.toHide=this.errorsFor(a)},check:function(a){a=this.validationTargetFor(this.clean(a));var b=c(a).rules(),d=false,e;for(e in b){var f={method:e,parameters:b[e]};try{var g=c.validator.methods[e].call(this,a.value.replace(/\r/g,""),a,f.parameters);if(g=="dependency-mismatch")d=true;else{d=false;if(g=="pending"){this.toHide=this.toHide.not(this.errorsFor(a));return}if(!g){this.formatAndAdd(a,f);return false}}}catch(h){this.settings.debug&&window.console&&console.log("exception occured when checking element "+
        a.id+", check the '"+f.method+"' method",h);throw h;}}if(!d){this.objectLength(b)&&this.successList.push(a);return true}},customMetaMessage:function(a,b){if(c.metadata){var d=this.settings.meta?c(a).metadata()[this.settings.meta]:c(a).metadata();return d&&d.messages&&d.messages[b]}},customMessage:function(a,b){var d=this.settings.messages[a];return d&&(d.constructor==String?d:d[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(arguments[a]!==undefined)return arguments[a]},defaultMessage:function(a,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             b){return this.findDefined(this.customMessage(a.name,b),this.customMetaMessage(a,b),!this.settings.ignoreTitle&&a.title||undefined,c.validator.messages[b],"<strong>Warning: No message defined for "+a.name+"</strong>")},formatAndAdd:function(a,b){var d=this.defaultMessage(a,b.method),e=/\$?\{(\d+)\}/g;if(typeof d=="function")d=d.call(this,b.parameters,a);else if(e.test(d))d=jQuery.format(d.replace(e,"{$1}"),b.parameters);this.errorList.push({message:d,element:a});this.errorMap[a.name]=d;this.submitted[a.name]=
        d},addWrapper:function(a){if(this.settings.wrapper)a=a.add(a.parent(this.settings.wrapper));return a},defaultShowErrors:function(){for(var a=0;this.errorList[a];a++){var b=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,b.element,this.settings.errorClass,this.settings.validClass);this.showLabel(b.element,b.message)}if(this.errorList.length)this.toShow=this.toShow.add(this.containers);if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);
        if(this.settings.unhighlight){a=0;for(b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass)}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return c(this.errorList).map(function(){return this.element})},showLabel:function(a,b){var d=this.errorsFor(a);if(d.length){d.removeClass(this.settings.validClass).addClass(this.settings.errorClass);
        d.attr("generated")&&d.html(b)}else{d=c("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(a),generated:true}).addClass(this.settings.errorClass).html(b||"");if(this.settings.wrapper)d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,c(a)):d.insertAfter(a))}if(!b&&this.settings.success){d.text("");typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d)}this.toShow=
        this.toShow.add(d)},errorsFor:function(a){var b=this.idOrName(a);return this.errors().filter(function(){return c(this).attr("for")==b})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){if(this.checkable(a))a=this.findByName(a.name).not(this.settings.ignore)[0];return a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(a){var b=this.currentForm;return c(document.getElementsByName(a)).map(function(d,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                e){return e.form==b&&e.name==a&&e||null})},getLength:function(a,b){switch(b.nodeName.toLowerCase()){case "select":return c("option:selected",b).length;case "input":if(this.checkable(b))return this.findByName(b.name).filter(":checked").length}return a.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):true},dependTypes:{"boolean":function(a){return a},string:function(a,b){return!!c(a,b.form).length},"function":function(a,b){return a(b)}},optional:function(a){return!c.validator.methods.required.call(this,
        c.trim(a.value),a)&&"dependency-mismatch"},startRequest:function(a){if(!this.pending[a.name]){this.pendingRequest++;this.pending[a.name]=true}},stopRequest:function(a,b){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[a.name];if(b&&this.pendingRequest==0&&this.formSubmitted&&this.form()){c(this.currentForm).submit();this.formSubmitted=false}else if(!b&&this.pendingRequest==0&&this.formSubmitted){c(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=
        false}},previousValue:function(a){return c.data(a,"previousValue")||c.data(a,"previousValue",{old:null,valid:true,message:this.defaultMessage(a,"remote")})}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(a,b){a.constructor==String?this.classRuleSettings[a]=b:c.extend(this.classRuleSettings,
    a)},classRules:function(a){var b={};(a=c(a).attr("class"))&&c.each(a.split(" "),function(){this in c.validator.classRuleSettings&&c.extend(b,c.validator.classRuleSettings[this])});return b},attributeRules:function(a){var b={};a=c(a);for(var d in c.validator.methods){var e;if(e=d==="required"&&typeof c.fn.prop==="function"?a.prop(d):a.attr(d))b[d]=e;else if(a[0].getAttribute("type")===d)b[d]=true}b.maxlength&&/-1|2147483647|524288/.test(b.maxlength)&&delete b.maxlength;return b},metadataRules:function(a){if(!c.metadata)return{};
    var b=c.data(a.form,"validator").settings.meta;return b?c(a).metadata()[b]:c(a).metadata()},staticRules:function(a){var b={},d=c.data(a.form,"validator");if(d.settings.rules)b=c.validator.normalizeRule(d.settings.rules[a.name])||{};return b},normalizeRules:function(a,b){c.each(a,function(d,e){if(e===false)delete a[d];else if(e.param||e.depends){var f=true;switch(typeof e.depends){case "string":f=!!c(e.depends,b.form).length;break;case "function":f=e.depends.call(b,b)}if(f)a[d]=e.param!==undefined?
    e.param:true;else delete a[d]}});c.each(a,function(d,e){a[d]=c.isFunction(e)?e(b):e});c.each(["minlength","maxlength","min","max"],function(){if(a[this])a[this]=Number(a[this])});c.each(["rangelength","range"],function(){if(a[this])a[this]=[Number(a[this][0]),Number(a[this][1])]});if(c.validator.autoCreateRanges){if(a.min&&a.max){a.range=[a.min,a.max];delete a.min;delete a.max}if(a.minlength&&a.maxlength){a.rangelength=[a.minlength,a.maxlength];delete a.minlength;delete a.maxlength}}a.messages&&delete a.messages;
    return a},normalizeRule:function(a){if(typeof a=="string"){var b={};c.each(a.split(/\s/),function(){b[this]=true});a=b}return a},addMethod:function(a,b,d){c.validator.methods[a]=b;c.validator.messages[a]=d!=undefined?d:c.validator.messages[a];b.length<3&&c.validator.addClassRules(a,c.validator.normalizeRule(a))},methods:{required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&a.length>0;case "input":if(this.checkable(b))return this.getLength(a,
    b)>0;default:return c.trim(a).length>0}},remote:function(a,b,d){if(this.optional(b))return"dependency-mismatch";var e=this.previousValue(b);this.settings.messages[b.name]||(this.settings.messages[b.name]={});e.originalMessage=this.settings.messages[b.name].remote;this.settings.messages[b.name].remote=e.message;d=typeof d=="string"&&{url:d}||d;if(this.pending[b.name])return"pending";if(e.old===a)return e.valid;e.old=a;var f=this;this.startRequest(b);var g={};g[b.name]=a;c.ajax(c.extend(true,{url:d,
    mode:"abort",port:"validate"+b.name,dataType:"json",data:g,success:function(h){f.settings.messages[b.name].remote=e.originalMessage;var j=h===true;if(j){var i=f.formSubmitted;f.prepareElement(b);f.formSubmitted=i;f.successList.push(b);f.showErrors()}else{i={};h=h||f.defaultMessage(b,"remote");i[b.name]=e.message=c.isFunction(h)?h(a):h;f.showErrors(i)}e.valid=j;f.stopRequest(b,j)}},d));return"pending"},minlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)>=d},maxlength:function(a,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               b,d){return this.optional(b)||this.getLength(c.trim(a),b)<=d},rangelength:function(a,b,d){a=this.getLength(c.trim(a),b);return this.optional(b)||a>=d[0]&&a<=d[1]},min:function(a,b,d){return this.optional(b)||a>=d},max:function(a,b,d){return this.optional(b)||a<=d},range:function(a,b,d){return this.optional(b)||a>=d[0]&&a<=d[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(a)},
    url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},
    date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 -]+/.test(a))return false;var d=0,e=0,f=false;a=a.replace(/\D/g,"");for(var g=a.length-1;g>=
        0;g--){e=a.charAt(g);e=parseInt(e,10);if(f)if((e*=2)>9)e-=9;d+=e;f=!f}return d%10==0},accept:function(a,b,d){d=typeof d=="string"?d.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(b)||a.match(RegExp(".("+d+")$","i"))},equalTo:function(a,b,d){d=c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){c(b).valid()});return a==d.val()}}});c.format=c.validator.format})(jQuery);
(function(c){var a={};if(c.ajaxPrefilter)c.ajaxPrefilter(function(d,e,f){e=d.port;if(d.mode=="abort"){a[e]&&a[e].abort();a[e]=f}});else{var b=c.ajax;c.ajax=function(d){var e=("port"in d?d:c.ajaxSettings).port;if(("mode"in d?d:c.ajaxSettings).mode=="abort"){a[e]&&a[e].abort();return a[e]=b.apply(this,arguments)}return b.apply(this,arguments)}}})(jQuery);
(function(c){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.handle.call(this,e)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)},handler:function(e){arguments[0]=c.event.fix(e);arguments[0].type=b;return c.event.handle.apply(this,arguments)}}});c.extend(c.fn,{validateDelegate:function(a,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    b,d){return this.bind(b,function(e){var f=c(e.target);if(f.is(a))return d.apply(f,arguments)})}})})(jQuery);

/*  new/common/js/checkboxes.js  */
function CheckBoxProcessor(form) {
    var box = this;
    box.isps = [];
    box.isps_enabled = false;
    var new_user_checkboxes = $('.show_for_new_container', form);
    var isps_user_checkboxes = $('.show_for_isps_container', form);

    box.in_array = function(needle, haystack, argStrict) {
        var key = '', strict = !!argStrict;
        if (strict) {
            for (key in haystack) {
                if (haystack[key] === needle) {
                    return true;
                }
            }
        } else {
            for (key in haystack) {
                if (haystack[key] == needle) {
                    return true;
                }
            }
        }

        return false;
    }
    box.showNewUserCheckboxes = function(){
        new_user_checkboxes.show(400).find('input').attr("disabled", false);
    }
    box.hideNewUserCheckboxes = function() {
        new_user_checkboxes.hide(400).find('input').attr("disabled", true);
    }
    box.showIspsUserCheckboxes = function(){
        isps_user_checkboxes.show(400).find('input').attr("disabled", false);
    }
    box.hideIspsUserCheckboxes = function() {
        isps_user_checkboxes.hide(400).find('input').attr("disabled", true);
    }
    box.setISPS = function(isps){
        box.isps_enabled = true;
        box.isps = isps;
    }
    box.is_isp = function(email){
        for(var h in box.isps) {
            var pattern = new RegExp('@' + box.isps[h]+ '$',"i");
            if (pattern.test(email)) {
                return true;
            }
        }
        return false;
    }
    box.setEmailEventListener = function(email) {
        var timeout;
        var KEY = {
                UP: 38,
                DOWN: 40,
                DEL: 46,
                TAB: 9,
                RETURN: 13,
                ESC: 27,
                COMMA: 188,
                PAGEUP: 33,
                PAGEDOWN: 34,
                BACKSPACE: 8
            };
        var lastKeyPressCode;

        function onChange(){
            var obj = $(email).get(0);
            if (obj.value != obj.lastValue){
                $(obj).css('background', "url('/images/upload_mini.gif') right center no-repeat");
                var email_pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))\s*$/;
                if(!email_pattern.test(obj.value)){
                    if(obj.value != ''){
                    } else {
                    }
                    is_simple = true;

                    if (0 < new_user_checkboxes.length) {
                        box.hideNewUserCheckboxes();
                        //box.hideIspsUserCheckboxes();
                    }
                    setTimeout(function(){$(obj).css('background', "none");}, 1000);
                }else{
                    /*if (box.is_isp(obj.value)){
                        box.showIspsUserCheckboxes();
                    } else {
                        box.hideIspsUserCheckboxes();
                    }*/
                    if (0 < new_user_checkboxes.length) {
                        $(obj).css('background', "url('/images/upload_mini.gif') right center no-repeat");
                        $.get('/act/index.php?r=checkemailexists&Email=' + encodeURIComponent(obj.value), {}, function(data){
                            $(obj).css('background', "none");
                            results = data.split('|');
                            if (results[0] == 'true'){
                                is_simple = true;
                                box.hideNewUserCheckboxes();
                            } else if(!box.isps_enabled) {
                                is_simple = false;
                                box.showNewUserCheckboxes();
                            } else if( box.isps_enabled && box.is_isp(obj.value)) {
                                is_simple = false;
                                box.showNewUserCheckboxes();
                            } else {
                                is_simple = true;
                                box.hideNewUserCheckboxes();
                            }
                        });
                    } else {
                        $(obj).css('background', "none");
                    }
                }
            }
            obj.lastValue = obj.value;
        };
        $(email).bind(($.browser.opera ? "keypress" : "keydown"), function(event){
            lastKeyPressCode = event.keyCode;
            switch(event.keyCode) {
                case KEY.UP:
                    event.preventDefault();
                    break;
                case KEY.DOWN:
                    event.preventDefault();
                    break;
                case KEY.PAGEUP:
                    event.preventDefault();
                    break;
                case KEY.PAGEDOWN:
                    event.preventDefault();
                    break;
                case KEY.TAB:
                case KEY.RETURN:
                    break;
                case KEY.ESC:
                    break;
                default:
                    clearTimeout(timeout);
                    timeout = setTimeout(onChange, 400);
                    break;
            }
        });
    }
}

/*  common/js/MCounter.js  */
var counterdata;
function MCounter(options) {
    this['mcounter_' + options.cid] = {};
    var counter = this['mcounter_' + options.cid];
    counter.setCurrency = function () {
        $('.progress-currency' + counter.mckey + ', .progress-currency-no-key').each(function () {
            $(this).html(counter.currency_value);
        });
    };
    counter.setTarget = function () {
        var target = counter.number_format(counter.target, 0, '.', options.thousand_separator),
            h = '',
            k = '';
        $('.progress-target' + counter.mckey).each(function () {
            if (counter.is_target) {
                $(this).html(target);
            } else {
                $(this).html('');
            }
        });
        counter.text = counter.text.replace('{target}', target);
        if (counter.is_target) {
            if ('' !== counter.currency_value) {
                h = ' ';
            } else {
                k = ' ';
            }
            $('.progress-target-additional' + counter.mckey).html(k + counter.number_format(counter.target, 0, '.', options.thousand_separator));
            $('.progress-currency-target' + counter.mckey).html(h + counter.currency_value);
        }
    };
    counter.setText = function () {
        if (counter.in_array(counter.counter_type, ['countries_donate', 'donates'])) {
            counter.setAdditionalCurrency();
        }
        $('.progress-text' + counter.mckey).html(' ' + counter.text);

    };
    counter.setAdditionalCurrency = function () {
        if ('euro_dollar' === counter.currency) {
            $('.progress-additional-currency' + counter.mckey).html('($' + counter.number_format(counterdata.USD) + ')');
        } else if ('dollar_euro' === counter.currency) {
            $('.progress-additional-currency' + counter.mckey).html('(&euro;' + counter.number_format(counterdata.EUR) + ')');
        }
    };
    counter.setCountryCount = function () {
        if ('countries' === counter.counter_type) {
            $('.progress-country' + counter.mckey).html(' ' + counterdata.countries_cnt + ' ' + counter.country_text);
        } else if ('countries_donate' === counter.counter_type) {
            $('.progress-country' + counter.mckey).html(' ' + counterdata.donate_countries_cnt + ' ' + counter.country_text);
        }
    };
    counter.setData = function (num) {
        var togo = counter.target - num;
        if (counter.default_max > counter.target) {
            togo = counter.default_max - num;
        }
        $('.progress-data' + counter.mckey).each(function () {
            $(this).html(counter.number_format(num, 0, '.', options.thousand_separator));
        });

        $('.progress-data-nearby' + counter.mckey).each(function () {
            $(this).html(counter.number_format(counter.max_nearby, 0, '.', options.thousand_separator));
        });

        $('.progress-data-togo' + counter.mckey + ', .progress-data-togo-no-key').each(function () {
            if (0 > togo) {
                togo = 0;
            }
            $(this).html(counter.number_format(togo, 0, '.', options.thousand_separator)).change();
        });
        $('.progress-data-goal' + counter.mckey + ', .progress-data-goal-no-key').each(function () {
            $(this).html(counter.number_format(counter.target, 0, '.', options.thousand_separator)).change();
        });
    };
    counter.showCounter = function () {
        var px,
            iw;
        counter.setData(counter.num);
        if (counter.max > counter.default_max) {
            counter.default_max = parseInt(counter.max, 10);
            counter.proc = counter.progress_bar_width / counter.max;
        }
        px = parseInt(counter.proc * counter.num, 10);
        iw = $('.progress-inline' + counter.mckey).width();
        if (0 !== iw && (iw + 10) > px) {
            px = iw + 10;
        }
        $('.progress-move' + counter.mckey).width(px + 'px');
    };

    counter.showNearbyCounter = function () {
        var px,
            iw;
        counter.setData(counter.num);
        if (counter.nearby_max > counter.default_max) {
            counter.default_max = parseInt(counter.nearby_max, 10);
            counter.proc = counter.progress_bar_width / counter.nearby_max;
        }
        px = parseInt(counter.proc * counter.nearby_max, 10);
        iw = $('.progress-inline' + counter.mckey).width();
        if (0 !== iw && (iw + 10) > px) {
            px = iw + 10;
        }
        $('.progress-move' + counter.mckey).width(px + 'px');
    };

    counter.getSumm = function (nnm, nnm2) {
        var rand, timeout;
        if (nnm2 < 1) {
            rand = nnm + nnm2;
        } else if (nnm2 < 10) {
            rand = nnm + 1;
            timeout = 100;
        } else if (nnm2 < 100) {
            rand = nnm + Math.floor((Math.random() * 9) + 1);
            timeout = 0;
        } else if (nnm2 < 1000) {
            rand = nnm + Math.floor((Math.random() * 91) + 10);
            timeout = 50;
        } else if (nnm2 < 10000) {
            rand = nnm + Math.floor((Math.random() * 901) + 100);
            timeout = 50;
        } else if (nnm2 < 100000) {
            rand = nnm + Math.floor((Math.random() * 2001) + 1000);
            timeout = 50;
        } else if (nnm2 < 1000000) {
            rand = nnm + Math.floor((Math.random() * 20001) + 5000);
            timeout = 50;
        } else if (nnm2 >= 1000000) {
            rand = nnm + Math.floor((Math.random() * nnm2 / 100) + nnm2 / 100);
            timeout = 50;
        } else {
            rand = nnm + counter.plus;
        }
        counter.timeout = timeout;
        return rand;
    };

    counter.startCounter = function () {
        var rand, num2;

        if (counter.franchise_cid && undefined != counter.franchise_cid){
            counter.showNearbyCounter();
        } else {
            counter.showCounter();
        }

        if (counter.timerId) {
            clearTimeout(counter.timerId);
        }
        if (counter.num < counter.max) {
            rand = counter.getSumm(counter.num, counter.max);
            if (rand > counter.max) {
                num2 = counter.max - counter.num;
                counter.num = counter.getSumm(counter.num, num2);
            } else {
                counter.num = rand;
            }
            counter.timerId = setTimeout(counter.startCounter, counter.timeout);
        } else if (true === counter.ajax_data) {
            counter.ajaxCounter();
        }

    };
    counter.addCommas = function (nStr) {
        var rgx, x, x1, x2;
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;
    };
    counter.ajaxCounter = function () {
        if (counter.ajax_counter_timer) {
            clearTimeout(counter.ajax_counter_timer);
        }
        $.ajax({
            url: '/act/ajax_counter.php?cid=' + counter.cid + '&type=' + counter.template +
                (undefined !== counter.petition_id ? '&petition_id=' + counter.petition_id : '') +
                (counter.franchise_cid && undefined !== counter.franchise_cid ? '&franchise_cid=' + counter.franchise_cid : '') +
                (counter.petition_latitude && undefined !== counter.petition_latitude ? '&petition_latitude=' + counter.petition_latitude : '') +
                (counter.petition_longitude && undefined !== counter.petition_longitude ? '&petition_longitude=' + counter.petition_longitude : '') +
                (counter.petition_distance && undefined !== counter.petition_distance ? '&distance=' + counter.petition_distance : ''),
            dataType: 'json',
            type: 'GET',
            success: function (json) {
                if (json && 0 == json.paused) {
                    switch (counter.counter_type) {
                    case 'countries_donate':
                    case 'donates':
                        if (counter.in_array(counter.currency, ['euro', 'euro_dollar'])) {
                            counter.max = json.EUR;
                        } else if (counter.in_array(counter.currency, ['other'])) {
                            counter.max = json.OTHER;
                        } else {
                            counter.max = json.USD;
                        }
                        counterdata.USD = json.USD;
                        counterdata.EUR = json.EUR;
                        counterdata.OTHER = json.OTHER;
                        counter.setAdditionalCurrency();
                        break;
                    case 'x_number':
                        counter.max = json.donations;
                        break;
                    case 'ct_x_unique_donors':
                        counter.max = json.donors;
                        break;

                    case 'sign':
                        counter.max = json.count;
                        if (undefined !== counter.franchise_cid){
                            counter.max_nearby = json.count_nearby;
                        }
                        break;
                    }
                }
                counter.ajax_data = false;
                counter.startCounter();
                counter.ajax_counter_timer = setTimeout(counter.ajaxCounter, 20000);
            }
        });
    };
    counter.in_array = function (needle, haystack, argStrict) {
        var key = '', strict = !!argStrict;
        if (strict) {
            for (key in haystack) {
                if (haystack[key] === needle) {
                    return true;
                }
            }
        } else {
            for (key in haystack) {
                if (haystack[key] == needle) {
                    return true;
                }
            }
        }
        return false;
    };
    counter.number_format = function (number, decimals, dec_point, thousands_sep) {
        var n = number, prec = decimals, toFixedFix, sep, dec, s, abs, v, i, decPos;

        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return (Math.round(n * k) / k).toString();
        };

        n = !isFinite(+n) ? 0 : +n;
        prec = !isFinite(+prec) ? 0 : Math.abs(prec);
        sep = (undefined === thousands_sep) ? ',' : thousands_sep;
        dec = (undefined === dec_point) ? '.' : dec_point;

        s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;

        abs = toFixedFix(Math.abs(n), prec);

        if (abs >= 1000) {
            v = abs.split(/\D/);
            i = v[0].length % 3 || 3;

            v[0] = s.slice(0, i + (n < 0)) +
                v[0].slice(i).replace(/(\d{3})/g, sep + '$1');
            s = v.join(dec);
        } else {
            s = s.replace('.', dec);
        }

        decPos = s.indexOf(dec);
        if (prec >= 1 && decPos !== -1 && (s.length - decPos - 1) < prec) {
            s += new Array(prec - (s.length - decPos - 1)).join(0) + '0';
        } else if (prec >= 1 && decPos === -1) {
            s += dec + new Array(prec).join(0) + '0';
        }
        return s;
    };

    counter.cid = options.cid;
    counter.mckey = options.key;

    if (undefined !== options.petition_id) {
        counter.petition_id = options.petition_id;
    }

    counter.progress_bar_width = options.autodect_width ? $(options.progress_container).width() : options.max_width;
    counter.counter_type = options.subtype;
    counter.currency_value = options.current_currency_value;
    counter.currency = options.current_currency;
    counter.text = options.text;
    counter.country_text = options.country_text;
    counter.is_target = options.is_target;
    counter.franchise_cid = false;
    counter.petition_latitude = false;
    counter.petition_longitude = false;
    counter.petition_distance = false;

    if (options.franchise_cid && 'undefined' !== options.franchise_cid){
        counter.franchise_cid = options.franchise_cid;

        counter.petition_latitude  = options.petition_latitude;
        counter.petition_longitude = options.petition_longitude;
        counter.petition_distance = options.petition_distance;
    }

    counter.is_progress_target = ('undefined' !== typeof options.is_progress_target) ? options.is_progress_target : true;
    counter.template = '';

    if (undefined === window.counterdata) {
        window.counterdata = {target: 0, target_donate: 0, EUR: 0, OTHER: 0, USD: 0, sign: 0, sign_nearby: 0, donations: 0};
    }

    switch (counter.counter_type) {
    case 'donates':
        counter.target = counterdata.target_donate;
        if (counter.in_array(counter.currency, ['euro', 'euro_dollar'])) {
            counter.current_value = counterdata.EUR;
        } else if (counter.in_array(counter.currency, ['dollar', 'dollar_euro'])) {
            counter.current_value = counterdata.USD;
        } else if (counter.in_array(counter.currency, ['other'])) {
            counter.current_value = counterdata.OTHER;
        }
        counter.template = 'donates';
        break;
    case 'countries_donate':
        counter.target = counterdata.target_donate;
        if (counter.in_array(counter.currency, ['euro', 'euro_dollar'])) {
            counter.current_value = counterdata.EUR;
        } else if (counter.in_array(counter.currency, ['dollar', 'dollar_euro'])) {
            counter.current_value = counterdata.USD;
        }
        counter.template = 'donates';
        break;
    case 'sign':
        counter.currency_value = '';
        counter.target = counterdata.target;
        counter.current_value = counterdata.sign;
        if (false !== counter.franchise_cid){
            counter.current_nearby_value = counterdata.sign_nearby;
        }
        counter.template = 'sign';
        break;
    case 'x_number':
        counter.currency_value = '';
        counter.target = counterdata.target;
        counter.current_value = counterdata.donations;
        counter.template = 'donations';
        break;

    case 'ct_x_unique_donors':
        counter.currency_value = '';
        counter.target = counterdata.target;
        counter.current_value = counterdata.donors;
        counter.template = 'donors';
        break;

    case 'countries':
        counter.currency_value = '';
        counter.target = counterdata.target;
        counter.current_value = counterdata.sign;
        counter.template = 'sign';
        break;
    }

    counter.max2 = counter.target;
    counter.max = counter.current_value;
    counter.nearby_max = counter.current_nearby_value;
    counter.default_max = parseInt(counter.max2, 10);
    counter.num = 0;//arguments[5]?arguments[5]:0;
    counter.timerId = null;
    counter.plus = undefined !== options.plus ? options.plus : 1;
    counter.timeout = 0;
    counter.proc = counter.progress_bar_width / counter.max2;
    counter.ajax_counter_timer = null;
    counter.ajax_data = options.ajax;
    counter.aj_counter_flag = false;
    if (counter.max > counter.max2) {
        counter.proc = counter.progress_bar_width / counter.max;
        counter.default_max = parseInt(counter.max, 10);
    }
    counter.setText();
    counter.setCurrency();
    counter.setTarget();
    counter.setCountryCount();
    counter.startCounter();
}

/*  common/js/ZeroClipboard.js  */
// Simple Set Clipboard System
// Author: Joseph Huckaby

var ZeroClipboard = {

	version: "1.0.7",
	clients: {}, // registered upload clients on page, indexed by id
	moviePath: 'ZeroClipboard.swf', // URL to movie
	nextId: 1, // ID of next movie

	$: function(thingy) {
		// simple DOM lookup utility function
		if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
		if (!thingy.addClass) {
			// extend element with a few useful methods
			thingy.hide = function() { this.style.display = 'none'; };
			thingy.show = function() { this.style.display = ''; };
			thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
			thingy.removeClass = function(name) {
				var classes = this.className.split(/\s+/);
				var idx = -1;
				for (var k = 0; k < classes.length; k++) {
					if (classes[k] == name) { idx = k; k = classes.length; }
				}
				if (idx > -1) {
					classes.splice( idx, 1 );
					this.className = classes.join(' ');
				}
				return this;
			};
			thingy.hasClass = function(name) {
				return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
			};
		}
		return thingy;
	},

	setMoviePath: function(path) {
		// set path to ZeroClipboard.swf
		this.moviePath = path;
	},

	dispatch: function(id, eventName, args) {
		// receive event from flash movie, send to client
		var client = this.clients[id];
		if (client) {
			client.receiveEvent(eventName, args);
		}
	},

	register: function(id, client) {
		// register new client to receive events
		this.clients[id] = client;
	},

	getDOMObjectPosition: function(obj, stopObj) {
		// get absolute coordinates for dom element
		var info = {
			left: 0,
			top: 0,
			width: obj.width ? obj.width : obj.offsetWidth,
			height: obj.height ? obj.height : obj.offsetHeight
		};

		while (obj && (obj != stopObj)) {
			info.left += obj.offsetLeft;
			info.top += obj.offsetTop;
			obj = obj.offsetParent;
		}
		return info;
	},

	Client: function(elem) {
		// constructor for new simple upload client
		this.handlers = {};

		// unique ID
		this.id = ZeroClipboard.nextId++;
		this.movieId = 'ZeroClipboardMovie_' + this.id;

		// register client with singleton to receive flash events
		ZeroClipboard.register(this.id, this);

		// create movie
		if (elem) this.glue(elem);
	}
};

ZeroClipboard.Client.prototype = {

	id: 0, // unique ID for us
	ready: false, // whether movie is ready to receive events or not
	movie: null, // reference to movie object
	clipText: '', // text to copy to clipboard
	handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
	cssEffects: true, // enable CSS mouse effects on dom container
	handlers: null, // user event handlers

	glue: function(elem, appendElem, stylesToAdd) {
        var addedStyle;
		// glue to DOM element
		// elem can be ID or actual DOM element object
		this.domElement = ZeroClipboard.$(elem);

		// float just above object, or zIndex 99 if dom element isn't set
		var zIndex = 99;
		if (this.domElement.style.zIndex) {
			zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
		}

		if (typeof(appendElem) === 'string') {
			appendElem = ZeroClipboard.$(appendElem);
		}
		else if (appendElem === undefined) {
			appendElem = document.getElementsByTagName('body')[0];
		}

        this.appendElem = appendElem;

		// find X/Y position of domElement
		var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
		// create floating DIV above element
		this.div = document.createElement('div');
		var style = this.div.style;
		style.position = 'absolute';
		style.left = '' + box.left + 'px';
		style.top = '' + box.top + 'px';
		style.width = '' + box.width + 'px';
		style.height = '' + box.height + 'px';
		style.zIndex = zIndex;

		if (typeof(stylesToAdd) === 'object') {
			for (addedStyle in stylesToAdd) {
				style[addedStyle] = stylesToAdd[addedStyle];
			}
		}

		// style.backgroundColor = '#f00'; // debug

		appendElem.appendChild(this.div);

		this.div.innerHTML = this.getHTML( box.width, box.height );
	},

	getHTML: function(width, height) {
		// return HTML for movie
		var html = '';
		var flashvars = 'id=' + this.id +
			'&width=' + width +
			'&height=' + height;

		if (navigator.userAgent.match(/MSIE/)) {
			// IE gets an OBJECT tag
			var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
			html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
		}
		else {
			// all other browsers get an EMBED tag
			html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
		}
		return html;
	},

	hide: function() {
		// temporarily hide floater offscreen
		if (this.div) {
			this.div.style.left = '-2000px';
		}
	},

	show: function() {
		// show ourselves after a call to hide()
		this.reposition();
	},

	destroy: function() {
		// destroy control and floater
		if (this.domElement && this.div) {
			this.hide();
			this.div.innerHTML = '';

			var body = document.getElementsByTagName('body')[0];
			try { body.removeChild( this.div ); } catch(e) {;}

			this.domElement = null;
			this.div = null;
		}
	},

	reposition: function(elem) {
		// reposition our floating div, optionally to new container
		// warning: container CANNOT change size, only position
		if (elem) {
			this.domElement = ZeroClipboard.$(elem);
			if (!this.domElement) this.hide();
		}

		if (this.domElement && this.div) {
			var box = ZeroClipboard.getDOMObjectPosition(this.domElement, this.appendElem);
			var style = this.div.style;
			style.left = '' + box.left + 'px';
			style.top = '' + box.top + 'px';
            style.width = '' + box.width + 'px';
            style.height = '' + box.height + 'px';
            this.div.innerHTML = this.getHTML( box.width, box.height );
		}
	},

	setText: function(newText) {
		// set text to be copied to clipboard
		this.clipText = newText;
		if (this.ready) this.movie.setText(newText);
	},

	addEventListener: function(eventName, func) {
		// add user event listener for event
		// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
		if (!this.handlers[eventName]) this.handlers[eventName] = [];
		this.handlers[eventName].push(func);
	},

	setHandCursor: function(enabled) {
		// enable hand cursor (true), or default arrow cursor (false)
		this.handCursorEnabled = enabled;
		if (this.ready) this.movie.setHandCursor(enabled);
	},

	setCSSEffects: function(enabled) {
		// enable or disable CSS effects on DOM container
		this.cssEffects = !!enabled;
	},

	receiveEvent: function(eventName, args) {
		// receive event from flash
		eventName = eventName.toString().toLowerCase().replace(/^on/, '');

		// special behavior for certain events
		switch (eventName) {
			case 'load':
				// movie claims it is ready, but in IE this isn't always the case...
				// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
				this.movie = document.getElementById(this.movieId);
				if (!this.movie) {
					var self = this;
					setTimeout( function() { self.receiveEvent('load', null); }, 1 );
					return;
				}

				// firefox on pc needs a "kick" in order to set these in certain cases
				if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
					var self = this;
					setTimeout( function() { self.receiveEvent('load', null); }, 100 );
					this.ready = true;
					return;
				}

				this.ready = true;
                try {
                    this.movie.setText( this.clipText );
                    this.movie.setHandCursor( this.handCursorEnabled );
                } catch (e) {
                    //silently skip IE8 error
                    // Upgrade ZeroClipboard to latest version
                    // Remove this if the STO Wizard layout + DM does not pass tests
                }


				break;

			case 'mouseover':
				if (this.domElement && this.cssEffects) {
					this.domElement.addClass('hover');
					if (this.recoverActive) this.domElement.addClass('active');
				}
				break;

			case 'mouseout':
				if (this.domElement && this.cssEffects) {
					this.recoverActive = false;
					if (this.domElement.hasClass('active')) {
						this.domElement.removeClass('active');
						this.recoverActive = true;
					}
					this.domElement.removeClass('hover');
				}
				break;

			case 'mousedown':
				if (this.domElement && this.cssEffects) {
					this.domElement.addClass('active');
				}
				break;

			case 'mouseup':
				if (this.domElement && this.cssEffects) {
					this.domElement.removeClass('active');
					this.recoverActive = false;
				}
				break;
		} // switch eventName

		if (this.handlers[eventName]) {
			for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
				var func = this.handlers[eventName][idx];

				if (typeof(func) == 'function') {
					// actual function reference
					func(this, args);
				}
				else if ((typeof(func) == 'object') && (func.length == 2)) {
					// PHP style object + method, i.e. [myObject, 'myMethod']
					func[0][ func[1] ](this, args);
				}
				else if (typeof(func) == 'string') {
					// name of function
					window[func](this, args);
				}
			} // foreach event handler defined
		} // user defined handler for event
	}

};

/*  common/js/Share.js  */
if (!window.share_data) {
    window.share_data = {};
}
if (!window.Share) {
    Share = {
        event_id: 0,
        results: {},
        URLdata: [],
        shareCallback: [],
        petition_id: false,
        resetUrls: function () {
            this.urls = {};
            this.urlsA = [];
        },
        addQS: function (d, c) {
            var a = [];
            for (var b in c) if (c[b]) a.push(b.toString() + '=' + encodeURIComponent(c[b]));
            return d + '?' + a.join('&');
        },
        getUrl: function (a) {
            return a.getAttribute('share_url') || window.location.href;
        },
        getType: function (a) {
            return a.getAttribute('type') || 'button_count';
        },
        pretty: function (a) {
            return a >= 1e+07 ? Math.round(a / 1e+06) + 'M' : (a >= 10000 ? Math.round(a / 1000) + 'K' : a);
        },
        updateButton: function (a) {
            var cid = $(a).attr('sharecid');
            var type = $(a).attr('sharetype');
            for (h in this.results[cid]) {
                if (this.results[cid]) {
                    a[type + '_count'] = this.results[cid][type + '_count'];
                } else {
                    a[type + '_count'] = 0;
                }
                this.displayBox(a, 0);
            }

        },
        getWindowInnerSize: function () {
            var width = 0;
            var height = 0;
            var elem = null;
            if ('innerWidth' in window) {
                // For non-IE
                width = window.innerWidth;
                height = window.innerHeight;
            } else {
                // For IE,
                if (('BackCompat' === window.document.compatMode)
                    && ('body' in window.document)) {
                    elem = window.document.body;
                } else if ('documentElement' in window.document) {
                    elem = window.document.documentElement;
                }
                if (elem !== null) {
                    width = elem.offsetWidth;
                    height = elem.offsetHeight;
                }
            }
            return [width, height];
        },
        getParentCoords: function () {
            var width = 0;
            var height = 0;
            if ('screenLeft' in window) {
                // IE-compatible variants
                width = window.screenLeft;
                height = window.screenTop;
            } else if ('screenX' in window) {
                // Firefox-compatible
                width = window.screenX;
                height = window.screenY;
            }
            return [width, height];
        },
        getCenteredCoords: function (width, height) {
            var parentSize = this.getWindowInnerSize();
            var parentPos = this.getParentCoords();
            var xPos = parentPos[0] +
                Math.max(0, Math.floor((parentSize[0] - width) / 2));
            var yPos = parentPos[1] +
                Math.max(0, Math.floor((parentSize[1] - height) / 2));
            return [xPos, yPos];
        },
        displayBox: function (a, d) {
            var type = $(a).attr('sharetype');
            if (typeof(a[type + '_count']) == 'number' && a[type + '_count'] >= d) {
                $('.' + $(a).attr('sharetype') + '_share_counter_' + $(a).attr('sharecid')).each(function () {
                    $(this).html(Share.pretty(a[type + '_count']))
                });
            }
        },
        addEvent: function (href) {
            if ('undefined' !== typeof rsvp_event_id) {
                return href + '&id=' + rsvp_event_id + '';
            }
            return href;
        },
        renderButton: function (c) {
            var bIsMobile = (window.bIsMobile != undefined) ? window.bIsMobile : false;
            var cid = $(c).attr('sharecid');
            var type = $(c).attr('sharetype');
            var lang = $(c).attr('sharelang');
            var href = $(c).attr('href');
            var method = $(c).attr('sharemethod');
            if (!method || bIsMobile) {
                method = 'share';
            }
            /***************************FACEBOOK**************************/
            var global_response = null;

            function is_valid_post_response(response) {
                return (typeof response !== 'undefined' && response !== null && typeof response.post_id !== 'undefined');
            }
            
            var stream_callback = function (post) {
                if (is_valid_post_response(post)) {
                    // Save share action id
                    $.ajax({
                        url:'/act/ajax_save_fb_share.php',
                        dataType: 'json',
                        type: 'POST',
                        data: {
                            user_hash: getUserHash(true),
                            action_type: 'og.shares',
                            action_id: post.post_id
                        }
                    });
                }           
                $(document).facebookReady(function () {
                    FB.getLoginStatus(
                        function (response) {
                            if (response.session) {
                                //login_response(response);
                                var a = document.createElement('script');
                                
                                if (is_valid_post_response(post)) {
                                    var send_data = {
                                        action: 'save_share_counter',
                                        cid: cid,
                                        lang: lang,
                                        random: Math.random(),
                                        value: 'shared',
                                        fb_uid: response.session.uid
                                    };
                                    if (Share.petition_id) {
                                        send_data.petition_id = Share.petition_id;
                                    }
                                    a.src = Share.addQS('/act/facebook.php', send_data);
                                } else {
                                    var send_data = {
                                        action: 'save_share_counter',
                                        cid: cid,
                                        lang: lang,
                                        random: Math.random(),
                                        value: 'closed',
                                        fb_uid: response.session.uid
                                    };
                                    if (Share.petition_id) {
                                        send_data.petition_id = Share.petition_id;
                                    }
                                    a.src = Share.addQS('/act/facebook.php', send_data);
                                }
                                Share.insert(a);
                                if ('undefined' !== typeof post && null !== post && post.post_id) {
                                    Share.updateHiddenCounter(c, 'shared', { fb_uid: response.session.uid });
                                } else {
                                    Share.updateHiddenCounter(c, 'closed', { fb_uid: response.session.uid });
                                }
                            } else {
                                //FB.login(login_response);
                            }
                        }
                    );
                });
            };
            var facebook_click = function (e) {
                var $el = $(this);
                e.preventDefault();
                $('body').trigger('sharing_started');
                Share.updateCounter(c);

                var login_response = function (response) {
                    if (response.session) {
                        Share.updateHiddenCounter(c, 'user_clicked', { fb_uid: response.session.uid });
                        global_response = response;
                    }
                };

                if (method === 'tagging' && (typeof($.fn.FBTagFriendsWidget) == 'function')) {
                    var options = {sMethod: method};
                    if (!window.oFBTagWidget) {
                        if ($el.data('title')) {
                            $('#dialogTagFBFriendsTitle').html($el.data('title'));
                        }
                        if ($el.data('description')) {
                            $('#dialogTagFBFriendsText').html($el.data('description'));
                        }

                        // check if scope was provided let's use it
                        if ($el.data('scope') !== undefined) {
                            options.scope = $el.data('scope');
                        }

                        window.oFBTagWidget = $('div#dialogTagFBFriends').FBTagFriendsWidget(options);
                    }
                    window.oFBTagWidget.process(null, cid);
                } else {
                    $(document).facebookReady(function () {
                        if ($.inArray(method, ['stream.dm', 'stream.fbdm', 'share', 'stream.taggingdm']) > -1) {
                            FB.ui({
                                display: 'popup',
                                method: 'share',
                                href: Share.addEvent(share_data[cid].facebook.href)
                            }, stream_callback);
                        } else {
                            FB.getLoginStatus(
                                function (response) {
                                    share_data[cid].facebook.href = Share.addEvent(share_data[cid].facebook.href);

                                    var fb_object = {
                                        display: 'popup',
                                        method: method,//'stream.publish',
                                        attachment: $.extend({}, share_data[cid].facebook),
                                        action_links: share_data[cid].facebook.action_links
                                    };

                                    if ($el.data('custom_fb_wall_url') && method === 'stream.publish') {
                                        fb_object.attachment.href = $el.data('custom_fb_wall_url');
                                    }

                                    if ('stream.share' === method) {
                                        fb_object.u = share_data[cid].facebook.href;
                                        fb_object.t = share_data[cid].facebook.name;
                                        fb_object.attachment = '';
                                        fb_object.action_links = '';
                                    }
                                    if (fb_object.attachment) {
                                        if ($el.data('title')) {
                                            fb_object.attachment.name = $el.data('title');
                                        }
                                        if ($el.data('description')) {
                                            fb_object.attachment.description = $el.data('description');
                                        }
                                    }

                                    if (response.session) {
                                        login_response(response);
                                        if (share_data[cid].facebook.status && '' !== share_data[cid].facebook.status) {
                                            fb_object.message = share_data[cid].facebook.status;
                                        }
                                        FB.ui(
                                            fb_object,
                                            stream_callback
                                        );
                                    } else {
                                        FB.ui(
                                            fb_object,
                                            stream_callback
                                        );
                                    }
                                }
                            );
                        }
                    });

                    Share.displayBox(this, 1);

                    $('body').trigger('sharing_complete');

                    return false;
                }
            };

            /***********************END OF FACEBOOK***********************/

            /***************************ORKUT ****************************/
            var orkut_click = function () {
                $('body').trigger('sharing_started');

                Share.updateCounter(c);
                window.open(decodeURIComponent(Share.addEvent(share_data[cid].orkut.href)), "orkutwindow", "status=1,toolbar=1,height=650,width=1024");

                $('body').trigger('sharing_complete');

                return false;
            };
            /************************END OF ORKUT*************************/

            /****************************TUMBLR***************************/
            var tumblr_click = function () {
                $('body').trigger('sharing_started');

                Share.updateCounter(c);
                var coordinates = Share.getCenteredCoords(500, 420);
                window.open('http://www.tumblr.com/share/link?url=' + Share.addEvent(share_data[cid].tumblr.href) + '&name=' + share_data[cid].tumblr.text + '&description=' + share_data[cid].tumblr.description, "tweetwindow", "status=1,toolbar=1,height=420,width=500" + ",left=" + coordinates[0] + ",top=" + coordinates[1]);

                $('body').trigger('sharing_complete');
                return false;
            };
            /************************END OF TUMBLR*************************/

            /****************************TWITTER ***************************/
            var twitter_click = function () {
                $('body').trigger('sharing_started');

                Share.updateCounter(c);
                var coordinates = Share.getCenteredCoords(500, 350);
                var sWindowUrl = 'http://twitter.com/share?related=Avaaz&url=' + Share.addEvent(share_data[cid].twitter.href) + '&text=' + encodeURIComponent(share_data[cid].twitter.text) /*decodeURIComponent(j)*/;

                if (typeof(sRetweetUrl) != 'undefined') {
                    sWindowUrl = sRetweetUrl;
                }


                window.open(sWindowUrl, "tweetwindow", "status=1,toolbar=1,height=350,width=500" + ",left=" + coordinates[0] + ",top=" + coordinates[1]);

                $('body').trigger('sharing_complete');
                return false;
            };
            /************************END OF TWITTER*************************/

            /*************************** VK ****************************/
            var vk_click = function () {
                Share.updateCounter(c);
                window.open(decodeURIComponent(Share.addEvent(share_data[cid].vk.href)), "vkwindow", "status=1,toolbar=1,height=650,width=1024");
                return false;
            };
            /************************END OF VK*************************/

            var isValidSelector = function (selector) {
                try {
                    var $element = $(selector);
                } catch(error) {
                    return false;
                }
                return ($element.length > 0);
            };

            /****************************EMAIL ***************************/
            var email_click = function () {

                $('body').trigger('sharing_started');

                Share.updateCounter(c);
                if (!c.email_clicked) {
                    c.email_count += 1;
                    c.email_clicked = true;
                }

                var bStats = true;
                if ($(this).data('stats')) {
                    bStats = !!$(this).data('stats');
                }

                var sSubject = $(this).data('subject');
                if (sSubject !== undefined) {
                    if (isValidSelector(sSubject)) {
                        sSubject = $(sSubject).val();
                    }
                } else {
                    sSubject = '';
                }

                var sBody = $(this).data('body');
                if (sBody !== undefined) {
                    var body = $(sBody).val();
                    if (isValidSelector(sBody) && body !== undefined && body !== '') {
                        sBody = body;
                    }
                } else {
                    sBody = '';
                }


                var domain = GetEmailDomain();
                var mailto = true;
                domain = domain && !$(c).data('mobile') ? domain : 'other';

                sBody = getEdgeData({event: (('undefined' !== typeof rsvp_event_id) ? 'id=' + rsvp_event_id : '')}, (sBody !== '' ? sBody : share_data[cid].email.body));
                sBody = $('<textarea />').html(sBody).text();

                switch (domain) {
                    case 'gmail':
                        mailto = false;
                        href = Share.addQS('https://mail.google.com/mail/', {
                            view: 'cm',
                            fs: 1,
                            to: '',
                            su: sSubject !== '' ? sSubject : share_data[cid].email.subject,
                            body: sBody,
                            ui: 2,
                            shva: 1
                        });
                        break;
                    default:
                        href = Share.addQS('mailto:', {
                            subject: sSubject !== '' ? sSubject : share_data[cid].email.subject,
                            body: sBody
                        });
                        break;
                }

                Share.displayBox(this, 1);
                $('body').trigger('sharing_complete');

                if (!mailto) {
                    window.open(href, "emailwindow", "status=1,toolbar=1,height=650,width=1024");
                } else {
                    $(c).attr('target', '_blank');
                    $(c).attr('href', href);
                    return true;
                }

                return false;
            };
            var email_popup = null;
            var email_click_popup = function () {

                var bStats = true;
                if ($(this).data('stats')) {
                    bStats = !!$(this).data('stats');
                }
                var domain = GetEmailDomain();
                if (!c.email_clicked) {
                    c.email_count += 1;
                    c.email_clicked = true;
                    var send_data = {campaign_id: cid, domain: domain};
                    if (Share.petition_id) {
                        send_data.petition_id = Share.petition_id;
                    }
                    if (bStats) {
                        jQuery.post('/act/ajax_send_stats.php', send_data, function () {
                        });
                    }
                }
                if (email_popup) {
                    email_popup.trigger('click');
                } else {
                    if (!window.colorbox_dialogs) {
                        colorbox_dialogs = {};
                    }
                    colorbox_dialogs.email_popup = $.colorbox(
                        {
                            opacity: 0.5,
                            inline: true,
                            href: "#" + $(c).attr('use_popup'),
                            showClose: ('undefined' !== typeof $(c).data('showclose') ? $(c).data('showclose') : true),
                            onClosed: function () {
                                openid.closeColorbox();
                            },
                            onComplete: function () {
                                $(this).colorbox.resize();
                            }
                        });
                }
                //$(c).attr('href', href);
                Share.displayBox(this, 1);
                return false;
            }
            /************************END OF EMAIL*************************/
            if (type != 'email')
                $(c).click(function () {
                    return false;
                }); // fix for IE redirect
            if (share_data[cid] && share_data[cid][type]) {
                switch (type) {
                    case 'facebook':
                        /****************** ADD FACEBOOK SHARE URL ******************/
                        $(c).attr('href', this.addQS('http://www.avaaz.org/act/facebook_share.php', {
                            cid: cid,
                            lang: lang,
                            src: 'sp'
                        }));
                        $(c).click(facebook_click);
                        /************************************************************/
                        break;
                    case 'orkut':
                        /****************** ADD ORKUT SHARE URL ******************/
                        $(c).attr('href', share_data[cid].orkut.href);

                        $(c).click(orkut_click);
                        /************************************************************/
                        break;
                    case 'tumblr':
                        /****************** ADD TUMBLR SHARE URL ******************/
                        $(c).attr('href', 'http://www.tumblr.com/share/link?url=' + share_data[cid].tumblr.href + '&name=' + share_data[cid].tumblr.text + '&description=' + share_data[cid].tumblr.description);
                        $(c).click(tumblr_click);
                        /************************************************************/
                        break;
                    case 'twitter':
                        /****************** ADD TWITTER SHARE URL ******************/
                        $(c).attr('href', 'http://twitter.com/share?related=Avaaz&url=' + share_data[cid].twitter.href + '&text=' + share_data[cid].twitter.text);
                        $(c).click(twitter_click);
                        /************************************************************/
                        break;
                    case 'email':
                        /****************** ADD EMAIL SHARE URL ******************/
                        $(c).attr('href', 'javascript:void(0);');

                        $(c).click(function (e) {
                            if (!window.useContactImporter || window.isContactImporterV1) {
                                if ($(this).attr('use_popup')) {
                                    e.preventDefault();
                                    return email_click_popup.apply(this);
                                } else {
                                    return email_click.apply(this);
                                }
                            }
                        });

                        /************************************************************/
                        break;
                    case 'vk':
                        /****************** ADD VK SHARE URL ******************/
                        $(c).attr('href', share_data[cid].vk.href);
                        $(c).click(vk_click);
                        /************************************************************/
                        break;
                }
            }
            c.fb_rendered = true;
        },
        insert: function (a) {
            (document.getElementsByTagName('HEAD')[0] || document.body).appendChild(a);
        },
        renderAll: function () {
            $('.share').filter(function () {
                return ('undefined' === typeof $(this).attr('sharetype') ? false : true);
            }).each(function (i) {
                Share.URLdata[i] = this;
            });
            var c = Share.URLdata;
            var a = c.length;
            for (var b = 0; b < a; b++) {
                if (!c[b].fb_rendered && $(c[b]).hasClass('janrain-share') === false) {
                    this.renderButton(c[b]);
                }
                if (this.results[$(c[b]).attr('sharecid')]) this.updateButton(c[b]);
            }
        },
        fetchData: function () {
            var data = {};
            for (var h in Share.URLdata) {
                if ('function' === typeof Share.URLdata[h])
                    continue;
                var link = Share.URLdata[h];
                var type = $(link).attr('sharetype');
                var cid = $(link).attr('sharecid');
                if (share_data[cid]) {
                    if ('undefined' === typeof data[cid]) {
                        data[cid] = {};
                    }
                    if ('undefined' === typeof data[cid]['type']) {
                        data[cid]['type'] = {};
                    }
                    data[cid]['type'][type] = 1;
                    /** ADDON FOR PETITIONS ***/
                    if (share_data[cid].petition) {
                        Share.petition_id = share_data[cid].petition;
                    }
                }
            }
            var send_data = {
                v: '1.0',
                action: 'get_share_count',
                format: 'json',
                data: data
            };
            if (Share.petition_id) {
                send_data.petition_id = Share.petition_id;
            }
            this.resetUrls();

            $.ajax(
                {
                    url: '/act/share_stats.php?' + $.param(send_data),
                    type: 'GET',
                    dataType: 'json',
                    success: function (data) {
                        if (data)
                            share_render(data);
                    }
                }
            );
        },
        runShareCallback: function (type) {
            for (var i = 0; i <= Share.shareCallback.length; i++) {
                if ('function' === typeof Share.shareCallback[i]) {
                    Share.shareCallback[i](type);
                }
            }
        },
        updateCounter: function (el) {
            el = $(el);
            if (Share.updateHiddenCounter(el, 'clicked', {})) {
                var elShareButton = el[0];
                var sType = $(elShareButton).attr('sharetype');
                if ($.inArray(sType, ['twitter', 'tumblr', 'orkut', 'email', 'vk']) != -1) {
                    if (!elShareButton[sType + '_clicked']) {
                        elShareButton[sType + '_count'] += 1;
                        elShareButton[sType + '_clicked'] = true;
                    }
                } else {
                    if (sType == 'facebook') {
                        if (!elShareButton['fb_clicked']) {
                            elShareButton['facebook_count'] += 1;
                            elShareButton['fb_clicked'] = true;
                        }
                    }
                }
                Share.displayBox(elShareButton, 1);
                Share.runShareCallback(sType);
            }
        },
        updateHiddenCounter: function (el, sAction, oExtras) {
            var iCid = $(el).attr('sharecid');
            var sType = $(el).attr('sharetype');
            var sLang = $(el).attr('sharelang');
            if (iCid && sType && sLang) {
                if (sType == 'email') {
                    return Share.updateEmailCounter(el);
                } else {
                    var oSendData = {
                        action: 'save_share_counter',
                        cid: iCid,
                        lang: sLang,
                        random: Math.random(),
                        value: sAction
                    };
                }
                if (Share.petition_id) {
                    oSendData.petition_id = Share.petition_id;
                }
                $.extend(oSendData, oExtras);
                var sclick = document.createElement('script');
                var sUpdateScripts = {
                    email: 'ajax_send_stats',
                    facebook: 'facebook',
                    twitter: 'twitter',
                    tumblr: 'tumblr',
                    orkut: 'orkut',
                    vk: 'vkontakte'
                };
                if (typeof sUpdateScripts[sType] !== 'undefined') {
                    sclick.src = Share.addQS('/act/' + sUpdateScripts[sType] + '.php', oSendData);
                    Share.insert(sclick);
                    return true;
                }
            }
            return false;
        },
        updateEmailCounter: function (el) {
            var bStats = true;
            if ($(el).data('stats')) {
                bStats = !!$(el).data('stats'); // convert to boolean
            }
            if (bStats) {
                var sDomain = GetEmailDomain();
                sDomain = sDomain && !$(el).data('mobile') ? sDomain : 'other';
                oSendData = {
                    campaign_id: $(el).attr('sharecid'),
                    domain: sDomain
                };
                if (Share.petition_id) {
                    oSendData.petition_id = Share.petition_id;
                }
                $.post('/act/ajax_send_stats.php', oSendData);
                return true;
            }
            return false;
        },
        renderPass: function () {
            Share.renderAll();
            if (Share.URLdata.length > 0) {
                Share.fetchData();
            }
        },
        _onFirst: function () {
            this.resetUrls();
            window.share_render = function (b) {
                for (var h in b) Share.results[h] = b[h];
                Share.renderAll();
            };
            this.renderPass();
        },
        init: function () {
            if (typeof bDoNotRunShare === 'undefined' || !bDoNotRunShare) {
                Share._onFirst();
            }
        }
    };
    $(document).ready(function () {
        Share.init();
    });
}

/*  new/common/js/form-spread.js  */
function loadClipButton() {
    var elm = this,
        $container = $(this).data('container') || '',
        clip,
        clips,
        copy_blurb = this.copy_blurb || window.copy_blurb,
        copied_blurb = this.copied_blurb || window.copied_blurb;
    ZeroClipboard.setMoviePath('/common/js/ZeroClipboard.swf');
    clip = new ZeroClipboard.Client();
    clips = $(elm).data('ZeroClipboard') || [];
    clips.push(clip);
    $(elm).data('ZeroClipboard', clips);
    clip.setText(''); // will be set later on mouseDown
    clip.setHandCursor(true);
    clip.setCSSEffects(true);
    clip.addEventListener('mouseDown', function (client) {
        // set text to copy here
        clip.setText($("#spread_copy_text", $container).val());
        //$("#spread_copy_text").trigger('click').focus();
        // alert("mouse down");
    });
    clip.addEventListener('mouseOver', function (client) {
        // set text to copy here
        $('#spread_copy_button span', $container).eq(0).html(copy_blurb);
        clip.setText($("#spread_copy_text", $container).val());
        //$("#spread_copy_text").trigger('click').focus();
        // alert("mouse down");
    });
    clip.addEventListener('mouseOut', function (client) {
        // set text to copy here
        $('#spread_copy_button span', $container).eq(0).html(copy_blurb);
        clip.setText($("#spread_copy_text", $container).val());
        //$("#spread_copy_text").trigger('click').focus();
        // alert("mouse down");
    });
    clip.addEventListener('mouseUp', function (client) {
        // set text to copy here
        $('#spread_copy_button span', $container).eq(0).html(copied_blurb);
        clip.setText($("#spread_copy_text", $container).val());
        $("#spread_copy_text", $container).trigger('click').focus();
        // alert("mouse down");
    });
    // set the clip text to our innerHTML
    clip.glue(this, $("#label_copy_click", $container).parent()[0]);
}

function loadClipLabel() {
    var $container = $(this).data('container') || '';
    var elm = this;
    ZeroClipboard.setMoviePath('/common/js/ZeroClipboard.swf');
    var clip = new ZeroClipboard.Client();
    clip.setText(''); // will be set later on mouseDown
    clip.setHandCursor(true);
    clip.setCSSEffects(true);
    clip.addEventListener('mouseDown', function (client) {
        // set text to copy here
        clip.setText($("#spread_copy_text", $container).val());
        //$("#spread_copy_text").trigger('click').focus();
        // alert("mouse down");
    });
    clip.addEventListener('mouseOver', function (client) {
        // set text to copy here
        clip.setText($("#spread_copy_text", $container).val());
        //$("#spread_copy_text").trigger('click').focus();
        // alert("mouse down");
    });
    clip.addEventListener('mouseOut', function (client) {
        // set text to copy here
        clip.setText($("#spread_copy_text", $container).val());
        //$("#spread_copy_text").trigger('click').focus();
        // alert("mouse down");
    });
    clip.addEventListener('mouseUp', function (client) {
        // set text to copy here
        clip.setText($("#spread_copy_text", $container).val());
        $("#spread_copy_text", $container).trigger('click').focus();
        // alert("mouse down");
    });
    // set the clip text to our innerHTML
    clip.glue(this, $("#label_copy_click", $container).parent()[0]);
}

function _formSpreadDisplayShareLinks(cid, lang, fb_dialog, bgmail, $container) {
	
    $container = $container || '';
    if (!share_data[cid]) return;

    var domen = GetEmailDomain();
    if (true == bgmail) {
        domen = 'gmail';
    }
    if ('en' !== lang && ('gmail' !== domen)) {
        delete social_data['email'];
    }
    var last = 0;
    var iteration = 0;
    var html = '';
    for (var key in social_data) {
        last++;
    }
    for (var key in social_data) {
        iteration++;
        var first = (0 !== (iteration % 2));
        var social = social_data[key].name;
        var text = social_data[key].text;
        if (first) {
            html += '<div class="social_wc ' + ((1 < (last - iteration)) ? 'border_bottom' : '') + '">';
        }
        html += '<div class="' + social + '_wc ' + ((first && (last !== iteration)) ? 'border_right' : '') + '">';
        html += '<a';
        if (('twitter' === social) && share_data[cid].twitter) {
            html += ' href="https://twitter.com/intent/tweet?related=Avaaz&text=' + share_data[cid].twitter.text +
                '&url=' + encodeURIComponent(share_data[cid].twitter.href) + '" ';
        } else {
            html += ' href="#" ';
        }
        html += 'sharetype="' + social + '"';
        html += 'sharecid="' + cid + '"';
        html += 'sharelang="' + lang + '"';
        html += 'sharemethod="' + fb_dialog + '"';
        html += 'class="share"';
        html += 'title="' + social + '"><span>' + social + '</span></a> <span class=';
        html += '"counter ' + social + '_share_counter_' + cid + '" >0</span> <span class="share label"';
        html += 'sharetype="' + social + '"';
        html += 'sharecid="' + cid + '"';
        html += 'sharemethod="' + fb_dialog + '"';
        html += 'sharelang="' + lang + '"';
        html += '>' + text + '</span>';
        html += '</div><!--' + social + '-->';
        if (0 === (iteration % 2) || (iteration === last)) {
            html += '</div>';
        }
    }

    $('#share-links-wrapper', $container).html(html);

    if (typeof share_data[cid].copy != 'undefined') {
        $('#spread_copy_text', $container).val(share_data[cid].copy.campaign_url);
    }

    if (typeof Share != 'undefined') {
        Share._onFirst();
    }

    if (typeof rsvp_event_id != 'undefined') {
        $('#spread_copy_text', $container).val($('#spread_copy_text', $container).val() + '&id=' + rsvp_event_id);
    }

}
