var Language = null;



function element(id)
{
  if (document.getElementById != null)
    return document.getElementById(id) ;

  if (document.all != null)  // for old IE
    return document.all[id] ;

  if (document.layers != null)  // for old NS
    return document.layers[id] ;

  return null ;  // give up
}

function setActiveStyleSheet(title) 
{ 
    var i, a;
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
    {
        if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) 
        {
            a.disabled = true;
            if (a.getAttribute("title") == title)    
                a.disabled = false;
        }
    } 
    return;
}

function Sender(e)
{
  return (e != null ? e.target : event.srcElement) ;
}


function IsApp2(evt)
{
  return (Sender(evt).id.substr(0, 4) == "App2") ;
}


function AppElement(evt, elm)
{
  var
    appCol = "" ;

  if (IsApp2(evt))
    appCol = "App2" ;
  
  return element(appCol + elm) ;
}


function FormatNumber(num, decPrec, money, pct, noDec)
{
  if (decPrec < 1)
    noDec = true ;

  var
    fx = Math.pow(10, decPrec),
    gx = fx / 10,
    sign = (num == (num = Math.abs(num))),
    num = Math.floor(num * fx + 0.50000000001),
    cents = num % fx,
    num = Math.floor(num / fx).toString();

  while (gx > 1)
  {
    if(cents < gx)
      cents = "0" + cents;

    gx /= 10 ;
  }

  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)?'':'-') + ((money)?'$':'') + num + (noDec ? '' : '.' + cents)) + ((pct)?'%':'');
}


function DummyEvent(elementId)
{
  this.target = element(elementId) ;
}


function TextCell(txt, color)
{
  var
    td = document.createElement("td") ;

  td.style.backgroundColor = color ;
  td.appendChild(document.createTextNode(txt)) ;

  return td ;
}


function SetRowCell(label, cell, evt, colCount)
{
  var
    x = -1,
    tabOuts = AppElement(evt, "tabOuts") ;
    
  for (var j = 0; j < tabOuts.rows.length; j++)
  {
    if (tabOuts.rows[j].firstChild.innerHTML == label + ":")
    {
      x = j ;
      break ;
    }
  }

  var
    xtr ;

  if (x == -1)
  {
    xtr = tabOuts.insertRow(-1) ;

    var
      xtd = xtr.insertCell(0) ;

    xtd.align = "right" ;
    xtd.style.backgroundColor = "#ccc" ; 
    xtd.style.fontWeight = "bold" ;
    xtd.appendChild(document.createTextNode(label + ":")) ;
  }
  else
    xtr = tabOuts.rows[x] ;

  var
    rowColPos = colCount - xtr.childNodes.length ;

  for (var k = 0; k < rowColPos; k++)
    xtr.appendChild(document.createElement("td")) ;

  xtr.appendChild(cell) ;
}


