var enable_hint    = false; // set "true" only after full loaded!
var enable_uslugi  = false;
var enable_innov   = false;
var enable_company = false;
var globalElems = new Array(); // global cache of elements
var globalVars  = new Array(); // global cache of javascript variables

var browser_name    = get_browser_name();
var browser_version = get_browser_version();
var browser_sizes   = new Array(); // detect in function onload_main()
var enable_ajax     = false; // see onload_main() (browser_name=='IE' && browser_version <= 5.5) ? false : true;

var page_popup=0;

// Must pre-include mootools.js //

var ii = 1;
var pos = 0;

set_page_min_width_ie();
window.addEvent('load',   onload_main);
window.addEvent('unload', onunload_main);

//// Functions Common ////

function getElemById(elemId) { // возвращает ссылку на обьект с id=elemId
  var nocaching = arguments.length>1?arguments[1]:false;
  return $(elemId,nocaching);
}

//// Functions for email protected ////

var mcache = new Array();
function mget(h,z,n) {
  var mlast = '';
  mlast = h+'|'+z+'|'+n;
  if (!mcache[mlast]) {
    n = n.split('').reverse().join('');
    h = h.split('').reverse().join('');
    z = z.split('').reverse().join('');
    mcache[mlast] = n+'@'+h+'.'+z;
  }
  return mcache[mlast];
}
function mwrite(h,z,n) {
  return document.write(mget(h,z,n));
}
function mhref(h,z,n,s) {
  var href = "mailto:";
  href += mget(h,z,n);
  if (s) href += "?subject=" + s;
  window.location.href = href;
  return true;
}
function mstatus(h,z,n,s) {
  var href = "";
  if (h) href = "mailto:" + mget(h,z,n);
  wstatus(href);
  return true;
}

//// Functions for popup windows ////

/* short function name */
function wo(u,t,h,w,tt,ll) {
  return wopen(u,t,h,w,tt,ll);
}
function wc(u,t,h,w) {
  return wopen_center(u,t,h,w);
}
function wp(u,t,h,w) {
  return wopen_portret(u,t);
}

function wopen(wurl,wtar,h,w,top,left) {
  switch (wtar) {
    case 'forum':
      h=640; w=640;
      break;
    default:
      h=480; w=640;
  }
  return wopen_center(wurl,wtar,h,w);
}

function wopen_portret(wurl,target) {
  return wopen_center(wurl,target,700,1024);
}

function wopen_center(wurl,target,h,w) {
  var d = document;
  var top,left,win;
  var s = get_browser_sizes();
  var p = get_browser_pos();
  //if (DIMM) alert([s,p]);
  if (w>screen.availWidth) {
    w = screen.availWidth;
    left = 0;
  } else if (w>s[0]) {
    left = (screen.availWidth-w)/2;
  } else {
    left = (browser_name=='OP'?0:p[0]) + (s[0]-w)/2;
  }
  if (h>screen.availHeight) {
    h = screen.availHeight;
    top = 0;
  } else if (h>s[1]) {
    top = (screen.availHeight-h)/2;
  } else {
    var panel_h = browser_name=='FF'?150:0; // средняя высота панели иструментов браузера Firefox
    var panel_popup_h = browser_name=='IE'?(browser_version>6?40:20):0; // поправка на высоту шапки попап-окна
    top = (browser_name=='OP'?0:p[1]) + panel_h + (s[1]-h)/2 - panel_popup_h;
    //if (DIMM) alert(top);
  }
  win = window.open(wurl,target,'height='+h+',width='+w+',resizable=yes,scrollbars=yes,menubar=no,status=yes,top='+top+',left='+left+'');
  win.focus();
  return false;
}

function wclose() {
  var confirming = arguments.length>0?arguments[0]:false;
  var closing    = confirming?(confirm('Закрыть popup-окно?')?true:false):true;
  var focusing   = arguments.length>1?arguments[1]:false;
  if (focusing && window.opener) window.opener.focus();
  if (closing) window.close();
  return false;
}

function whref(wurl) {
  var in_opener = arguments.length>1?arguments[1]:false;
  var win = in_opener&&window.opener?window.opener:window;
  //if (DIMM) { win.location.replace(wurl); alert(wurl); }
  win.location.href = wurl;
  var focusing = arguments.length>2?arguments[2]:false;
  if (focusing) win.focus();
  return false;
}

function wstatus(str) {
  window.status = str;
  if (browser_name == 'OP') {
    setTimeout('window.status="";window.status="'+str+'";',15); // for Opera!!!
  }
  return true;
}

// Ajax common functions //

var ajax_status_timeout = false;
// TODO var ajax_status_counter = 0;

