var endpoint = '/wp-content/plugins/business_account/ajax.php';

function scrollToComment() {
    var textarea = jQuery('#comment');
    jQuery('html, body').animate({
       scrollTop: textarea.offset().top
    },
    1000, null, function(){
        textarea.focus();
    });
}

function setCookie(name, value, expires)
{
    if (!expires) expires = new Date();
	document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() + "; path=/";
}

function resetSend() {
    jQuery('#share-title').text('send to a friend');
    jQuery('#email').val("");
    jQuery('#friend_message').val("");
    jQuery('.friend_id').attr("checked", "");
}

function inviteFriends() {

    var lbl = jQuery('#friend_label');
    var email_lbl = jQuery('#email_label');
    var email = jQuery('#email');
    var title = jQuery('#share-title');
    var message = jQuery('#friend_message');
    var friends = jQuery('.friend_id');
    var hasFriends = friends.length > 0;

    if (!hasFriends && email.val() == "") {
        email_lbl.addClass('error');
        return false;
    }
    else {
        email_lbl.removeClass('error');
    }
    
    if (message.val() == "") {
       lbl.addClass('error');
       return false;
    }
    else {
        lbl.removeClass('error');
    }    

    var friend_ids = [];
    friends.each(function(){
       if (this.checked) friend_ids.push(this.value);
    });

    if (email.val() == "" && friend_ids.length == 0) {
        title.text('enter an email and/or select a friend.');
        return false;
    }

    if (friend_ids.length > 0 || email.val() != "") {

        var friends = null;
        if (friend_ids.length == 0)
            friends = "";
        else
            friends = friend_ids.join(',')

        jQuery.post(endpoint, {action:"invite_friends",
                               friends:friends,
                               email:email.val(),
                               url: escape(jQuery('#shareUrl').val()),
                               message:message.val()}, function(response){
                    
            if (response.success) {
                resetSend();
            }

            title.text(response.result.message);
        },
        "json");
    }
}

var checked = false;
function selectAllFriends() {
    var friends = jQuery('.friend_id');
    if (checked) {
        friends.attr("checked", "");
    }
    else {
        friends.attr("checked", "checked");
    }

    checked = !checked;
}

function toggleShare(show) {
    if (show) {
        resetSend();
        jQuery('.popup').fadeIn(400);
    }
    else {
        jQuery('.popup').fadeOut(400);
    }
}

function postToFacebook(u) {
    var width = 800;
    var height = 600;
    var top=(screen.height/2)-height/2;
    var left=(screen.width/2)-width/2;
    var features = 'top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + 'scrollbars=yes,toolbar=yes,location=yes,menubar=yes,resizable=yes,status=yes,titlebar=yes';
    window.open('http://www.facebook.com/share.php?u='+u,'facebook',features);
    toggleShare(false);
}

function postToMyspace(u) {
    var t = document.title;
    var width = 800;
    var height = 600;
    var top=(screen.height/2)-height/2;
    var left=(screen.width/2)-width/2;
    var features = 'top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + 'scrollbars=yes,toolbar=yes,location=yes,menubar=yes,resizable=yes,status=yes,titlebar=yes';
    window.open('http://www.myspace.com/Modules/PostTo/Pages/?' + 't=' + encodeURIComponent(t) + '&u=' + encodeURIComponent(u),'myspace',features);
    toggleShare(false);
}

function deleteFavorite(business_id, element) {
    jQuery.post(endpoint, {biz_id:business_id, action:"biz_favorite_delete"}, function(response){

        if (response.success) {
            jQuery('#fav-count').text(response.result.favorites);
            jQuery(element).parent('li').fadeOut("slow", function(){
                jQuery(this).remove();
            });
        }
    },
    "json");
}

