﻿/// <reference name="MicrosoftAjax.js" />
/// <reference path="BaseUI.js" />

var BaseUI =
{
    GlobalScopes:    new Array(),
    LastID:          0,
    MouseX:          0,
    MouseY:          0,
    MouseMoveEvents: new Array(),
    Initialize:      function() 
    {
        //Iniitialization
        
        $addHandler(document, 'mousemove', BaseUI.MouseMove)
    },
    ScrollX: function()
    {
        var theScrollX = document.body.scrollLeft;

        if (theScrollX == 0)
        {
            if (window.pageYOffset) theScrollX = window.pageXOffset;
            else                    theScrollX = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
            
            if (theScrollX == 0) theScrollX = (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : 0;
        }
        
        return theScrollX
    },
    ScrollY: function()
    {
        var theScrollY = document.body.scrollTop;

        if (theScrollY == 0)
        {
            if (window.pageYOffset) theScrollY = window.pageYOffset;
            else                    theScrollY = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;

            if (theScrollY == 0) theScrollY = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : 0;
        }

        return theScrollY
    },
    MouseMove: function(e)
    {
        try
        {
            var x = e.clientX + BaseUI.ScrollX()
            var y = e.clientY + BaseUI.ScrollY()

            BaseUI.MouseX = x
            BaseUI.MouseY = y
            
            for (var i = 0; i < BaseUI.MouseMoveEvents.length; i++)
            {
                var theMouseMoveEvent = BaseUI.MouseMoveEvents[i]
                
                if (theMouseMoveEvent())
                {
                    break;
                }
            }
        }
        catch (e) {}
    },
    AddMask: function(el, msk, styleclass, maskstyleclass)
    {
        el.Mask           = msk
        el.StyleClass     = styleclass
        el.MaskStyleClass = maskstyleclass

        if (el.value == '') 
        {
            el.value = el.Mask
            BaseUI.SetClass(el, el.MaskStyleClass)
        }
        else
        {
            BaseUI.SetClass(el, el.StyleClass)
        }
               
        $addHandler(el, 'focus', function()
        {
            if (this.value == this.Mask)
            {
                this.value = ''
                BaseUI.SetClass(this, this.StyleClass)
            }
        })
        $addHandler(el, 'blur', function()
        {
            if (this.value.trim() == '')
            {
                this.value = this.Mask
                BaseUI.SetClass(this, this.MaskStyleClass)
            }
        })
      },
    GetClass: function(el) {
      if (el) {
        try {
          if ((Sys.Browser.agent == Sys.Browser.InternetExplorer) && (Sys.Browser.version < 8)) {
            return el.className
          }
          else {
            return el.getAttribute("class")
          }
        }
        catch (e) { }
      }

      return ''
    },
    SetClass: function(el, className)
    {
        if (el)
        {
            try
            {
                if ((Sys.Browser.agent == Sys.Browser.InternetExplorer) && (Sys.Browser.version < 8))
                {
                    el.className = className
                }
                else
                {
                    el.setAttribute("class", className)
                }
            }
            catch (e) {}
        }
    },
    RemoveAllChildren: function(el)
    {
        while (el.childNodes.length > 0) el.removeChild(el.childNodes[0])
    },
    MakeRequest: function(url, verb, data, func, obj)
    {
        try
        {
            var TheRequest = new Sys.Net.WebRequest()

            TheRequest.set_url(url)
            TheRequest.set_httpVerb(verb)

            if (data)
            {
                TheRequest.set_body(data)
                TheRequest.get_headers()["Content-Length"] = data.length;
            }

            TheRequest.set_userContext(new RequestParams(func, obj))
            TheRequest.add_completed(BaseUI.MakeRequestComplete)
            TheRequest.invoke()

            return TheRequest
        }
        catch (error)
        {
            if (func) func('Communication Error')
        }
    },
    MakeRequestComplete: function(executer, eventArgs)
    {
        var TheParams = executer.get_webRequest().get_userContext()

        if (executer.get_responseAvailable())
        {
            TheParams.responseData = executer.get_responseData().replace(/\u2028/g, '')
        }
        else
        {
            TheParams.responseData = null
        }
        
        if (TheParams.func) TheParams.func(TheParams)
    },
    AddOption: function(sel, text, value, tag)
    { 
        var theOption = document.createElement('option')

        theOption.text  = text
        theOption.value = value
        theOption.Tag   = tag

        sel.options.add(theOption, -1);
    },
    SelectOptionByValue: function(sel, value)
    { 
        for (var i = 0; i < sel.options.length; i++)
        {
            if (sel.options[i].value == value)
            {
                sel.options[i].selected = true
                break
            }
        }
    },
    GetSelectedOption: function(sel)
    {
        if (sel.selectedIndex >= 0)
        {
            return sel.options[sel.selectedIndex]
        }
        
        return null
    },
    GetSelectedValue: function(sel)
    {
        if (sel.selectedIndex == -1)
        {
            return 0
        }
        else
        {
            return sel.options[sel.selectedIndex].value
        }
    },
    GetSelectedText: function(sel)
    {
        if (sel.selectedIndex == -1)
        {
            return 0
        }
        else
        {
            return sel.options[sel.selectedIndex].text
        }
    },
    Expand: function(el)
    {
        if (el)
        {
            el.style.visibility = 'visible'
            el.style.display    = 'block'
        }
    },
    Collapse: function(el)
    {
        if (el)
        {
            el.style.visibility = 'hidden'
            el.style.display    = 'none'
        }
    },
    GetNextID: function()
    {
        return (++BaseUI.LastID).toString()
    },
    InstanceHandler: function(id, strFunc)
    {
        var scope = BaseUI.GlobalScopes[id];
        eval("scope." + strFunc + "()");
    },
    GetCookie: function(check_name)
    {
        var a_all_cookies = document.cookie.split(';')
        var a_temp_cookie = ''
        var cookie_name = ''
        var cookie_value = ''
        var b_cookie_found = false

        for (i = 0; i < a_all_cookies.length; i++)
        {
            a_temp_cookie = a_all_cookies[i].split('=')
            cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '')

            if (cookie_name == check_name)
            {
                b_cookie_found = true;
                if (a_temp_cookie.length > 1)
                {
                    cookie_value = decodeURIComponent(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''))
                }
                return cookie_value
                break
            }
            a_temp_cookie = null
            cookie_name = ''
        }

        if (!b_cookie_found) return null
    }
}

function RequestParams(afunc, obj)
{
    this.func         = afunc
    this.responseData = null
    this.obj          = obj
    this.Error        = null
}

Sys.Application.add_load(BaseUI.Initialize)
