﻿// JScript File
function registrationComlete(requestFileName, containerId, serverScript, callBack, beforeRequestAction) {
    var URL = buildXMLURL(requestFileName);
    var requsetForm = getXMLFromURL(URL, 
        function(xmlDoc) {
            fillRegistrationRequest(xmlDoc, containerId, serverScript, callBack, beforeRequestAction);
        }
    );
}

function doVeemComSignIn(login, pwd) {
    var veeamLogger = top.document.getElementById("__ID_857");
    try {
        if (veeamLogger != null && veeamLogger.contentWindow && veeamLogger.contentWindow.document && veeamLogger.contentWindow.document.getElementById) {
            var singInForm = veeamLogger.contentWindow.document.getElementById("veeamComSignInForm");
            var loginBox = veeamLogger.contentWindow.document.getElementById("l_username");
            var pwdBox = veeamLogger.contentWindow.document.getElementById("l_userpass");
            
            if (singInForm != null && loginBox != null && pwdBox != null) {
                loginBox.value = login;
                pwdBox.value = pwd;
                //loginBox.value = "smarkovsky@veeam.com";
                //pwdBox.value = "qwert01";
                singInForm.submit();
            }
        }
    } catch(e){}
}

function fillRegistrationRequest(xmlDoc, containerId, serverScript, callBack, beforeRequestAction) {
    
    var ids = containerId.split(";");

    for (var i = 0; i < ids.length; i++) {
        var container = document.getElementById(ids[i]);
        var fillingComplete = fillRegistrationRequest01(xmlDoc, container)
        if (!fillingComplete)
            break;
    }
    
    if (fillingComplete) {
    
        if (containerId == "loginForm") {
            var lb = document.getElementById("login");
            var pb = document.getElementById("password");
            if (lb != null && pb != null) {
                doVeemComSignIn(lb.value, pb.value);
            }
        }
        
        if (beforeRequestAction != null)
            beforeRequestAction();
        
        showLoadingSign();
        
        var URL = buildPHPURL(serverScript);
        doXMLHttpRequest(URL, xmlDoc, 
            function (answer) {
                hideLoadingSign();
                if (callBack != null)
                    callBack(answer);
            }
        );
    }
}

function fillRegistrationRequest01(xmlDoc, container)
{
    var result = true;

    if (container != null && container.style != null && container.style.display != "none") {
        var current = container.firstChild;
        while(current != null) {
            result =  fillRegistrationRequest01(xmlDoc, current);
            if (!result)
                return result;
            current = current.nextSibling;
        }
        
        if (container.id != null && container.attributes["control"] != null) {
            var value = "";
            
            switch(container.tagName) {
                case "INPUT":
                case "TEXTAREA":
                case "SELECT":
                    if (container.tagName == "INPUT" && container.type.toLowerCase() == "checkbox")
                        value = container.checked;
                    else 
                        value = container.value;
                break;
                case "TABLE":
                    
                    if (container.attributes["valueType"] != null && container.attributes["valueType"].nodeValue == "phone") {
                        
                        var elements = container.getElementsByTagName("input");
                        for (var i = 0; i < elements.length; i++) {
                            if (value.length != 0)
                                value += "-";
                            value += elements[i].value;
                        }
                    } else {
                        var elements = container.getElementsByTagName("input");
                        for (var i = 0; i < elements.length; i++) {
                            if (elements[i].checked) {
                                if (value.length != 0)
                                    value += ", ";
                                value += elements[i].value;
                            }
                        }
                    }
                break;
            }
            
            if (value != null) {
                value = allTrim(value);
                var validationResult = validateValue(value, container);
                if (validationResult[0]) {
                    var xPath = "/request/" + container.id;
                    var node = selectSingleNode(xmlDoc, xPath);
                    setNodeText(value, node);
                }
                else {
                    alert(validationResult[1]);
                    try {
                        if (container.tagName == "TABLE")
                            container = container.getElementsByTagName("INPUT")[0];
                        if (container != null)
                            container.focus();
                    } catch(e){}
                    return false;
                }
            }
            
        }
    }
    return result;
}

