var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.userAgent,
			subString: "IceWeasel",
			identity: "IceWeasel"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

var isIE=(BrowserDetect.browser=='Explorer');
var browserVersion=BrowserDetect.version;

function keyCodeFunc(event)
  {
    var eventevent = event ? event : (window.event ? window.event : null);
    var keyCode = eventevent.charCode ? eventevent.charCode : (eventevent.keyCode ? eventevent.keyCode : eventevent.which); 
    return keyCode;
  }

function onlyNum(value)
  {
    return (value<=57 && value>=48);
  }
  
function controlKeys(key)
  {
    return (key==8 || key==9 || key==35 || key==36 || key==45 || key==46|| key<=40 && key>=35)
  }


function charCount(obj)
  {
    var counter=0;
    for (i=0;i<obj.inString.length;i++)
      {
        if (obj.inString[i]==obj.whichChar) counter++;
      }
    return counter;
  }

function regexpFilter(filter,str)
  {    
    var regxp=new RegExp(filter);
    var matches=str.match(regxp);
    if (matches!=null) return true;
      else return false;
  }

function roundedBox()
  {
    var boxes=$$('.box');
    var contentBoxes=$$('.contentBox');
    var tabPages=$$('.tabPage');
    var roundedTables=$$('.roundedTable');
    var _w=0, _h=0;
    var _leftCorner, _rightCorner;
    boxes=boxes.concat(contentBoxes);
    for (i=0;i<boxes.length;i++)
      {
        _w= boxes[i].offsetWidth;
        _h= boxes[i].offsetHeight;
        _leftCorner=document.createElement('div');
        _rightCorner=document.createElement('div');
/*        if (Element.hasClassName(boxes[i],'loginBox'))
          {
            _leftCorner.className='loginBoxLeftCorner';
            _rightCorner.className='loginBoxRightCorner';
          }*/
        if (Element.hasClassName(boxes[i],'darkBlue'))
          {
            _leftCorner.className='darkBlueLeftCorner';
            _rightCorner.className='darkBlueRightCorner';
          }
        if (Element.hasClassName(boxes[i],'lightBlue'))
          {
            _leftCorner.className='lightBlueLeftCorner';
            _rightCorner.className='lightBlueRightCorner';
          }
        if (Element.hasClassName(boxes[i],'yellowBox'))
          {
            _leftCorner.className='yellowBoxLeftCorner';
            _rightCorner.className='yellowBoxRightCorner';
          }
        _rightCorner.style.left=parseInt(_w-7)+'px';
        _rightCorner.style.top=parseInt(_h-7)+'px';
        
        _leftCorner.style.left='0px';
        _leftCorner.style.top=parseInt(_h-7)+'px';
        
        boxes[i].appendChild(_rightCorner);
        boxes[i].appendChild(_leftCorner);
      }

   for (i=0;i<tabPages.length;i++)
    {
        _w= tabPages[i].offsetWidth;
        _h= tabPages[i].offsetHeight;
        _leftCorner=document.createElement('div');
        _rightCorner=document.createElement('div');

        _leftCorner.className='tabPagesLeftCorner';
        _rightCorner.className='tabPagesRightCorner';
        
        if (isIE && browserVersion<7)
          {
            _leftCorner.style.left='-3px';
            _leftCorner.style.bottom='53px';
          }
        else
          {
            _leftCorner.style.left='0px';
            _leftCorner.style.bottom='0px';
          }

        if (isIE && browserVersion<7) 
          {
            _rightCorner.style.right='3px';
            _rightCorner.style.bottom='53px';
          }
        else 
          {
            _rightCorner.style.right='0px';
            _rightCorner.style.bottom='0px';
          }
        
        tabPages[i].appendChild(_leftCorner);
        tabPages[i].appendChild(_rightCorner);
    }      
  }

function formatNumber(num,prefix){
   prefix = prefix || '';
   num += '';
   var splitStr = num.split('.');
   var splitLeft = splitStr[0];
   var splitRight = splitStr.length > 1 ? '.' + splitStr[1] : '';
   var regx = /(\d+)(\d{3})/;
   while (regx.test(splitLeft)) {
      splitLeft = splitLeft.replace(regx, '$1' + ' ' + '$2');
   }
   return splitLeft + splitRight + prefix;
}

