﻿var alphaNumericSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

function getTopSpaceForCentering(divElement, initialHeight)
{
    if (typeof (divElement) == "string")
        divElement = document.getElementById(divElement);
    if (!initialHeight)
        initialHeight = 0;

    var topSpaceValue = Math.round((getClientHeightValue() - initialHeight - divElement.offsetHeight) / 2);

    return topSpaceValue < 0 ? 0 : topSpaceValue;
}

function getLeftSpaceForCentering(divElement, initialLeft)
{
    if (typeof (divElement) == "string")
        divElement = document.getElementById(divElement);
    if (!initialLeft)
        initialLeft = 0;

    var leftSpaceValue = Math.round((getClientWidthValue() - divElement.offsetWidth) / 2);

    return leftSpaceValue < 0 ? 0 : leftSpaceValue;
}

function prepareTdTopSpace(initialHeight)
{
    var wrapperRef = document.getElementById('wrapper');
    var tdTopSpaceRef = document.getElementById('tdTopSpace');
    tdTopSpaceRef.style.height = "0px";

    var availHeightValue = Math.round((getClientHeightValue() - initialHeight - wrapperRef.offsetHeight) / 2);

    if (availHeightValue < 0)
        availHeightValue = 0;

    tdTopSpaceRef.style.height = availHeightValue + "px";
}

function prepareTdLeftSpace()
{
    var wrapperRef = document.getElementById('wrapper');
    var tdLeftSpaceRef = document.getElementById('tdLeftSpace');
    tdLeftSpaceRef.style.width = "0px";

    var availWidthValue = Math.round((getClientWidthValue() - wrapperRef.offsetWidth) / 2);

    if (availWidthValue < 0)
        availWidthValue = 0;

    tdLeftSpaceRef.style.width = availWidthValue + "px";
}

function getClientHeightValue()
{
    var clientHeightValue = 0;
    
    if (typeof (window.innerWidth) == 'number')
    {
        //Non-IE
        clientHeightValue = window.innerHeight;
    }
    else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
    {
        //IE 6+ in 'standards compliant mode'
        clientHeightValue = document.documentElement.clientHeight;
    }
    else if (document.body && (document.body.clientWidth || document.body.clientHeight))
    {
        //IE 4 compatible
        clientHeightValue = document.body.clientHeight;
    }
    
    return clientHeightValue;
}

function getClientWidthValue()
{
    var clientWidthValue = 0;
    
    if (typeof (window.innerWidth) == 'number') 
    {
        //Non-IE
        clientWidthValue = window.innerWidth;
    }
    else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
    {
        //IE 6+ in 'standards compliant mode'
        clientWidthValue= document.documentElement.clientWidth;
    }
    else if (document.body && (document.body.clientWidth || document.body.clientHeight))
    {
        //IE 4 compatible
        clientWidthValue = document.body.clientWidth;
    }
    
    return clientWidthValue;
}

function getElementActualLeft(element)
{
    if (typeof (element) == 'string')
        element = document.getElementById(element);
        
    var leftPos;
    var parentElement;
    
    if (element == null)
        return 0;
    
    leftPos = element.offsetLeft;
    parentElement = element.offsetParent;
    while (parentElement != null)
    {
        leftPos += parentElement.offsetLeft;
        parentElement = parentElement.offsetParent;
    }
    
    return leftPos;
}


function getElementActualTop(element)
{
    if (typeof (element) == 'string')
        element = document.getElementById(element);
        
    var topPos;
    var parentElement;
    
    if (element == null)
        return 0;
    
    topPos = element.offsetTop;
    parentElement = element.offsetParent;
    while (parentElement != null)
    {
        topPos += parentElement.offsetTop;
        parentElement = parentElement.offsetParent;
    }
    
    return topPos;
}

function onlyNum(e)
{
    var browser=navigator.appName;
    var tf=''; 
    var str='0123456789'; 
    
    if (browser=='Netscape') 
    { 
        var key1 = e.which; 
        var keychar1 = String.fromCharCode(key1); 
        if (key1==8 || key1==0) 
        return true;
        
        if (str.indexOf(keychar1)==-1)
            return false; 
    } 
    else
    {
        if  ((window.event.keyCode>=48) && (window.event.keyCode<=57))
            return true; 
        else 
            return false; 
    }
}