function validateValue(value, container) {
    var result = new Array(true);
    var emailExpr = /^\w+([\.-]?\w+)*@(((([a-z0-9]{2,})|([a-z0-9][-][a-z0-9]+))[\.][a-z0-9])|([a-z0-9]+[-]?))+[a-z0-9]+\.([a-z]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/i;
    var intExpr = /^[1-9]?[0-9]+$/;
    var dateExpr = /^[1-9]?[0-9]+$/;
    //var phoneExpr = /^\+[1-9]?[0-9]{0, 1}-[0-9]{3}-[0-9]{3}-[0-9]{4}$/;
    var phoneExpr = /^[0-9]{1}[0-9]{0,2}-[0-9]{1,5}-[0-9]{5,10}$/;
    if ((container.attributes["valueReq"] != null) && 
       (container.attributes["valueReq"].nodeValue == "1") &&
       ((value == null) || (allTrim(value).length <= 0) || (container.type == 'checkbox' && container.checked == false) )) {
        result[0] = false;
        result[1] = "Cannot proceed with empty field";
    } else if ((container.attributes["valueType"] != null) &&
               (container.attributes["valueType"].nodeValue == "email") && 
               (!emailExpr.test(value))) {
        result[0] = false;
        result[1] = "E-mail address is invalid";
    } else if ((container.attributes["valueType"] != null) &&
               (container.attributes["valueType"].nodeValue == "int") && 
               (!intExpr.test(value))) {
        result[0] = false;
        result[1] = "The field contains invalid symbols";
    } else if ((container.attributes["valueType"] != null) &&
               (container.attributes["valueType"].nodeValue == "date")) {
        
        var segments = value.split("/");
        
        var d = Number(segments[0]);
        var m = Number(segments[1]);
        var y = Number(segments[2]);
        
        var date = new Date(y, m - 1, d);
        
        var dd = date.getDate();
        var mm = date.getMonth() + 1;
        var yy = date.getFullYear();

        if (d != dd || y != yy || m != mm) {
            result[0] = false;
            result[1] = "Invalid date";
        }
    } else if ((container.attributes["valueType"] != null) &&
               (container.attributes["valueType"].nodeValue == "phone") && 
               (!phoneExpr.test(value))) {
        result[0] = false;
        result[1] = "Invalid phone number.\n\n" +
                    "Please check that you do not use +, -, / or any other \nsymbols. Please use figures only.\n\n" +
                    "We ask you to insert country and area code in order \nto provide your contact info to customers correctly. \nPlease make sure you put at least 1 figure in first \nand second boxes and at least 5 figures in the third \nbox.";
    } else if ((container.attributes["minLength"] != null) && 
            (container.attributes["minLength"].nodeValue != null) &&
            (value.length > 0) && 
            (value.length < Number(container.attributes["minLength"].nodeValue))) {
        result[0] = false;
        result[1] = "At least " + container.attributes["minLength"].nodeValue + " symbols are required.";
    }
    
    return result;
}

function loginClick(callBack) {
    loadMainContent(buildPHPURL("login.php"), null, "mayor");
}

function loginCallBack(answer) {
  getXMLFromText(answer,
      function(xmlDoc) {
          var statusValue = selectSingleNodeValue(xmlDoc, "/responce/status");
          if (statusValue != null) {
            if (statusValue.toUpperCase() == "OK") {
                doXMLHttpRequest(buildPHPURL("mainMenu.php?parse"), null, 
                    function (result) {
                        setNewMainContent(result, "MM");
                        var fromLogin = document.location.href.indexOf("#hr:login.php");
                        if (fromLogin < 0) {
                            var anch = new String(document.location.href);
				            if (anch.indexOf("#hr:") >= 0) {
					            anch = anch.substring(anch.indexOf("#hr:"), anch.length);
				            }
                            gotoAchorPage(anch);
                        } else
                            activateFItem();
                    }
                );
                doXMLHttpRequest(buildPHPURL("liteMenu.php?parse"), null, 
                    function (result) {
                        setNewMainContent(result, "BM");
                    }
                );
                loadMainContent(buildPHPURL("loginStatusBar.php"), null, "loginbox");
            } else {
                var reasonValue = selectSingleNodeValue(xmlDoc, "/responce/reason");
                if (reasonValue != null)
                    alert(reasonValue);
            }
        }
     }
  );
}

function logoutClick(callBack) {
    doXMLHttpRequest(buildPHPURL("login.php?action=logout"), null, 
        function (answer) {
            doXMLHttpRequest(buildPHPURL("mainMenu.php?parse"), null, 
                function (result) {
                    setNewMainContent(result, "MM");
                    activateFItem();
                }
            );
            
            loadMainContent(buildPHPURL("loginStatusBar.php"), null, "loginbox");
        }
    );
}
