
var browserOS = -1;
// -1 = Unknown
// 0 = Windows
// 1 = Macintosh
// 2 = Linux
var browserVersion = -1.0;
var browserType = -1;
var browserSubType = -1;
// -1 = Unknown
//  0 = IE
//  1 = Gecko (Firefox & etc)
//  2 = Opera
//  3 = Safari
//  4 = Chrome

function detectBrowser()
{
 var sAgent = navigator.userAgent.toLowerCase() ;

 // detect os
 if ( sAgent.indexOf ( "win"   ) != -1 ) browserOS = 0;
 if ( sAgent.indexOf ( "max"   ) != -1 ) browserOS = 1;
 if ( sAgent.indexOf ( "linux" ) != -1 ) browserOS = 2;
 
 // Internet Explorer
 var vr, vr2;
 vr = sAgent.indexOf("msie");
 if ( vr != -1 && sAgent.indexOf("mac") == -1 && sAgent.indexOf("opera") == -1 )
 {
  browserType = 0;
  vr  = sAgent.substring ( vr + 5, sAgent.length );
  vr2 = vr.indexOf ( ";" );
  if ( vr2 != -1 )
  {
   browserVersion = parseFloat ( vr.substring ( 0, vr2 ) );
  }  
 }

 // Gecko (Opera 9 tries to behave like Gecko at this point).
 if ( navigator.product == "Gecko" )
 {
  browserType = 1;
  if ( sAgent.indexOf("firefox") != -1 )
  {
   browserSubType = 0;
  }
 }
 
 // Opera
 if ( navigator.appName == 'Opera' )
 {
  browserType = 2;
  vr = navigator.appVersion.indexOf ( " " );
  if ( vr != -1 )
  {
   browserVersion = parseFloat ( navigator.appVersion.substring ( 0, vr ) );
  }
 }
 
 // Safari
 if ( sAgent.indexOf( 'safari' ) != -1 )
 {
  browserType = 3;
  //alert ( "Safari" );
 }

 // Safari
 if ( sAgent.indexOf( 'chrome' ) != -1 )
 {
  browserType = 4;
  //alert ( "Safari" );
 }
  
}

detectBrowser ();

var dummy_path = "";

function dummy_image_path ( p )
{
 
 dummy_path = p;

}

function draw_image ( src, width, height )
{

 if ( document.all )
 {

  document.write ( "<img src=\"" + dummy_path + "\" width=\"" + width + "\" height=\"" + height + "\" style=\"filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')\" />" );

 } else {

  document.write ( "<img src=\"" + src + "\" width=\"" + width + "\" height=\"" + height + "\" />" );

 }

}

function getClientSize ( win )
{

 var w = window; if ( win ) w = win;

 if ( document.all ) return { width: w.document.body.clientWidth, height: w.document.body.clientHeight };

 return { width: w.innerWidth, height: w.innerHeight }; 

}

function getBounds(e)
{
 var left = e.offsetLeft;
 var top  = e.offsetTop;
 for ( var parent = e.offsetParent; parent; parent = parent.offsetParent )
 {
  left += parent.offsetLeft;
  top  += parent.offsetTop;
  // for everybody exclude opera
  if ( browserType != 2 )
  {
   left -= parent.scrollLeft;
   top  -= parent.scrollTop;
  }
 }
 return { left: left, top: top, width: e.offsetWidth, height: e.offsetHeight };
}

