﻿// JScript File
window.onload = window_onload;
window.onresize = positionControls;

var keepState = false;
var pawsValidatorArray = new Array();




function window_onload()
{
   
    try{page_load();} catch(e){}
    //validateControls();
}

function checkNum(data) {      // checks if all characters
var valid = "0123456789.";     // are valid numbers or a "."
var ok = 1; var checktemp;
for (var i=0; i<data.length; i++) {
checktemp = "" + data.substring(i, i+1);
if (valid.indexOf(checktemp) == "-1") return 0; }
return 1;
}


function commaFormatted(field, numberOfDecimals, showDollarSign) { // idea by David Turley // cleaned up by John Maggart
if(field.value=="") return "";

//parse the float first to set number of decimals
formatFloat(field, numberOfDecimals);

Num = field.value;

//return nothing if you receive nothing
if(Num.length==0)
    return "";
    
Num = Num.replace("$", "");
Num = Num.replace(",", "");
dec = Num.indexOf(".");



end = ((dec > -1) ? "" + Num.substring(dec,Num.length) : "");


//Remove the decimal from the whole number - add "end" back near the end of the procedure
if(end.length>0)
    Num = Num.substring(0, Num.length-end.length)


Num = "" + pawsParseFloat(Num);
var temp1 = "";
var temp2 = "";

if (checkNum(Num) != 0) {


var count = 0;
for (var k = Num.length-1; k >= 0; k--) {
var oneChar = Num.charAt(k);
if (count == 3) {
temp1 += ",";
temp1 += oneChar;
count = 1;
continue;
}
else {
    temp1 += oneChar;
    count ++;
   }
}
for (var k = temp1.length-1; k >= 0; k--) {
var oneChar = temp1.charAt(k);
temp2 += oneChar;
}


if(showDollarSign)
    temp2 = "$" + temp2 + end;
else
    temp2 = temp2 + end;
field.value = temp2;
   }
}

//By John Maggart
function formatFloat(field, numberOfDecimals) 
{ 
    var num = field.value.replace(",", "");
    num = num.replace("$", "");
    var numberToConvert = pawsParseFloat(num);
    var multiplier =  Math.pow(10, numberOfDecimals);
  
    
    field.value = Math.round (numberToConvert * multiplier) / multiplier
}

function formatFloatCeiling(field, numberOfDecimals) {
    var num = field.value.replace(",", "");
    num = num.replace("$", "");
    var numberToConvert = pawsParseFloat(num);
    var multiplier = Math.pow(10, numberOfDecimals);


    field.value = Math.ceil(numberToConvert * multiplier) / multiplier
}

function formatFloatFloor(field, numberOfDecimals) {
    var num = field.value.replace(",", "");
    num = num.replace("$", "");
    var numberToConvert = pawsParseFloat(num);
    var multiplier = Math.pow(10, numberOfDecimals);


    field.value = Math.floor(numberToConvert * multiplier) / multiplier
}

function pawsParseFloat(textValue)
{

    if (isNaN(parseFloat(textValue)))
        return 0;
    else
        return parseFloat(textValue);
        
}

function adjustIFrameSize (iframeWindow, iFrameId) 
{   
     var iframeElement;
     if (iFrameId != null)
         iframeElement = document.getElementsByName(iFrameId)[0];
     else
         iframeElement = document.getElementsByName(iframeWindow.name)[0];
             
     if (iframeWindow.document.height) {
        iframeElement.style.height = iframeWindow.document.height + 'px';
        iframeElement.style.width = iframeWindow.document.width + 'px';      
     }
      else if (document.all) {
        //var iframeElement = document.all[iframeWindow.name];
        if (iframeWindow.document.compatMode &&
            iframeWindow.document.compatMode != 'BackCompat') 
        {
        
          iframeElement.style.height = 
                    iframeWindow.document.documentElement.scrollHeight + 5 + 'px';
          iframeElement.style.width = 
                    iframeWindow.document.documentElement.scrollWidth + 5 + 'px';
        }
        else {
          iframeElement.style.height = 
                iframeWindow.document.body.scrollHeight + 5 + 'px';
                iframeElement.style.width = 
                iframeWindow.document.body.scrollWidth + 5 + 'px';
        }
      }
       iframeElement.height =  iframeElement.style.height;
       iframeElement.width = iframeElement.style.width;
    // iframeElement.style.visibility = "visible";
       iframeElement.style.display = "none";
}

