commenting=0;
commentinggrabbed=0;
originoffsetx=0;
originoffsety=0;
togglecommentsval=0;

document.onmousemove=moveOvw;

function aligncomments(){
  var comments=document.getElementsByTagName('div'),cur;
  for(var i=0; i<comments.length; i++){
    cur=comments[i];
    if(cur.id=='comment'){
      if(getX(cur)+cur.offsetWidth>getWindowWidth()){
	cur.style.left=getWindowWidth()-cur.offsetWidth;
      }
    }
  }
}


function initcomment(evt){
  if(!commenting && getMouseY(evt)>42){
    var cbox=document.getElementById('commenting');
    cbox.style.visibility='visible';
    cbox.style.left=getMouseX(evt);
    cbox.style.top=getMouseY(evt);
    document.commentingform.x.value=cbox.style.left;
    document.commentingform.y.value=cbox.style.top;
    commenting=1;
  }
}


function endcomment(evt){
  document.getElementById('commenting').style.visibility='hidden';
  document.commentingform.body.value='';
  commenting=0;
}


function moveOvw(evt){
  if(commenting && commentinggrabbed){moveCommentBox(evt);}
  return false;
}


function moveCommentBox(evt){
  cbox=document.getElementById('commenting');
  cont=document.getElementById('comments');
  cbox.style.left=Math.min(getMouseX(evt)-originoffsetx,getX(cont)+cont.offsetWidth-275);
  cbox.style.top=Math.min(getMouseY(evt)-originoffsety,getY(cont)+cont.offsetHeight-cbox.offsetHeight);
  if(getX(cbox)<481){cbox.style.left="481px";}
  if(getY(cbox)<0){cbox.style.top="0px";}
  document.commentingform.x.value=cbox.style.left;
  document.commentingform.y.value=cbox.style.top;
}


function focusComment(id){
  var comments=document.getElementsByTagName('div');
  for(var i=0; i<comments.length; i++){if(comments[i].id=='comment'){comments[i].style.zIndex=0;}}
  id.style.zIndex=1;
}


function toggleComments(id){
  if(togglecommentsval==0){
    var comments=document.getElementsByTagName('div');
    for(var i=0; i<comments.length; i++){if(comments[i].id=='comment'){comments[i].style.display='none';}}
    document.getElementById('togglecomments').innerHTML='show';
  }
  else{
    var comments=document.getElementsByTagName('div');
    for(var i=0; i<comments.length; i++){if(comments[i].id=='comment'){comments[i].style.display='block';}}
    document.getElementById('togglecomments').innerHTML='hide';
  }
  togglecommentsval=!togglecommentsval;
}


function setOriginOffset(ele,evt){
  var intleft,inttop;
  intleft=fixPix(ele.style.left);
  inttop=fixPix(ele.style.top);
  originoffsetx=getMouseX(evt)-intleft;
  originoffsety=getMouseY(evt)-inttop;
}


function fixPix(str){return str.substring(0,str.length-2);}


function getWindowWidth(){
  if(window.innerWidth){return window.innerWidth;}
  if(document.documentElement.clientWidth){return document.documentElement.clientWidth;}
  if(document.body.clientWidth){return document.body.clientWidth;}
}


function getWindowHeight(){
  if(window.innerHeight){return window.innerHeight;}
  if(document.documentElement.clientHeight){return document.documentElement.clientHeight;}
  if(document.body.clientHeight){return document.body.clientHeight;}
}


function getMouseX(evt){
  var mouse_x,e;
  if(navigator.userAgent.indexOf('Firefox')!=-1){e=evt;}
  else{e=window.event;}
  if(e.pageX==null){return e.clientX+document.body.scrollLeft;}
  else{return e.pageX;}
}


function getMouseY(evt){
  var mouse_y,e;
  if(navigator.userAgent.indexOf('Firefox')!=-1){e=evt;}
  else{e=window.event;}
  if(e.pageY==null){return e.clientY+document.body.scrollTop;}
  else{return e.pageY;}
}


function toggle(ele){
  if(document.all[ele].style.display=='none'){
    document.all[ele].style.display='block';
  }
  else{
    document.all[ele].style.display='none';
  }
}


function clearSmart(ele){
  if(ele.value==ele.defaultValue){ele.value='';}
  else{
    if(ele.value==''){ele.value=ele.defaultValue;}
  }
}

/*From http://blog.firetree.net/2005/07/04/javascript-find-position/*/
function getX(obj)
{
  var curleft = 0;
  if(obj.offsetParent)
      while(1) 
      {
	curleft += obj.offsetLeft;
	if(!obj.offsetParent)
	  break;
	obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

function getY(obj)
{
  var curtop = 0;
  if(obj.offsetParent)
      while(1)
      {
	curtop += obj.offsetTop;
	if(!obj.offsetParent)
	  break;
	obj = obj.offsetParent;
      }
  else if(obj.y)
      curtop += obj.y;
  return curtop;
}