var siteUrl = window.location.protocol + "//" + window.location.host;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1)? true : false;
var isIE = (navigator.appName == "Microsoft Internet Explorer" && !isOpera)? true : false;
var N = window.navigator.appName.substring(0, 8);

var xmlHandler = new Array();
function loadXMLDoc(url)
{
   url += (url.search(/\?/) == -1)? "?hash=" + Math.random() : "&hash=" + Math.random();

   // Function set XMLRequest object
   // branch for native XMLHttpRequest object
   if (window.XMLHttpRequest)
   {

      xmlHandler = new XMLHttpRequest();
      xmlHandler.onreadystatechange = HandleStateChange;
      xmlHandler.open("GET", url, true);
      xmlHandler.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
      xmlHandler.send(null);
   }
   else if(window.ActiveXObject)
   {
      // branch for IE/Windows ActiveX version
      xmlHandler = new ActiveXObject("Microsoft.XMLHTTP");
      if(xmlHandler)
      {
         xmlHandler.onreadystatechange = HandleStateChange;
         xmlHandler.open("GET", url, true);
         xmlHandler.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
         xmlHandler.send();
      }
   }
}

var xmlHandler2 = "";
function loadXMLDoc2(url)
{
   // Function set XMLRequest object
   // branch for native XMLHttpRequest object
   url += (url.search(/\?/) == -1)? "?hash=" + Math.random() : "&hash=" + Math.random();

   if (window.XMLHttpRequest)
   {
      xmlHandler2 = new XMLHttpRequest();
      xmlHandler2.onreadystatechange = HandleStateChange2;
      xmlHandler2.open("GET", url, true);
      xmlHandler2.send(null);
   }
   else if(window.ActiveXObject)
   {
      // branch for IE/Windows ActiveX version
      xmlHandler2 = new ActiveXObject("Microsoft.XMLHTTP");
      if(xmlHandler2)
      {
         xmlHandler2.onreadystatechange = HandleStateChange2;
         xmlHandler2.open("GET", url, true);
         xmlHandler2.send();
      }
   }
}

function loadXMLPost(url, post)
{
   // Function set XMLRequest object
   // branch for native XMLHttpRequest object
   if (window.XMLHttpRequest)
   {
      xmlHandler = new XMLHttpRequest();
      xmlHandler.onreadystatechange = HandleStateChange;
      xmlHandler.open("POST", url, true);
      xmlHandler.setRequestHeader('Content-Type','application/x-www-form-urlencoded encoding=utf-8');
      xmlHandler.send(post);
   }
   else if(window.ActiveXObject)
   {
      // branch for IE/Windows ActiveX version
      xmlHandler = new ActiveXObject("Microsoft.XMLHTTP");
      if(xmlHandler)
      {
         xmlHandler.onreadystatechange = HandleStateChange;
         xmlHandler.open("POST", url, true);
         xmlHandler.setRequestHeader('Content-Type','application/x-www-form-urlencoded encoding=utf-8');
         xmlHandler.send(post);
      }
   }
}

function loadXMLHead(url)
{
   // Function set XMLRequest object
   // branch for native XMLHttpRequest object
   if (window.XMLHttpRequest)
   {
      xmlHandler = new XMLHttpRequest();
      xmlHandler.onreadystatechange = HandleStateChange;
      xmlHandler.open("HEAD", url, true);
      xmlHandler.send(null);
   }
   else if(window.ActiveXObject)
   {
      // branch for IE/Windows ActiveX version
      xmlHandler = new ActiveXObject("Microsoft.XMLHTTP");
      if(xmlHandler)
      {
         //xmlHandler.onreadystatechange = HandleStateChange;
         xmlHandler.open("HEAD", url, false);
         xmlHandler.send(null);
      }
   }
}

function HandleStateChange()
{
   // Function listen handlerAnswer
   // only if handler shows "complete"
   if(typeof xmlHandler != "object")
   {
      return;
   }

   if (xmlHandler && xmlHandler.readyState == 4)
   {
      // only if "OK"
      if(xmlHandler.status == 200)
      {
         //alert(xmlHandler.responseText); return;
         if(xmlHandler.responseText == "")
         {
            return;
         }

         // ...processing statements go here...
         xmlResult = xmlHandler.responseXML.documentElement;
         retMethod = xmlResult.getElementsByTagName('method')[0].firstChild.data;

         eval(retMethod + "(xmlResult)");
      }
   }
}

function HandleStateChange2()
{
   // Function listen handlerAnswer
   // only if handler shows "complete"
   if(typeof xmlHandler2 != "object")
   {
      return;
   }

   //ShowProgress(xmlHandler.readyState);
   if (xmlHandler2.readyState == 4)
   {
      // only if "OK"
      if(xmlHandler2.status == 200)
      {
         //alert(xmlHandler2.responseText); return;
         // ...processing statements go here...
         xmlResult = xmlHandler2.responseXML.documentElement;
         retMethod = xmlResult.getElementsByTagName('method')[0].firstChild.data;

         eval(retMethod + "(xmlResult)");
      }
   }
}

