// Regions

function CCT(){
	UT();
	var el = document.getElementById('rgn_cart_warning');
	if (el!=null) el.style.display='block';
	RGN.cc=true;
	TT('rgn_select_window');
}

function TTT(el,x,y){
	RGN.anchor_element = el;
	RGN.anchor_element_x = x;
	RGN.anchor_element_y = y;
	if (RGN.IsEmptyCart()) {
		TT('rgn_select_window');
	}else{
		TT('rgn_cart_warning_window');
	};
}

function TT(div){
	TagToTip(div,
		FIX, [RGN.anchor_element, RGN.anchor_element_x, RGN.anchor_element_y],
		TITLE, 'Techport.ru',
		COPYCONTENT, false);
}

function UTT(city){
	var el,documentLocation,cityBefore=RGN.preferredCity;
	if (RGN.Form(city)) {
		el = document.getElementById('rgn_cart_warning');
		if (el!=null) el.style.display='none';
		// проверка cookie
		if(RGN.cookieCity!=''){
			el = document.getElementById('rgn_no_city_warning');
			el.style.display = 'none';
		}
		RGN.cc=false;
		UT();
		
		// Специальная обработка для страницы Доставка
		if (typeof(TP_ACC) != "undefined"){
			documentLocation=new String(document.location);
			if (documentLocation.indexOf('dostavka')>=0 && RGN.preferredCity != cityBefore){
				switch(RGN.preferredCity){
					case 'MSK':TP_ACC.hideAllAccordionElements();break;
					case 'SPB':TP_ACC.switchAccordionByRegion('SPb');break;
					case 'KLG':TP_ACC.switchAccordionByRegion('Kalyga');break;
				}
			}
		}
	}
}

function UT(){
	tt_HideInit();
}

// Stickers @ regions

function getStyleClass(className) 
{
	if (document.styleSheets.length < 1) {
	  return null;
	}
	var cssRules,s,r,isYandexInner,currentSheet;
	for (s = 0; s < document.styleSheets.length; s++) {
    currentSheet = document.styleSheets[s];
    // check href in case of Yandex Metrix
	  isYandexInner = currentSheet.href.toLowerCase().match(/yandex/);
    if (isYandexInner != null) {
      continue;
    }
    else {
	    if (currentSheet.cssRules) {
	      cssRules = 'cssRules';
	    } else {
	      cssRules = 'rules';
	    }
    }
	  for (r = 0; r < currentSheet[cssRules].length; r++) {
	    if (currentSheet[cssRules][r].selectorText == '.' + className) {
	      return currentSheet[cssRules][r];
	    }
	  }
	}
	return null;
}

function changeStyleBySelector()
{
	var stickerClass = getStyleClass('sticker_not_for_regions');
	switch (RGN.preferredCity)
	{
		case "MSK":
			if (stickerClass != null)
				stickerClass.style.display = '';
			break;
		case "SPB":
		case "KLG":
			if (stickerClass != null)
				stickerClass.style.display = 'none';
			break;
	}  
}

function jj()
{
	var stickerClass = getStyleClass('sticker_not_for_regions');
	if (stickerClass != null){
		if (stickerClass.style.display == 'none'){
			$$('div.sticker_not_for_regions').each(Element.hide);
		}
	}
	switch (RGN.preferredCity)
	{
		case "MSK":
			if (stickerClass != null){
				stickerClass.style.display = '';
				$$('div.sticker_not_for_regions').each(Element.appear);
			}
			break;
		case "SPB":
		case "KLG":
		  if (stickerClass != null){
				stickerClass.style.display = '';
				$$('div.sticker_not_for_regions').each(Element.fade);
		  }
		  break;
	}
}

// вешаем коллбек
RGN.AddItemIDWithPrefix("jj","",RGN.blocks_regions);
RGN.SetCallback("jj",jj,RGN.blocks_regions);

// инициализация RGN
RGN.Init();

// меняем css правила в зависимости от региона
changeStyleBySelector();

// Title BG

function GetDayPhase(){
	theTime = new Date();
	theHour = theTime.getHours();
	if((theHour<9)||(theHour>23)){
		return false;
	} else {
		return true;
	}
}