function unformatNumber(num) {
   return num.replace(/([^0-9\.\-])/g,'')*1;
}

/* prototype exceptions */

Array.prototype.inArray = function (value)

// Returns true if the passed value is found in the array.  Returns false if it is not.

{

    var i;

    for (i=0; i < this.length; i++) {

        if (this[i] === value) {

            return true;

        }

    }

    return false;

};



function topMenuFunc()
    {
        var submenus=document.getElementsByClassName('menuLevel2');
        var parent=new Array();
        var tID;
        var _pos;
        var browserAgent=BrowserDetect.browser;
        for (i=0;i<submenus.length;i++)
            {
                parent[i]=submenus[i].parentNode;
                parent[i].onmouseover=function()
                    {
                        tID='sub'+this.id; 
                        if ($('splashScreen')) 
                            {                                
                                _pos=(browserAgent=='Explorer')?'53px':'60px';
                                Element.relativize($('topMenu'));                                
                                $(tID).style.bottom=_pos;
                            }
                        Element.removeClassName(tID,'hideSubMenu');
                        Element.addClassName(tID,'showSubMenu');
                    }
                parent[i].onmouseout=function()
                    {
                        tID='sub'+this.id;
                        Element.removeClassName(tID,'showSubMenu');
                        Element.addClassName(tID,'hideSubMenu');
                    }
            }
    }


var lineType=new Array();

function tableInit(tableID)
    {
        var _tr=$(tableID).getElementsByTagName('tr');
        var c=0;
        var _class;
        var cells, link;
        for (i=0;i<_tr.length;i++)
            {
                cells=_tr[i].getElementsByTagName('td');
                if (_tr[i].className!='title' && _tr[i].className!='' && !_tr[i].className.match(' ') && !Element.hasClassName(_tr[i],'groupTitle'))
                    {
                        _tr[i].onmouseover=function(){
                            Element.addClassName(this,'on');
                        }               
                        _tr[i].onmouseout=function(){
                            Element.removeClassName(this,'on');
                        }
                        _tr[i].onclick=function(event){
                            event || (event = window.event);
                            var source;
                        	  if (typeof event.target != 'undefined') 
                        	  {
                        	    source = event.target;
                        	  }
                        	  else if (typeof event.srcElement != 'undefined') 
                        	  {
                        	    source = event.srcElement;
                        	  }                        	  
                            cells=this.getElementsByTagName('td');
                            link=cells[0].firstChild;
                            if (!link.href)
                            {
                                _last=this.cells.length-1;
                                links=cells[_last].getElementsByTagName('A');
                                for (l=0;l<links.length;l++)
                                {
                                    if (links[l].className.indexOf('_'+siteLang)>0)
                                        var defLink=links[l];
                                }
                                link=defLink;
                            }
                            if (source.tagName.toUpperCase()!='A')
                            {
                              if (link.href)
                              {
                                  if (Element.hasClassName(link,'outerLink'))
                                      {
                                          window.open(link.href,'','')
                                      }
                                  else document.location.href=link.href;
                              }
                              else
                              {
                                alert(messages['noLink']);
                              }
                            }
                        }
                        
                        _class=_tr[i].className;
                        if (!lineType.inArray(_class))
                            {
                                lineType.push(_class);
                                lineType[_class]=1;
                            }
                        else
                            lineType[_class]++;
                    } 
            }
    }


function strConvert(str)
    {
        var accents='áéíóöőúüű ';
        var replaced='aeiooouuu_';
        var encoded=str.toLowerCase();
        var retText='';
        var pos;
        for (i=0;i<encoded.length;i++)
            {
                pos=accents.indexOf(encoded.charAt(i));
                if (pos>-1) 
                    {
                        retText+=replaced[pos];
                    }
                else
                    {
                        retText+=encoded[i];
                    }
            }
        return retText;
    }