function AddSlideToOutputTable(r, cc, metric)
{
  var
    dum = new DummyEvent(r.a == 1 ? "tabOuts" : "App2tabOuts"),
    warnColor = (r.w.s == "Successful" ? "#aca" : (r.w.s == "Marginal" ? "#dd9" : "#caa")),
    slideCell = TextCell(r.n, warnColor),
    statTd = document.createElement("td"),
    serTd = document.createElement("td"),
    cadTd = document.createElement("td"),
    statImg = document.createElement("img"),
    serImg = document.createElement("img") ;

  slideCell.style.fontSize = "14px" ;
  slideCell.style.fontWeight = "bold" ;


  // Slide Cell Info
  //----------------------------------------------------
  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      SetRowCell("Slide", slideCell, dum, cc);
  }
  else if (Language == "German") {
    SetRowCell("Schlitten", slideCell, dum, cc);
  }
  else if (Language == "Spanish") {
  SetRowCell("Deslizadera", slideCell, dum, cc);
  }
  //----------------------------------------------------



  // CAD Model/Quote:
  //----------------------------------------------------
  var divConfigCC = "";
  if (cc > 1) {
      divConfigCC = "C" + cc;
  }
  else {
      divConfigCC = "";
  }

  var AppColId = "";
  if (r.a > 1) {
      AppColId = "App2";
  }

  var divID = "divConfig" + AppColId + divConfigCC;
  var slideString = slideCell.innerHTML;
  var reqOptAdd = "";
  slideString = slideString.replace(/ /g, '');  // some of the part strings have spaces in them for some reason... strip that out.

  // check for requried warnings... like required shocks
  var slideWarn = r.w.n;

  if (slideWarn != null) {

      // adjust keyword per language...
      if (Language == "English") {
          var requiredPos = slideWarn.match("Requires");
          var usePos = slideWarn.match("Use");
      }
      else if (Language == "German") {
          var requiredPos = slideWarn.match("Ben");
          var usePos = slideWarn.match("nutzen");
      }
      else if (Language == "Spanish") {
          var requiredPos = slideWarn.match("Requires");
          var usePos = slideWarn.match("Use");
      }
      
      
          // found required...
          if (requiredPos != null) {
              // strip the part num out...
              var partPointer = "--> ";
              var absorberNR = "-NR";
              if (slideWarn.match(partPointer))
              {
                  if (slideWarn.match(absorberNR))
                  {
                      var posPointer = slideWarn.indexOf("--> ");
                      var lenPartStr = slideWarn.lenght;
                      reqOptAdd = slideWarn.substr(posPointer + 4, lenPartStr);
                      slideString = slideString + reqOptAdd;
                  }
                  else
                  {
                      var posPointer = slideWarn.indexOf("--> ");
                      var lenPartStr = slideWarn.lenght;
                      reqOptAdd = slideWarn.substr(posPointer + 4, lenPartStr);
                      reqOptAdd = ":" + reqOptAdd;
                      slideString = slideString + reqOptAdd;
                  }
              }
              
          }

          // found used ... AKA required...
          if (usePos != null) {
              // strip the part num out...
              var partPointer = "-> ";
              if (slideWarn.match(partPointer))
              {
                  var posPointer = slideWarn.indexOf("-> "); 
                  var lenPartStr = slideWarn.length;
                  reqOptAdd = slideWarn.substr(posPointer + 3, lenPartStr);
                  reqOptAdd = ":" + reqOptAdd;
                  slideString = slideString + reqOptAdd;
              }
          }
      
  }

  // adjust keyword per language...
  if (Language == "English") {
      var cadTitle = "CAD Model/Quote";
      var cadText = "Configure<br /> Now!";
  }
  else if (Language == "German") {
      var cadTitle = "CAD Model/Angebot";
      var cadText = "Jetzt<br /> konfigurieren!";
  }
  else if (Language == "Spanish") {
      var cadTitle = "Modelo Cad / Cotizar";
      var cadText = "Configurar<br /> Ahora!";
  }

  var googleV1 = "Slide_Sizing";
  var googleV2 = "Click";
  var googleV3 = "CAD Config";
  
  var onMouseOver = "cadOver('" + AppColId + divConfigCC + "')";
  var onMouseOut = "cadOut('" + AppColId + divConfigCC + "')";
  var pageTracker = " javascript:pageTracker._trackEvent('" + googleV1 + "','" + googleV2 + "','" + googleV3 + "');";
  var callTrack = " googleTrack();";
  var configAction = "divConfig('" + AppColId + divConfigCC + "','','" + slideString + "','" + r.s + "');"
  var onClick = " onClick=" + callTrack + configAction;
  var onClickTrack = " onclick=" + pageTracker;

  var cellCAD = "<center><div id='" + divID + "'" + onClick + " class=detailsConfigButton onMouseOver=" + onMouseOver + " onMouseOut=" + onMouseOut + ">" +
                    "<span id='spnConfig'>" +
                    "<img id='imgConfig' style='display: block' src='../images/configuration_edit.png' alt='CAD Model/Quote' title='Complete option choices to get a CAD model and request a quote. Valid ordering data when red buttons change to green.'/>" +


                    "</span>" +
                "</div>" +
                "<label id='lblConfig' class='printSmall'>" + cadText + "</label>" +
                "</center>";

  //cadTd.appendChild(document.createElement());
  cadTd.innerHTML = cellCAD;
 

  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      slideCell = TextCell("CAD Here...<br><br>", warnColor);
      SetRowCell(cadTitle, cadTd, dum, cc);
  }
  else if (Language == "German") {
      slideCell = TextCell("CAD Here...", warnColor);
      SetRowCell(cadTitle, cadTd, dum, cc);
  }
  else if (Language == "Spanish") {
      slideCell = TextCell("CAD Here...", warnColor);
      SetRowCell(cadTitle, cadTd, dum, cc);
  }
  //----------------------------------------------------



  // Series Cell Info
  //----------------------------------------------------
  serImg.src = "images/gif/" + r.s + ".gif" ;

  serTd.appendChild(serImg) ;
  serTd.appendChild(document.createElement("br")) ;
  serTd.appendChild(document.createTextNode(r.s)) ;
  serTd.style.backgroundColor = warnColor ;
  serTd.style.textAlign = "center" ;
  serTd.style.verticalAlign = "top" ;

  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      SetRowCell("Series", serTd, dum, cc);
  }
  else if (Language == "German") {
      SetRowCell("Serie", serTd, dum, cc);
  }
  else if (Language == "Spanish") {
      SetRowCell("Serie", serTd, dum, cc);
  }



  //    SetRowCell("Series", TextCell(r.s, warnColor)) ;
  //----------------------------------------------------



  // Type Cell Info
  //----------------------------------------------------
  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      SetRowCell("Type", TextCell(r.t, warnColor), dum, cc);
  }
  else if (Language == "German") {
      SetRowCell("Typ", TextCell(r.t, warnColor), dum, cc);
  }
  else if (Language == "Spanish") {
      SetRowCell("Tipo", TextCell(r.t, warnColor), dum, cc);
  }
  

  //----------------------------------------------------


  // Type Cell Info
  //----------------------------------------------------

  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      SetRowCell("Bearing", TextCell(r.b, warnColor), dum, cc);
  }
  else if (Language == "German") {
      SetRowCell("Bearing", TextCell(r.b, warnColor), dum, cc);
  }
  else if (Language == "Spanish") {
      SetRowCell("Bearing", TextCell(r.b, warnColor), dum, cc);
  }
  //----------------------------------------------------


  // Status Cell Info
  //----------------------------------------------------