function showElement(showDiv)
{
    var divPi = document.getElementById  ('div' + showDiv);
    divOuter = divPi.parentElement;
    divOuter.style.display = 'inline';    
    var tdElement = document.getElementById ('td'+ showDiv);   
    var tabSelected = document.getElementById('tableSelectedDiv').firstChild;
    tabSelected.value = showDiv;
    
    tdElement.className = 'ActiveTabItem';
     
    hideAllBut(showDiv);
}

//Function requires "element" object on parent page to define tab names
function hideAllBut(showDiv)
{
    var i;
    for(i=0;i<element.length;i++)
    {
        if(element[i] != showDiv)
        {
            var divPi = document.getElementById('div' + element[i]);

            if (divPi != null) {
            
                divOuter = divPi.parentElement;
                divOuter.style.display = 'none';
                var tdElement = document.getElementById('td' + element[i]);

                tdElement.className = 'InActiveTabItem';
            }
        }
    }            
}

function OpenWin(url)
{
    window.open (url);
}

function showWorkFlow()
{   
    var iframeElement = document.getElementsByName ("frameWorkflow")[0];
    iframeElement.style.top = tblFixedHeading.offsetTop + tdWorkFlow.parentElement.offsetTop + tdWorkFlow.offsetTop + 30;
    iframeElement.style.left= tblFixedHeading.offsetLeft + tdWorkFlow.parentElement.offsetLeft + tdWorkFlow.offsetLeft  + 65;
    iframeElement.style.display = "inline";
    
}

function hideWorkFlow()
{     
     var iframeElement = document.getElementsByName ("frameWorkflow")[0];    
     iframeElement.style.display = "none";
}





function hideIFrame(iFrameId)
{     
     var iframeElement = document.getElementById (iFrameId); 
     
     if(iframeElement!=null)   
        iframeElement.style.display = "none";
}

function getIFrameMessage(iFrameId)
{     
     var iframeElement = document.getElementById (iFrameId); 
     
     return iframeElement;
}

function validateControls()
{
    var i;
    var validators=0;
    
    for(i = 0; i < document.all.length; i++)
    {
        if(document.all(i).pawsvalidator != null)
        {
            
            if(document.all(i).pawsvalidate != null)
            {
                eval(document.all(i).pawsvalidate);           
                
            }
                                     
        }
        
        if(document.all(i).pawslabel != null)
        {
            pawsValidatorArray[validators]=document.all(i).id;
            validators+=1;
        }
    }
}

function positionControls()
{        
    var i;
    keepState = true;
    for(i = 0; i < pawsValidatorArray.length; i++)
    {
        var pawsValidatorControl = document.getElementById(pawsValidatorArray[i]);
        
        if (pawsValidatorControl != null)
            pawsValidatorControl.onclick();
      
    }
    
    keepState = false;          
}

function validateRange(textBoxId, minimumValue, maximumValue, textBoxLabelId, defaultClassName)
{
    var textBox = document.getElementById (textBoxId);
    var number = textBox.value;
    var textBoxLabelElement = document.getElementById (textBoxLabelId);
   
    if (textBoxLabelElement==null || maximumValue == null)
    {
        return;
    }
        
    if(minimumValue == null)
        minimumValue = 0;
     
    if (number < minimumValue || number > maximumValue)
    {
        textBoxLabelElement.valid = false;       
        textBoxLabelElement.className = "LabelError";
        textBoxLabelElement.style.display = "inline";
        //textBox.className = "LabelErrorText";
    }
    else
    {
        textBoxLabelElement.valid = true;
        textBoxLabelElement.className="Label";  
        
        if(textBoxLabelElement.disappear == "true")
            textBoxLabelElement.style.display = "none";      
        //textBox.className = defaultClassName;
    }
    
    
}

function setIframeMessageSrc (iFrameId, textBoxLabelId, showLeft)
{
    var textBoxLabelElement = document.getElementById (textBoxLabelId);
    var iframeElement = document.getElementById (iFrameId); 
    if(iframeElement.src == "")
    {              
        iframeElement.src = textBoxLabelElement.src;     
    }
    else
        showIframe(iFrameId, textBoxLabelId, showLeft);
        

}

function setIframeSrc (iFrameId, textBoxLabelId, showLeft)
{
    var textBoxLabelElement = document.getElementById (textBoxLabelId);
    var iframeElement = document.getElementById (iFrameId); 
    if(iframeElement.src == "")
    {
        iframeElement.src = textBoxLabelElement.src;       
    }
    else
        showIframe(iFrameId, textBoxLabelId, showLeft);
}