function SetBgImage(id,uri){
	var el=document.getElementById(id);
	if (el!=null){
		el.style.backgroundImage = "url("+uri+")";
	}
}
	
function SetTitleBgToNight(){
	SetBgImage('top_1','/_img/head/head_mainn.jpg');
}

function SetTitleBgInnerToNight(){	
	SetBgImage('top_2','/_img/head/head_alln.jpg');
	SetBgImage('top_3','/_img/head/head_spleten_left_alln.jpg');
	SetBgImage('top_3_dop','/_img/head/head_spleten_left_dopn.jpg');
	SetBgImage('top_4','/_img/head/head_menu_alln.jpg');
	SetBgImage('top_4_dop','/_img/head/head_menu_dopn.jpg');
	SetBgImage('top_5','/_img/head/head_spleten_right_alln.jpg');
}

function SetTitleBg(){
	if (!GetDayPhase()) SetTitleBgToNight();
}

function SetTitleBgInner(){
	if (!GetDayPhase()) SetTitleBgInnerToNight();
}

// Forum

function FF(div,from,x,y){
	TagToTip(div,
		FIX, [from, x, y],
		TITLE, 'Techport.ru',
		COPYCONTENT, false);
}

function UFF(){
	delCookie('session_','/','.techport.ru');
	window.location.reload();
}

// Filter

function _dec_to_rgb(value) {
  var hex_string = "",hexpair,byte1,nybble1,nybble2;
  for (hexpair = 0; hexpair < 3; hexpair++) {
    byte1 = value & 0xFF;								// get low byte
    value >>= 8;												// drop low byte
    nybble2 = byte1 & 0x0F;							// get low nybble (4 bits)
    nybble1 = (byte1 >> 4) & 0x0F;			// get high nybble
    hex_string += nybble1.toString(16);	// convert nybble to hex
    hex_string += nybble2.toString(16);	// convert nybble to hex
  }
  return hex_string.toUpperCase();
}


function filterParseValue(str){
	var retStr = "",i;
	for(i = 0; i < str.length; i++){
		charCd = str.charCodeAt(i);
		if((charCd >= 65 && charCd <= 90) || (charCd >= 97 && charCd <= 122) || (charCd >= 48 && charCd <= 57) || charCd == 95){
				retStr += str.charAt(i);
			}else{
				if(charCd >= 848)
					charCd -= 848;
				if(charCd == 257){
					charCd = 184;
				}else if(charCd == 177){
					charCd = 168;
				}
			retStr += "%" + charCd.toString(16).toUpperCase();
		}
	}
	return retStr;
}

function flagMapAdd(name, num, isCr){
	if(!isNaN(num)){
		mapID = -1;
		for(var i = 0; i < flagNames.length; i++){
			if(flagNames[i] == name){
				mapID = i;
				break;
			}
		}
		if(mapID == -1){
			mapID = flagNames.length;
			flagNames[mapID] = name;
			flagMaps[mapID] = new Array();
		}
		if(flagMaps[mapID].length < num){
			for(i = 0; i < num; i++)
				if(!flagMaps[mapID][i])
					flagMaps[mapID][i] = 0;
		}
		if(!isCr)
			flagMaps[mapID][num-1] = 1;
	}
}

function arrToHex(arrIn){
	var realValTmp = '',
			realVal = '',
			tmp = '',
			isLastProcessed = true,k;
	for(k = 1; k <= arrIn.length; k++){
		isLastProcessed = false;
		tmp = arrIn[k-1]+tmp;
		if(k % 4 == 0){
			realValTmp += parseInt(tmp, 2).toString(16);
			tmp = "";
			isLastProcessed = true;
		}
	}
	if(!isLastProcessed)
		realValTmp += parseInt(tmp, 2).toString(16);
	hexZeroStart = true;
	for(k = realValTmp.length-1; k >= 0; k--){
		if(realValTmp.substr(k, 1) != "0" || !hexZeroStart){
			realVal += realValTmp.substr(k, 1);
			hexZeroStart = false;
		}
	}
	return realVal;
}