//    statImg.width = 26 ;
//    statImg.height = 32 ;
  statImg.src = (r.w.s == "Successful" ? "images/gif/traffic_green.gif" : (r.w.s == "Marginal" ? "images/gif/traffic_yellow.gif" : "images/gif/traffic_red.gif")) ;

  statTd.appendChild(statImg) ;
  statTd.appendChild(document.createElement("br"));

  // rename status varialbes per languate state
  // check lang setting
  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      if (r.w.s == "Successful") {
          langStatus = "Successful";
      }
      if (r.w.s == "Marginal") {
          langStatus = "Marginal";
      }
      if (r.w.s == "Failed") {
          langStatus = "Failed";
      }
  }
  else if (Language == "German") {
      if (r.w.s == "Successful") {
          langStatus = "Erfolgreich";
      }
      if (r.w.s == "Marginal") {
          langStatus = "Grenzwertig";
      }
      if (r.w.s == "Failed") {
          langStatus = "Fehlgeschlagen";
      }
  }
  else if (Language == "Spanish") {
      if (r.w.s == "Successful") {
          langStatus = "Exitoso";
      }
      if (r.w.s == "Marginal") {
          langStatus = "Marginale";
      }
      if (r.w.s == "Failed") {
          langStatus = "Falla";
      }
  }

  //statTd.appendChild(document.createTextNode(r.w.s + (r.w.n != null ? " - " + r.w.n : ""))) ;
  statTd.appendChild(document.createTextNode(langStatus + (r.w.n != null ? " - " + r.w.n : "")));
  statTd.style.backgroundColor = warnColor ;
  statTd.style.textAlign = "center" ;
  statTd.style.verticalAlign = "top" ;

  if (Language == null) {
      Language = element("UserLanguageStorage").value;
  }
  // adjust lang input to correct name so the picky thing runs...
  if (Language == "English") {
      SetRowCell("Status", statTd, dum, cc);
  }
  else if (Language == "German") {
      SetRowCell("Status", statTd, dum, cc);
  }
  else if (Language == "Spanish") {
      SetRowCell("Estado", statTd, dum, cc);
  }

//    SetRowCell("Status", TextCell(r.w.s + (r.w.n != null ? " - " + r.w.n : ""), warnColor)) ;
  //----------------------------------------------------


// This point on populates the rest


  for (var h = 0; h < r.f.length; h++)
    SetRowCell(r.f[h].l, TextCell(r.f[h].v, warnColor), dum, cc) ;

  for (var i = 0; i < r.o.length; i++)
  {
    var
      xtd = document.createElement("td"),
      im = document.createElement("img"),
      ed = document.createElement("input"),
      ip = document.createElement("img"),
      sp = document.createElement("span")
      lab = document.createTextNode("x"),
      ia = document.createElement("img") ;

    im.src = "images/gif/minus.gif" ;
    im.alt = "Decrease" ;

    ip.src = "images/gif/plus.gif" ;
    ip.alt = "Increase" ;

    ed.type = "text" ;
    ed.size = "6" ;

    ia.src = "images/gif/down.gif" ;
    ia.alt = "Convert Units" ;

    sp.appendChild(lab) ;
    sp.appendChild(ia) ;
    sp.id = "spnUCOut" + cc + "_" + i

    xtd.appendChild(im) ;
    xtd.appendChild(document.createTextNode(" ")) ;
    xtd.appendChild(ed) ;
    xtd.appendChild(document.createTextNode(" ")) ;
    xtd.appendChild(ip) ;
    xtd.appendChild(document.createTextNode(" ")) ;
    xtd.appendChild(sp) ;

    xtd.style.backgroundColor = warnColor ;


    SetRowCell(r.o[i].l, xtd, dum, cc) ;

    SetupUCByRefs(im, ed, ip, sp, r.o[i].u, "", r.o[i].v, 1, 1, 4, null, null, true) ;

    sp.SetMetric(metric) ;
  }
}

