﻿
function YukonoLoadCategories() {
    SearchService.getCategories(YukonoLoadCategoriesComplete);
}

function YukonoLoadCategoriesComplete(result) {
    $("#edit-listing-form #categorySelect option").remove();
    
    var select = $("#edit-listing-form #categorySelect");
    
    select.append("<option>Select One!</option>");
    
    for (category in result) {
        select.append("<option>" + result[category] + "</option>");
    }
}


function YukonoSuggestListingSave() {
    var requiredGood = validateRequired("#suggest-listing-form");
    
    if (! requiredGood) {
        return;
    }

    var jsonListing = "Name:\"" + escape(($("#suggest-listing-form #nameBox").val())) + "\",";
    jsonListing += "Phone:\"" + escape(($("#suggest-listing-form #phoneBox").val())) + "\",";
    jsonListing += "Website:\"" + escape(($("#suggest-listing-form #websiteBox").val())) + "\",";
    jsonListing += "Address:\"" + escape(($("#suggest-listing-form #addressBox").val())) + "\",";
    jsonListing += "City:\"" + escape(($("#suggest-listing-form #cityBox").val())) + "\",";
    jsonListing += "Rating:" + $("#suggest-listing-form .rater-control input:hidden").val() + ",";
    jsonListing += "Title:\"" + escape(trim($("#suggest-listing-form #reviewTitleBox").val())) + "\",";
    jsonListing += "Body:\"" + escape(trim($("#suggest-listing-form #reviewBodyBox").val())) + "\"";

    SearchService.saveSuggestion("{" + jsonListing + "}", YukonoSuggestListingSaveComplete);
}

function YukonoSuggestListingSaveComplete(result) {
    if (result.length == 0) {
        $("#suggest-listing-form").slideUp();
        $("#suggest-listing-form-success").slideDown();        
    }
    else {
        alert(result);
        $("#suggest-listing-form-save").after("<span id='save-notify-temp' style='display:none; color: red; margin-right: 30px;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;We're sorry, that didn't work, try again!</span>");
        $("#save-notify-temp").fadeIn();
        window.setTimeout(function() {$("#save-notify-temp").fadeOut();}, 2000);
    }
}

function YukonoSaveReview() {
    var requiredGood = validateRequired("#profile-review-form");

    if (!requiredGood) {
        return;
    }

    maskScreen(true);

    var jsonListing = "Rating:\"" + trim($("#profile-review-form .rater-control input:hidden:first").val()) + "\",";
    jsonListing += "Title:\"" + escape(($("#profile-review-form #reviewTitleBox").val())) + "\",";
    jsonListing += "Body:\"" + escape(($("#profile-review-form #reviewBodyBox").val())) + "\",";
    jsonListing += "ID:\"" + trim($("#profile-review-form #listingIdBox").val()) + "\"";
    
    SearchService.saveReview("{" + jsonListing + "}", YukonoSaveReviewComplete, YukonoSaveReviewCompleteFailed);
}

function YukonoIncrementReviewVotes(reviewID) {
      SearchService.incrementReviewVotes(reviewID, null, null);
}

function YukonoSaveReviewComplete(result) {
    if (result.length == 0) {
        window.location.reload(true);
    }
    else {
        unmaskScreen();
    }
}

function YukonoSaveReviewCompleteFailed(error) {
    unmaskScreen();    
}

function YukonoRegisterSubmit() {
    var requiredGood = validateRequired("#register-form");

    if (! requiredGood) {
        return;
    }
    
    var emailGood = validateEmail("#register-form");

    if (! emailGood) {
        return;
    }
    
    if ($("#pass1Box").val() != $("#pass2Box").val()) {        
        $("#pass2Box").parent().addClass("input-error");
        $("#pass2Box").siblings("span").text("No Match");
        
        return;
    }
    else {
        $("#pass2Box").parent().removeClass("input-error");
        $("#pass2Box").siblings("span").text("");
    }
    
    var jsonListing = "DisplayName:\"" + trim($("#nameBox").val()) + "\",";
    jsonListing += "Email:\"" + trim($("#emailBox").val()) + "\",";
    jsonListing += "Password:\"" + trim($("#pass1Box").val()) + "\"";
    
    maskScreen(true);
    
    SearchService.register("{" + jsonListing + "}", YukonoRegisterSubmitComplete, YukonoRegisterSubmitCompleteFailed);
}


function YukonoRegisterSubmitComplete(result) {
    var message = result;
    
    unmaskScreen();
    
    if (result.length == 0) {
        $("#register-form").slideUp("fast");
        $("#register-success").slideDown("slow");
        
        SecurityService.Login(trim($("#emailBox").val()), trim($("#pass1Box").val()), YukonoRegisterLoginComplete, FailedCallback);
    }
    else {
        $("#save-notify-temp").hide();
        
        $("#register-save-button").after("<span id='save-notify-temp' style='display:none; color: red; float:right; width: 380px;'>"+message+"</span>");
        $("#save-notify-temp").fadeIn();
    }
}

