﻿var isIE = false;
var isOpera = false;
var isMozilla = false;
var isSafari = false;
var isKonq = false; 

function CheckBrowserVersion()
{
  sUserAgent = navigator.userAgent;
  isOpera = sUserAgent.indexOf("Opera") > -1;
  isIE = sUserAgent.indexOf("compatible") > -1 &&
         sUserAgent.indexOf("MSIE") > -1 &&
         !isOpera;
  isKHTML = sUserAgent.indexOf("KHTML") > -1 &&
            sUserAgent.indexOf("AppleWebKit") > -1;
  if (isKHTML)
  {
    isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
    isKonq = sUserAgent.indexOf("Konqueror") > -1;
  }
  isMozilla = sUserAgent.indexOf("Gecko") > -1 &&
              !isKHTML;
}
CheckBrowserVersion();

function attachEventToElement(eventElement, eventName, eventFunction)
{
  if (isIE)
  {        
    eventElement.attachEvent("on" + eventName, eventFunction);
  }
  else
  {
    eventElement.addEventListener(eventName, eventFunction, true);
  }
}

function getDocumentBodyElement()
{
  if (isIE || isMozilla)
  {
    return document.documentElement;
  }
  else if (isOpera)
  {
    return document.body;
  }
  else
  {
    if (document.documentElement)
    {
      return document.documentElement;
    }
    else if (document.body)
    {
      return document.body;
    }
  }
  return null;
}

function getCurrStyle(defObj)
{
  if (defObj)
  {
    if (defObj.currentStyle) 
    {
      return defObj.currentStyle;
    } 
    else if (window.getComputedStyle) 
    {
      return document.defaultView.getComputedStyle(defObj, null);
    }
  }
  return null;
}
function getCurrStyleValue(defObj, IEstyleProp, MozStyleProp) 
{
  if (defObj.currentStyle) 
  {
    return defObj.currentStyle[IEstyleProp];
  } 
  else if (window.getComputedStyle) 
  {
    return document.defaultView.getComputedStyle(defObj, null).getPropertyValue(MozStyleProp);
  }
  return null;
}
function getCurrStyleFloat(defObj)
{
  if (defObj)
  {
    if (defObj.currentStyle) 
    {
      return defObj.currentStyle.styleFloat;
    } 
    else if (window.getComputedStyle) 
    {
      return document.defaultView.getComputedStyle(defObj, null).cssFloat;
    }
  }
  return null;
}
function getStyleFloat(defObj)
{
  if (defObj)
  {
    if (defObj.style.styleFloat || (defObj.style.styleFloat == "")) 
    {
      return defObj.style.styleFloat;
    } 
    else if (defObj.style.cssFloat || (defObj.style.cssFloat == "")) 
    {
      return defObj.style.cssFloat;
    }
  }
  return null;
}
function setStyleFloat(defObj, value)
{
  if (defObj)
  {
    if (defObj.style.styleFloat || (defObj.style.styleFloat == "")) 
    {
      defObj.style.styleFloat = value;
    } 
    else if (defObj.style.cssFloat || (defObj.style.cssFloat == "")) 
    {
      defObj.style.cssFloat = value;
    }
  }
}

function getDimensions(defObj)
{
    if (defObj.style.display != 'none' && defObj.style.display != null) // Safari bug
        return { width: defObj.offsetWidth, height: defObj.offsetHeight };

    return { width: defObj.clientWidth, height: defObj.clientHeight };
}


function YesNoCancelMsgBox(question)
{
  if (isIE || window.VBYesNoCancelMsgBox)
  {
    return VBYesNoCancelMsgBox(question);
  }
  else
  {
    return confirm(question) ? 6 : 7;
  }
}

function YesNoMsgBox(question)
{
  if (isIE || window.VBYesNoMsgBox)
  {
    return VBYesNoMsgBox(question);
  }
  else
  {
    return confirm(question) ? 6 : 7;
  }
}

function YesNoWarrningMsgBox(question)
{
  if (isIE || window.VBYesNoWarrningMsgBox)
  {
    return VBYesNoWarrningMsgBox(question);
  }
  else
  {
    return confirm(question) ? 6 : 7;
  }
}

function OKInformationMsgBox(infoText)
{
  if (isIE || window.VBOKInformationMsgBox)
  {
    VBOKInformationMsgBox(infoText);
  }
  else
  {
    alert(infoText);
  }
}

function isLeftButtonClick(ev)
{
  if (isIE)
  {
    return ev.button == 1;
  }
  else
  {
    return ev.button == 0;
  }
}

function isRightButtonClick(ev)
{
  return ev.button == 2;
}

function IsAppPath(path)
{
  return window.location.href.substr(0, window.location.href.length - 'default.aspx'.length) == file.href;
}

function GetRelativePath(path)
{
  prefix = window.location.href.substr(0, location.href.length - location.pathname.length);  
  if (path.indexOf(prefix) >= 0)
  {
    return path.substr(prefix.length, path.length - prefix.length);
  }
  else
  {
    return path;
  }
}
function RefreshLabel4Disable(controlID, isFormDisabled)
{
  // its necessary to refresh label because on show property page
  // (disable current page) label duplicate text
  control = document.getElementById(controlID);
  if (control)
  {
    if (isFormDisabled)
    {
      control.style.visibility = 'visible';    
    }
    else
    {
      control.style.visibility = '';    
    }
  }
}

