﻿var letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var upperCaseLetters='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var numbers='1234567890';
var date='1234567890/';
var postalCode='-'+numbers;
var telephone='-'+numbers;
var signs=',.:;@-\'';
var mathsigns='+-=()*/';
var userName=letters+numbers+'-_@.,()[]!#$%^&*+=';
var password=letters+numbers+'-_@.,()[]!#$%^&*+=~`\'"{}|\\/<>';

function clickButtonOnEnter(e, elementId)
{
     var k = document.all ? parseInt(e.keyCode) : parseInt(e.which);   
     var status = true;
                    
     if ( k == 13 )
     {     
        var btnLogIn = document.getElementById(elementId);
        
        if ( btnLogIn != null )
        {
           btnLogIn.click();
           status = false;
        }            
     }

     return status;
} 

function LimitTextEntry(e, obj, allow) 
{
     var k = document.all ? parseInt(e.keyCode) : parseInt(e.which);   
          
     switch (k)
     {
        case 0:
        case 8:
            return true;
        default:   
        
            if (allow == upperCaseLetters)
            {
                var upper = String.fromCharCode(k).toUpperCase();
                var length = obj.value.length;                
                
                if (length >= obj.maxLength)
                    return false;
                    
                if (allow.indexOf(upper) != -1)
                    obj.value += upper;
                    
                return false;
            }
            
            return (allow.indexOf(String.fromCharCode(k)) != -1);
     }
}

function ScrollToControl(control, offset)
{  
    elemPosY = control.offsetTop + offset;  
    control = control.offsetParent;  
    
    while (control != null)
    {    
        elemPosY += control.offsetTop;    
        control = control.offsetParent;  
    }  
    
    window.scrollTo(0, elemPosY);
}

function AddLineBreaks(text, breakAfter)
{
    var outText = "";
    var i = 0;    
            
    for (;;)
    {
        var find = text.indexOf(" ", i + breakAfter);
        
        if (find == -1)
            break;
                        
        outText += text.substring(i, find) + "<br/>";
        i = find + 1;                       
    }
    
    outText += text.substring(i, text.length);    
    
    return outText;
}

function GetCountOf(text, find)
{
    count = 0;
    pos = text.indexOf(find);
    
    while ( pos != -1 ) 
    {
       count++;
       pos = text.indexOf(find,pos+1);
    }
    
    return count;
}

function BrowserWidth()
{
    var myWidth;
    var myHeight;

    if( typeof( window.innerWidth ) == 'number' ) { 

    //Non-IE 

    myWidth = window.innerWidth;
    myHeight = window.innerHeight; 

    } else if( document.documentElement && 

    ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { 

    //IE 6+ in 'standards compliant mode' 

    myWidth = document.documentElement.clientWidth; 
    myHeight = document.documentElement.clientHeight; 

    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { 

    //IE 4 compatible 

    myWidth = document.body.clientWidth; 
    myHeight = document.body.clientHeight; 
    }
    
    return myWidth;
} 

function ShowHintTip(control, tipText, horizontalOffset, verticalOffset, breakAtCharacters)
{
    ShowTip(control, tipText, "_hint", "hintTip", horizontalOffset, verticalOffset, breakAtCharacters, 2);
}

function ShowErrorTip(control, tipText, horizontalOffset, verticalOffset, breakAtCharacters)
{
    ShowTip(control, tipText, "_error", "errorTip", horizontalOffset, verticalOffset, breakAtCharacters, 1);
}

function ShowTip(control, tipText, prefix, cssClass, horizontalOffset, verticalOffset, breakAtCharacters, zIndex)
{  
    var brokenText = AddLineBreaks(tipText, breakAtCharacters);
    var breaks = GetCountOf(brokenText, "<br/>");
    var outer = control + prefix + "TipOuter";
    var inner = control + prefix + "TipInner";          
    var element = jQuery("#" + control);    
    var browserWidth = BrowserWidth(); 
    var pageWidth = 1024;
    var browserNudge = 0;
    
    if (navigator.appName != "Microsoft Internet Explorer")
        browserNudge+=8;
    
    var x = element.offset().left + 30 + horizontalOffset - (browserWidth > 1024 ? ((browserWidth - pageWidth) / 2) - browserNudge : 0);   
    var y = element.offset().top + 1 + verticalOffset;     
    
    var div = "<div id='" + outer + "' style='position:absolute; left:" + x + "px; top:" + y + "px; z-index=" + zIndex + ";' >\n" +
        "<table cellspacing='0' cellpadding='0'>\n" +
        "<tr>\n" +
        "<td id='" + inner + "' class='" + cssClass + "' style='filter: alpha(opacity=0); white-space:nowrap;' >\n" +
        brokenText.replace(/ /gi, "&nbsp;") + "\n" +  // for firefox
        "</td>\n" +
        "</tr>\n" +
        "</table>\n" +
        "</div>\n"; 
                        
    element.after(div);    
            
    FadeOpacity(inner, 0, 100, 100, 20);          
}

function HideErrorTip(control)
{
    HideTip(control, "_error");
}

function HideHintTip(control)
{
    HideTip(control, "_hint");
}

function HideTip(control, prefix)
{
    var outer = control + prefix + "TipOuter";
    var inner = control + prefix + "TipInner";    
    var element = jQuery("#" + inner);         

    if (element.html() != null)
        FadeOpacity(inner, 100, 0, 100, 20);       
}

function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps)
{
     var steps = Math.ceil(fps * (time / 1000));
     var delta = (toOpacity - fromOpacity) / steps;
     
     FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));    
 }
 
function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep)
{   
    SetOpacity(document.getElementById(elemId), Math.round(parseInt(fromOpacity) + (delta * stepNum)));

    if (stepNum < steps)
        setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) 
                 + ", " + steps + ", " + fromOpacity + ", "
                 + delta + ", " + timePerStep + ");", 
                   timePerStep);    
    else if (fromOpacity == 100)
        document.getElementById(elemId).innerHTML = "";                                                             
}

function SetOpacity(elem, opacityAsInt)
{
    var opacityAsDecimal = opacityAsInt;
    
    if (opacityAsInt > 100)
        opacityAsInt = opacityAsDecimal = 100; 
    else if (opacityAsInt < 0)
        opacityAsInt = opacityAsDecimal = 0; 
    
    opacityAsDecimal /= 100;
    if (opacityAsInt < 1)
        opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0
    
    elem.style.opacity = (opacityAsDecimal);
    elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";    
}