function getText(param)
{
    var retVal;
    if(document.all)
    {
        retVal = param.innerText;
    } 
    else
    {
        retVal = param.textContent;
    }
    return retVal;
}

// unused in production, but useful in debugging- 
// returns all properties of an object.
// usually I'll just display them in an alert or put them in the clipboard.
function debugProperties(objParam)
{
	var props = "";
	for (var prop in objParam)
	{
		props += prop + "=" + objParam[prop] + "\n";
	}
   
	return props;
}

// set all input elements on page to read-only:
function allReadOnly()
{
    var x=document.getElementsByTagName("input");
    for (var i = 0; i < x.length; i++)
    {
        x[i].readOnly = true;
        x[i].disabled = "disabled";
        x[i].onclick = "return false;";
        
    }
    
    x=document.getElementsByTagName("select");
    for (i = 0; i < x.length; i++)
    {
        x[i].disabled="disabled";
    }
    
    return;
}

// parses out the cookie
function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function divConfig(col, AppCol, sPickedPart, sSeries) {


    // set it to something if it is null (probably means initial load...)
    if (AppCol == null) {
        AppCol = '';
    }

    if (col == null) {
        col = '';
    }

    // read the series name picked and match it up with our product id from firebird
    var seriesId = getSeriesId(sSeries);

    // check if the user is logged into CAD already...
    var bIsAuthed = false;
    var uniqID = getCookie('UniqueID');
    if (uniqID != null && uniqID != "") {
        //alert('Welcome again ' + uniqID + '!');
        bIsAuthed = true;
    }

    // if they are already logged in and/or the cookie is set use it
    if (bIsAuthed) {
        //element('ifrConfig').src = "http://config.phdinc.com/configurePart.asp?product_id=" + seriesId + "&orderData=" + sPickedPart + "&fromSystem=Sizing";
        // popup method
        window.open('http://config.phdinc.com/configurePart.asp?product_id=' + seriesId + '&orderData=' + sPickedPart + "&fromSystem=Sizing", AppCol + 'configwindow' + col, 'width=850,height=800,scrollbars=1')

    } else {
        // user needs to auth first
        //element('ifrConfig').src = "http://user.phdinc.com/?siteId=cad&fromApp=sizing&goingTo=http://config.phdinc.com/configurePart.asp?product_id=" + seriesId + "&orderData=" + sPickedPart + "&fromSystem=Sizing";
        // popup method
    window.open('http://user.phdinc.com/?siteId=cad&fromApp=sizing&goingTo=http://config.phdinc.com/configurePart.asp?product_id=' + seriesId + '&orderData=' + sPickedPart + "&fromSystem=Sizing", AppCol + 'configwindow' + col, 'width=850,height=800,scrollbars=1')
    }

    // show the modal popup
    //$find("ConfMX").show();

    return;
}

function cadOver(divCC) {
// changes the css of the CAD config button

    element('divConfig' + divCC).className = 'detailsConfigButtonOver';
    return;
}

function cadOut(divCC) {
    // changes the css of the CAD config button

    element('divConfig' + divCC).className = 'detailsConfigButton';
    return;
}

function googleTrack() {

    pageTracker._trackEvent('Slide_Sizing', 'Click', 'CAD Config');

}

function getSeriesId(series) {
    var id;
    switch (series) {
        case "SxH":
            {
                id = "85";
                break;
            }
        case "SxL":
            {
                id = "85";
                break;
            }
        case "STP":
            {
                id = "99";
                break;
            }
        case "SHP":
            {
                id = "91";
                break;
            }
        case "SIP":
            {
                id = "91";
                break;
            }
        case "SCV":
            {
                id = "86";
                break;
            }
        case "SK":
            {
                id = "95";
                break;
            }
        case "SL":
            {
                id = "95";
                break;
            }
        case "SD":
            {
                id = "87";
                break;
            }
        case "SE":
            {
                id = "87";
                break;
            }
        case "SM":
            {
                id = "96";
                break;
            }
        case "SG":
            {
                id = "89";
                break;
            }
        case "SFP":
            {
                id = "88";
                break;
            }
        case "SFM":
            {
                id = "116";
                break;
            }
        default:
            {
                alert("Transfer to CAD not configured for this Series... contact PHD.");
                id = "";
                break;
            }
    }
    return id;
}