function SetSelectControlsVisible(parentControl, value)
{
    // value - 'hidden', 'visible'
	for( var i = 0; i < parentControl.childNodes.length; i++) 
	{
	   if (parentControl.childNodes[i].tagName && 
	       (parentControl.childNodes[i].tagName.toLowerCase() == 'select'))
	   {
         parentControl.childNodes[i].style.visibility = value;
	   }
	   SetSelectControlsVisible(parentControl.childNodes[i], value);
	}
}
function HideSelectControls(parentControlID)
{
    parentControl = document.getElementById(parentControlID);
    if (parentControl)
    {
      SetSelectControlsVisible(parentControl, 'hidden');
    }
}
function ShowSelectControls(parentControlID)
{
    parentControl = document.getElementById(parentControlID);
    if (parentControl)
    {
      SetSelectControlsVisible(parentControl, 'visible');
    }
}

function ConvertStringToBool(strValue)
{
  if (strValue && (strValue == 't'))
  {
    return true;
  }
  else
  {
    return false;
  }
}

function setDiabledAllElements(parentElement, isDisabled)
{
  if ((parentElement.disabled != null) &&
      (parentElement.disabled != undefined))
  {
    parentElement.disabled = isDisabled;
  }
  if (parentElement.childNodes)
  {
    for(var i = 0; i < parentElement.childNodes.length; i++) 
    {    
      setDiabledAllElements(parentElement.childNodes[i], isDisabled)
    }
  }
}

function ToggleAdvancedSearch(panelID, categoriesID, brandsID, inStockID)
{
    var panel = document.getElementById(panelID);
    var categoriesDrop = document.getElementById(categoriesID);
    var brandsDrop = document.getElementById(brandsID);
    var inStockCheck = document.getElementById(inStockID);
    if (panel)
    {
        if (isControlVisible(panel)) // hide + reset filters
        {
            panel.style.display = 'none';
            if (categoriesDrop)
                categoriesDrop.selectedIndex = 0;
            if (brandsDrop)
                brandsDrop.selectedIndex = 0;
            if (inStockCheck)
                inStockCheck.checked = false;
        }
        else // show
        {
            panel.style.display = 'block';
        }
    }
    return false;
}

function ToggleControlVisiblity(controlID)
{
    var control = document.getElementById(controlID);
    if (control)
    {
        control.style.display = isControlVisible(control) ? 'none' : 'block';
    }
    return false;
}

function isControlVisible(control)
{
    if (control.style.display == 'none')
        return false;
    else
        return true;
}

// workaround for radio buttons in repeater
function SetUniqueRadioButton(nameregex, current)
{
    re = new RegExp(nameregex);
    for (i = 0; i < document.forms[0].elements.length; i++)
    {
        elm = document.forms[0].elements[i];
        if (elm.type == 'radio')
        {
            if (re.test(elm.name))
            {
                elm.checked = false;
            }
        }
    }
    current.checked = true;
}

function CountLeftChars(textBox, infoLabelID)
{
    var infoLabel = document.getElementById(infoLabelID);

    if ((textBox == null) || (infoLabel == null))
        return;

    var maxChars = getMaxCount(textBox);
    var leftChars = maxChars - textBox.value.length;
    if (leftChars > 0)
    {
        infoLabel.className = 'AddCMSSysPropertyLeftInfoLabel';
    }
    else
    {
        infoLabel.className = 'AddCMSSysPropertyToLongInfoLabel';
        leftChars = 0;
    }
    infoLabel.innerHTML = GetResourceText('PropertyInfoCharsLeft', leftChars);
}

function CountLeftWords(textBox, infoLabelID)
{
    var infoLabel = document.getElementById(infoLabelID);

    if ((textBox == null) || (infoLabel == null))
        return;
    

    var wordsCount = 0;
    if (textBox.value.length > 0)
    {
        var wordsArr = textBox.value.split(', ');
        wordsCount = textBox.value.split(', ').length;
    }

    var maxWords = getMaxCount(textBox);
    var leftWords = maxWords - wordsCount;
    if (leftWords > 0)
    {
        infoLabel.className = 'AddCMSSysPropertyLeftInfoLabel';
    }
    else
    {
        infoLabel.className = 'AddCMSSysPropertyToLongInfoLabel';
        leftWords = 0;
    }
    infoLabel.innerHTML = GetResourceText('PropertyInfoWordsLeft', leftWords);
}

function getMaxCount(textBox)
{
    var maxWordsStr = textBox.getAttribute('maxCount');
    if (maxWordsStr)
        return parseInt(maxWordsStr);
    else
        return 10;
}

function GetSiteMapParamsXML(siteMapGridID) {
    if (!siteMapGridID)
        return;
        
    var xml = '<SiteMap>';
    for (var i = 0; i < siteMapGridID.Table.GetRowCount() - 1; i++) {
        row = siteMapGridID.Table.GetRow(i);
        if (row.Data[10] = 't') {
            xml = xml + '<SiteMapParams>';
            xml = xml + '<ObjectID>' + row.Data[0] + '</ObjectID>';
            xml = xml + '<ObjectTypeID>' + row.Data[1] + '</ObjectTypeID>';
            if (row.Data[5] != 0 && row.Data[5] != null && row.Data[5] != undefined)
                xml = xml + '<ObjectPriorityID>' + row.Data[5] + '</ObjectPriorityID>';
            if (row.Data[7] != 0 && row.Data[7] != null && row.Data[7] != undefined)
                xml = xml + '<ObjectFrequencyID>' + row.Data[7] + '</ObjectFrequencyID>';
            if (row.Data[8])
                xml = xml + '<ObjectRobotsIndex>' + 't' + '</ObjectRobotsIndex>';
            else
                xml = xml + '<ObjectRobotsIndex>' + 'f' + '</ObjectRobotsIndex>';
            xml = xml + '<ObjectMID>' + row.Data[9] + '</ObjectMID>';
            xml = xml + '<ObjectModified>' + row.Data[10] + '</ObjectModified>';
            xml = xml + '</SiteMapParams>';
        }
       }
    xml = xml + '</SiteMap> ';
    return xml;
}