function CheckFilterForm(fform, isSearchForm, isOrder) {

/* custom code */
var isResort = false,
	iflagNames = new Array(),
  flagMaps = new Array(),
  submitURL = '',
  i,val,k,el;
if(typeof(fform.action) != 'undefined' && fform.action.value == 'rsrtme'){
    isResort = true;
}
/* end of custom code */

if(isOrder != 1)
        isOrder = 0;

  // special run over checkbox filter fields
               //if()

  for(i=0; i<fform.length; i++){
   el = fform.elements[i];
   if(el.type == 'checkbox' && el.name.indexOf("[]") <= 0){
     val = (el.checked)?1:0;
     el.value = val;
     cname=el.name;
     if(fform.elements[cname] && (fform.elements[cname].type=='hidden')){
         if(typeof(fform.elements["enc_"+cname])=='object') {
            fform.elements["enc_"+cname].value = val;
         }
         fform.elements[cname].value = val;
     }  
   }
  }

  if(typeof(fform.elements['offset'])=='object') {
   fform.elements['offset'].value = 0;
  }

  if(typeof(fform.elements['enc_offset'])=='object') {
   fform.elements['enc_offset'].value = 0;
  }

  // Create the submit URL
  if(isSearchForm==1){ 
  	submitURL = '/katalog/products/?';}
  else 
    {submitURL = _cms_script_link;}

  for(i=0; i < fform.length; i++){
   el = fform.elements[i];
   elName = el.name;
   if(el.name.indexOf("prop_") >= 0 && isOrder){
       if((fpos = el.name.lastIndexOf("_x")) >= 0){
            elName = el.name.substr(0, fpos);
       }
       elName += "[]";
   }
   if(el.type == 'checkbox'){
     if(el.checked){
         if((fpos = el.name.indexOf("_flag_")) >= 0){
            flagMapAdd(el.name.substr(0, fpos), parseInt(el.name.substr(fpos+6)), 0);
         }else{
            submitURL += '&'+elName+'='+filterParseValue(el.value);
         }
     }else{
         if((fpos = el.name.indexOf("_flag_")) >= 0){
            flagMapAdd(el.name.substr(0, fpos), parseInt(el.name.substr(fpos+6)), 1);
         }else{
             if(el.name.indexOf("[]") <= 0) /* do not process array items */
                submitURL += '&'+elName+'=';
         }
     }
   }else if(el.type == 'select-one'){
     if((fpos = el.name.indexOf("_flag")) >= 0){
        flagMapAdd(el.name.substr(0, fpos), parseInt(el.value), 0);
     }else{
         submitURL += '&'+elName+'='+filterParseValue(el.value);
     }
   }else if(el.type == 'select-multiple'){
     fpos = el.name.indexOf("_flag");
     for(k = 0; k < el.length; k++){
       if(el.options[k].selected){
          if(fpos >= 0){
            flagMapAdd(el.name.substr(0, fpos), parseInt(el.options[k].value), 0);
          }else{
            submitURL += '&'+filterParseValue(elName)+'='+filterParseValue(el.options[k].value);
          }
       }
     }
   }else if(el.type == 'radio'){
     if(el.checked){
         if((fpos = el.name.indexOf("_flag")) >= 0){
            flagMapAdd(el.name.substr(0, fpos), parseInt(el.value), 0);
         }else{
             submitURL += '&'+elName+'='+filterParseValue(el.value);
         }
     }
   }else{
     if(!isOrder && el.name == "action" && fform.search_subcats && fform.search_subcats.checked && !isOrder)
        submitURL += '&action=search';
     else if(!isOrder || el.name != "action" && el.name != "order"){
        if(!isResort && elName == 'ext_custom_1200'){
            submitURL += '&'+elName+'=&flt_force_value=1';
        }else{
            submitURL += '&'+elName+'='+filterParseValue(el.value);
        }
     }
   }
  }

  for(i = 0; i < flagMaps.length; i++){
    if(flagNames[i]){
     submitURL += '&'+flagNames[i]+'=0x'+arrToHex(flagMaps[i]);
    }
  }
  if(isOrder)
    submitURL += 'eshop_special=1&action=add';

  if(isSearchForm)
    fform.action.value="search";

  document.location.href=submitURL;
  return false;
}