function YukonoRegisterSubmitCompleteFailed(error) {
    unmaskScreen();
    
    $("#save-notify-temp").hide();
    
    $("#register-save-button").after("<span id='save-notify-temp' style='display:none; color: red; float:right; width: 380px;'>"+error.get_message()+"</span>");
    $("#save-notify-temp").fadeIn();
}

function YukonoRegisterLoginComplete(result) {
    if (result == undefined || result.length == 0) {
        return;
    }
    
    determineLogin(result);
}

function SendPromotionEmail() {
    var requiredGood = validateRequired(".input-panel", true);
    
    if (! requiredGood)
        return;
    
    var emailGood = validateEmail(".input-panel", true);
    
    if (! emailGood) {
        return;
    }
    
    var emailBox = $("#promoteEmailBox");
    var emailAddr = trim(emailBox.val());
    var senderName = trim($("#promoteNameBox").val());
    
    maskScreen(true);
    
    SecurityService.promoteEmail(senderName, emailAddr, SendPromotionEmailComplete);
}

function SendPromotionEmailComplete(result) {
    var message = "Email sent. Thanks for sharing!";
    var color = "green";
    
    if (result.length > 0) {
        message = result;
        color = red;
    }
    else {
        $("#promoteNameBox").val("");
        $("#promoteEmailBox").val("");
        
        $("#promoteNameBox").trigger("blur");
        $("#promoteEmailBox").trigger("blur");
    }
    
    unmaskScreen();
    
    $("#promoteEmailSendButton").after("<span id='save-notify-temp' style='display:none; color: "+color+";'>"+message+"</span>");
    $("#save-notify-temp").fadeIn();
    
    window.setTimeout(function() {$("#save-notify-temp").fadeOut();}, 5000);
}

function YukonoPasswordHelp() {
    var emailGood = validateEmail("#help-form");
    
    if (! emailGood) {
        return;
    }
    
    var emailAddr = trim($("#emailBox").val());
    
    maskScreen(true);
    
    SecurityService.passwordHelp(emailAddr, YukonoPasswordHelpComplete, YukonoPasswordHelpCompleteFailed);
}

function YukonoPasswordHelpComplete(result) {
    unmaskScreen();
    
    if (result.length == 0) {
        $("#help-form").slideUp();
        $("#success-form").slideDown();
        return;
    }
    
    $("#emailBox").siblings("span").text(result);
}

function YukonoPasswordHelpCompleteFailed(error) {
    unmaskScreen();
}

function initPage(username) {
    // this will be overridden at the page level
}

function ShowCommentForm(parentId) {
    var form = $("#" + parentId);

    form.slideDown("slow");
    form.parent().children(".blue-button").hide();
}

function SubmitReviewComment(reviewId, commentId) {
    var commentVal = escape(trim($("#" + commentId).val()));

    if (commentVal.length == 0)
        return;

    SearchService.saveReviewComment(commentVal, reviewId, SaveReviewCommentSuccess, SaveReviewCommentFail);
}

function SaveReviewCommentSuccess(result) {
    if (result.length == 0) {
        window.location.reload(true);
    }
    else {
        alert(result);
    }
}

function SaveReviewCommentFail(result) {
    alert('save review failed');
}








function UpdateUserBasics() {
    var requiredGood = validateRequired("#profileBasicsForm");

    if (! requiredGood) {
        return;
    }
    
    if ($("#password1Box").val() != $("#password2Box").val()) {        
        $("#password2Box").parent().addClass("input-error");
        $("#password2Box").siblings("span").text("No Match");
        
        return;
    }
    else {
        $("#password2Box").parent().removeClass("input-error");
        $("#password2Box").siblings("span").text("");
    }

    var username = trim($("#usernameBox").val());
    var password = trim($("#password1Box").val());

    maskScreen(true);
    
    SearchService.updateUserBasics(username, password, UpdateUserBasicsComplete, UpdateUserBasicsFailed);
}

function UpdateUserBasicsComplete(result) {
    if (result.length == 0) {
        window.location.reload(true);
    }
    else {
        unmaskScreen();
        alert(result);
    }
}

function UpdateUserBasicsFailed(result) {
    unmaskScreen();
    alert("Error connecting to Yukono server");
}

function UpdateUserSocials() {
    var website = trim($("#websiteBox").val());
    var twitter = trim($("#twitterBox").val());

    maskScreen(true);

    SearchService.updateUserSocials(website, twitter, UpdateUserSocialsComplete, UpdateUserSocialsFailed);
}

function UpdateUserSocialsComplete(result) {
    if (result.length == 0) {
        window.location.reload(true);
    }
    else {
        unmaskScreen();
        alert(result);
    }
}

function UpdateUserSocialsFailed(result) {
    unmaskScreen();
    alert("Error connecting to Yukono server");
}