var myGlobalHandlers = {

		onCreate: function(){

			Element.show('systemWorking');

		},



		onComplete: function() {

			if(Ajax.activeRequestCount == 0){

				Element.hide('systemWorking');

			}

		}

	};



Ajax.Responders.register(myGlobalHandlers);


function systemWorking()
  {
    var working=document.createElement('div');
    working.id='systemWorking';
    document.body.appendChild(working);
  }

function urlParams()
    {
        var _url=document.location.href;
        var params=_url.substr(_url.lastIndexOf('/')+2).split('&');
        return params;
    }

function nextShop()
  {
    return (Element.hasClassName($('category_send'),'nextBtnRed'));
  }

function nextBtnChange(val)
  {
    if (val!=1)
      {
        Element.removeClassName($('category_send'),'nextBtnGray');
        Element.addClassName($('category_send'),'nextBtnRed');
      }
    else
      {
        Element.removeClassName($('category_send'),'nextBtnRed');
        Element.addClassName($('category_send'),'nextBtnGray');
      }
  }


function selectCheck()

    {
        $('category').onchange=function()
          {
            if (this.value!=1) nextBtnChange(0);
            else nextBtnChange(1);
          }
    }


function toggleBlock()
  {
        var toggleLinks=document.getElementsByClassName('toggleLink');
        var tID;
        for (i=0;i<toggleLinks.length;i++)
        {
            toggleLinks[i].onclick=function()
                {
                    tID=this.id.substr(this.id.indexOf('_')+1);
                    Effect.toggle(tID,'slide');
                    return false;
                }
        }
  }


function contentBoxes()
  {
    var contentBoxes=document.getElementsByClassName('contentBoxes');
    var boxes=document.getElementsByClassName('boxes');
    
    var maxHeight=new Array();
    for (i=0;i<contentBoxes.length;i++)
      {
        maxHeight[i]=0;
        var contentBox=document.getElementsByClassName('contentBox',contentBoxes[i]);
        for (j=0;j<contentBox.length;j++)
          {
            if (contentBox[j].offsetHeight>maxHeight[i]) maxHeight[i]=contentBox[j].offsetHeight;
          }
      }
    for (i=0;i<contentBoxes.length;i++)
      {
        var contentBox=document.getElementsByClassName('contentBox',contentBoxes[i]);
        for (j=0;j<contentBox.length;j++)
          {
            contentBox[j].style.height=maxHeight[i]+'px';
          }
      }
    var maxHeight2=new Array();
    var _parent;
    for (i=0;i<boxes.length;i++)
      {
        var elements=boxes[i].getElementsByTagName('LI');        
        maxHeight2[i]=0;
        for (j=0;j<elements.length;j++)
          {
            _parent= elements[j].parentNode;
            if (Element.hasClassName(_parent,'boxes'))
              {
                if (elements[j].offsetHeight>maxHeight2[i]) maxHeight2[i]=elements[j].offsetHeight;
              }            
          }
      }
    for (i=0;i<boxes.length;i++)
      {
        var elements=boxes[i].getElementsByTagName('LI');        
        for (j=0;j<elements.length;j++)
          {
            _parent= elements[j].parentNode;
            if (Element.hasClassName(_parent,'boxes')) elements[j].style.height=maxHeight2[i]+'px';
          }
      }
  }

function sizeParams()
  {
      var ret=new Array();
      _obj=sizeParams.arguments[0];
      wfilter=new RegExp(/w[0-9]{1,4}/);
      hfilter=new RegExp(/h[0-9]{1,4}/);
      w=''+_obj.className.match(wfilter);
      h=''+_obj.className.match(hfilter);      
			ret[0]=w.substr(1)>0?w.substr(1):350;
			ret[1]=h.substr(1)>0?h.substr(1):150;
      return(ret);
  }

function reloadimage() 
{  
    var _captchaImg=$('captchaImg');
	var url = "/cap_form.bbx";
	new Ajax.Updater(
		_captchaImg,
		url,
		{
			method: "get"
		}
	);
} 