function checkSearchForm(fform) {
  var oInput=document.getElementById('search_text_tp'),sform,i,el;
  if(oInput.value.charAt(0) != '*'){oInput.value='*'+oInput.value;}

  sform = document.forms[_cms_document_form];
  // special run over checkbox filter fields
  for(i=0; i<fform.length; i++){
   el = fform.elements[i];
   if(el.type == 'text'){
     cname=el.name;
     if(sform.elements[cname] && (sform.elements[cname].type=='hidden')){
         if(typeof(sform.elements["enc_"+cname])=='object') {
            sform.elements["enc_"+cname].value = el.value;
         }
         sform.elements[cname].value = el.value;
     }
   }
   if(CheckFilterForm(sform, 1)) {
     sform.action.value="search";
     sform.submit();
   }
  }
  return false;
}

function fixCMSScriptLinkForSearch(){
	_cms_script_link = _cms_search_script_link; //03.03.2010 15:57:19 BNM Fix link for search
}

// Left menu & Left column

var flipLastingCategories = Array (20163,20165);

function flipMenuBlock(blockId,changeHeight){
	var blockObj = document.getElementById('idLeftMenu'+blockId),
			aObj,
			flag = false;
	if(changeHeight === undefined) changeHeight = 1;	//16.03.2010 14:24:36 BNM Fix for undone page
	if(in_array(blockId,flipLastingCategories)){	//07.07.2010 11:42:55 BNM Custom work for selected categories
		aObj = document.getElementById('alink_'+blockId);
		if(changeHeight && aObj && aObj.href != document.location.href)
			flag = true;
	}
	if (!flag) tp_toggle('idLeftMenu'+blockId)
	if (changeHeight)	correctPageHeight();	// in this case also must change divs height
	return flag;
}

function flipInformationBlock(obj){
  var el=document.getElementById(obj);
  if (el!=null) {
    if (el.style.display=='none'){
      el.style.display='block';
      setCookie('show_information', '1', '/');
    } else {
      el.style.display='none';
      setCookie('show_information', '0', '/');
    }
  }
  correctPageHeight();
}

function validate_form(cform) {

  if (!form )
    var form = cform;
    
   if (form.username.value.length<1 || form.username.value.match(/[^a-zA-Z0-9_.@]+/)) {
       errmsg='Пожалуйста, введите логин! Минимальная длина 1\nЛогин может содержать только цифры и латинские буквы\n';
       form.username.focus();
       alert(errmsg);
       return false;
   }

  return true;
}

// Center column
function select__(name__){
	for(var k=0; k<fltform.elements['ext_custom_1200'].length; k++){
		if(fltform.elements['ext_custom_1200'][k].value==name__){
			fltform.elements['ext_custom_1200'][k].selected='true';
			fltform.btn2.click();
		}
	}
}

function toggleCallOrderForm(){
	tp_toggle('zv1');
	tp_toggle('zv2');
	correctPageHeight();
}

// Producers block

function toggleAllProducers(cook){
	setCookie('showallproducers3', cook, '/', 0, 1);
	tp_toggle('idShortProducers');
	tp_toggle('idAllProducers');
	correctPageHeight();
}

// Height correction

function correctPageHeight(page){
	page = page || '';
  var a = Array(),
  		m = 0,
  		l = 0,
  		h = 0,
  		c = 0,
  		f,
  		i;
  if (page!='main'){
  	a = Array('lay_body','lay_body1','lay_f2','lay_f4');
  	c = 50;
  }
  else{
  	a = Array('lay_body','lay_body1');
  	c = 25;
  }
  l = a.length;
  for (i = 0; i < l; i++){
  	f=a[i];
  	a[i] = document.getElementById(a[i]);
  	if (a[i] != null){
  		h = calculateChildrenOffsetHeight(a[i]);
  		if (f=='lay_f2') h-=50;
  		if (f=='lay_f4') h-=75;
  		if (m < h)
  			m = h;
  	}
  }
  for (i = 0;i < l; i++){
  	if (a[i] != null){
  		a[i].style.height = (m + ((i != 0)? c : 0)) + 'px'; // c - fix absolute pos of 'lay_body'
  	}
  }
}

