var ie=document.all;
var nn6=document.getElementById&&!document.all;
var isdrag=false;
var x,y;
var dobj;
var lbx_hilited = false;
var windim = new Array();
var over_the_lightbox = false;
var opa = nn6 ? 0.50 : 50;
var previews_on;
var snapStartX;
var snapStartY;
var snapEndX;
var snapEndY;
var snapTimer;
var snapCurrent;
var dnd_oid;
var finalDestination = "";
var oldX;
var oldY;
var scrolltop;
var windim=getClientDim();
var hoff=0;

if(getObject('bodyContent').scrollTop)
  scrolltop=getObject('bodyContent').scrollTop;
else
  scrolltop=truebody().scrollTop;

if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
  isSafari = (navigator.appVersion.indexOf("Safari") != -1) ? true : false;
  isStd = (navigator.appName == "Netscape") ? true : false
  isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false
  isMac = (navigator.platform.indexOf("Mac") != -1) ? true : false
  isPNG = (isIE && ! isMac) ? false : true
}
//if(isSafari) alert(navigator.appVersion);
//if(isIE) alert(navigator.appVersion);

function getClientDim() {
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [myWidth, myHeight];
}

function truebody(){
  return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function getObject(o){

    if (document.getElementById)
        return document.getElementById(o)
    else if (document.all)
        return document.all.o
}

function mousedownHandler(e)
{
  var fobj = nn6 ? e.target : event.srcElement;
  var topelement = nn6 ? "HTML" : "BODY";
  var thebutton;
  var delay;
  var target = nn6 ? e.target : event.srcElement;

  if(isdrag) return false;

  if(getObject('bodyContent').scrollTop)
     scrolltop=getObject('bodyContent').scrollTop
  else
     scrolltop=truebody().scrollTop;

  delay = 100;

  while (fobj.tagName != topelement && fobj.className != "dragme")
  {
    fobj = nn6 ? fobj.parentNode : fobj.parentElement;
  }

  if (nn6) theButton = e.which;
  else theButton = event.button;
      
  // If it is not the left return
      
  if (theButton != 1) return false;

  if (fobj.className=="dragme")
  {
    dnd_oid = fobj.name;

    //isdrag = true;
    getObject('previewcontainer').style.visibility = 'hidden';
    getObject('previewcontainer').innerHTML='';
    dobj = getObject('dragger');
    dobj.style.visibility='hidden';
    //dobj.innerHTML = '<img src="' + fobj.src + '">'
    dobj.innerHTML = '<img src="' + fobj.lowsrc + '">';
    var hh=fobj.height;
    var ww=fobj.width;
    hh > ww ? hoff=96 : parseInt(hoff=96*hh/ww);
    shift = parseInt(0.2 * hoff);

    dobj.style.zIndex = 2;

    if(nn6) dobj.style.opacity = opa
    else dobj.style.filter='alpha(opacity='+opa+')';

    x = nn6 ? e.clientX : event.clientX;
    y = nn6 ? e.clientY : event.clientY;

    oldX = x;
    oldY = y;

    //shift = 30;
    if(!isSafari && !isIE) y += scrolltop;


    dobj.style.top = (y - shift) + 'px';
    dobj.style.left = (x - shift) + 'px';

    tx = parseInt(dobj.style.left);
    ty = parseInt(dobj.style.top);

    snapStartX = x - shift;
    snapStartY = y - shift;

    document.onmousemove=mousemoveHandler;
    document.onmouseup=mouseupHandler;
    return false;
  }
}

function mouseupHandler(e){

    var mu_x = nn6 ? e.clientX : event.clientX;
    var mu_y = nn6 ? e.clientY : event.clientY;

    document.onmousemove='';
    document.onmouseup='';
    document.advsearch.dragging.value = 0;

    if(oldX == mu_x && oldY == mu_y){
        if(dobj != "undefined") {
            dobj.style.visibility='hidden';
            dobj.innerHTML='';
        }
    }else if(isdrag){
        isdrag=false;
        if(lbx_hilited) {
            if(dobj != "undefined") dobj.style.visibility='hidden';
            if(dobj != "undefined") dobj.innerHTML='';
            hilite_Lbx();
            dropInLightbox(dnd_oid);
        }else{
            snapEndX = parseInt(dobj.style.left);
            snapEndY = parseInt(dobj.style.top);
            snapCurrent = 0;
            snapTimer = setInterval("snapBack('dragger', snapStartX, snapStartY, snapEndX, snapEndY, 20)", 2);
        }
    }

    return false;
}

function mousemoveHandler(e){

  var bottom_frame_top = windim[1] - 130;

  var mouse_x = nn6 ? e.clientX : event.clientX;
  var mouse_y = nn6 ? e.clientY : event.clientY;
  var mouse_drag_y = isSafari ? mouse_y - scrolltop : mouse_y;

    
  if (isdrag)
  {

    //if(mouse_x > windim[0]-115 || mouse_x < 75 || mouse_drag_y > windim[1]-45 || mouse_drag_y < 20) return false;

    dobj.style.left = tx + mouse_x - x;
    dobj.style.top = nn6 && !isSafari ? ty + mouse_y - y + scrolltop : ty + mouse_y - y;

    if(mouse_drag_y+hoff-shift > bottom_frame_top) {
     if(!lbx_hilited) {
            hilite_Lbx();
            over_the_lightbox = true;
        }
    }
    else if(lbx_hilited) {
        hilite_Lbx();
        over_the_lightbox = false;
    }
    
  }else if(oldX != mouse_x && oldY != mouse_y){
     isdrag = true;
     document.advsearch.dragging.value = 1;
     dobj.style.visibility='visible';
  }

  return false;
}


function hilite_Lbx() {

    if(lbx_hilited) {
        //frames['lbxframe'].document.bgColor = '#D4DEE2';
     frames['lbxframe'].document.bgColor = '#EEEEEE';
        lbx_hilited = false;
    }
    else {
        //frames['lbxframe'].document.bgColor = '#c6d1d6';
     frames['lbxframe'].document.bgColor = '#CCCCCC';
        lbx_hilited = true;
    }
}

function dropInLightbox(o){
    
    window.frames['lbxframe'].add_to_lbx2(o,dnd_thm_loc,dnd_big_thm_loc,dnd_hoid);
    //alert("Add object: "+o+" to lightbox with hoid: "+dnd_hoid+" : "+dnd_thm_loc+" : "+dnd_big_thm_loc);
}


function go_to(URL){
    document.location=escape(URL);
    return false;
}

function snapBack(layerToSnap, startX, startY, endX, endY, steps) {

   snapCurrent++;

   if (snapCurrent == 1) {
       multi = 0;
   } else {
       multi = (1 - Math.pow(0.9, snapCurrent - 1)) / (1 - Math.pow(0.9, steps - 1));
   }

   snapX = endX + (startX - endX) * multi;
   snapY = endY + (startY - endY) * multi;

   getObject(layerToSnap).style.left = snapX;
   getObject(layerToSnap).style.top = snapY;

   
   if (snapCurrent == steps) {
     clearInterval(snapTimer);
     if(dobj != "undefined") dobj.innerHTML='';
   }
}

$(document).ready(function() {
  document.onmousedown=mousedownHandler;
});