function ajax_set_debug(errors) {
  if ($('debug_ajax')) {
    $('debug_ajax').innerHTML = errors;
    $('debug_ajax').setStyle('display', errors?'block':'none');
    if (errors) {
      $('debug_ajax').setStyle('width', 'auto');
      $('debug_ajax').setStyle('height', 'auto');
    }
  }
}

function ajax_clear_debug() {
  if ($('debug_ajax')) $('debug_ajax').setStyle('display', 'none');
}

function ajax_load_start() {
  var elem=arguments.length>0?arguments[0]:0;
  if ($(elem,true)) $(elem).addClass('bl_refresh');
  ajax_load_end();
  ajax_status_prefix = 'Идет загрузка данных';
  ajax_status_string = '';
  ajax_status_timeout = setTimeout("_ajax_load_start()",100);
}

function _ajax_load_start() {
  ajax_status_string += '.';
  if (ajax_status_string.length > 25) ajax_status_string = '';
  window.status = ajax_status_prefix + ajax_status_string;
  ajax_status_timeout = setTimeout("_ajax_load_start()",500);
}

function ajax_load_end() {
  var elem=arguments.length>0?arguments[0]:0;
  if ($(elem,true)) $(elem).removeClass('bl_refresh');
  if (ajax_status_timeout) clearTimeout(ajax_status_timeout);
  window.status = '';
}

// Functions for browser detection //

function get_browser_name() {
  if (!globalVars['browser_name']) { // check in cache
    if (Browser.Engine.trident) n = 'IE';
    else if (Browser.Engine.gecko) n = 'FF';
    else if (Browser.Engine.presto) n = 'OP';
    else n = Browser.Engine.name;
    globalVars['browser_name'] = n; // save to cache
  }
  return globalVars['browser_name'];
}

function get_browser_version() {
  if (!globalVars['browser_version']) { // check in cache
    var u,full_v,v,n,p;
    full_v = navigator.appVersion;
    u = navigator.userAgent;
    v = parseFloat(full_v);
    n = get_browser_name();
    window.status = n+' :: '+navigator.userAgent;
    switch (n) {
      case 'IE':
        if (v >= 4 && (p=full_v.indexOf('MSIE')) != -1) {
          v = parseFloat(full_v.substring(p+4));
        }
        break;
      case 'FF':
        v = parseFloat(u.substring(u.indexOf('Firefox/')+8));
        break;
    }
    window.status = n+' :: '+v;
    globalVars['browser_version'] = v;
  }
  return globalVars['browser_version'];
}

function get_browser_sizes() {
  var winSize = getSize();
  globalVars['browser_sizes'] = [winSize.x,winSize.y];
  return globalVars['browser_sizes'];
}

function get_document_sizes() {
  var docSize = getScrollSize();
  return [docSize.x,docSize.y];
}

function get_browser_pos() {
  var pos = getScroll();
  return [pos.x,pos.y]
}

function getScrollPosition() {
  var pos = getScroll();
  return {"top":pos.x, "left":pos.y};
}

function get_scroll_position_IE() { /* optimize for expression */
  if( document.body && document.body.scrollTop ) { //DOM compliant
    return [document.body.scrollTop,document.body.scrollLeft];
  } else if( document.documentElement && document.documentElement.scrollTop ) { //IE6 standards compliant mode
    return [document.documentElement.scrollTop,document.documentElement.scrollLeft];
  }
  return [0,0];
}

function getWindowSize() {
  var winSize = getSize();
  return {"width":winSize.x, "height":winSize.y};
}

function save_browser_sizes() {
  if (!page_popup) {
    browser_sizes = get_browser_sizes();
    Cookie.write('browser_sizes',browser_sizes.join("x"),{duration:3,domain:'.giport.ru',path:'/'});
  }
}
//// Functions global handlers ////

// OnScroll
function onscroll_main() {
  onscroll_hint();
}

// OnLoad
function onload_main() {
  var time_show_hint = 20000;
  if (page_popup) enable_hint = false;
  onload_ajax();
  window.addEvent('resize', onresize_main);
  if (enable_hint) setTimeout("show_hint(1);",time_show_hint);
  if (page_popup) set_bot_position();
  //if (DIMM) set_block_sheets_width();
}

// OnUnload
function onunload_main() {
  save_browser_sizes();
}

// OnResize
function onresize_main() {
  if (enable_hint) { onresize_hint(); }
  if (page_popup) set_bot_position();
  save_browser_sizes();
  //if (DIMM) set_block_sheets_width();
}

function onload_ajax() {
  enable_ajax = (browser_name=='IE' && browser_version <= 5.5) ? false : true;
}

// submit top search form on all pages
function submitSearch() {
  var f = $('searchForm');
  if (!f) return true;
  var s = $('st0');
  if (s && s.checked) f.target = '';
  else f.target = '_blank';
  f.submit();
  return false;
}

