﻿function getScrollLeft()
{
    if( typeof( document.documentElement.scrollLeft ) == "number" ) return document.documentElement.scrollLeft;
    if( typeof( document.body.scrollLeft ) == "number" ) return document.body.scrollLeft;
    if( typeof( pageXOffset ) == "number" ) return pageXOffset;
    return 0;
}

function getScrollTop()
{
    if( typeof( document.documentElement.scrollTop ) == "number" ) return document.documentElement.scrollTop;
    if( typeof( document.body.scrollTop ) == "number" ) return document.body.scrollTop;
    if( typeof( pageYOffset ) == "number" ) return pageYOffset;
    return 0;
}

function OnValidateDate( sender, e )
{
    try
    {
        if( typeof( sender.attributes[ "dateFormat" ].value ) != "string" ) return;
        var dateFormat = sender.attributes[ "dateFormat" ].value;
        if( e.Value.length != dateFormat.length ) { e.IsValid = false; return; }
        if( typeof( sender.attributes[ "minValue" ].value ) != "string" ) return;
        var minValue = sender.attributes[ "minValue" ].value;
        if( minValue.length != dateFormat.length ) return;
        if( typeof( sender.attributes[ "maxValue" ].value ) != "string" ) return;
        var maxValue = sender.attributes[ "maxValue" ].value;
        if( maxValue.length != dateFormat.length ) return;
        var pos = dateFormat.indexOf( "yyyy" );
        if( pos < 0 ) return;
        var year = Number( e.Value.substr( pos, 4 ) );
        var minYear = Number( minValue.substr( pos, 4 ) );
        var maxYear = Number( maxValue.substr( pos, 4 ) );
        pos = dateFormat.indexOf( "MM" );
        if( pos < 0 ) return;
        var month = Number( e.Value.substr( pos, 2 ) );
        var minMonth = Number( minValue.substr( pos, 2 ) );
        var maxMonth = Number( maxValue.substr( pos, 2 ) );
        pos = dateFormat.indexOf( "dd" );
        if( pos < 0 ) return;
        var day = Number( e.Value.substr( pos, 2 ) );
        var minDay = Number( minValue.substr( pos, 2 ) );
        var maxDay = Number( maxValue.substr( pos, 2 ) );
        var hour = 0
        var minHour = 0
        var maxHour = 0
        var minute = 0
        var minMinute = 0
        var maxMinute = 0
        pos = dateFormat.indexOf( "HH" );
        if( pos >= 0 )
        {
            hour = Number( e.Value.substr( pos, 2 ) );
            minHour = Number( minValue.substr( pos, 2 ) );
            maxHour = Number( maxValue.substr( pos, 2 ) );
            pos = dateFormat.indexOf( "mm" );
            if( pos < 0 ) return;
            minute = Number( e.Value.substr( pos, 2 ) );
            minMinute = Number( minValue.substr( pos, 2 ) );
            maxMinute = Number( maxValue.substr( pos, 2 ) );
        }
        if( year < minYear || year > maxYear ) { e.IsValid = false; return; }
        var date = new Date( year, month - 1, day );
        if( date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day ) { e.IsValid = false; return; }
        var minDate = new Date( minYear, minMonth - 1, minDay, minHour, minMinute );
        var maxDate = new Date( maxYear, maxMonth - 1, maxDay, maxHour, maxMinute );
        if( date < minDate || date > maxDate ) { e.IsValid = false; return; }
    }
    catch( ex )
    {
        return;
    }
}

function OnValidateAmount( sender, e )
{
    try
    {
        if( typeof( sender.attributes[ "minValue" ].value ) != "string" ) return;
        if( typeof( sender.attributes[ "maxValue" ].value ) != "string" ) return;
        var regexComma = /,/;
        var value = Number( e.Value.replace( regexComma, "." ) );
        var minValue = Number( sender.attributes[ "minValue" ].value.replace( regexComma, "." ) );
        var maxValue = Number( sender.attributes[ "maxValue" ].value.replace( regexComma, "." ) );
        if( value < minValue || value > maxValue ) { e.IsValid = false; return; }
    }
    catch( ex )
    {
        return;
    }
}

