﻿// JScript File
String.prototype.reverse = function(){
    var splitext = new Array(this.length);
    splitext = this.split("");
    return splitext.reverse().join("");    
}

function cleanNumberHelper(number)
{    
    var num;
    
    number.Value = number.Value.toString().replace(number.Symbol, '');
    
    if(number.Value.substr(0,1) == "-")
        number.IsLessThanZero = true;
    else
        number.IsLessThanZero = false;
    
    switch(number.Deliminator)
    {
        case '-': num = number.Value.toString().replace(/[^0-9a-zA-Z\-]/g,''); break;
        case ',': num = number.Value.toString().replace(/[^0-9a-zA-Z\,]/g,''); break;
        case '/': num = number.Value.toString().replace(/[^0-9a-zA-Z\/]/g,''); break;
        default: num = number.Value.toString().replace(/[^0-9a-zA-Z\.]/g,''); break;
    }
    
    // replace the deliminator
    num = num.replace(number.Deliminator, '.');    
    // now check to see if its still a number
    if(isNaN(num) || num.length == 0)
        num = '0';    
    // round the number properly
    
//    if(pop)
//    {
//        alert(num);
//        pop = false;
//    }
    
    num = ( Math.round( parseFloat(num) * 100 ) / 100 ) + '';
        
    if(!number.IsLessThanZero)
        number.NonFormattedNumber = num;
    else
        number.NonFormattedNumber = 0 - num;
          
    //put back the delim
    num = num.replace('.', number.Deliminator);
    
    return num;
}

function cleanNumber(value, format, symbol, isSymbolAtFront) 
{
    // remove all characters except for numbers  
         
    var number = _emptyObj;
    
    var num;
    var sign = '';
    var pennies = '00';
    var pounds = '0';
    var delim = '';    
    
    number.Format = format;
    number.Symbol = symbol;
    number.SymbolAtFront = isSymbolAtFront;
    number.Value = value;
    
    switch(number.Format)
    {
        case 1:
            number.Seperator = ',';
            number.Deliminator = '.';
            break;
        case 4:
            number.Seperator = ' ';
            number.Deliminator = '.';
            break;
        case 6:
            number.Seperator = ',';
            number.Deliminator = '.';
            break;
        case 8:
            number.Seperator = '\\';
            number.Deliminator = '.';
            break;
        case 9:
            number.Seperator = ',';
            number.Deliminator = '.';
            break;
        case 2:   
            number.Seperator = ' ';
            number.Deliminator = ',';
            break;        
        case 3:
            // these currency types have a comma before the pennies
            number.Seperator = '.';
            number.Deliminator = ',';
            break;
        case 5:
            // this currency type has a / before the pennies
            number.Seperator = ',';
            number.Deliminator = '/';
            break;
        case 7:
            // this currency type has a - before the pennies
            number.Seperator = ' ';
            number.Deliminator = '-';
            break;        
    }
            
    number.CleanNumber = cleanNumberHelper(number);    
    
    
                        
    number.Pennies = findPennies(number.Deliminator, number.CleanNumber);
    number.Pounds = placeSeperator(number.Seperator, findPounds(number.Deliminator, number.CleanNumber));    
    
    
    
    return number;       
}

function setDeliminatorBack(value, format)
{
    var del = '.';
    switch(format)
    {
        case 2:   
            del = ',';
            break;        
        case 3:
            // these currency types have a comma before the pennies
            del = ',';
            break;
        case 5:
            // this currency type has a / before the pennies
            del = '/';
            break;
        case 7:
            // this currency type has a - before the pennies
            del = '-';
            break;        
    }
    
    return value.toString().replace(".", del);        
}

function getNonFormattedDecimal(number)
{    
    return number.NonFormattedNumber;
}

function getFormattedCurrency(cur)
{    
    if(cur.SymbolAtFront)
        cur.CleanNumber = cur.Symbol + cur.Pounds + cur.Deliminator + cur.Pennies;
    else    
        cur.CleanNumber = cur.Pounds + cur.Deliminator + cur.Pennies + cur.Symbol;
                
    if(!cur.IsLessThanZero)
        return cur.CleanNumber;
    else
        return "-" + cur.CleanNumber;
}

function getFormattedDecimal(dec)
{
    if(!dec.IsLessThanZero)
        return dec.Pounds + dec.Deliminator + dec.Pennies;
    else
        return "-" + dec.Pounds + dec.Deliminator + dec.Pennies;
}

function placeSeperator(sep, pounds)
{
    var output = "";
    pounds = pounds.reverse();
    while(pounds.length > 3)
    {
        output = output + pounds.substr(0,3) + sep;
        pounds = pounds.substr(3, pounds.length - 3);
    }
    if(pounds.length > 0)
        output = output + pounds;
         
    output = output.reverse();
    return output;
}

function findPennies(deliminiator, num)
{
    var result = '00';            
    
    
    
    var deliminiatorPos = num.lastIndexOf(deliminiator);        
    if(deliminiatorPos > 0) result = num.substr(deliminiatorPos + 1, 2);
    if(result.length == 1) result = result + '0';
    return result;
}

function findPounds(deliminiator, num)
{
    var result = '0';
    var deliminiatorPos = num.lastIndexOf(deliminiator);        
    if(deliminiatorPos > 0) result = num.substr(0, deliminiatorPos); 
    else result = num;
    
    return result;
}

function clearCalendar(textbox, hiddenfield)
{                
    document.getElementById(textbox).value = "";        
    document.getElementById(hiddenfield).value = "";    
}

function QuickFilter(url, ddlAlpha)
{                        
    var alpha = document.getElementById(ddlAlpha);
    
    if(ddlAlpha != null)
    {
        if(alpha.selectedIndex > 0)
            url = url + "&c=" + alpha.options[alpha.selectedIndex].value;
    }
        
    
    location.href = url;
}

function highlightRow(obj)
{
    if(obj.className.search("highlight") == -1)
        obj.className = obj.className + " highlight";           
}

function lowlightRow(obj)
{    
    obj.className = obj.className.replace(" highlight", "");
}

function IsMootoolsCompatible()
{
    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);
    
    var browser=navigator.appName;
    var b_version=navigator.appVersion;
    var version=parseFloat(b_version); 
    
    if (((version > 6) && (document.body.filters)) || browser == "Netscape" || browser == "Opera")
        return true;
    else    
        return false;
}


function ToggleIt(obj)
{
    if(obj.style.display == "none" || obj.style.display == "")
    {
        obj.style.display = "block";
        $('showSearch').style.display = "none";
    }
    else
    {
        obj.style.display = "none";
        $('showSearch').style.display = "block";   
    }
}

function maxValue(obj, max)
{
    var maxValue = parseFloat( getNonFormattedDecimal( cleanNumber( obj.value, _format, _symbol, _isSymbolAtFront ) ) );
        
    if(maxValue < parseFloat( max ))
        obj.value = getFormattedDecimal( cleanNumber( maxValue, _format, _symbol, _isSymbolAtFront ) );
    else
        obj.value = getFormattedDecimal( cleanNumber( max, _format, _symbol, _isSymbolAtFront ) );
}

function minValue(obj, max)
{
    var maxValue = parseFloat( getNonFormattedDecimal( cleanNumber( obj.value, _format, _symbol, _isSymbolAtFront ) ) );
        
    if(maxValue > parseFloat( max ))
        obj.value = getFormattedDecimal( cleanNumber( maxValue, _format, _symbol, _isSymbolAtFront ) );
    else
        obj.value = getFormattedDecimal( cleanNumber( max, _format, _symbol, _isSymbolAtFront ) );
}
