﻿var fromId = "";
var nameId = "";
var toId = "";
var subjectId = "";
var messageId = "";
var commentId = "";
var mailError = "Insert e-mail address in correct format.";
var nameError = "Insert name, please.";
var sendingMail = "Sending e-mail...";
var messageTextFormat = "";
var nameRefString = '%%NAME%%';
var initialTellAFriendFormInnerHTML = '';

jQuery.fn.fadeToggle = function(speed, easing, callback) {
    return this.animate({ opacity: 'toggle' }, speed, easing, callback);
};

$(document).ready(function() {
    //$('#tellfriend').hide();
    $('#tellfriend a.close').click(function(event) {
        event.preventDefault();
        $("#tellfriend").fadeToggle('slow');
        resetForm();
    });
    $('a.email').click(function(event) {
        $("#tellfriend").fadeToggle('slow');
        $("#tellfriendForm").show();
        resetForm();
    });
    $('#tellfriendForm a.submit').click(function(event) {
        event.preventDefault();
        if (validate()) {
            sendMail();
        }
    });
    var element = document.getElementById("tellfriendForm");
    if (element == null) return;
    initialTellAFriendFormInnerHTML = element.innerHTML;
});

function validate() {
    var valid = true;
    var element = document.getElementById(fromId);
    if (element == null || !checkEmail(element.value)) {
        element = document.getElementById('fromError');
        element.innerHTML = mailError;
        valid = false;
    }
    else {
        element = document.getElementById('fromError');
        element.innerHTML = '';
    }
    var element = document.getElementById(toId);
    if (element == null || !checkEmail(element.value)) {
        element = document.getElementById('toError');
        element.innerHTML = mailError;
        valid = false;
    }
    else {
        element = document.getElementById('toError');
        element.innerHTML = '';
    }
    var element = document.getElementById(nameId);
    if (element == null || !element.value) {
        element = document.getElementById('nameError');
        element.innerHTML = nameError;
        valid = false;
    }
    else {
        element = document.getElementById('nameError');
        element.innerHTML = '';
    }
    return valid;
}

function checkEmail(email) {
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(email);
}

function updateMessageText() {
    var paramObject = getParams();
    var message = "";
    var replaceMessage = "";
    if (paramObject.name && paramObject.name.length != 0) {
        replaceMessage = paramObject.name;
        if (paramObject.from) replaceMessage += ' (' + paramObject.from + ')';
        message = messageTextFormat.replace(nameRefString, replaceMessage);
        var element = document.getElementById(messageId);
    }
    if (element != null) {
        element.value = message;
    }
}

function getParams() {
    var paramObject = new Object();
    var element = document.getElementById(fromId);
    paramObject.from = element.value;
    var element = document.getElementById(nameId);
    paramObject.name = element.value;
    var element = document.getElementById(toId);
    paramObject.to = element.value;
    var element = document.getElementById(subjectId);
    paramObject.subject = element.value;
    var element = document.getElementById(messageId);
    paramObject.message = element.value;
    var element = document.getElementById(commentId);
    paramObject.comment = element.value;
    return paramObject;
}

function sendMail() {

    var paramObject = getParams();

    var url = 'http://' + window.location.hostname + ':' + window.location.port + '/TellAFriendAsyncSender.aspx?';
    url += 'from=' + encodeURI(paramObject.from);
    url += '&name=' + encodeURI(paramObject.name);
    url += '&to=' + encodeURI(paramObject.to);
    url += '&subject=' + encodeURI(paramObject.subject);
    url += '&message=' + encodeURI(paramObject.message);
    url += '&comment=' + encodeURI(paramObject.comment);

    $("#responseResult").html(sendingMail);
    $("#tellfriendForm").hide();

//    $.ajax({
//        type: "POST",
//        url: "TellAFriendAsyncSender.aspx/SendMessage",
//        data: JSON.stringify(getParams()),
//        contentType: "application/json; charset=utf-8",
//        dataType: "json",
//        success: function(response) {
//            if (element == null) return;
//            element.innerHTML = '<div class="responseResult">' + response + '</div>';
//        }
    //    });

    var r =
    $.ajax({
        type: "POST",
        url: url,
        data: "",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        complete: function(jqXHR, textStatus){
            updateView(jqXHR.responseText);            
        }
    });
    

}

function updateView(response) {
    var element = document.getElementById("tellfriendForm");
    if (element == null) return;
    response = response.replace('<html>', '');
    response = response.replace('</html>', '');
    $("#responseResult").html(response);
    $("#tellfriend").delay(1200).fadeToggle('slow');
}

function resetForm() {
    $("#responseResult").html('');
    $("#" + toId).val('');
}