function DisableSubmitButton( button )
{
    var group = null;
    if ( button != null )
    {
        try
        {
            group = button.attributes["group"].value;
        }
        catch ( ex )
        {
        }
    }
    var validateResult = false;
    if ( group != null )
    {
        validateResult = Page_ClientValidate(group);
    }
    else
    {
        validateResult = Page_ClientValidate();
    }
    if (validateResult && button != null)
    {        
        button.disabled = true;
        __doPostBack(button.name, '');
    }
}

function OnCheckBoxCtrlClick( checkbox )
{
    if( typeof( checkbox ) != "object" )
    {
        checkbox = event.srcElement;
    }

    if( !event.ctrlKey || typeof( checkbox.parentElement.attributes[ "checkboxgroup" ] ) != "object" )
    {
        return;
    }

    var group = checkbox.parentElement.attributes[ "checkboxgroup" ].value;

    var inputs = document.getElementsByTagName( "INPUT" );
    for( var i = 0; i < inputs.length; ++i )
    {
        if( inputs[ i ].type != "checkbox"
         || typeof( inputs[ i ].parentElement.attributes[ "checkboxgroup" ] ) != "object"
         || inputs[ i ].parentElement.attributes[ "checkboxgroup" ].value != group )
        {
            continue;
        }

        inputs[ i ].checked = checkbox.checked;
    }
}

function SetCtrlClickHandler( checkboxlist )
{
    var inputs = checkboxlist.getElementsByTagName( "INPUT" );
    var clearable = false;
    if (checkboxlist.attributes["clearable"]!=null)
        clearable = checkboxlist.attributes["clearable"].value.toLowerCase() == "true";

    for( var i = 0; i < inputs.length; ++i )
    {
        if( inputs[ i ].type != "checkbox" )
        {
            continue;
        }

        inputs[ i ].onclick = OnCheckBoxCtrlClick;

        if (clearable)
        {
             if ( inputs[ i ].attributes[clearable]==null )
             {
                var namedItem = document.createAttribute("clearable");
                namedItem.value = clearable;
                inputs[ i ].attributes.setNamedItem(namedItem);
             }
             else
             {
                inputs[ i ].attributes["clearable"].value = clearable;
             }
        }
    }

    checkboxlist.onmouseover = null;
}

function ClearFields()
{
    var inputs = document.forms[0].getElementsByTagName( "INPUT" );
    for( var i = 0; i < inputs.length; ++i )
    {
        if (inputs[ i ] == null)
        {
            continue;
        }
        var clear = inputs[ i ].attributes["clearable"];
        if (clear == null)
        {
            clear = inputs[ i ].parentNode.attributes["clearable"];
        }
        if (clear != null && clear.value.toLowerCase() == "true")
        {
            if (inputs[ i ] == null || inputs[ i ].disabled == true)
            {
                continue;
            }
            switch(inputs[ i ].type)
            {
                case "text":
                case "password":
                    inputs[ i ].value = "";
                    break;
                case "checkbox":
                    inputs[ i ].checked = false;
                    break;
                default:
                    continue;
                    break;
            }
        }
    }
    var selects = document.forms[0].getElementsByTagName( "SELECT" );
    for( var i = 0; i < selects.length; ++i )
    {
        if (selects[ i ] == null || selects[ i ].disabled == true)
        {
            continue;
        }
        var clear = selects[ i ].attributes["clearable"];
        if (clear != null && clear.value.toLowerCase() == "true")
        {
            if (selects[i] != null)
            {
                selects[i].selectedIndex = 0;
            }
        }
    }
    var textareas = document.forms[0].getElementsByTagName( "TEXTAREA" );
    for( var i = 0; i < textareas.length; ++i )
    {
        if (textareas[ i ] == null || textareas[ i ].disabled == true)
        {
            continue;
        }
        var clear = textareas[ i ].attributes["clearable"];
        if (clear != null && clear.value.toLowerCase() == "true")
        {
            if (textareas[i] != null)
            {
                textareas[i].value = "";
            }
        }
    }
}

function RefreshImage(ctrl, url)
{
    var obj = document.getElementById(ctrl);
    if (obj != null)
    {
        obj.src = url+ "?" + Math.random();
    }
}

/*
inputOnMouseOver = function()
{
var sfEls = document.getElementsByTagName("INPUT");

for (var i=0; i<sfEls.length; i++) {

  sfEls[i].onmouseover=function() {
    this.className+="Over";
  }
  sfEls[i].onmouseout=function() {
    this.className=this.className.replace(new RegExp("Over\\b"), "");
  }
}
}
window.onload = inputOnMouseOver;
*/