﻿
//phone number
(function() {

    var settings = {
        inputId: "#phone",
        wrontFormatMessage: "Telefon musí být ve formátu formátu: 777111222. Bez +420."
    };

    var stripSpaces = function(n) {
        return n.replace(/\s/g, "");
    };

    var isNumber = function(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

    var pElm = $(settings.inputId);
    pElm.change(function() {
        //get input var
        var n = $(this).val();

        //remove right/left spaces
        n = stripSpaces(n); //$.trim(n);

        //remove '+'
        n = n.replace("+", ""); //foreign numbers
        n = n.replace("-", ""); //separators
        n = n.replace("x", ""); //extensions

        if (!isNumber(n)) {
            alert(settings.wrontFormatMessage);
        }
        else {

            //parse to int
            try {
                n = parseFloat(n);
            }
            catch (err) {
                n = 0;
            }

            //check for lengh
            if (n < 100000000 || n > 999999999) {
                alert(settings.wrontFormatMessage);
                pElm.val("");
            }


        }

    });


})();




//email number
(function() {

    var settings = {
        inputId: "#email",
        wrontFormatMessage: "Nesprávný formát e-mailu"
    };

    var isEmail = function(e) {

        var r = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

        if (r.test(e) == false) {
            return false;
        }

        return true;
    };

    var eElm = $(settings.inputId);

    eElm.change(function() {

        //get input var
        var n = $(this).val();

        //remove right/left spaces
        n = $.trim(n);

        if (!isEmail(n)) {
            alert(settings.wrontFormatMessage);
            eElm.val("");
        }

    });

})();




//psc
(function(psc) {

    var settings = {
        pscInputId: "#psc",
        citiInputId: "#city",
        uknownPscMessage: " PSČ nenalezeno."

    };


    //creates 3d object
    var combine = function(p) {

        var o = {};

        for (var i = 0, l = p.length; i < l; i++) {

            //check if exits
            if (typeof o[p[i][0]] != "undefined") {

                //convert to array
                if (typeof o[p[i][0]] != "object") {
                    //two in array
                    o[p[i][0]] = [o[p[i][0]], p[i][1]];
                }
                else {
                    //more than two in array
                    o[p[i][0]][o[p[i][0]].length] = p[i][1];
                }
            }
            else {
                o[p[i][0]] = p[i][1]; ;
            }

        }

        return o;
    };

    //string builder util
    var stringBuilder = function() {

        var s = [];
        return {
            // appends
            append: function(v) {
                if (v) {
                    s.push(v);
                }
            },
            // clears
            clear: function() {
                s.length = 1;
            },
            // converts to string
            toString: function() {
                return s.join("");
            }
        }
    };


    //runs psc array to create 3d object
    var oPsc = combine(psc);

    $(settings.pscInputId).change(function() {

        //get city element
        var c = $(settings.citiInputId);

        var cn = c.attr("name");


        //get input var
        var n = $(this).val();

        //remove right/left spaces
        n = $.trim(n);

        //remove spaces
        n = n.replace(/\s+/g, '');

        //convert string to number
        try {
            n = parseFloat(n);
        }
        catch (err) {
            n = "";
        }

        //console.log(oPsc[n]);
        
        //checks if psc was found
        if (typeof oPsc[n] == "undefined") {
            alert(n + " " + settings.uknownPscMessage);
        }
        else {

       
            //check if multiple psc
            if (typeof oPsc[n] == "object") {

                var sb = stringBuilder();

                sb.append("<select name=\"" + cn + "\" class=\"psc_drop\" id=\"" + settings.citiInputId + "\">");

                for (var i = 0, l = oPsc[n].length; i < l; i++) {
                    sb.append("<option>");
                    sb.append(oPsc[n][i]);
                    sb.append("</option>");
                }

                sb.append("</select>");

                c.replaceWith(sb.toString());

            }
            else {

                //go back to input
                if (c.hasClass("psc_drop")) {

                    //cleans undefied
                    if (typeof oPsc[n] == "undefined") {
                        oPsc[n] = "";
                    }

                    c.replaceWith("<input id=\"" + settings.citiInputId + "\" name=\"" + cn + "\" value=\"" + oPsc[n] + "\" />");
                }
                else {
                    c.val(oPsc[n]);
                }

            } //end of 'object'

        } //end of 'undefined'
        
    });

})(window.PSC);