// Detecting browser version.
// [MB]
var isFF = (navigator.userAgent.indexOf("Firefox") > 0);
var isChrome = (navigator.userAgent.indexOf("Chrome") > 0);
var isIE6 = false;
var isIE7 = false;
var isIE8 = false;

// Matching MSIE string for IE version detection.
// [MB]
if (!isFF && !isChrome) {
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var ieversion = new Number(RegExp.$1)
        if (ieversion >= 8) {
            isIE7 = true; // Use IE7 behavior for IE8 [MB]
            isIE8 = true;
        }
        else if (ieversion >= 7) {
            isIE7 = true;
        }
        else if (ieversion >= 6) {
            isIE6 = true;
        }
    }
}




$(window).bind('resize', resizeUI);
$(document).ready(function() {
    resizeUI();
});

var controlRegister = {};
function registerControl(key, control) {
    if (control)
        controlRegister[key] = $("#" + control).get(0);
}

function getRegisteredControl(key) {
    return controlRegister[key];
}

function resizeUI() {
	var sf = $("#ServerForm");
	var wc = $("#WallpaperCarrier");
	var footerContainer = $("#Footer");

	if (sf && wc) {
	    var sfh = sf.get(0).offsetHeight;
	    var wch = wc.get(0).offsetHeight;	    

	    if (wch < sfh) {
	        wc.get(0).style.height = sfh + "px";
	    }
	}

//	if (footerContainer) {
//	    var footer = footerContainer.get(0);

//	    if (footer) {
//	        var pos = getAbsolutePosition(footer);
//	        // footer.style.marginTop
//	        var x = ((Math.ceil(pos.Top / 10) * 10) - pos.Top + 10) + "px";
//	    }
//	}
}

function getAbsolutePosition(element) {
    var top = parseInt(element.offsetTop);
    var left = parseInt(element.offsetLeft);

    while (element.offsetParent) {
        element = element.offsetParent;
        
        top += parseInt(element.offsetTop);
        left += parseInt(element.offsetLeft);
    }

    return { Top: top, Left: left };
}

var groupedValidationResults = [];
function customValidation(sender, args) {
    var validationType = sender.getAttribute("ValidationType");
    var groupOfControls = sender.getAttribute("GroupOfControls");
    var registeredClientId = sender.getAttribute("RegisteredClientId");
    var controlToValidate = sender.getAttribute("controlToValidate");
    var atsv = sender.getAttribute("atsv");

    // Alternative control version for non validatable controls.
    // [MB]
    var registeredClientControl = null;
    if (registeredClientId && (registeredClientId != ""))
        registeredClientControl = getRegisteredControl(registeredClientId);

    if (!atsv || (atsv == "") || ($("#Action").get(0).value != atsv)) {
        switch (validationType) {
            case "RequiredField":
                args.IsValid = (args.Value != '')
                break;
            case "NumericOnly":
                var matchResult = args.Value.match(/[0-9]+/);

                args.IsValid = (matchResult && (matchResult[0] == args.Value));
                break;
            case "EMail":
                var matchResult = args.Value.match(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i);

                args.IsValid = (matchResult && (matchResult[0] == args.Value));
                break;
            case "Checkbox":
                if (registeredClientControl) {
                    args.IsValid = registeredClientControl.checked;
                }
                else {
                    args.IsValid = false;
                }
                break;
        }

        var groupValid = args.IsValid;
        if (groupOfControls) {
            if (!groupedValidationResults[groupOfControls])
                groupedValidationResults[groupOfControls] = {};

            groupedValidationResults[groupOfControls][controlToValidate] = args.IsValid;

            if (args.IsValid) {
                for (var controlName in groupedValidationResults[groupOfControls]) {
                    if (!groupedValidationResults[groupOfControls][controlName]) {
                        groupValid = false;
                        break;
                    }
                }
            }
        }

        var bgColor = (groupValid) ? "" : "#FF0000"
        $("#" + sender.getAttribute("ControlToHighlight")).css("background-color", bgColor);
    }
}