function onlyNumWithSpace(e)
{
    var browser=navigator.appName;
    var tf=''; 
    var str='0123456789';

    if (browser=='Netscape') 
    { 
        var key1 = e.which; 
        var keychar1 = String.fromCharCode(key1); 
        if (key1==8 || key1==0) 
        return true;
        
        if (str.indexOf(keychar1)==-1)
            return false; 
    } 
    else
    {
        if  ((window.event.keyCode>=48) && (window.event.keyCode<=57) || (window.event.keyCode == 32) )
            return true; 
        else 
            return false; 
    }
}

function trOnMouseMove(trID)
{
    var trRef;
    
    try
    {
        trRef = document.getElementById(trID);
        trRef.style.backgroundColor = '#ECC800';
    }
    catch(err)
    {}
}

function trOnMouseOut(trID)
{
    var trRef;
    
    try
    {
        trRef = document.getElementById(trID);
        trRef.style.backgroundColor = '';
    }
    catch(err)
    {}
    //fade(trID, '#BBC2C8', '#ECC800');
}

function trArraysOnMouseMove(trIDs)
{
    var trIDsArray = new Array();
    trIDsArray = trIDs.split(';');
    
    for (var i = 0; i < trIDsArray.length; i++)
        trOnMouseMove(trIDsArray[i]);
}

function trArraysOnMouseOut(trIDs)
{
    var trIDsArray = new Array();
    trIDsArray = trIDs.split(';');
    
    for (var i = 0; i < trIDsArray.length; i++)
        trOnMouseOut(trIDsArray[i]);
}

function scrollToElement (elementID)
{
    var selectedPosX = 0;
    var selectedPosY = 0;
    var elementRef = document.getElementById(elementID);
    
    while(elementRef != null)
    {
        selectedPosX += elementRef.offsetLeft;
        selectedPosY += elementRef.offsetTop;
        elementRef = elementRef.offsetParent;
    }
    
    window.scrollTo(selectedPosX, selectedPosY);
}

function trim (stringToTrim)
{
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function isValidEmail (emailValue)
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(trim (emailValue)))
        return true;
    else
        return false;
}

function getScrollCoordinates()
{
    var scrollPoints = new Array();
    
    if (document.all)
    {
        if (!document.documentElement.scrollLeft)
            scrollPoints[0] = document.body.scrollLeft;
        else
            scrollPoints[0] = document.documentElement.scrollLeft;
            
        if (!document.documentElement.scrollTop)
            scrollPoints[1] = document.body.scrollTop;
        else
            scrollPoints[1] = document.documentElement.scrollTop;
    }
    else
    {
        scrollPoints[0] = window.pageXOffset;
        scrollPoints[1] = window.pageYOffset;
    }
    
    return scrollPoints;
}

function getScrollCoordinatesX()
{
    var scrollCoordinatesX;
    if (document.all)
    {
        if (!document.documentElement.scrollLeft)
            scrollCoordinatesX = document.body.scrollLeft;
        else
            scrollCoordinatesX = document.documentElement.scrollLeft;
    }
    else
        scrollCoordinatesX = window.pageXOffset;

    return scrollCoordinatesX;
}

function getScrollCoordinatesY()
{
    var scrollCoordinatesY;

    if (document.all)
    {
        if (!document.documentElement.scrollTop)
            scrollCoordinatesY = document.body.scrollTop;
        else
            scrollCoordinatesY = document.documentElement.scrollTop;
    }
    else
        scrollCoordinatesY = window.pageYOffset;

    return scrollCoordinatesY;
}

function addClickEvent(elem, func)
{
    var oldOnClick = elem.onclick;
    
    if (typeof elem.onclick != 'function')
    {
        elem.onclick = func;
    }
    else
    {
        elem.onclick =  function()
                        {
                            if (oldOnClick)
                                oldOnClick();
                                
                            func();
                        } 
    } 
}

function addLoadEvent(func)
{
    var oldonload = window.onload;
    
    if (typeof window.onload != 'function')
    {
        window.onload = func;
    }
    else
    {
        window.onload = function()
                        {
                            if (oldonload)
                                oldonload();
                                
                            func();
                        } 
    } 
}

