﻿function numbersOnly() {
    if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode == 46)) {
        return true;
    }
    else {
        return false;
    }
}
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}
function calcPayment() {
    var loanAmount = document.getElementById("txtAmount").value;
    var interestRate = document.getElementById("txtRate").value;
    var loanMonths = document.getElementById("txtMonths").value;
    var loanPayment = document.getElementById("txtPayment");
    var principle = 0;
    var payment = 0;
    if ((loanAmount == null || loanAmount.length == 0 || loanAmount == 0) ||
     (loanMonths == null || loanMonths.length == 0 || loanMonths == 0)
||
     (interestRate == null || interestRate.length == 0 || interestRate == 0)) {
        loanPayment.value = "Fix Data";
    }
    else {
        principle = loanAmount.replace(/\$|\,/g, '');
        interestRate = interestRate / 1200;
        payment = (principle * interestRate / (1 - (Math.pow(1 / (1 + interestRate), loanMonths))));
        if (payment.toFixed) {
            loanPayment.value = formatCurrency(payment.toFixed(2));
        } else {
            loanPayment.value = payment;
        }
    }

    // payment = principle * monthly interest/(1 - (1/(1+MonthlyInterest)*Months))
    return false;
}

function calcClear() {
    var loanAmount = document.getElementById("txtAmount");
    var interestRate = document.getElementById("txtRate");
    var loanMonths = document.getElementById("txtMonths");
    var loanPayment = document.getElementById("txtPayment");
    loanAmount.value = "$ 0";
    interestRate.value = "0.0";
    loanMonths.value = "0";
    loanPayment.value = "$ 0";
    return false;
}

function picChange(smallOne) {
    //var specsDiv = document.getElementById("divSpecs");
    //specsDiv.style.display = "none";
    if (divSpecVisible == true) {
        infoWidth = 500;
        infoLeft = 200;
        slideRight();
        divSpecVisible = false;
    }
    var smallList = document.getElementById("innerDiv").getElementsByTagName("img");
    for (i = 0; i < smallList.length; i++) {
        smallList[i].className = "smallUnselected";
    }
    smallOne.className = "smallSelected";
    var bigOne = document.getElementById("bigOne");
    var newSrc = smallOne.src.replace('/Small/', '/Large/');
    crossfade(bigOne, newSrc, 1);
}

var divSpecVisible = false;
var infoWidth = 0;
var infoLeft = 0;
var slider = "Features";
var openSlide = "None";

function divSlide() {
    var bigOne = document.getElementById("bigOne");
    if (((divSpecVisible == true) && ((infoWidth > 0) && (infoWidth < 520))) || ((divSpecVisible == true) && (openSlide != slider))) {
        // slide in progress
        // hide divs and set flag to false
        switch (openSlide) {
            case 'Features':
                var infoDiv = document.getElementById("divFeatures");
                var infoDivBack = document.getElementById("divFeaturesBack");
                var infoDivText = document.getElementById("divFeaturesText");
                break;
            case 'Specs':
                var infoDiv = document.getElementById("divSpecs");
                var infoDivBack = document.getElementById("divSpecsBack");
                var infoDivText = document.getElementById("divSpecsText");
                break;
        }
        infoDiv.style.display = "none";
        infoDivBack.style.display = "none";
        infoDivText.style.display = "none";
        bigOne.className = "bigOneNormal";
        divSpecVisible = false;
    }
    switch (slider) {
        case 'Features':
            var infoDiv = document.getElementById("divFeatures");
            var infoDivBack = document.getElementById("divFeaturesBack");
            var infoDivText = document.getElementById("divFeaturesText");
            break;
        case 'Specs':
            var infoDiv = document.getElementById("divSpecs");
            var infoDivBack = document.getElementById("divSpecsBack");
            var infoDivText = document.getElementById("divSpecsText");
            break;
    }
    if (divSpecVisible == false) {
        divSpecVisible = true;
        bigOne.className = "bigOneFade";
        infoDiv.style.display = "block";
        infoDivBack.style.display = "block";
        infoDivText.style.display = "block";
        infoWidth = 0;
        infoLeft = 720;
        slideLeft();
    } else {
        infoWidth = 520;
        infoLeft = 200;
        slideRight();
        bigOne.className = "bigOneNormal";
    }
}