function calculateChildrenOffsetHeight(parentDOMElement)
{
	var childNodes = parentDOMElement.childNodes,
			childNodesCount = childNodes.length,
			childNodesOffsetHeight = 0,	// total children offset height
			currentChildNode,
			currentChildNodeOffsetHeight,
			sm,i;
	for (i = 0; i < childNodesCount; i++) {
		currentChildNode = childNodes[i]; 
		currentChildNodeOffsetHeight = currentChildNode.offsetHeight;
		if (currentChildNodeOffsetHeight > 0) { // check if element is visible (offsetHeight > 0)
			sm=currentChildNode.nodeName.toLowerCase().match(/spec_mark/);	// fix for IE <spec_mark> tags filter
			if ((sm == null) && (currentChildNode.innerHTML != "")){
				childNodesOffsetHeight += currentChildNodeOffsetHeight;
			}
		}
	}
	return childNodesOffsetHeight;
}

// BNM 19.03.2010 - переопределена, добавлен вызов correctPageHeight(). Взят из system_js.php
function fillAdvPlace(idPlace, idCnt, placeContent){
	if(advPlacesContent[idPlace+'_'+idCnt] == undefined)
		advPlacesContent[idPlace+'_'+idCnt] = placeContent;
	if(fillAdvPlaceWatcher[idPlace+'_'+idCnt] == undefined)
		fillAdvPlaceWatcher[idPlace+'_'+idCnt] = 0;
	if(document.getElementById && document.getElementById('advp_'+idPlace+'_'+idCnt) && document.getElementById('advp_'+idPlace+'_'+idCnt).innerHTML != undefined){
		document.getElementById('advp_'+idPlace+'_'+idCnt).innerHTML = advPlacesContent[idPlace+'_'+idCnt];
		correctPageHeight(); // fix by BNM
	}else{
		fillAdvPlaceWatcher ++;
		if(fillAdvPlaceWatcher < 1000)
			setTimeout("fillAdvPlace('"+idPlace+"', '"+idCnt+"');", 100);
	}
}

// Catalog filter

function fixFilterWidth(){
	var newWidth=183+307-$('fltTable').getWidth();
	$$('select.sel').each(function(a){a.setStyle({width:newWidth+'px'});});
}

// Big pictures

/*
// lightbox-related init object
var  = {
    medPicsArray : new Array(),
    bigPicsArray : new Array()    
}
*/

SHT.getRealDisplay = function (elem) {
	if (elem.currentStyle) {
		return elem.currentStyle.display;
	} else if (window.getComputedStyle) {
		var computedStyle = window.getComputedStyle(elem, null );
		return computedStyle.getPropertyValue('display');
	}
}

function changeStickersForLightbox(mode) {
   // hide stickers in process of images changing to avoid stupid 'jumpings'
   if ($('middle_pict') != null) {
     var stickers = $('middle_pict').childElements();
     stickers.each(function(elem) {
        var stickerClassName = elem.className;
	    isSticker = stickerClassName.toLowerCase().match(/sticker/);
        if (isSticker != null) {
            (mode == 0)?elem.hide():elem.appear({ duration: 0.5, from: 0, to: 1 });
        }
     });
   }
}

// animate switching small pictures
function changeForLightboxImg(srcNew, bigPath){
   // hide stickers
   changeStickersForLightbox(0);
   // change middle picture div inner html
   var imgPreloader = new Image();
   imgPreloader.onload = (function() {
     $('lb_pict').hide();
     $('lb_pict').innerHTML = ((bigPath!='')?("<a class='magnify' href='" + bigPath + "' rel='lightbox[a]'>"):'')+"<img src='" + srcNew + "' border=0>"+((bigPath!='')?("<br><img src='/_img/lightbox/magnify.jpg' title='Увеличить' alt='Увеличить'></a>"):'');
     if (bigPath != '') {
       $('middle_pict').addClassName('magnify_div');
     }
     $('lb_pict').appear({ duration: 0.5, from: 0, to: 1 });
   });
   imgPreloader.src = srcNew;
   // show stickers
   changeStickersForLightbox(1);
}

