﻿// The client-side script rise async postback to server and
// receives async callback from server.
//
// send async postback to server
// This function calls the Web Service method.  
function GetAsyncContent(eltID, mode)
{
    if(!mode)
        mode = "";
        
    if(mode == "email")
        OnSucceeded.email = true;
        
    AsyncContent.GetHTMLContent(eltID, mode, OnSucceeded);
}

// This is the callback function that
// processes the Web Service return value.
function OnSucceeded(result)
{
    // если получаем email, то не надо обновлять "MasterContent"
    if(OnSucceeded.email)
    {
        ReceiveMailStatus(result);
        OnSucceeded.email = false;
        return;
    }
    
    var contentDiv = document.getElementById("MasterContent");
    
    // ищем внутри тэг script
    // если нашли - не меняем контент
    // используем escape()/unescape()
    
    var insertedContent = document.createElement('div');
    insertedContent.innerHTML = result;
    if(contentDiv)
        contentDiv.appendChild(insertedContent);
}
//OnSucceeded.prototype.email = false;

// This function inserts hidden div for spacing
function InsertHiddenDiv(eltID)
{
    var hSize;    
    switch(eltID)
    {
        case "HISTORY": hSize = "60"; break;
        case "MANAGEMENT": hSize = "90"; break;
        case "PHILOSOPHY": hSize = "120"; break;
        case "RESULTS OF ACTIVITIES": hSize = "150"; SetHeight("1280"); break;
        case "SPONSORSHIP": hSize = "180"; break;
        case "CONTACTS": hSize = "210"; break;
        case "INSURANCE POLICY": hSize = "90"; SetHeight("762"); break;
        case "INSURANCE PORTFOLIO": hSize = "120"; break;
        case "LICENSES": hSize = "150"; SetHeight("1794"); break;
        case "REINSURANCE": hSize = "90"; SetHeight("964"); break;
        case "AUDITOR`S REPORT BDO": hSize = "150"; SetHeight("1030"); break;
        case "REPORT OF D&B": hSize = "180"; break;
        case "REPORT OF A.M. Best": hSize = "210"; break;
        case "ABOUT UKRAINE": hSize = "180"; break; //210
        case "ABOUT KHARKOV": hSize = "210"; break; //240
        case "LINKS": hSize = "240"; break; //270
        case "FEEDBACK": hSize = "180"; break; //210
        default: hSize = "0";
    }
    
    var hiddenDiv = document.createElement('div');
    hiddenDiv.innerText = "&nbsp;";
    hiddenDiv.style.width = "5px";
    hiddenDiv.style.height = hSize + "px";
    hiddenDiv.style.visibility = "hidden";
    
    var contentDiv = document.getElementById("MasterContent");
    if(contentDiv)
    {
        contentDiv.innerHTML = "";
        contentDiv.appendChild(hiddenDiv);
    }
}

// This func process feedback form:
// validates input, sends form to AsyncContent service and receives answer
function SendFeedback()
{
    var msgDiv = document.getElementById("FeedbackMessage");
    var emailField = document.getElementById("FeedbackE");
    var textField = document.getElementById("FeedbackQ");
    
    // validate email and text fields not empty
    if(emailField && textField)
        if(emailField.value == "" || textField.value == "")
        {
            ReceiveMailStatus("errorEmptyField");
            return;            
        }
    // validate text field contains < and > symbols
    if(textField)
    {
        var txt = textField.value;
        if(txt.match("<") || txt.match(">"))
            {
                ReceiveMailStatus("errorScript");
                return;
            }
    }
    
    // "Sending..." status to user
    if(msgDiv)
        msgDiv.innerHTML = "Sending...";
        
    // async sending email to server
    var xmlMessage = "<email>" + emailField.value + "</email><text>" + textField.value + "</text>"
    GetAsyncContent(xmlMessage, "email");
}

// This func receives email status or error messages from SMTP server
function ReceiveMailStatus(serverMsg)
{
    var msgDiv = document.getElementById("FeedbackMessage");
    
    // lets show status to user
    var clientMsg;
    switch(serverMsg)
    {
        case "ok":
            clientMsg = "Your message successfully send.";
            break;
        case "errorSmtp":
            clientMsg = "Mail server is down.<br />Please try later.";
            break;
        case "error":
            clientMsg = "Failed to send your message.<br />Please try later.";
            break;
        case "errorEmptyField":
            clientMsg = "E-mail or Question field is empty.";
            break;
        case "errorEmailFormat":
            clientMsg = "Wrong e-mail format.<br />Only a-z 0-9 _ - . + symbols allowed.<br />Single domain name '@domain' not allowed.";
            break;
        case "errorScript":
            clientMsg = "< > symbols are forbidden in Question field.";
            break;
        default: clientMsg = "Unknown response.<br />Please try again.";
    }    
    
    if(msgDiv)
        msgDiv.innerHTML = clientMsg; //serverMsg;
}