function slideLeft() {
    openSlide = slider;
    if (infoWidth < 520) {
        switch (slider) {
            case 'Features':
                var infoDiv = document.getElementById("divFeatures");
                var infoDivBack = document.getElementById("divFeaturesBack");
                var infoDivText = document.getElementById("divFeaturesText");
                break;
            case 'Specs':
                var infoDiv = document.getElementById("divSpecs");
                var infoDivBack = document.getElementById("divSpecsBack");
                var infoDivText = document.getElementById("divSpecsText");
                break;
        }
        infoLeft -= 10;
        infoWidth += 10;
        infoDiv.style.left = infoLeft + "px";
        infoDiv.style.width = infoWidth + "px";
        infoDivBack.style.width = infoWidth + "px";
        infoDivText.style.width = infoWidth + "px";
        window.setTimeout('slideLeft()', 1);
    } else {
        switch (slider) {
            case 'Features':
                var infoDivBack = document.getElementById("divFeaturesBack");
                var infoDivText = document.getElementById("divFeaturesText");
                break;
            case 'Specs':
                var infoDivBack = document.getElementById("divSpecsBack");
                var infoDivText = document.getElementById("divSpecsText");
                break;
        }
        var newHeight = infoDivText.offsetHeight + 2
        infoDivBack.style.height = newHeight + "px";
    }
}

function slideRight() {
    if (infoWidth > 0) {
        switch (slider) {
            case 'Features':
                var infoDiv = document.getElementById("divFeatures");
                var infoDivBack = document.getElementById("divFeaturesBack");
                var infoDivText = document.getElementById("divFeaturesText");
                break;
            case 'Specs':
                var infoDiv = document.getElementById("divSpecs");
                var infoDivBack = document.getElementById("divSpecsBack");
                var infoDivText = document.getElementById("divSpecsText");
                break;
        }
        infoLeft += 10;
        infoWidth -= 10;
        infoDiv.style.width = infoWidth + "px";
        infoDiv.style.left = infoLeft + "px";
        infoDivBack.style.width = infoWidth + "px";
        infoDivText.style.width = infoWidth + "px";
        window.setTimeout('slideRight()', 1);
    } else {
        var bigOne = document.getElementById("bigOne");
        bigOne.className = "bigOneNormal";
        switch (slider) {
            case 'Features':
                var infoDiv = document.getElementById("divFeatures");
                var infoDivBack = document.getElementById("divFeaturesBack");
                var infoDivText = document.getElementById("divFeaturesText");
                break;
            case 'Specs':
                var infoDiv = document.getElementById("divSpecs");
                var infoDivBack = document.getElementById("divSpecsBack");
                var infoDivText = document.getElementById("divSpecsText");
                break;
        }
        infoDiv.style.display = "none";
        infoDivBack.style.display = "none";
        infoDivText.style.display = "none";
        openSlide = "None";
        divSpecVisible = false;
    }
}
var divCalcVisible = false;
var calcTop = 0;
var calcClip = 0;

function calcSlide() {
    if ((divCalcVisible == true) && ((calcTop > 120) && (calcTop < 315))) {
        // slide in progress - Ignore click
        return;
    }
    var infoDiv = document.getElementById("divCalcContainer");
    var infoDivBack = document.getElementById("divCalcBack");
    var infoDivText = document.getElementById("divCalcContent");
    if (divCalcVisible == false) {
        divCalcVisible = true;
        infoDiv.style.display = "block";
        infoDivBack.style.display = "block";
        infoDivText.style.display = "block";
        infoDiv.style.top = "120px";
        infoDiv.style.clip = "rect(170px auto auto auto)";
        calcTop = 169;
        calcClip = 170;
        slideDown();
    } else {
        calcTop = 359;
        calcClip = 0;
        slideUp();
    }
}