function removeOptions(remObject, indFrom)
{
   var nLength = remObject.options.length;
   for(i = 0; i < nLength; i++)
   {
      remObject.remove(indFrom);
   }
}

function addOption(nObject, nOption)
{
   if(!isIE)
   {
      nObject.add(nOption, null);
   }
   else
   {
      nObject.add(nOption);
   }
}

function setMaxText(frmObj, maxSize)
{
   if(frmObj.value.length > maxSize)
   {
      frmObj.value = frmObj.value.substr(0, maxSize);
   }

   if(typeof document.getElementById(frmObj.name + "_counter") != "undefined")
   {
      document.getElementById(frmObj.name + "_counter").innerHTML = (maxSize - frmObj.value.length);
   }
}

function getCookieVal (offset)
{
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1)
   {
      endstr = document.cookie.length;
   }

   return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name)
{
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen)
   {
      var j = i + alen;
      if(document.cookie.substring(i, j) == arg)
      {
         return getCookieVal (j);
      }

      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
   }

   return null;
}

function SetCookie (name, value)
{
   var argv = SetCookie.arguments;
   var argc = SetCookie.arguments.length;
   var expires = (argc > 2) ? argv[2] : null;
   var path = (argc > 3) ? argv[3] : null;
   var domain = (argc > 4) ? argv[4] : null;
   var secure = (argc > 5) ? argv[5] : false;

   document.cookie = name + "=" + escape (value) +
   ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
   ((path == null) ? "" : ("; path=" + path)) +
   ((domain == null) ? "" : ("; domain=" + domain)) +
   ((secure == true) ? "; secure" : "");
}

function DeleteCookie(name)
{
   var exp = new Date();
   //FixCookieDate (exp);
   exp.setTime (exp.getTime() - 1);
   var cval = GetCookie (name);

   if (cval != null)
   {
      document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
   }
}

function ajaxSupport()
{
   var retValue = false;

   if (window.XMLHttpRequest || window.ActiveXObject)
   {
      retValue = true;
   }
   return retValue;
}

function Trim(nValue)
{
   return nValue.replace(/^\s*|\s*$/ig, "");
}

function GeoName(nGeo)
{
   var nGeo = nGeo.toLowerCase();
   var nGeoArr = nGeo.split(" "), i, tmp;

   for(i in nGeoArr)
   {
      tmp = nGeoArr[i];
      nGeoArr[i] = tmp.substr(0, 1).toUpperCase() + tmp.substr(1);
   }

   return nGeoArr.join(" ");
}

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 {x:curleft, y:curtop};
}

function GetBack(nUrl)
{
   window.location.href = nUrl;
   return false;
}

function showErrorInfo(e, className)
{
   var errMsg = "/***************************\n"
   errMsg += "*   В классе " + className + "\n";
   errMsg += "*   произошла ошибка\n";
   errMsg += "*   " + e + "\n";
   errMsg += "***************************/"
   alert(errMsg);
}

function CreateNewRow(tBody, tRow)
{
   var a = tBody.insertRow(tBody.rows.length), b, i, c;
   a.className = tRow.className;

   for(i = 0; i < tRow.cells.length; i++)
   {
      b = a.insertCell(i);
      b.className = tRow.cells[i].className;
      b.innerHTML = tRow.cells[i].innerHTML;
   }
}


function GetWinSize()
{
   var dd = document;
   var ww = window;

   var w = 0, h = 0;

   if(N == "Netscape")
   {
      w = ww.innerWidth;
      h = window.innerHeight;
   }
   else
   {
      w = dd.body.clientWidth;
      h = document.body.clientHeight;
   }

   return {w: w, h: h};
}

function SetValue(id, value)
{
   document.getElementById(id).value = value;
}

function GetNodeValue(node, name)
{
   var retVal = "";

   var nTmp = node.getElementsByTagName(name);

   if(nTmp.length > 0)
   {
      retVal = (nTmp[0].firstChild != null)? nTmp[0].firstChild.data : retVal;
   }

   return retVal;
}

var nChecked = true;
var chArr = new Array();
function CheckAll(nAttr)
{
   if(typeof chArr[nAttr] == "undefined")
   {
      var nElem = document.getElementsByTagName("input");
      var nLen = nElem.length, i;
      chArr[nAttr] = new Array();

      for(i = 0; i < nLen; i++)
      {
         if(nElem[i].type == "checkbox" && nElem[i].getAttribute(nAttr) == 1)
         {
            chArr[nAttr][chArr[nAttr].length] = nElem[i];
         }
      }
   }

   nLen = chArr[nAttr].length;
   for(i = 0; i < nLen; i++)
   {
      chArr[nAttr][i].checked = nChecked;
   }

   nChecked = !nChecked;
}

