

function imgZoom(img, v) {
   imgZoomInt(img,v, v);
}

function imgZoomInt(img,x,y) {
   if ( !img.usr_width ) {
      img.usr_width = img.width;
      img.usr_height = img.height;
   }
   img.width = x*img.usr_width;
   img.height = y*img.usr_height;
}

function imgZoomReset(img) {
   imgZoomInt(img, 1, 1);
}

function imgZoomDyna(e, img, max_zf) {
   var zf_x, curr_x, left_x, right_x, middle_x;
   var zf_y, curr_y, left_y, right_y, middle_y;
   if ( !img.usr_width ) {
      img.usr_width = img.width;
      img.usr_height = img.height;
   }

   left_x = findPositionX(img);
   left_y = findPositionY(img);

   right_x = left_x+img.usr_width;
   right_y = left_y+img.usr_height;

   middle_x = (left_x+right_x)/2
   middle_y = (left_y+right_y)/2

   curr_x = e.clientX;
   curr_y = e.clientY;

   if ( curr_x>right_x || curr_x<left_x || curr_y>right_y || curr_y<left_y) {
      imgZoomInt(img, 1, 1);
      return;
   }

   // normalize to unit square/circle
   var x = ((curr_x-middle_x)/(right_x-middle_x));
   var y = ((curr_y-middle_y)/(right_y-middle_y));

   var warp_factor;
   var scale_factor;

   if ( (x>y && x>-y) || (x<y && x<-y) ) {
     warp_factor = 1+y*y;
   } else {
     warp_factor = 1+x*x;
   }

   //this ranges from 0 on the center to 1 on the outside
   scale_factor = (x*x+y*y)/warp_factor;
   scale_factor = Math.sqrt(scale_factor);

   // now switch it around and speed up scaling on the center
   // 1 on the inside, 0 on the outside
   scale_factor = (1-scale_factor)*(1-scale_factor);
   //scale_factor = (1-scale_factor);
   scale_factor = 1+(max_zf-1)*scale_factor;
   imgZoomInt(img, scale_factor, scale_factor);
}

function rate(img,val,target) { 
   img.src = '/inc/img/click.gif';
   rreq('rate',val,target); 
}

function rreq(req,val,target) {
  var xmlhttp;
  if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
  xmlhttp.onreadystatechange=function() { if (target && xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById(target).innerHTML=xmlhttp.responseText; } }
  //xmlhttp.open("GET","/request.php?indx="+rss_indx+"&req="+req+"&val="+val+"&url="+rss_url+"&ref="+document.referrer,true);
  xmlhttp.open("GET","/request.php?indx="+rss_indx+"&req="+req+"&val="+val+"&url="+rss_url,true);
  xmlhttp.send();
}

function htmlset(toTarget,fromTarget) {
   document.getElementById(toTarget).innerHTML=document.getElementById(fromTarget).innerHTML;
}

function findPositionX(obj) { 
    var left = 0; 
    if(obj.offsetParent) { 
        while(1) { 
          left += obj.offsetLeft; 
          if(!obj.offsetParent) 
            break; 
          obj = obj.offsetParent; 
        } 
    } else if(obj.x) { 
        left += obj.x; 
    } 
    return left; 
}

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