function slideDown() {
    var infoDiv = document.getElementById("divCalcContainer");
    calcTop += 3;
    if (calcTop < 359) {
        infoDiv.style.top = calcTop + "px";
        if (calcTop < 359) {
            calcClip -= 3;
            // clip sequence: top, right, bottom, left
            infoDiv.style.clip = "rect(" + calcClip + "px auto auto auto)";
        }
        window.setTimeout('slideDown()', 1);
    }
}

function slideUp() {
    var infoDiv = document.getElementById("divCalcContainer");
    calcTop -= 3;
    if (calcTop > 171) {
        infoDiv.style.top = calcTop + "px";
        if (calcTop < 338) {
            calcClip += 3;
            // clip sequence: top, right, bottom, left
            infoDiv.style.clip = "rect(" + calcClip + "px auto auto auto)";
        }
        window.setTimeout('slideUp()', 1);
    } else {
        var infoDivBack = document.getElementById("divCalcBack");
        var infoDivText = document.getElementById("divCalcContent");
        infoDiv.style.display = "none";
        infoDivBack.style.display = "none";
        infoDivText.style.display = "none";
        divCalcVisible = false;
    }
}

// a global month names array
var gsMonthNames = new Array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
);

// a global day names array
var gsDayNames = new Array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);

function setDateTime() {
    var lblDate = document.getElementById(docDate);
    lblDate.innerHTML = (new Date()).format('dddd, mmmm dd, yyyy - hh:nn:ss a/p');
}

String.prototype.zf = function(l) { return '0'.string(l - this.length) + this; }
String.prototype.string = function(l) { var s = '', i = 0; while (i++ < l) { s += this; } return s; }
Number.prototype.zf = function(l) { return this.toString().zf(l); }

// the date format prototype
Date.prototype.format = function(f) {
    if (!this.valueOf())
        return ' ';

    var d = this;

    return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
        function($1) {
            switch ($1.toLowerCase()) {
                case 'yyyy': return d.getFullYear();
                case 'mmmm': return gsMonthNames[d.getMonth()];
                case 'mmm': return gsMonthNames[d.getMonth()].substr(0, 3);
                case 'mm': return (d.getMonth() + 1).zf(2);
                case 'dddd': return gsDayNames[d.getDay()];
                case 'ddd': return gsDayNames[d.getDay()].substr(0, 3);
                    //case 'dd': return d.getDate().zf(2);
                case 'dd': return d.getDate();
                    //case 'hh': return ((h = d.getHours() % 12) ? h : 12).zf(2);
                case 'hh': return ((h = d.getHours() % 12) ? h : 12);
                case 'nn': return d.getMinutes().zf(2);
                case 'ss': return d.getSeconds().zf(2);
                case 'a/p': return d.getHours() < 12 ? 'AM' : 'PM';
            }
        }
    );
}

function goBack() {
    history.back();
    return false;
}