function set_page_min_width_ie() {
  if (Browser.Engine.trident) if (Browser.Engine.version<=4) {
    window.addEvents({
      'load':   function(){ set_page_min_width_ie6_handler(); },
      'resize': function(){ set_page_min_width_ie6_handler(); }
    });
  } else {
    window.addEvents({
      'load':   function(){ set_page_min_width_ie7_handler(); },
      'resize': function(){ set_page_min_width_ie7_handler(); }
    });
  }
}

function set_page_min_width_ie6_handler() {
  var pwrapper  = get_page_wrapper();
  var pminwidth = $('pminwidth')?$('pminwidth'):$('ppminwidth'); /* page or page_popup */
  var minwidth  = $('pminwidth')?987:613;
  if (window.getWidth()<minwidth) {
    pminwidth.setStyle('width',minwidth+'px');
    if (pwrapper != window) pwrapper.setStyle('overflow-x','auto');
  } else {
    if (pwrapper != window) {
      pminwidth.setStyle('width',window.getWidth()-(pminwidth.getHeight()>$('pwrapper').getHeight()?17:0));
      pwrapper.setStyle('overflow-x','hidden');
    } else {
      pminwidth.setStyle('width','100%');
    }
  }
}

function set_page_min_width_ie7_handler() {
  var pwrapper = get_page_wrapper();
  if (pwrapper == window) return false;

  var minwidth = $('pminwidth')?987:613;
  if (window.getWidth()<minwidth) {
    pwrapper.setStyle('overflow-x','auto');
  } else {
    pwrapper.setStyle('overflow-x','hidden');
  }
}

function set_bot_position() {
  if (!$('bot')) return;

  var docHeight = $('ppminwidth').getHeight();
  var winHeight = window.getHeight();

  var botPosition = $('bot').getStyle('position');
  var botHeight   = $('bot').getHeight();
  var botHeight   = botPosition=='fixed'||botPosition=='absolute'?botHeight:0;
  if (docHeight+botHeight<winHeight) {
    if (browser_name != 'IE' || browser_version >= 7)
      $('bot').setStyle('position','fixed');
    else // for IE6, IE5.x
      $('bot').setStyle('position','absolute');

    $('bot').setStyle('bottom','0px');
    $('bot').setStyle('left','0px');
  } else {
    $('bot').setStyle('position','static');
  }
}

/*
function set_block_sheets_width() {
  return;
  $$('.bl_sheets4 .subhead').each(function(subhead){
    subhead.addClass('subhead_set');
    var w = subhead.getWidth();
    var w_sheet = Math.floor(w/4);
    var w_sheet_1 = w - w_sheet*3;
    var first = true;
    $$('.bl_sheets4 .subhead .sheets li').each(function(sheet){
      ww = first ? w_sheet_1 : w_sheet;
      sheet.setStyle('width',ww+'px');
      first = false;
    });
  });
}*/

function scroll_toElement(elem,wrapper) {
  if (!$chk(wrapper)) {
    var wrapper = get_page_wrapper();
  }
  new Fx.Scroll(wrapper).toElement(elem);
}

function get_page_wrapper(default_wrapper) {
  return $('pwrapper') && $(document.body).getStyle('overflow')=='hidden' ? $('pwrapper') : window;
}

//Фуекции промотки менюшки в болках


function block_sheet_next() {
	var scroll = document.getElementById('scroll_list');
	var list =  document.getElementById('scroll');
	var n = scroll.childNodes.length;
	var l = scroll.offsetLeft;
	var myEffect = new Fx.Morph('scroll_list', {duration: 'short', transition: Fx.Transitions.Sine.easeOut});
	if (browser_name != 'IE')
		step = scroll.childNodes.item(ii).offsetWidth;
	else
		step = scroll.childNodes.item(ii-1).offsetWidth;
	if (((browser_name != 'IE')&&(ii < n-3))||((browser_name == 'IE')&&(ii<n-2))) {
		myEffect.start({
   			'left': (l - step)
		});
		pos = scroll.offsetWidth;
		ii++;
	}
}
function block_sheet_prev() {
	var scroll = document.getElementById('scroll_list');
	var n = scroll.childNodes.length;
	var l = scroll.offsetLeft;
	var myEffect = new Fx.Morph('scroll_list', {duration: 'short', transition: Fx.Transitions.Sine.easeOut});
	if (browser_name != 'IE')
		step = scroll.childNodes.item(ii-1).offsetWidth;
	else
		step = scroll.childNodes.item(ii-2).offsetWidth;
	if (ii > 1) {
		myEffect.start({
    		'left': (l + step)
		});
		pos = scroll.offsetWidth;
		ii--;
	}
} 