function addScrollEvent(func)
{
    var oldOnScroll = window.onscroll;
    
    if (typeof window.onscroll != 'function')
    {
        window.onscroll = func;
    }
    else
    {
        window.onscroll =   function()
                            {
                                if (oldOnScroll)
                                    oldOnScroll();
                                
                                func();
                            }
    }
}

function addResizeEvent(func)
{
    var oldOnResize = window.onresize;

    if (typeof window.onresize != 'function')
    {
        window.onresize = func;
    }
    else
    {
        window.onresize = function()
        {
            if (oldOnResize)
                oldOnResize();

            func();
        }
    }
}

function changeLocation(locationAddress)
{
    window.location = locationAddress;
}

function setCheckBoxAlign(divID)
{
    if (!browserRef.isOpera)
    {
        var divRef = document.getElementById(divID);
        divRef.style.position = 'relative';
        divRef.style.left = '-4px';
    }
}

function getMaxZIndex()
{
    var allElems = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all;
    var maxZIndex = 0;
    for (var i = 0; i < allElems.length; i++)
    {
        var elem = allElems[i];
        var cStyle = null;
        if (elem.currentStyle)
            cStyle = elem.currentStyle;
        else if (document.defaultView && document.defaultView.getComputedStyle)
            cStyle = document.defaultView.getComputedStyle(elem, "");
            
        var sNum;
        if (cStyle)
            sNum = Number(cStyle.zIndex);
        else
            sNum = Number(elem.style.zIndex);
            
        if (!isNaN(sNum))
            maxZIndex = Math.max(maxZIndex, sNum);
    }

    return maxZIndex;
}

function clientValidateForDrp(source, argument)
{
    var selectedIndex = argument.Value;
    
    if (selectedIndex == 0)
        argument.IsValid = false;
    else
        argument.IsValid = true;
}

function clientValidateForLabeledTxt(source, argument)
{
    var elementRef = document.getElementById(source.controltovalidate);
    if (trim(elementRef.value) == trim(elementRef.title))
        argument.IsValid = false;
    else
        argument.IsValid = true;
}

function clientValidateForDateControl(source, argument)
{ 
    //must be bigger then 1800
    if (!/^(0?[1-9]|[12][0-9]|3[01])[\/\.](0?[1-9]|1[0-2])[\/\.](1[89][0-9][0-9]|2[0-9][0-9][0-9])$/.test(argument.Value))
        argument.IsValid = false;
    else
        argument.IsValid = true;
}

function registerCalendar(inputField, buttonField)
{
    Calendar.setup({
        inputField: prefixTagName + inputField,     // id of the input field
        ifFormat: "%d.%m.%Y",      // format of the input field
        button: buttonField,  // trigger for the calendar (button ID)
        align: "Tl",           // alignment (defaults to "Bl")
        singleClick: true
    });

    document.getElementById(prefixTagName + inputField).setAttribute("readOnly", "true");
}

function controlTxtLength(txtID, spanID, maxCharacterCount)
{
    var txtRef = document.getElementById(prefixTagName + txtID);
    var spanRef = document.getElementById(spanID);

    if (txtRef.value.length > maxCharacterCount)
        txtRef.value = txtRef.value.substring(0, maxCharacterCount);

    spanRef.innerHTML = (maxCharacterCount - txtRef.value.length);
}

function labeledTxtGainFocus(element)
{
    if (trim(element.value) == trim(element.title))
        element.value = '';
}

function labeledTxtLostFocus(element)
{
    if (trim(element.value).length == 0)
        element.value = element.title;
}

var specialObjectsInitialStates;
function hideSpecialObjects()
{
    var specialObjectsArr = $$('select', 'object');
    specialObjectsInitialStates = new Array();
    for (var i = 0; i < specialObjectsArr.length; i++)
    {
        specialObjectsInitialStates[i] = specialObjectsArr[i].style.visibility;
        specialObjectsArr[i].style.visibility = 'hidden';
    }
}

function showSpecialObjects()
{
    var specialObjectsArr = $$('select', 'object');
    for (var i = 0; i < specialObjectsArr.length; i++)
        specialObjectsArr[i].style.visibility = specialObjectsInitialStates[i];
}