function popMPE(mpeBehaviorID) {
    var mpe = $find(mpeBehaviorID);
    mpe.show();
    return false;
}
function popMenu(rcCtl) {
    var docTrigger = document.getElementById(docTriggerId);
    var docPanel = document.getElementById(docPanelId);
    var docDataAction = document.getElementById(docDataActionId);
    var docOperators = document.getElementById(docOperatorsId);
    var docActionParam = document.getElementById(docActionParamId);
    var docPopUpTitle = document.getElementById(docPopUpTitleId);
    var isIE = getInternetExplorerVersion();

    // rcCtl is the control that was right-clicked (event.srcElement)
    // Highlight control user right-clicked
    rcCtl.className = "rightClickControl";
    // Find the last occurrence of dollar sign.  Control (same as field) name follows
    // srcElement.name returns "name" with $, not "ID" with _
    // var n = rcCtl.name.lastIndexOf("$") + 1;
    var n = rcCtl.id.lastIndexOf("_") + 1;
    // Write the field name to the hidden field for later use
    // docTrigger.value = rcCtl.name.slice(n);
    docTrigger.value = rcCtl.id.slice(n);
    // Get the label text for the control to use with the pop-up title
    // var ctlID = rcCtl.name;
    var ctlID = rcCtl.id;
    // ctlID = ctlID.replace(/\$/g,"_"); -- Use rcCtl.id
    // Add extracted field name to pop-up title
    // Are we running on the ListView (lvItemTag) from ItemLabels.aspx
    var ctlSrc = rcCtl.id.indexOf('lvItemTag');   // ctlSrc will be -1 if string not found
    // Are we running on the ListView (lvBoxTag) from BoxLabels.aspx
    if (ctlSrc < 0) {
        ctlSrc = rcCtl.id.indexOf('lvBoxTag');
    }
    // Are we running on the ListView (lvBoxEdit) from BoxIndex.aspx InsertItemTemplate or EditItemTemplate
    if (ctlSrc < 0) {
        ctlSrc = rcCtl.id.indexOf('lvBoxEdit');
    }
    // Are we running on the ListView (lvBoxContents) from BoxIndex.aspx ItemTemplate
    if (ctlSrc < 0) {
        ctlSrc = rcCtl.id.indexOf('lvBoxContents');
    }
    if (ctlSrc < 0) {
        var lblText = getLabelForId(rcCtl.id);
        //docPopUpTitle.innerHTML = 'Active field: ' + lblText.innerHTML
        docPopUpTitle.value = 'Active field: ' + lblText.innerHTML
    }
    else {
        var lblText = docTrigger.value
        //docPopUpTitle.innerHTML = 'Active field: ' + lblText
        docPopUpTitle.value = 'Active field: ' + lblText
    }
    var activeField = lblText.innerHTML
    if (activeField == 'Short Matter Name(s) filter ♦') {
        activeField = 'Short Matter Name';
    }
    else if (activeField == 'Long Matter Name(s) filter ♦') {
        activeField = 'Long Matter Name';
    }
    // Get location and dimensions of right-clicked (rc) control
    // Use rcCtl.offset instead of rcCtl.style as it will determine properties that are not explicitly defined (textbox height)
    // Mouse X,Y are used as control-based offsetTop is not accurate for repeater-type controls (ListView, etc)
    var mousePos = findPos(rcCtl);
    var mousePosX = mousePos[0];
    var mousePosY = mousePos[1];
    var rcTop = rcCtl.offsetTop;
    var rcLeft = rcCtl.offsetLeft;
    var rcHeight = rcCtl.offsetHeight;
    var rcWidth = rcCtl.offsetWidth;
    // Get offsetLeft and offsetWidth of div_Content so that pop-up can be positioned to the proper side of rcCtl to be fully visible
    var divContent = document.getElementById("Content");
    var divRight = divContent.offsetWidth;
    var divBottom = divContent.offsetTop + divContent.offsetHeight
    // Instantiate pop-up.  Set top and left, and make visible
    // docPanel properties (ie clientHeight) cannot be queried unless it is visible
    docPanel.style.display = "inline";
    //alert('mousePosY: ' + mousePosY + ' -|- ' + 'docPanel.clientHeight: ' + docPanel.clientHeight + ' -|- ' + 'divBottom: ' + divBottom);
    var newTop = '0px';
    if ((mousePosY + docPanel.clientHeight) > divBottom) {
        newTop = divBottom - docPanel.clientHeight - divContent.offsetTop - 10;
        newTop += 'px';
        //docPanel.style.top = divBottom - docPanel.clientHeight - divContent.offsetTop - 10;
    } else {
        //docPanel.style.top = rcTop - rcHeight;
        newTop = mousePosY - divContent.offsetTop - 30;
        newTop += 'px';
        //docPanel.style.top = mousePosY - divContent.offsetTop - 30;
    }
    //var pnlW = Number(docPanel.style.width.replace(/px/,""));
    var pnlW = docPanel.clientWidth
    var newLeft = '300px';
    /*if ((mousePosX + rcWidth + pnlW + 10) < (divRight + divContent.offsetLeft)) {
        newLeft = mousePosX + rcWidth - divContent.offsetLeft;
        newLeft += 'px';
        //docPanel.style.left = mousePosX + rcWidth - divContent.offsetLeft;
    } else {
        newLeft = mousePosX - pnlW - 35 - divContent.offsetLeft;
        newLeft += 'px';
        //docPanel.style.left = mousePosX - pnlW - 35 - divContent.offsetLeft;
    }*/
    docPanel.style.top = newTop;
    docPanel.style.left = newLeft;
    //alert('Top: ' + newTop + ' -|- ' + 'Left: ' + newLeft);

    //Save menuPanel position
    var elem1 = $get(docMenuPanelPosId);
    elem1.value = newLeft + ';' + newTop;

    // Place selected text into parameter text box
    lblText = docTrigger.value;
    ctlSrc = lblText.indexOf("Date");
    // LIKE and NOT LIKE are not valid for dates
    if (ctlSrc != -1) {
        docOperators.remove(0);
        docOperators.remove(0);
    }
    ctlSrc = lblText.indexOf("Comments");
    if (ctlSrc != -1) {
        var pickBtn = $get(docBtnPick);
        pickBtn.style.visibility = "hidden";
    }
    var selectedText = document.selection;
    if (selectedText.type == 'Text') {
        var newRange = selectedText.createRange();
        docActionParam.focus();
        if (isDate(newRange.text)) {
            docActionParam.value = newRange.text;
        } else {
            docActionParam.value = '%' + newRange.text + '%'
        }
    } else {
        // var dataAction = document.getElementById('<%= cmbDataAction.ClientID %>');
        docDataAction.focus();
    }
    return false;
}