function linkEvent()
  {
    if ($('newCaptcha')) 
    {
        $('newCaptcha').onclick=function()
        {
            reloadimage();
            return false;
        }
    }
    
    $('to_top_link').onclick=function()
    {
        window.scrollTo(0,0); 
        return false;
    }
    
    var snd=$$('.sendToMail');
    snd.each(function(values, index) 
    {
        values.href="mailto:yourfriend@company.com?subject=FYI&body="+document.location.href;
    });

    var pr=$$('.print');
    pr.each(function(values, index) 
    {
          values.onclick=function()
             {         
              window.print();
              return false;
             }
    });

    var outers=$$('.outerLink');
    outers.each(function(values, index) 
    {
        values.onclick=function()
        {
          window.open(this.href,'','');
          return false;
        }
    });
   
    var popups=$$('.popupwindow');
    popups.each(function(values, index) 
    {
        values.onclick=function()
        {
          if (this.className.indexOf('popup_w'))
            {
              if (this.className.indexOf('_r')) resizable='yes';
              if (this.className.indexOf('_s')) scrollbars='yes';
              
              var size=sizeParams(this);
              var _window=window.open(this.href,'','width='+size[0]+', height='+size[1]+',toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars='+scrollbars+', resizable='+resizable+', screenx=100, screeny=100');
            }
          else
            {
              window.open(this.href,'','');
            }          
          return false;
        }        
    });
   
    var delicious=$$('.delIcioUs');
    delicious.each(function(values, index) 
    {
      values.onclick=function()
        {
          var link="http://del.icio.us/post?url="+document.location.href+"&title="+this.title;
          window.open(link,'','');
          return false;
        }
    });

    var shopLinks=$$('.shopLink');
    shopLinks.each(function(values, index) 
    {
        values.onclick=function()
          {
            var formId=this.id.substr(0,this.id.indexOf('_'));
            if($(formId))
              {
                $(formId).target='_blank';
                $(formId).submit();
              }
            return false;
          }
    });

    var backlinks=$$('.back');
    backlinks.each(function(values, index) 
    {
        values.onclick=function()
          {
            if (Element.hasClassName(this,'back2'))
              {
                history.back(2);
              }
            else if (Element.hasClassName(this,'back3'))
              {
                history.back(3);
              }
            else history.back();
            return false;
          }
    });

    var infoLinks=$$('.infoLink');
    backlinks.each(function(values, index) 
    {
        values.onclick=function()
          {
            window.open(this.href,' ','width=500, height=400, resizable=yes,scrollbars=yes');
            return false;
          }
    });
  }

function systemWorking()
  {
    var working=document.createElement('div');
    working.id='systemWorking';
    document.body.appendChild(working);
  }


function openElements()
  {
    var opens=$$('.canOpen');
    var handle, subBlock, openSign, _parent;
    for (i=0;i<opens.length;i++)
    {
      handle=opens[i];
      handle.onclick=function()
        { 
          switch (this.up().tagName.toLowerCase()) {
            case "fieldset": 
                this.up().className=this.className;
                if (Element.hasClassName(this.up(),'canOpen')) 
                    Element.removeClassName(this.up(),'canOpen');break;
          }
          if (Element.hasClassName(this,'closedMenu'))
            {
              Element.removeClassName(this,'closedMenu');
              Element.addClassName(this,'openedMenu');
            }
          else
            {
              Element.removeClassName(this,'openedMenu');
              Element.addClassName(this,'closedMenu');
            }
          subBlock=this.nextSibling.tagName=='DIV'?this.nextSibling:this.nextSibling.nextSibling;
          if (!subBlock) subBlock=this.nextSibling.tagName=='UL'?this.nextSibling:this.nextSibling.nextSibling;
          if (!subBlock) subBlock=this.nextSibling.tagName=='P'?this.nextSibling:this.nextSibling.nextSibling;
          //openSign=this.firstChild.firstChild
          if (subBlock)
            {
              if (Element.hasClassName(subBlock,'closed'))
                {
                  Element.removeClassName(subBlock,'closed');
                  if (openSign) this.firstChild.firstChild.nodeValue='-';
                }
              else
                {
                  Element.addClassName(subBlock,'closed');
                  if (openSign) this.firstChild.firstChild.nodeValue='+';
                }
            }
          return false;
        }
    
    }
  }