function showIframe(iFrameId, textBoxLabelId, showLeft)
{
    var textBoxLabelElement = document.getElementById (textBoxLabelId);
    var iframeElement = document.getElementById (iFrameId);        
    
    if(textBoxLabelElement.valid == true || textBoxLabelElement.valid == "true")
        return;
    
    if (keepState && iframeElement.style.display == "none")
        return;
   
    var iFrameDocument = iframeElement.contentWindow.document;
    var tdException = iFrameDocument.getElementById("tdException");
    var tdMessage = iFrameDocument.getElementById("tdMessage");  
    var tdAction = iFrameDocument.getElementById("tdAction");
    var trException = iFrameDocument.getElementById("trException");
    var trMessage = iFrameDocument.getElementById("trMessage");  
    var trAction = iFrameDocument.getElementById("trAction");
    var guidelineSpan = iFrameDocument.getElementById("GuidelineNumberLabel");
   
    if(textBoxLabelElement.message == null)
    {
        tdException.innerText = textBoxLabelElement.exception;
        tdAction.innerText = textBoxLabelElement.action;
        trMessage.style.display = "none";
        trException.style.display = "inline";
        trAction.style.display = "inline";
    }
    else
    {
        tdMessage.innerText = textBoxLabelElement.message;
        trMessage.style.display = "inline";
        trException.style.display = "none";
        trAction.style.display = "none";
    }
    
    guidelineSpan.innerText = textBoxLabelElement.guidelinenumber;
   
    var posObject = new Object();
    
    getAbsolutePosition (textBoxLabelElement, posObject);
    
    var subtractLeft = 0;
    
    iframeElement.style.top = posObject.top + textBoxLabelElement.scrollHeight;
    
    iframeElement.style.display = "inline";
   
    adjustIFrameSize (iframeElement.contentWindow, iFrameId);
            
    iframeElement.style.display = "inline";
    
    if(showLeft)
        subtractLeft = iframeElement.scrollWidth;
    iframeElement.style.left=  posObject.left + textBoxLabelElement.scrollWidth - subtractLeft;
}

function getAbsolutePosition(element, posObject)
{
    posObject.top=element.offsetTop;
    posObject.left=element.offsetLeft;
    var nextElement = element.parentElement;
    

    while (nextElement!=null)
    {
        if(nextElement.tagName != "DIV" && nextElement.tagName!="FORM")
        {
            if(nextElement.tagName != "TR")
                posObject.top+=nextElement.offsetTop;
                
            posObject.left+=nextElement.offsetLeft;
        }
        nextElement = nextElement.parentElement;
    }
    

}

// Javascript Numeric EditMask

// Written By John McGlothlin - Patoooey@optonline.net

// April 7th, 2004

//

// simple RegEx patterns to make life easy.

var reOneOrMoreDigits = /[\d+]/;

var reNoDigits = /[^\d]/gi;



function doMask(textBox) {



	var keyCode = event.which ? event.which : event.keyCode;



	// enter, backspace, delete and tab keys are allowed thru

	if(keyCode == 13 || keyCode == 8 || keyCode == 9 || keyCode == 46)

		return true;



	// get character from keyCode....dealing with the "Numeric KeyPad" 

	// keyCodes so that it can be used

	var keyCharacter = cleanKeyCode(keyCode);



	// grab the textBox value and the mask

	var val = textBox.value;

	var mask = textBox.mask;



	// simple Regex to check if key is a digit

	if(reOneOrMoreDigits.test(keyCharacter) == false)

		return false;

	

	// get value minus any masking by removing all non-numerics

	val = val.replace(reNoDigits,'');			



	// add current keystroke

	val += keyCharacter;



	// mask it...val holds the existing TextBox.value + the current keystroke

	textBox.value = val.maskValue(mask);

	

	setCaretAtEnd(textBox);



	return false;

}

// puts starting chars in field

function onFocusMask(textBox) {

	var val = textBox.value;

	var mask = textBox.mask;

	if(val.length == 0 || val == null) {

		var i = mask.indexOf('#');

		textBox.value = mask.substring(0,i);

	}

	setCaretAtEnd(textBox);

	// set just in case.

	textBox.maxlength = mask.length;

}

// blank field if no digits entered

