﻿//**********************************************************************************
// Document:    CommonLib.js - WebPOS v2.0
// Author:      ilawton
// Date:        August 2007
// © Copyright PureNet 2006. All rights reserved. All trademarks acknowledged
//**********************************************************************************



// Sets an element to the size of the window
// Params: element to be resized, width & height values to be deducted
function SetDivToWindowSize(element, subtractWidth, subtractHeight)
{
    if (subtractWidth == null) subtractWidth = 0;
    if (subtractHeight == null) subtractHeight = 0;
    
    var winW, winH;
    var offsetHeight = 0;
    var offsetWidth = 0;

    if (parseInt(navigator.appVersion)>3) 
    {
        if (navigator.appName=="Netscape") 
        {
            winW = window.innerWidth - 5;
            winH = window.innerHeight - 10;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) 
        {
            if (is_ie6)
            {
                offsetWidth = 20;
                offsetHeight = 5;
            }
            
            winW = document.documentElement.offsetWidth;
            winH = document.documentElement.offsetHeight;
        }
    }
    
    // set values
    if (subtractHeight > -1)
    element.style.height = (winH - subtractHeight - offsetHeight) + "px";
    if (subtractWidth > -1)
    element.style.width = (winW - subtractWidth - offsetWidth) + "px";
    
}




// Attach this to the "onkeypress" event of a text box to ensure that the user inputs a number
function CheckKeyCodeIsNumber(e)
{
    var charCode;
    if (!e) var e = window.event;
    if (e.keyCode) charCode = e.keyCode;
    else if (e.which) charCode = e.which;
    
    if (charCode >= 48 && charCode <= 57)
        return true;
    else 
        { alert('You must enter a number.'); return false; }
}


// Attach this to the "onkeypress" event of a text box to ensure that the user inputs a number
function CheckInputIsCurrency(e)
{
    var charCode;
    if (!e) var e = window.event;
    if (e.keyCode) charCode = e.keyCode;
    else if (e.which) charCode = e.which;
    
    if ((charCode >= 48 && charCode <= 57) || charCode == 46)
    {
        if (charCode == 46)
        {
        if (e.srcElement.value.indexOf('.') < 0)
            return true;
        else
            return false;
        }
        else
            return true;
    }
    else 
        { alert('You must enter a number.'); return false; }
}

// Gets cssRuls array containing each stylesheet
function cssRules()
{
    var theRules = new Array();
    if (document.styleSheets[2].cssRules) //Moz.
    theRules = document.styleSheets[2].cssRules
    else if (document.styleSheets[2].rules) // IE
    theRules = document.styleSheets[2].rules
    
    return theRules;
}

function setInnerText(element, text)
{
    if (document.all)
        element.innerText = text;
    else
        element.textContent = text;
}




// ++++++++++++++++++++++++++++++++++ Context Menu +++++++++++++++++++++++++++++++++ //
// Create Menu Item. This function is called to build an array of items. 
// MenuArray parameter should be  null for first call, then passed back in for other items.
function CreateContextMenuItem(text, onClickEvent, className, MenuArray)
{
    if (MenuArray == null)
    {
        MenuArray = new Array();
    }
    
    var newMenuItem = new Object();
    newMenuItem.text = text;
    newMenuItem.onClickEvent = onClickEvent;
    newMenuItem.className = className;
    
    MenuArray[MenuArray.length] = newMenuItem;
    
    return MenuArray;
}

// Function is called when menu is ready to be opened
// MenuArray is array of items (see above), id is the name of the menu.
var ContextCloseEvent;
function OpenContextMenu(MenuArray, _ContextCloseEvent)
{
    if (_ContextCloseEvent != null)
        ContextCloseEvent = _ContextCloseEvent;
    else
        ContextCloseEvent = null;
    
    var e = event;
    
    //If Context Mnu already exists, get rid of it, so it appears in a new place.
    var MnuID = 'pc_Generic_ContextMnu'
    if ($get(MnuID))
    {
            $get(MnuID).parentNode.removeChild($get(MnuID));
            $removeHandler(document.body,"mousedown", ContextMenuOff)
    }
    
    var divMnu = document.createElement("div");
    divMnu.id = MnuID;
    divMnu.onmouseup = function () {
        divMnu.parentNode.removeChild(divMnu);
        $removeHandler(document.body,"mousedown", ContextMenuOff);
        event.srcElement.click();
        if (ContextCloseEvent != null)
                ContextCloseEvent();
    }
  
    
    for(i in MenuArray)
    {
        var divMenuItem = document.createElement('div');
        divMenuItem.id = "_pc_Generic_Context_MnuItem_" + i;
        divMenuItem.innerHTML = MenuArray[i].text;
        divMenuItem.className = MenuArray[i].className;
        divMenuItem.onclick = MenuArray[i].onClickEvent;
        divMnu.appendChild(divMenuItem);
    }
        
    Sys.UI.DomElement.setLocation(divMnu , e.clientX + 4 + document.body.parentNode.scrollLeft ,e.clientY + 3 + document.body.parentNode.scrollTop);
    
    document.forms[0].appendChild(divMnu);
    
    $addHandler(document.body, "mousedown", ContextMenuOff)
    return false;
}


function ContextMenuOff(e)
{
    if (!e) e = event;
    if (e.target.className != "MnuItem")
    {
        $get('pc_Generic_ContextMnu').parentNode.removeChild($get('pc_Generic_ContextMnu'));
        $removeHandler(document.body,"mousedown", ContextMenuOff);
        if (ContextCloseEvent != null)
                ContextCloseEvent();
    }
}










var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();
var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);
var iePos = appVer.indexOf('msie');
if (iePos !=-1) {
is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)))
is_major = parseInt(is_minor);
}
var is_getElementById = (document.getElementById) ? "true" : "false"; 
var is_getElementsByTagName = (document.getElementsByTagName) ? "true" : "false";
var is_documentElement = (document.documentElement) ? "true" : "false"; 
var is_ie = ((iePos!=-1));
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && is_major == 4);
var is_ie4up = (is_ie && is_minor >= 4);
var is_ie5 = (is_ie && is_major == 5);
var is_ie5up = (is_ie && is_minor >= 5);
var is_ie5_5 = (is_ie && (agt.indexOf("msie 5.5") !=-1)); 
var is_ie5_5up =(is_ie && is_minor >= 5.5); 
var is_ie6 = (is_ie && is_major == 6);
var is_ie6up = (is_ie && is_minor >= 6);