function showElement(element)  
{
    $(element).style.display='block';
}

function hideElement(element)  
{
    $(element).style.display='none';
}

function gotopLink()
{
        var viewport_height = (self.innerHeight) ? self.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : (document.body) ? document.body.clientHeight : 0;
        var page_height = document.getElementsByTagName('body')[0].offsetHeight;
        if (page_height > viewport_height) 
        {
            Element.removeClassName($('toTop'),'hide');
        }
}

function keyEvent(evt)
{
    var evt = (evt) ? evt : ((event) ? event : null);
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
    if ($('activeTab') && evt.keyCode == 13 && node.type=="text")
    {
        Event.stop(evt);
        ajaxFields();
    }
}

function flashLink(param){ 
  var link='';
  switch (param) {
    case 1 : link='/network-security/zorp-gateway';break;
  }
  document.location.href=link;
}
/** IE6 need position:fixed css property, set the top position every page load and scroll event
*
*/ 
var flyContentFunc={
    init: function()
    {
        this.setPos();
        Event.observe(window,'scroll',this.setPos.bind(this));
    },
    setPos: function()
    {
        topPos=parseInt(Element.cumulativeScrollOffset($('flyRightContent')).top+185);
        $('flyRightContent').setStyle({
            top: topPos+'px'
        })
    }
} 
 
function siteInit()
    {
        if ($('shopCart')) shopCart();

        if ($('category')) selectCheck();
//        if ($('topMenu')) topMenuFunc();
        gotopLink();
/*	$('cve_form').onkeypress = function(event) {
	    alert(event.keyCode);
	}*/
//	if ($('cve_form')) search_cve();
/*	$('cve_search_number').onkeypress = function(e) {
//	    alert('ide jott');
	    if (e.keyCode == 13)
		search_cve();
	}*/
        var dateSelectForms=$$('.radioFields');
        if (dateSelectForms.length>0) dateSelectToForm(dateSelectForms);
        var forms=document.getElementsByTagName('form');
        if (forms.length>0) formInit(forms);
        var _submits=document.getElementsByClassName('submitBtn');
        if (_submits.length>0) formSubmit(_submits);
        var canAddRows=document.getElementsByClassName('canAddRow');
        if (canAddRows.length>0) addRow();
        /* right side banner js; fix IE6 position:fixed css error */
        var flyContents=$$(".flyContent");
        if (flyContents.length>0 && isIE && BrowserDetect.version<7)
            {
                flyContentFunc.init();
            }
        /* right side banner js end */
        var _video=document.getElementsByClassName('video');
        if (_video.length>0) {
//            alert('Van video');
            showVideo();
        }
        roundedBox();
        linkEvent();
        rating();
        toggleBlock();
        formsInit();
        contentBoxes();
        tabsInit();
        ajaxFields();
        systemWorking();
        if ($('sendcsr')) FindProviders();
        ajaxTableInit();
        Event.observe(document,'keypress',keyEvent);
        //auditInit();
        openElements();
}



var balabit={

  include: function(component) {
		document.writeln('<script type="text/javascript" src="/'+component+'"></script>');

	},

    

  load: function() { 

		try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}

	

		components = new Array(
			'js/lib/dragdrop',

			'js/lib/effects',

			'js/lib/lightbox',

			'js/lib/flashObject',

			'js/json2',
			'js/forms',
			'js/shop',
			'js/validate',
			'js/tooltip',
			'js/tooltip-v0.1',
			'js/ftiens4',
			'js/tabs',
			'js/tabmenu',
			'js/rating', 
			'js/import',
            'js/scroll'
//			'js/mootools',
//			'js/vlaCal'
			//'js/analytics'
		);

	      

		for (i=0;i<components.length;i++)
		{
		    document.writeln('<script type="text/javascript" src="/'+components[i]+'.js"></script>');
		}
		Event.observe(window,'load',siteInit);

	}  

}



balabit.load();