function onBlurMask(textBox) {

	var val = textBox.value;

	// if no digits....nada entered.....blank it.

	if(reOneOrMoreDigits.test(val) == false) {

		textBox.value = '';

	}

}

String.prototype.maskValue = function(mask) {

	var retVal = mask;

	var val = this;



	//loop thru mask and replace #'s with current value one at a time

	// better way of doing this ???

	for(var i=0;i<val.length;i++) {

		retVal = retVal.replace(/#/i, val.charAt(i));

	}

	// get rid of rest of #'s

	retVal = retVal.replace(/#/gi, "");

	return retVal;

}

// The Numeric KeyPad returns keyCodes that ain't all that workable.

//

// ie: KeyPad '1' returns keyCode 97 which String.fromCharCode converts to an 'a'.

//

// This cheesy way allows the Numeric KeyPad to be used

function cleanKeyCode(key)

{

	switch(key)

	{

		case 96: return "0"; break;

		case 97: return "1"; break;

		case 98: return "2"; break;

		case 99: return "3"; break;

		case 100: return "4"; break;

		case 101: return "5"; break;

		case 102: return "6"; break;

		case 103: return "7"; break;

		case 104: return "8"; break;

		case 105: return "9"; break;

		default: return String.fromCharCode(key); break;

	}

}

// From:

// http://www.faqts.com/knowledge_base/view.phtml/aid/1159/fid/130

function setCaretAtEnd (field) {

  if (field.createTextRange) {

    var r = field.createTextRange();

    r.moveStart('character', field.value.length);

    r.collapse();

    r.select();

  }

}

function hasSelection(id)
{
    // works for ListBox
    var listBox = document.getElementById(id);   

    // loop through 'ListItems' and return true if checked
    if(listBox.options.length>0)
            return true;
        
    return false;
}

function isListChecked(id) {
    // works for RadioButtonList or CheckBoxList
    var tableBody = document.getElementById(id).childNodes[0];

    // loop through 'ListItems' and return true if checked
    for (var row = 0; row < tableBody.childNodes.length; row++) {
        var currentTd = tableBody.childNodes[row].childNodes[0];
        var listControl = currentTd.childNodes[0];

        if (listControl.checked)
            return true;
    }

    return false;
} 


function isListFirstOnesChecked(id, num)
{
    // works for RadioButtonList or CheckBoxList
    var tableBody = document.getElementById(id).childNodes[0];

    // loop through 'ListItems' and return true if checked
    for (var row=0;row<num; row++)
    {
        var currentTd = tableBody.childNodes[row].childNodes[0];
        var listControl = currentTd.childNodes[0];

        if (!listControl.checked )
            return false;
    }
    
    return true;
} 

function validateMonetaryRange(senderObject, args)
{
    var maximumvalue = parseFloat(senderObject.getAttribute("maximumvalue"));
    var mimimumvalue = parseFloat(senderObject.getAttribute("minimumvalue"));
    
    var controlvalue = args.Value
    controlvalue = controlvalue.replace("$", "");
    controlvalue = controlvalue.replace(",", "");
    controlvalue = parseFloat(controlvalue);   
    
    // verify at least one item is checked
    if(controlvalue >= mimimumvalue && controlvalue <= maximumvalue)
        args.IsValid = true;
    else
        args.IsValid = false;
        
    return;
}   

function validateCheckboxIsChecked(senderObject, args)
{
    alert(args.Value);
    args.IsValid = false;
}

function noDash(e)
{
    var keynum;
    var keychar;
    var numcheck;

    if(window.event) // IE
	    {
	    keynum = e.keyCode;
	    }
    else if(e.which) // Netscape/Firefox/Opera
	    {
	    keynum = e.which;
	    }

    // do not allow dash
    return (keynum != 189);
}

function clearDisableRadioButtonList(name)
{
    var radioButtonList = document.getElementsByName(name);
    for(var i =0; i<=radioButtonList.length-1; i++)
    {
        radioButtonList[i].checked = false;
        radioButtonList[i].disabled = true;
    }
}

function clearDisableCheckBox(id)
{
    var checkBox = document.getElementById(id);
    checkBox.checked = false;
    checkBox.disabled = true;    
}

function clearDisableTextBox(id)
{
    var textBox = document.getElementById(id);
    textBox.value = '';
    textBox.disabled = true;    
}

function enableTextBox(id)
{
    var textBox = document.getElementById(id);   
    textBox.disabled = false;    
}