// handler on small pictures switching
function changeForLightbox(srcNew, bigPath, picNum)
{
   changeForLightboxImg(srcNew, bigPath);
   // and refill lightbox hiddens div content

   var lightboxHiddensInnerUp   = '';
   var lightboxHiddensInnerDown = '';

   for (var i = 0; i < bigPicsArrayLength; i++) 
   {
      // up hiddens span fill in
      // mf fix: (bigPicsArrayLength != picNum)
      if ((i < picNum) && (bigPicsArray[i] != null))
      {
         lightboxHiddensInnerUp += '<a href="' + bigPicsArray[i] + '" rel="lightbox[a]"></a>';
      }
      if ((i > picNum) && (bigPicsArray[i] != null))
      {
         lightboxHiddensInnerDown += '<a href="' + bigPicsArray[i] + '" rel="lightbox[a]"></a>';
      }
   }

   document.getElementById('lightbox_hiddens_up').innerHTML   = lightboxHiddensInnerUp;
   document.getElementById('lightbox_hiddens_down').innerHTML = lightboxHiddensInnerDown;
}

// Overrided functions
// BNM 16.02.2009 - для заданного размера всплывающего окна. Взят из system_js.php
function show_details(script) {
  if ( (script.substring(0,7).toLowerCase()) != "http://" && (script.substring(0,8).toLowerCase() != "https://" ) ){
    script = frontBaseHref + script;
  }
  var	w_width = 437,
  		w_height = 300;
  if (w_height > window.screen.availHeight)
  w_height = window.screen.availHeight;
  if (w_width > window.screen.availWidth)
  w_width = window.screen.availWidth;

  window.open(script, "pic", "resizable=yes, status=yes, scrollbars=yes, width=" + w_width + ", height=" + w_height);
}

function amiroTEdit_createEditor(taWidth, taHeight, taValueName, taValue, isValueHTML, idPreviewDiv){
	if (typeof(isValueHTML) != undefined) {
	    var re = /(<noindex>|<\/noindex>)/gi;
	    taValue = taValue.replace(re, '');
	}
	var baseHref = typeof(frontBaseHref) == 'string' ? '' : (typeof(editorBaseHref) != 'undefined' ? editorBaseHref : '');
	this.editorId = 'id'+taValueName;
	var contentPreviewDiv = '';
	if(typeof(idPreviewDiv) != "undefined"){
	    this.idPreviewDiv = idPreviewDiv;
	}else{
	    this.idPreviewDiv = 'amiroTEdDivPreview';
	    contentPreviewDiv = '<div id="amiroTEdDivPreview" class="amiroTEdDivPreview" style="width:'+taWidth+'px;margin-bottom:7px"></div>';
	}
	document.writeln(
	    contentPreviewDiv +
	    '<div id="amiroTEdDivEditor" class="amiroTEdDivEditor">' +
	    '<textarea id="'+this.editorId+'" name="'+taValueName+'" wrap="OFF" class="amiroTEdCtrl" style="width:'+taWidth+'px;height:'+taHeight+'px" onKeyDown="return '+ this.varName+'.procKeyPress(event)" onKeyUp="'+ this.varName+'.procKeyUp()">' +
	    (typeof(isValueHTML) == undefined || !isValueHTML ? taValue : this.fromHTMLContent(taValue)) +
	    '</textarea><br>' +
	    '<div class="amiroTEdDivResize" style="width:'+taWidth+'px;background-image: url(' + baseHref + '_img/ed_resize.gif)" onMouseDown="'+this.varName+'.regTextAreaResize(event.pageY ? event.pageY : window.event.clientY)"><img src="' + baseHref + '_img/empty.gif" width="1" height="3"></div>' +
	    '</div>'
	);
	this.editorObj = document.getElementById(this.editorId);
	this.isInitialized = true;
}

// Overwrited functions end
