/* Library Common */
/*

  Author:            Gorobiy Sergey
  
  Core:  version     0.8
         fold        2007.12.23
		
  Last edition   :   2008.02.23 (добавлен клас предзагрузки)

*/
/*
  Notation: для сайта компании Alpina.
*/
/* ///////////////////////////////////// Определитель браузера  ////////////////////////////////////////////////////////////// */
/* Дефолтный вывод информации о браузере: №version (##############) */
/*      движoк        */
switch (navigator.appName) {
   case "Camino":
     var dvizok='Gecko';
     break;
   case "Safari":
     var dvizok='Gecko';
     break;
   case "Epiphany":
     var dvizok='Gecko';
     break;
   case "Galeon":
     var dvizok='Gecko';
     break;
   case "K-Meleon":
     var dvizok='Gecko';
     break;
   case "Mozilla":
     var dvizok='Gecko';
     break;
   case "Mozilla Firefox":
     var dvizok='Gecko';
     break;
   case "Netscape":
     var dvizok='Gecko';
     break;
  case "Microsoft Internet Explorer":
     var dvizok='MSIE';
     break;
  case "Opera":
     var dvizok='MSIE';
     break;
  default:
     var dvizok='Gecko';
}

/*    имя и версия    */
var Browser=
{
Name    : window.navigator.appName,
Version : window.navigator.appVersion.substring(0,window.navigator.appVersion.indexOf("(")),
Decrip  : window.navigator.appVersion.substring(window.navigator.appVersion.indexOf("("),window.navigator.appVersion.lastIndexOf(")")+1),
MSIEver : window.navigator.appVersion.substr(window.navigator.appVersion.indexOf("MSIE")+4,4)
};

/* ///////////////////////////////////////////// end //////////////////////////////////////////////////////////////////////// */


/*
 * Предзагрузка
 */
    /* Инициация основного класа всех предзагрузок, их разные виды подключаются потом */
    function _preloadsImages(thisObject) 
	{
       this.thisObject = this;
    }
    var preloadsImages = new _preloadsImages(this);
	
	/* Подключение вида предзагрузки: кнопки меню */
	/*
    function setButtonsMenu()
	{
	   var defaults_im      =  new Image;
	   var overs_im         =  new Image;
	       defaults_im.src  = 'im/button_default.gif';
	       overs_im.src     = 'im/button_over.gif';
		
	   _preloadsImages.prototype.buttonsmenu = {def       : defaults_im.src, 
	                                            over      : overs_im.src
												};
	}
	*/

/* end */


/* Все HTML елементы документа */
if (dvizok=='Gecko') var AllElements=document.getElementsByTagName("*");
if (dvizok=='MSIE') var AllElements=document.all;
/* end */



/* Установка реакции на событие */
function getEvent(object,nameEvent,nameFunction,isBubble)
{
  if (dvizok=='Gecko' || Browser.Name=="Opera") 
  {
	  object.addEventListener(nameEvent,nameFunction,isBubble);
	  return ;
  }
  
  if (dvizok=='MSIE' && Browser.Name!="Opera") 
  {
	  object.attachEvent('on'+nameEvent,nameFunction);
	  return ;
  }
}
/* end */
/* Удаление реакции на событие */
function removeEvent(object,nameEvent,nameFunction,isBubble)
{
  if (dvizok=='Gecko' || Browser.Name=="Opera") 
  {
	  object.removeEventListener(nameEvent,nameFunction,isBubble);
	  return ;
  }
  
  if (dvizok=='MSIE' && Browser.Name!="Opera") 
  {
	  object.detachEvent('on'+nameEvent,nameFunction);
	  return ;
  }
}
/* end */
/* Убирание просачивания события */
function stopPropagations(e)
{
  if (dvizok=='Gecko' || Browser.Name=="Opera") 
  {
	  e.stopPropagation();
	  return ;
  }
  
  if (dvizok=='MSIE' && Browser.Name!="Opera") 
  {
	  e.cancelBubble=true;
	  return ;
  }
}
/**/

/* Определение целевого объекта при событии */
function getObject(e)
{
  if (dvizok=='Gecko' || Browser.Name=="Opera") 
  {
	  return e.target;
  }
  if (dvizok=='MSIE' && Browser.Name!="Opera") 
  {
	  return e.srcElement;
  }
}
/**/