function tunePNGs4IE ()
{
 // only 4 ie
 if ( browserType == 0 )
 {
 
  var ext4test;
  var all_imgs = document.getElementsByTagName ( 'img' );
		
  for ( var i = 0 ; i < all_imgs.length ; i++ )
  {
   ext4test = getExtension ( all_imgs[i].src );
   // catched png image
   if ( ext4test == "png" )
   {
    all_imgs[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader (src='" + all_imgs[i].src + "', sizingMethod='scale')";
    all_imgs[i].src = "http://" + location.hostname + "/images/dummy.gif";    
   }   
  }
 
  var all_elements = document.getElementsByTagName ( "*" );
  for ( i = 0 ; i < all_elements.length ; i++ )
  {
  
   // catched elemt with background
   if ( all_elements[i].background )
   {
    ext4test = getExtension ( all_elements[i].background );
	if ( ext4test == "png" )
	{
	 all_elements[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader (src='" + all_elements[i].background + "', sizingMethod='scale')";
	 all_elements[i].background = "";
	}
   }
   
   // cathed elemnt with background in style
   if ( all_elements[i].style.background )
   {
    ext4test = getExtension ( all_elements[i].style.background );
	if ( ext4test == "png" )
	{
	 all_elements[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader (src='" + all_elements[i].style.background + "', sizingMethod='scale')";
	 all_elements[i].style.background = "";
	}
   }
   
  }
 
 }
}

var mX, mY;
var dragging = false;
var off_x = 0;
var off_y = 0;
var e2drag = null, e2bg = null;

function drag_start ()
{
 var elm; 
 if ( drag_start.arguments.length > 0 )
 {
  elm = drag_start.arguments[0];
 } else {
  elm = this;
 }
 
 var b  = getBounds ( elm );
 off_x  = mX - b.left;
 off_y  = mY - b.top;
 
 // creating background
 if ( !e2bg )
 {
  e2bg = document.createElement ( 'DIV' );
  document.body.appendChild ( e2bg );
  e2bg.style.position = "absolute"
  e2bg.style.left     = "0px";
  e2bg.style.top      = "0px";
  e2bg.style.width    = ( document.body.offsetWidth  - scrollbarWidth() ) + "px";
  e2bg.style.height   = ( document.body.offsetHeight - scrollbarWidth() ) + "px";
  //e2bg.style.backgroundColor = "#000000";
  //alert ( parseInt ( elm.style.zIndex ) );
  e2bg.style.zIndex   = ( parseInt ( elm.style.zIndex ) - 1 );
 }
  
 e2drag   = elm;
 dragging = true;
}

function drag ()
{
 if ( dragging )
 {
  var scroll_offset_l = 0;
  var scroll_offset_t = 0;
  //if ( window.scrollbars.visible )
  //{
   scroll_offset_l = scrollbarWidth();
   scroll_offset_t = scrollbarWidth();
  //}
  var new_x = mX - off_x;
  var new_y = mY - off_y;
  if ( new_x < 0 ) new_x = 0;
  if ( new_y < 0 ) new_y = 0;  
  if ( new_x + e2drag.offsetWidth  >= document.body.offsetWidth  - scroll_offset_l ) { new_x = document.body.offsetWidth  - e2drag.offsetWidth  - scroll_offset_l; } 
  if ( new_y + e2drag.offsetHeight >= document.body.offsetHeight - scroll_offset_t ) { new_y = document.body.offsetHeight - e2drag.offsetHeight - scroll_offset_t; }
  e2drag.style.left = new_x.toString() + "px";
  e2drag.style.top  = new_y.toString() + "px";
 } 
}

function drag_end ()
{
 dragging = false;
 e2drag = null;
 off_x    = 0;
 off_y    = 0;
 
 // deleting bakground
 if ( e2bg ) document.body.removeChild ( e2bg );
 e2bg = null;
}

function getMouseCoords ( e )
{
 // 4 firefox & etc
 if ( browserType == 1 )
 {
  mX = e.pageX;
  mY = e.pageY; 
 // 4 ie, opera, sfari
 } else {
  mX = window.event.x;
  mY = window.event.y;
 }
 //window.status = mX + " " + mY;
 drag (); 
}

var image_loaders = new Array;

function loadImage ( img_name, img_url )
{
 var id = image_loaders.length;
 image_loaders [ id ] = new Image ();
 image_loaders [ id ].onload = function ()
 {
  document.getElementById ( img_name ).src = image_loaders [ id ].src; 
 }
 image_loaders [ id ].src = img_url;
}

function stopLoadImages ()
{
 for ( var i = 0 ; i < image_loaders.length ; i++ )
 {
  image_loaders [ id ].onload = function () {};
 }
 image_loaders = new Array;
}

function createRequest ()
{
 var request = null;
 if ( window.XMLHttpRequest )     // Object of the current windows
 {
  request = new XMLHttpRequest();     // Firefox, Safari, ...
  // replace type only 4 Gecko-based browsers
  //if ( browserType == 1 ) request.overrideMimeType ( "html/text" );	    
 } else if ( window.ActiveXObject )   // ActiveX version
 {
  request = new ActiveXObject ( "Microsoft.XMLHTTP" );    // Internet Explorer  
 } else {  
 }
 
 return request; 
}

function openRequest ( r, m, u, b )
{
 r.open ( m, u, b );
 
 return true;
}

function sendRequest ( r, s )
{  
 if ( s ) r.send ( s );
 else r.send ( null );
}



