function clear_if_empty(elem, help) {
    elem = jQuery(elem);

    if (elem.val() == '') {
        elem.val(help);
    }
    else if (elem.val() == help) {
        elem.val('');
    }
}

function hide_after_share(elem, share_type) {
    form = jQuery(elem);
    jQuery(form).fadeOut(3000, function() {
        form.siblings().show();
        form.parent().hide();
        form.remove();
    });
}

function perform_share(elem, root_uri, share_type, must_differ_from, content_type, content_id) {
    value = jQuery(elem).parent().children('input[type=text]').val();
    if (!value || value == must_differ_from) {
        alert('Please ' + must_differ_from);
        return false;
    }

    if (share_type == 'blogger') {
        uri = "https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.blogger.com%2Ffeeds%2F&session=1&secure=0&next=";
        uri += root_uri + content_type + "s/share/blogger/" + content_id + "/" + value;
        window.location.href = uri;
    }

    if (share_type == 'tumblr') {
        jQuery(elem).html('<img src="/images/spinner_small.gif"/>');
        save_address = jQuery('#share_tumblr_save_email').val();
        params = {};
        params[content_type+'_id'] = content_id;
        params['value'] = value;
        params['save_address'] = save_address;

        jQuery.get('/' + content_type + 's/share/'+share_type, params,
                   function(result) {
                        form = jQuery(elem).parent();
                        if (result.result == 1) {
                            form.css("color","#666");
                            form.html("<span class='.share_msg'>Shared</span>");
                        } else {
                            form.css("color","#666");
                            form.html("<span class='.share_msg'>Failed</span>");
                        }
                        hide_after_share(form, result.type);
                    },
                    'json');
    }

    else {
        jQuery(elem).html('<img src="/images/spinner_small.gif"/>');

        params = {};
        params[content_type+'_id'] = content_id;
        params['value'] = value;

        jQuery.get('/' + content_type + 's/share/'+share_type, params,
                   function(result) {
                        form = jQuery(elem).parent();
                        if (result.result) {
                            form.css("color","#666");
                            form.html("<span class='.share_msg'>Shared</span>");
                        } else {
                            form.css("color","#666");
                            form.html("<span class='.share_msg'>Failed</span>");
                        }
                        hide_after_share(form, result.type);
                    },
                    'json');
    }
    return false;
}

function share_email(elem, type, what) {
    elem = jQuery(elem);
    se_form = jQuery('#share_email_form');
    if (se_form.length) {
        elem.siblings().show();
        se_form.hide('slow');
        se_form.remove();
    } else {
        elem.siblings().hide();
        pos = elem.position();
        se_form = jQuery('<li id="share_email_form" class="share_form"></li>');
        se_form.append('<input id="share_email_addr" class="share_form_field" type="text" value="insert email address"\
                             onblur="clear_if_empty(this, \'insert email address\')"\
                             onclick="clear_if_empty(this, \'insert email address\')"/>');
        se_form.append('<a href="#" onclick="return perform_share(this, \'\', \'email\', \'insert email address\', \'' + type + '\', ' + what + ');">Share</a>');
        elem.parent().append(se_form).fadeIn('slow');
        jQuery("#share").mouseover(); // ie8 workaround
    }
}

function share_tumblr(elem, type, what, tumblr_email) {
    elem = jQuery(elem);
    se_form = jQuery('#share_tumblr_form');
    if (se_form.length) {
        elem.siblings().show();
        se_form.hide('slow');
        se_form.remove();
    } else {
        elem.siblings().hide();
        pos = elem.position();
        se_form = jQuery('<li id="share_tumblr_form" class="share_form"></li>');
        se_form.append('<input style="width:100px" id="share_tumblr_addr" class="share_form_field" type="text" value="' + (tumblr_email != "null" ? tumblr_email : 'insert email address') + '"\
                             onblur="clear_if_empty(this, \'insert email address\')"\
                             onclick="clear_if_empty(this, \'insert email address\')"/>\
                        <input style="width:15px" type="checkbox" id="share_tumblr_save_email">Save');
        se_form.append('<a href="#" onclick="return perform_share(this, \'\', \'tumblr\', \'insert email address\', \'' + type + '\', ' + what + ');">Share</a>');
        elem.parent().append(se_form).fadeIn('slow');
        jQuery("#share").mouseover(); // ie8 workaround
    }
}

function share_blogger(elem, root_uri, type, what) {
    elem = jQuery(elem);
    se_form = jQuery('#share_blogger_form');
    if (se_form.length) {
        se_form.hide('slow');
        se_form.remove();
        elem.siblings().show();
    } else {
        elem.siblings().hide();
        pos = elem.position();
        se_form = jQuery('<li id="share_blogger_form" class="share_form"></li>');
        se_form.append('<input id="share_blogger_addr" type="text" value="insert blog name"\
                             onblur="clear_if_empty(this, \'insert blog name\')"\
                             onclick="clear_if_empty(this, \'insert blog name\')"/>');
        se_form.append('<a href="#" onclick="return perform_share(this, \'' + root_uri + '\', \'blogger\', \'insert blog name\', \'' + type + '\', ' + what + ');">Share</a>');
        elem.parent().append(se_form).fadeIn('slow');
        jQuery("#share").mouseover(); // ie8 workaround
    }
}

function build_share_title(uri, title) {
    if (uri.match("item"))
        return 'Check out this Glossom item: ' + title;
    else
        return 'Check out this Glossom Collection: ' + title;
}

function share_fbook(uri, title) {
    uri = "http://www.facebook.com/sharer.php?u=" + uri;
    uri += "&t=" + build_share_title(uri, title);
    window.open(uri, '_blank');
}

function share_lkdin(uri, title) {
    uri = "http://www.linkedin.com/shareArticle?mini=true&url=" + uri;
    uri += "&title=" + build_share_title(uri, title);
    uri += "&ro=false&summary=&source=";
    window.open(uri, '_blank');
}

function share_dlicious(uri, title) {
    uri = "http://del.icio.us/post?url=" + uri;
    uri += "&title=" + build_share_title(uri, title);
    window.open(uri, '_blank');
}

function share_twitter(uri, i_title) {
    if (uri.match("item")) {
        twitter_message_prefix = 'Check out this Glossom item: ';
    }
    else {
        twitter_message_prefix = 'Check out this Glossom Collection: ';
    }

    var msg = twitter_message_prefix + i_title + ' ' + uri;

    if (msg.length > 140)
        i_title = i_title + '...';
    while (msg.length > 140) {
        i_title = i_title.substr(0, i_title.length-4) + '...';
        msg = twitter_message_prefix + i_title + ' ' + uri;
    }

    uri = 'http://twitter.com/home?status=' + msg;
    window.open(uri, "_blank");
}
