﻿/// <reference name="MicrosoftAjax.js" />
/// <reference name="Telerik.Web.UI.Common.Core.js" assembly="Telerik.Web.UI" />

var _isDirty = false;
function setIsDirty() {
  _isDirty = true;
};

function calcPercent() {
  try {
    var ctlLeftPercent = $('[setupcontrol=leftpercent]');
    var ctlNosePercent = $('[setupcontrol=nosepercent]');
    var ctlCrossPercent = $('[setupcontrol=crosspercent]');
    var ctlTotalWeight = $('[setupcontrol=totalweight]');
    var ctlLFWeight = $('[setupcontrol=leftfrontweight]');
    var ctlRFWeight = $('[setupcontrol=rightfrontweight]');
    var ctlLRWeight = $('[setupcontrol=leftrearweight]');
    var ctlRRWeight = $('[setupcontrol=rightrearweight]');
    var totalWeight = parseFloat(ctlTotalWeight.val().toString().replace('%', '').trim());
    var nosePercent = parseFloat(ctlNosePercent.val().toString().replace('%', '').trim());
    var leftPercent = parseFloat(ctlLeftPercent.val().toString().replace('%', '').trim());
    var crossPercent = parseFloat(ctlCrossPercent.val().toString().replace('%', '').trim());
    if (leftPercent > 0 && nosePercent > 0 && crossPercent > 0 && totalWeight > 0) {
      if (nosePercent > 1) nosePercent = nosePercent / 100;
      if (leftPercent > 1) leftPercent = leftPercent / 100;
      if (crossPercent > 1) crossPercent = crossPercent / 100;
      var rightFrontWeight = (totalWeight * (crossPercent - leftPercent + nosePercent)) / 2;
      var leftFrontWeight = totalWeight * nosePercent - rightFrontWeight;
      var leftRearWeight = totalWeight * crossPercent - rightFrontWeight;
      var rightRearWeight = totalWeight - rightFrontWeight - leftFrontWeight - leftRearWeight;
      ctlLFWeight.val(Math.round(leftFrontWeight * 100) / 100);
      ctlLRWeight.val(Math.round(leftRearWeight * 100) / 100); 
      ctlRFWeight.val(Math.round(rightFrontWeight * 100) / 100);
      ctlRRWeight.val(Math.round(rightRearWeight * 100) / 100);
    }
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function calcWeight() {
  try {    
    var ctlLeftPercent = $('[setupcontrol=leftpercent]');
    var ctlNosePercent = $('[setupcontrol=nosepercent]');
    var ctlCrossPercent = $('[setupcontrol=crosspercent]');
    var ctlTotalWeight = $('[setupcontrol=totalweight]');
    var ctlLFWeight = $('[setupcontrol=leftfrontweight]');
    var ctlRFWeight = $('[setupcontrol=rightfrontweight]');
    var ctlLRWeight = $('[setupcontrol=leftrearweight]');
    var ctlRRWeight = $('[setupcontrol=rightrearweight]');
    var leftFrontWeight = parseFloat(ctlLFWeight.val().toString().replace('%', '').trim());
    var leftRearWeight = parseFloat(ctlLRWeight.val().toString().replace('%', '').trim());
    var rightFrontWeight = parseFloat(ctlRFWeight.val().toString().replace('%', '').trim());
    var rightRearWeight = parseFloat(ctlRRWeight.val().toString().replace('%', '').trim());
    var totalWeight = leftFrontWeight + leftRearWeight + rightFrontWeight + rightRearWeight;
    if (totalWeight == 0) {
      ctlLeftPercent.val(0);
      ctlNosePercent.val(0);
      ctlCrossPercent.val(0);
      ctlTotalWeight.val(0);
    }
    else {
      var leftPercent = Math.round((((leftFrontWeight + leftRearWeight) / totalWeight) * 100) * 100) / 100;
      var nosePercent = Math.round((((leftFrontWeight + rightFrontWeight) / totalWeight) * 100) * 100) / 100;
      var crossPercent = Math.round((((rightFrontWeight + leftRearWeight) / totalWeight) * 100) * 100) / 100;
      ctlLeftPercent.val((Math.round(leftPercent * 100) / 100).toString() + " %");
      ctlNosePercent.val((Math.round(nosePercent * 100) / 100).toString() + " %");
      ctlCrossPercent.val((Math.round(crossPercent * 100) / 100).toString() + " %");
      ctlTotalWeight.val(totalWeight);
    }
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function calcStagger() {
  try {    
    var ctlLeftFrontCirc = $('[setupcontrol=leftfrontcirc]');
    var ctlRightFrontCirc = $('[setupcontrol=rightfrontcirc]');
    var ctlLeftRearCirc = $('[setupcontrol=leftrearcirc]');
    var ctlRightRearCirc = $('[setupcontrol=rightrearcirc]');
    var ctlFrontStagger = $('[setupcontrol=frontstagger]');
    var ctlRearStagger = $('[setupcontrol=rearstagger]');
    var leftFrontCirc = parseFloat(ctlLeftFrontCirc.val().toString().replace('%', '').trim());
    var rightFrontCirc = parseFloat(ctlRightFrontCirc.val().toString().replace('%', '').trim());
    var leftRearCirc = parseFloat(ctlLeftRearCirc.val().toString().replace('%', '').trim());
    var rightRearCirc = parseFloat(ctlRightRearCirc.val().toString().replace('%', '').trim());
    var frontStagger = 0.00;
    var rearStagger = 0.00;
    if (leftFrontCirc > 0 && rightFrontCirc > 0) {
      frontStagger = Math.round((rightFrontCirc - leftFrontCirc) * 100) / 100;
      if (frontStagger < 0)
        frontStagger = frontStagger * -1;
    }
    if (leftRearCirc > 0 && rightRearCirc > 0) {
      rearStagger = Math.round((rightRearCirc - leftRearCirc) * 100) / 100;
      if (rearStagger < 0)
        rearStagger = rearStagger * -1;
    }
    ctlFrontStagger.text(frontStagger);
    ctlRearStagger.text(rearStagger);
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function DNNPopupWindowShow(beforeShow, windowid) {
  try {    
    var oMgr = GetRadWindowManager();
    var oWin = oMgr.getWindowByName("_dnnPopupWindow");
    if (oWin != null) {
      beforeShow(oWin);
      oWin.show();
    }
    else {
      radalert('Popup window not available.');
    }
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function GetRadWindow() {
  try {    
    var oWindow = null;
    if (window.radWindow)
      oWindow = window.radWindow;
    else if (window.frameElement.radWindow)
      oWindow = window.frameElement.radWindow;
    return oWindow;
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function DisplaySelectedRow(radGrid) {
  try {
    // get the selected row
    var row = radGrid.get_masterTableView().get_selectedItems()[0];
    if (row) {
      setTimeout(function () {
        var rowElement = row.get_element();
        //get the main table scrollArea HTML element
        var scrollArea = radGrid.GridDataDiv;

        //check if the selected row is below the viewable grid area
        if ((rowElement.offsetTop - scrollArea.scrollTop) + rowElement.offsetHeight + 20 > scrollArea.offsetHeight) {
          //scroll down to selected row
          scrollArea.scrollTop = scrollArea.scrollTop +
                               (rowElement.offsetTop - scrollArea.scrollTop) +
                               (rowElement.offsetHeight - scrollArea.offsetHeight) +
                               rowElement.offsetHeight;
        }
        //chck if the selected row is above the viewable grid area
        else if ((rowElement.offsetTop - scrollArea.scrollTop) < 0) {
          //scroll the selected row to the top
          scrollArea.scrollTop = rowElement.offsetTop;
        }
      }, 200);
    }
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function GetSecondsElapsed(date1, date2) {
  try {
    dt1 = new Date(date1);
    dt2 = new Date(date2);
    var diff;
    if (dt1 > dt2) {
      diff = new Date(dt1 - dt2);
    } else {
      diff = new Date(dt2 - dt1);
    }
    minutes = diff.getMinutes();
    seconds = diff.getSeconds();
    seconds = seconds + (minutes * 60);
    return seconds;
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function CenterPopup(sender, eventArgs) {
  try {
    var popUp = eventArgs.get_popUp();
    var scrollTop = getScrollHeight();  //(typeof window.innerHeight != 'undefined' ? 0 : document.documentElement.scrollTop);
    var popUpWidth = popUp.style.width.substr(0, popUp.style.width.indexOf("px"));
    var popUpHeight = popUp.style.height.substr(0, popUp.style.height.indexOf("px"));
    var windowHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight - scrollTop);
    var windowWidth = document.body.offsetWidth;
    if (popUpHeight == "") popUpHeight = 300; // if the height isn't set on the popup, default to 300px  
    //popUp.style.position = "fixed";
    popUp.style.left = (Math.floor((windowWidth - popUpWidth) / 2)).toString() + "px";
    var popUpTop = (Math.floor((windowHeight - popUpHeight) / 2) + scrollTop);
    if (popUpTop < 10)
      popUpTop = 10;
    if ($telerik.isIE)
      popUp.style.top = Math.floor(scrollTop + 20).toString() + "px";
    else
      popUp.style.top = "20px";
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function getScrollHeight() {
  try {
    var h = window.pageYOffset ||
           document.body.scrollTop ||
           document.documentElement.scrollTop;
    return h ? h : 0;
  }
  catch (ex) {
    DsDnnHandleException(ex);
  }
};

function DsDnnHandleException(ex) {
  try {
    var traceDescription;
    traceDescription = "Exception Description: " + ex.description + "<br />";
    traceDescription += "Document Dir: " + document.dir + "<br />";
    traceDescription += "Document URL: " + document.URL + "<br />";
    traceDescription += "Document Referrer: " + document.referrer + "<br />";
    traceDescription += "========== Stack Trace ============<br />";
    traceDescription += DsGetCallStack();
    radalert(traceDescription, 400, 200, "Script Exception");
  }
  catch (ex) {
    radalert('DsDnnHandleException - ' + ex.Description);
  }
};

function DsGetCallStack() {
  try {
    var f = DsGetCallStack;
    var result = "Call stack:<br />";
    while ((f = f.caller) !== null) {
      var sFunctionName = f.toString().match(/^function (\w+)\(/)
      sFunctionName = (sFunctionName) ? sFunctionName[1] : 'anonymous function';
      result += sFunctionName;
      result += DsGetArguments(f.toString(), f.arguments);
      result += "<br />";
    }
    return result;
  }
  catch (ex) {
    return "DsGetCallStack Error: " + ex.Description;
  }
};

function DsGetArguments(sFunction, a) {
  try {
    var i = sFunction.indexOf(' ');
    var ii = sFunction.indexOf('(');
    var iii = sFunction.indexOf(')');
    var aArgs = sFunction.substr(ii + 1, iii - ii - 1).split(',')
    var sArgs = '';
    for (var x = 0; x < a.length; x++) {
      var q = ('string' == typeof a[x]) ? '"' : '';
      sArgs += ((x > 0) ? ', ' : '') + (typeof a[x]) + ' ' + aArgs[x] + ':' + q + a[x] + q + '';
    }
    return '(' + sArgs + ')';
  }
  catch (ex) {
    return "DsGetArguments Error: " + ex.Description;
  }
};

//function centerElementOnScreen(element) {
//  try {
//    var scrollTop = document.body.scrollTop;
//    var scrollLeft = document.body.scrollLeft;
//    var viewPortHeight = document.body.clientHeight;
//    var viewPortWidth = document.body.clientWidth;
//    if (document.compatMode == "CSS1Compat") {
//      viewPortHeight = document.documentElement.clientHeight;
//      viewPortWidth = document.documentElement.clientWidth;
//      if (!$telerik.isSafari) {
//        scrollTop = document.documentElement.scrollTop;
//        scrollLeft = document.documentElement.scrollLeft;
//      }
//    }
//    var topOffset = Math.ceil(viewPortHeight / 2 - element.offsetHeight / 2);
//    var leftOffset = Math.ceil(viewPortWidth / 2 - element.offsetWidth / 2);
//    var top = scrollTop + topOffset - 40;
//    var left = scrollLeft + leftOffset - 70;
//    element.style.position = "absolute";
//    element.style.top = top + "px";
//    element.style.left = left + "px";
//  }
//  catch (ex) {
//    DsDnnHandleException(ex);
//  }
//};

//function DsCenterElement(element) {
//  try {
//    var scrollTop = document.body.scrollTop;
//    var scrollLeft = document.body.scrollLeft;
//    var viewPortHeight = document.body.clientHeight;
//    var viewPortWidth = document.body.clientWidth;
//    if (document.compatMode == "CSS1Compat") {
//      viewPortHeight = document.documentElement.clientHeight;
//      viewPortWidth = document.documentElement.clientWidth;
//      scrollTop = document.documentElement.scrollTop;
//      scrollLeft = document.documentElement.scrollLeft;
//    }
//    var topOffset = Math.ceil(viewPortHeight / 2 - element.offsetHeight / 2);
//    var leftOffset = Math.ceil(viewPortWidth / 2 - element.offsetWidth / 2);
//    var top = scrollTop + topOffset - 40;
//    var left = scrollLeft + leftOffset - 70;
//    element.style.position = "absolute";
//    element.style.top = top + "px";
//    element.style.left = left + "px";
//    element.style.zIndex = "8500";
//  }
//  catch (ex) {
//    DsDnnHandleException(ex);
//  }
//};