function getObjectWidth(obj)
{
   var result = 0;
   if(obj.offsetWidth)
   {
      result = obj.offsetWidth;
   }
   else if(obj.clip && obj.clip.width)
   {
      result = obj.clip.width;
   }
   else if(obj.style && obj.style.pixelWidth)
   {
      result = obj.style.pixelWidth;
   }

   return parseInt(result);
}

var prevWin;
function prevImg(imgName, imgSrc)
{
   var retHTML = "";
   retHTML += '<html>';
   retHTML += '<head>';
   retHTML += '<title>Preview Image</title>';
   retHTML += '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">';
   retHTML += '<style type="text/css">';
   retHTML += 'html,body{height:100%; width:100%;margin:0;padding:0;background-color:#F1F1F1;}';
   retHTML += 'table{height:100%;width:100%;}';
   retHTML += 'h2 {font-family:Tahoma; font-size: 14px; margin:0px; padding: 0px 6px 6px 10px; color:#FFA200}';
   retHTML += '#content {'
   retHTML += 'border: solid 1px #CFCF9B;';
   retHTML += 'padding: 10px;';
   retHTML += '}';
   retHTML += 'ul {list-style-type:none; margin:8px 6px; padding:0px} li { list-style-type:none;   padding:0px 2px;line-height: 15px;}';
   retHTML += '.ind {margin-left: 18px;padding: 0 2px;}';
   retHTML += '</style>';
   retHTML += '</head>';
   retHTML += '<body>';
   retHTML += '<table border="0" cellpadding="0" cellspacing="0">';
   retHTML += '<tr>';
   retHTML += '<td valign="middle" align="center" height="100%">';
   retHTML += '<table border="0" cellspacing="0" cellpadding="0" style="width: 400px;">';
   retHTML += '<tr>';
   retHTML += '<td align="center">';
   retHTML += '<div id="content">';
   retHTML += '<h2>' + imgName + '</h2>';
   retHTML += '<ul>';
   retHTML += '<li><img src="/_images/modules/product/' + imgSrc + '" alt="' + imgName + '"></li>';
   retHTML += '</ul>';
   retHTML += '</div>';
   retHTML += '</td>';
   retHTML += '</tr>';
   retHTML += '</table>';
   retHTML += '</td>';
   retHTML += '</tr>';
   retHTML += '</table>';
   retHTML += '</body>';
   retHTML += '</html>';

   if(prevWin)
   {
      prevWin.close();
   }

   prevWin = window.open("", "Preview", "location = 0, toolbar = 0, status = 0, resizable = 1, scrollbars = 1");
   prevWin.document.write(retHTML);
   prevWin.document.close();

   return;
}

/*
*   Класс определяет загрузку элементов на событие window.onload
*/
function DHTMLLoad()
{
   var pageArr = new Array();
   var fArr = new Array();
   var pageObj = new Object();

   /*
   *   Добавляем ф-цию
   */
   this.Add = function(fName)
   {
      fArr[fArr.length] = fName;
   }

   /*
   *   Добавляем ф-объект
   */
   this.AddObj = function(id)
   {
      pageArr[id] = id;
   }

   /*
   *   Инициализируем наши данные
   */
   this.Init = function()
   {
      var i;
      for(i in fArr)
      {
         eval(fArr[i]);
      }

      for(i in pageArr)
      {
         eval("pageObj." + i + " = document.getElementById(i)");
      }
   }

   /*
   *   Возвращаем массив загр. элементов
   */
   this.Get = function()
   {
      return pageObj;
   }
}

function StartLoading()
{
   loadStatus = setInterval("ShowLoading()", 200);
}

function ShowLoading()
{
   var nStat = "hidden";
   if(loadObj.loading.style.visibility == "hidden")
   {
      nStat = "visible";
   }

   loadObj.loading.style.visibility = nStat;
}

function StopLoading()
{
   clearInterval(loadStatus);
   loadObj.loading.style.visibility = "hidden";
}

function CheckExt(nVar, extArr)
{
   var sMask = /\.(\w*)$/;
   retErr = false;

   var t = sMask.exec(nVar);
   var fExt = RegExp.$1.toLowerCase();
   var i;

   for(i in extArr)
   {
      if(extArr[i].toLowerCase() == fExt.toLowerCase())
      {
         retErr = true;
         break;
      }
   }

   return retErr;
}

function fnDeSelect()
{
   if (document.selection)
   {
      document.selection.empty();
   }
   else if (window.getSelection)
   {
      window.getSelection().removeAllRanges();
   }
}

function fnSelect(objId, text)
{
   fnDeSelect();
   if (document.selection)
   {
      var range = document.body.createTextRange();
      range.moveToElementText(document.getElementById("product_id_" + objId));
      range.findText(text);
      range.select();
   }
   else if (window.getSelection)
   {
      var range = document.createRange();
      range.selectNode(document.getElementById("product_id_" + objId));
      window.getSelection().addRange(range);
   }
}