function getLabelForId(id) {
    var label, labels = document.getElementsByTagName('label');
    for (var i = 0; (label = labels[i]); i++) {
        if (label.htmlFor == id) return label;
    }
    return false;
}

function setBodyHeightToContentHeight() {
    var bodyHgt = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight) + "px";
    var oldBodyHgt = document.body.style.height;
    document.body.style.height = bodyHgt;
}

function savePanelPosition() {
    /*
    Some kind of offset gets applied/included when getting coordinates based on BehaviorID
    Use panel.style.left and panel.style.top instead
    */
    // Get a reference to the Behavior
    //var elem = $find('menuPanelDrag').get_element();
    // Use the $common object defined on the _CommonToolkitScripts class to get the DragPanel origin
    //var loc = $common.getLocation(elem);
    if (whichPanel == 'menu') {
        var panelPos = $get(docPanelId);
        // store the value in the hidden field
        var elem1 = $get(docMenuPanelPosId);
    } else {
        var panelPos = $get(docPickPanel);
        // store the value in the hidden field
        var elem1 = $get(docPickPanelPosId);
    }
    //elem1.value = loc.x + ';' + loc.y;
    elem1.value = panelPos.style.left + ';' + panelPos.style.top
}

function loadPanelPosition() {
    // call the savePanelPosition when the panel is initially displayed and register it for panel move
    if ($get(docPanelId) != null) {
        $find('menuPanelDrag').add_move(savePanelPosition);
        var elem = $get(docMenuPanelPosId);
        if (elem.value != "0") {
            var pos = new Array();
            pos = elem.value.split(';');
            // set the position of the panel manually with the retrieve value
            /*
            Some kind of offset gets applied/included when getting coordinates based on BehaviorID
            Use panel.style.left and panel.style.top instead
            */
            //$find('<%=DragPanelExtender1.BehaviorID%>').set_location(new Sys.UI.Point(parseInt(pos[0]), parseInt(pos[1])));
            var panelID = $get(docPanelId);
            panelID.style.left = pos[0];
            panelID.style.top = pos[1];
        }
    }
}
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}
function checkVersion() {
    var msg = "You're not using Internet Explorer.";
    var ver = getInternetExplorerVersion();

    if (ver > -1) {
        if (ver >= 8.0)
            msg = "You're using a recent copy of Internet Explorer."
        else
            msg = "You should upgrade your copy of Internet Explorer.";
    }
    alert(msg);
}
function isDate(value) {
    return (!isNaN(new Date(value).getYear()));
}

// Find the coordinates of the mouse at the time a button was clicked
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft, curtop];
}

function hidePopUp() {
    var panelPos = document.getElementById(docMenuPanelPosId);
    panelPos.value = '0';
    var docPanel = document.getElementById(docPanelId);
    docPanel.style.display = "none";
    return false;
}