function saveLocation(element) {
    var val = jQuery('#newLocation').val();

    if (val == "") return false;

    var expdate = new Date (); // pre-set to the current time and date
    expdate.setTime(expdate.getTime() + 1000 * 60 * 60 * 24 * 365); // add one year to it
    setCookie('somibo_location', val, expdate);
    reset(jQuery(element), val);
}

function reset(element, value) {
    element.parent().html('<strong>'+value+'</strong> <a href="#" onclick="changeLocation(this); return false;">change location?</a>');
}

function cancelLocation(element) {
    element = jQuery(element);
    var currentLocation = jQuery('#originalLocation').val();
    reset(element, currentLocation);
}

function changeLocation(element) {
    element = jQuery(element);
    var currentLocation = element.siblings('strong').text();
    element.parent().html('<input name="newLocation" value="'+currentLocation+'" id="newLocation"/>' +
                          '<input type="hidden" value="'+currentLocation+'" id="originalLocation"/> ' +
                          '<a href="#" id="save-location" onclick="saveLocation(this);return false;">save</a> | ' +
                          '<a href="#" onclick="cancelLocation(this);return false;">cancel</a>');

    jQuery('#newLocation').keyup(function(e) {
        if (e.which == 13) {
            saveLocation(jQuery('#save-location'));
        }
        return false;
    });
}

function scrollToReview() {
    var textarea = jQuery('#comment-textarea');
    jQuery('html, body').animate({
       scrollTop: textarea.offset().top
    },
    1000, null, function(){
        textarea.focus();
    });
}

function toggle_locations(self) {
    var locations = jQuery('li.locations');
    var self = jQuery(self);

    if (locations.is(':visible')) {
        locations.css('display', 'none');
        self.html('More &#187;');
    }
    else {
        locations.css('display', '');
        self.html('Less &#187;')
    }
}

function toggle_text(element, self) {
    var txt = jQuery('#'+element);
    var self = jQuery(self);
    if (txt.is(':visible')) {
        txt.css('display', 'none');
        self.text('More...');
    }
    else {
        txt.css('display', '');
        self.text('Less...');
    }
}

function favoriteBusiness(business_id, element) {

    jQuery.post(endpoint, {biz_id:business_id, action:'biz_favorite'}, function(response)
    {
        if (response.success) {
            jQuery(element).replaceWith('<img src="/images/favorite-unavailable.gif" alt="one of you favorites" />');
        }
        else {
        	window.location = '/wp-login.php';
        }
    },
    "json");
}

jQuery(function(){

	try {
	    jQuery('.business-rating').rating();
	}
	catch (e) {}


    jQuery('#review-form').submit(function() {

        var rateValue = 0;
        var hasRatingError = true;
        jQuery('input', this).each(function(){
            if (this.checked && hasRatingError) {
                hasRatingError = false;
                rateValue = this.value;
            }
        });

        var header = jQuery('#error-header');
        var required = jQuery('.required');
        var rateLabel = jQuery('#rating-label');
        var previewLabel = jQuery('#preview-label');
        var value = jQuery('#comment-textarea').val();

        if (value != "" && !hasRatingError) {
            required.removeClass("error");
            jQuery.post(endpoint,
                        {link_review:jQuery('#link_review').val(), biz_id:jQuery('#biz_id').val(), score:rateValue, comment:value, action:"biz_rating"}, function(response){
                            if (response.success) {
                                window.location.reload(true);
                                header.text('Write Your Review').removeClass("error");
                            }
                            else {
                                if (response.result.message)
                                    header.text(response.result.message).addClass("error");
                                else
                                    header.text('Review was not succesfully posted.').addClass("error");
                            }
                        },
                        "json");
        }
        else {

            if (hasRatingError)
                rateLabel.addClass('error');
            else
                rateLabel.removeClass('error');

            if (value == "")
                previewLabel.addClass('error');
            else
                previewLabel.removeClass('error');

            header.text('Please fill in all required fields.').addClass("error");
        }

        return false;
    });

    jQuery('.review-disabled').css({'opacity':.5});
});