/* Узнавание координаты при прокрутке (для Gecko: window.pageYOffset) */

var global_offsetYIE=0;
var global_offsetXIE=0;

function gogogo() {
  document.body.attachEvent('onclick', hurrah);
  var evt=document.createEventObject();
  document.body.fireEvent('onclick',evt);
}
function hurrah() { 
  global_offsetYIE=event.offsetY;
  global_offsetXIE=event.offsetX;
}

/* end */


/* Функция получения координаты 0,0 относительно определенного div-а или прч. */
/* e-event; object-объект; */
function getCoord(e,object,isMargins,popravkaX,popravkaY,eventPlace)
{
	 //
     if (dvizok=='Gecko' || Browser.Name=="Opera") 
	 {
		 
	  if (isMargins==false)
	  {
		var x=(e.clientX);
	      x=(x+window.pageXOffset)-popravkaX;
	    var y=(e.clientY); 
	      y=(y+window.pageYOffset)-popravkaY;
	  }
	  
	  if (isMargins==true)
	  {
	    var x=((e.clientX)-(parseInt(object.style.marginLeft)));
	        x=(x+window.pageXOffset)-popravkaX;
	    var y=((e.clientY)-(parseInt(object.style.marginTop))); 
	        y=(y+window.pageYOffset)-popravkaY;
		//alert(object.parentNode.parentNode.style.marginLeft);
	  }
	  
	 }
	 //
     if (dvizok=='MSIE' && Browser.Name!="Opera")
	 {
	   if (eventPlace=="window")
	   {
	    gogogo();
	    var x=global_offsetXIE;
	    var y=global_offsetYIE;
	   }
	   if (eventPlace=="object")
	   {
	    var x=e.offsetX;
        var y=e.offsetY;
	    //alert(global_offsetYIE);
	   }
	 }
	 //
  //alert(x+' '+y);

  var returnArray=new Array();
      returnArray[0]=x;
	  returnArray[1]=y;

  return returnArray;
}
/* end */


/* //////////////////// Коррекция координат в зависимости от величин окна и краев /////////////////////////////////////////// */
function correctedCoords(widthObj,heightObj,x,y,e)
{
  /* крайние величины для краев */
  var heightMargin=130; /* px */
  var widthMargin=130; /* px */
  /**/
  
  widthObj=parseInt(widthObj);
  heightObj=parseInt(heightObj);
  
   var returnArray=new Array();
       //returnArray[0]=x;
	   //returnArray[1]=y;
  
  napolotneX=e.clientX;
  napolotneY=e.clientY;
  
  
  if (((window.screen.availHeight)-napolotneY)>=heightObj) 
  {
	  /* коррекция крайних величин */
      var teorObjMarginHeight=((window.screen.availHeight)-napolotneY)-heightObj;
      if (teorObjMarginHeight<heightMargin) returnArray[1]=(y-heightMargin);
	  if (teorObjMarginHeight>heightMargin) returnArray[1]=y;
      /**/
	  //returnArray[1]=(y-50);
  }
  
  if (((window.screen.availHeight)-napolotneY)<heightObj)
  {
	  /* коррекция крайних величин */
      var teorObjMarginHeight=((window.screen.availHeight)-napolotneY)-heightObj;
      if (teorObjMarginHeight<heightMargin) returnArray[1]=((y-heightObj)+heightMargin);
	  if (teorObjMarginHeight>heightMargin) returnArray[1]=(y-heightObj);
      /**/
	  //returnArray[1]=(y-heightObj);
  }
  
  /* -------------------- */
  
  if (((window.screen.availWidth)-napolotneX)>widthObj) 
  {
	  /* коррекция крайних величин */
      var teorObjMarginWidth=((window.screen.availWidth)-napolotneX)-widthObj;
      if (teorObjMarginWidth<widthMargin) returnArray[0]=(x-widthMargin);
	  if (teorObjMarginWidth>widthMargin) returnArray[0]=x;
      /**/
  }
  
  if (((window.screen.availWidth)-napolotneX)<widthObj) 
  {
	  /* коррекция крайних величин */
      var teorObjMarginWidth=((window.screen.availWidth)-napolotneX)-widthObj;
      if (teorObjMarginWidth<widthMargin) returnArray[0]=((x-widthObj)+widthMargin);
	  if (teorObjMarginWidth>widthMargin) returnArray[0]=(x-widthObj);
      /**/
	  //returnArray[0]=(x-widthObj);
  }
  
  
  return returnArray;
  
}
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */



/* ///////////////////////////////// функция работы с прозрачностью ///////////////////////////////////////////////////////// */
/*
    filter: Alpha(opacity=10);     /////////////////////// IE                  ////////////// 
								  
	-moz-opacity: 0.1;             /////////////////////// Mozilla <=1.6       ////////////// 
								  
	-khtml-opacity: 0.1;           /////////////////////// Konqueror 3.1       ////////////// 
	                               /////////////////////// Safari <=1.1        ////////////// 
	                                    							  
	opacity: 0.2;                  ////////////////////// Safari >=1.2,        /////////////// 
								   ////////////////////// Firefox >=0.9        /////////////// 
								   ////////////////////// Netscape             /////////////// 
								   ////////////////////// Opera                /////////////// 
								   ////////////////////// Mozilla >=1.7        ///////////////
	
*/
function setOpacity(object,value)
{
  if (dvizok=='Gecko')
  {
	 object.style.opacity=(value/10);
  }
  
  if (dvizok=='MSIE')
  {
	 if (Browser.Name=="Microsoft Internet Explorer") object.style.filter='Alpha(opacity='+(value*10)+')';
	 if (Browser.Name=="Opera") object.style.opacity=(value/10);
  }
  
}

function getOpacity(object)
{
  if (dvizok=='Gecko')
  {
	 return (object.style.opacity*10);
  }
  
  if (dvizok=='MSIE')
  {
	 if (Browser.Name=="Microsoft Internet Explorer") 
	 { 
	   var FilterValue=object.style.filter;
       var start=FilterValue.indexOf("=")+1;
	   var finish=FilterValue.lastIndexOf(")");
	   var opIEvalue=FilterValue.substring(start,finish);
       return (opIEvalue/10);
	 }
	 if (Browser.Name=="Opera") return (object.style.opacity*10);
  }
}

/* //////////////////////////////////////// end ///////////////////////////////////////////////////////////////////////////// */


/* ///////////////////////////////////////// Плавное изменение прозрачности  //////////////////////////////////////////////// */
var Smooth=    { thisObject    :  '',
                 thisAction    :  '',
				 
				 smoothOpacity : function(object,action)
				                 {
									 if (action=="over")
  									 {
										 this.thisObject=object;
										 this.thisAction="over";
										 Smooth.managerSmooth();
										 return true;
  									 }
  									 if (action=="out")
  									 {
										 this.thisObject=object;
										 this.thisAction="out";
										 Smooth.managerSmooth();
										 return true;
  									 }
								 },
								 
				managerSmooth  : function()
				                 {
									 if (this.thisAction=="over") 
									 {
									   if ((getOpacity(this.thisObject))<10) Smooth.goSmooth();
									 }
                                     if (this.thisAction=="out") 
									 {
									   if ((getOpacity(this.thisObject))>0) Smooth.goSmooth();
									 }
                                     return true;
							 	 },
								 
			    goSmooth       : function()
				                 {
									 var opObject=getOpacity(this.thisObject);
  
  									 if (this.thisAction=="over")
  									 {
  									 if (opObject<10)
  									 {
    									 opObject++;
   										 setOpacity(this.thisObject,opObject);
    									 setTimeout("Smooth.goSmooth()",10);
  									 } else {
										 Smooth.managerSmooth();
  									 }
  									 }
  
  									 if (this.thisAction=="out")
  									 {
  									 if (opObject>0)
  									 {
    									 opObject--;
   										 setOpacity(this.thisObject,opObject);
    									 setTimeout("Smooth.goSmooth()",10);
  									 } else {
										 Smooth.managerSmooth();
 									 }
									 }
								 }
				 
                }

/* ////////////////////////////////////////////////// end /////////////////////////////////////////////////////////////////// */


