///////////////////////////////////////////////////////////////////////////////
//	Copyright (C) 2001-2006 YaWah.com. All rights reserved.
//
//	This work contains valuable  confidential and proprietary information.
//	Disclosure, use or  reproduction without the  written authorization of
//    YaWah.com is prohibited.
//
//	There is a theory which states that if ever anyone discovers exactly what
//	this code is for and why it is here, it will instantly disappear and be
//	replaced by something even more bizarre and inexplicable.
//
//	There is another which states that this has already happened.
//
//	Version 17-aug-2006 - Detect FireFox
//

var eRezIE = (window.navigator.appName.indexOf("Explorer") >= 0);
var eRezNS6 = (parseInt(window.navigator.appVersion) > 4);
var eRezIsMac = (window.navigator.userAgent.indexOf("Mac") >= 0);
var eRezMozilla = (window.navigator.userAgent.indexOf("Mozilla") >= 0)
var eRezSafari = (window.navigator.userAgent.indexOf("Safari") >= 0)
var eRezOpera = (window.navigator.userAgent.indexOf("Opera") >= 0)
var eRezDecimalpoint = ".";
var eRezReloadFunc = null; 
var eRezIESP2 = (eRezIE && (window.navigator.userAgent.indexOf("SV1") >= 0));
var eRezFireFox = (window.navigator.userAgent.indexOf("Firefox/") >= 0);




function detectDecimalPoint()
{
	var scc = "" + parseFloat("1.23");
	if(scc != "1.23")
	{
		eRezDecimalpoint = scc.substring(1,2);	
	}
}
			
detectDecimalPoint()

function floatToString(floatVal)
{
	var s = "" + floatVal;
	return (eRezDecimalpoint == ".") ? s : s.replace(new RegExp("\\" + eRezDecimalpoint, "g"), ".");
}

function eRezRound5(number)
{
    return Math.round(number*10000)/10000;
}

function eRezRound2(number)
{
    return Math.round(number*10)/10;
}

function eRezPrepareImage(img)
{
  try
  {
    if(img.eRezReady == null)
    {
        img.eRezReady = false;
        img.eRezTop = 0.0;
        img.eRezLeft = 0.0;
        img.eRezBottom = 1.0;
        img.eRezRight = 1.0;
        parameters = img.src.split("?");
        if((parameters != null) && (parameters.length > 1))
        {
            img.eRezServlet = parameters[0];
            parameters = parameters[1].split("&");
            for(i = 0; i < parameters.length; i++)
            {
                param = parameters[i];
                if(param.indexOf("src=") == 0)
                {
                    img.eRezSource = param.substring(4, 1024);
                }
                else if(param.indexOf("tmp=") == 0)
                {
                    img.eRezTemplate = param.substring(4, 1024);
                }
                else if(param.indexOf("top=") == 0)
                {
                    img.eRezTop = parseFloat(param.substring(4, 1024));
                }
                else if(param.indexOf("left=") == 0)
                {
                    img.eRezLeft = parseFloat(param.substring(5, 1024));
                }
                else if(param.indexOf("bottom=") == 0)
                {
                    img.eRezBottom = parseFloat(param.substring(7, 1024));
                }
                else if(param.indexOf("right=") == 0)
                {
                    img.eRezRight = parseFloat(param.substring(6, 1024));
                }
                else if(param.indexOf("quality=") == 0)
                {
                    img.eRezQuality = eval(param.substring(8, 1024));
                }
                else if(param.indexOf("sharpen=") == 0)
                {
                    img.eRezSharpen = eval(param.substring(8, 1024));
                }
                else if(param.indexOf("width=") == 0)
                {
                    img.eRezWidth = eval(param.substring(6, 1024));
                }
                else if(param.indexOf("height=") == 0)
                {
                    img.eRezHeight = eval(param.substring(7, 1024));
                }
                else if(param.indexOf("eyecon=") == 0)
                {
                    img.eRezEyecon = eval(param.substring(7, 1024));
                }
                else if(param.indexOf("angle=") == 0)
                {
                    img.eRezAngle = parseFloat(param.substring(6, 1024));
                }            
                else if(param.indexOf("clipcolor=") == 0)
                {
                    img.eRezClipColor = param.substring(10, 1024);
                }            
                else if(param.indexOf("path=") == 0)
                {
                    img.eRezClipPath = param.substring(5, 1024);
                }
                else if(param.indexOf("timestamp=") == 0)
                {
                    img.eRezTimeStamp = param.substring(10, 1024);
                }  		
		}
        }
        if((img.eRezSource != null) && (img.eRezTemplate != null))
        {
            img.eRezReady = true;
        }
        else
        {
            img.title = "Error preparing image for eRez";
        }
    }
    return img.eRezReady;
  }
 catch(e)
 {
    return false;
 }
}



function eRezMakeURL(img)
{
    var result = img.eRezServlet + "?src=" + img.eRezSource + "&tmp=" + img.eRezTemplate;
    if(img.eRezTop != 0)
    {
        result += ("&top=" + floatToString(eRezRound5(img.eRezTop)));
    }
    if(img.eRezLeft != 0)
    {
        result += ("&left=" + floatToString(eRezRound5(img.eRezLeft)));
    }
    if(img.eRezBottom != 1)
    {
        result += ("&bottom=" + floatToString(eRezRound5(img.eRezBottom)));
    }
    if(img.eRezRight != 1)
    {
        result += ("&right=" + floatToString(eRezRound5(img.eRezRight)));
    }
    if(img.eRezQuality != null)
    {
        result += ("&quality=" + img.eRezQuality);
    }
    if(img.eRezSharpen != null)
    {
        result += ("&sharpen=" + img.eRezSharpen);
    }
    if(img.eRezWidth != null)
    {
        result += ("&width=" + img.eRezWidth);
    }
    if(img.eRezHeight != null)
    {
        result += ("&height=" + img.eRezHeight);
    }
    if(img.eRezEyecon != null)
    {
        result += ("&eyecon=" + img.eRezEyecon);
    }
    if(img.eRezAngle != null)
    {
        result += ("&angle=" + floatToString(img.eRezAngle));
    }
    if(img.eRezClipColor != null)
    {
        result += ("&clipcolor=" + img.eRezClipColor );
    }
    if(img.eRezClipPath != null)
    {
        result += ("&path=" + img.eRezClipPath );
    }
    if(img.eRezTimeStamp != null)
    {
        result += ("&timestamp=" + img.eRezTimeStamp );
    }

    return result;
}

function eRezUpdateImage(img)
{
    var newUrl = eRezMakeURL(img);
    if(newUrl != img.src)
    {
      if(eRezReloadFunc != null)
      {
        eRezReloadFunc(img, newUrl);
      }
      img.src = eRezMakeURL(img);
    }
}

function eRezAbsoluteXPos(evt, img)
{
    if(eRezIE)
    {
        return  evt.offsetX;
    }
    else if(eRezNS6 &&  !eRezMozilla)
    {
	    return (evt.offsetX?evt.offsetX:evt.clientX - (evt.target.offsetLeft+document.body.style.marginLeft));
    }
    else
    {
        return (evt.pageX - img.x);
    }
}

function eRezXPos(evt, img)
{
    return eRezAbsoluteXPos(evt, img) / img.width;
}

function eRezXPos2(evt, img)
{
	return eRezRound2(eRezXPos(evt, img));
}

function eRezAbsoluteYPos(evt, img)
{
    if(eRezIE)
    {
        return  evt.offsetY;
    }
    else if(eRezNS6 &&  !eRezMozilla)
    {
	    return (evt.offsetY?evt.offsetY:evt.clientY - (evt.target.offsetTop+document.body.style.marginTop));
    }
    else
    {
        return (evt.pageY - img.y);
    }
}

function eRezYPos(evt, img)
{
    return eRezAbsoluteYPos(evt, img) / img.height;
}

function eRezYPos2(evt, img)
{
	return eRezRound2(eRezYPos(evt, img));
}


function eRezZoomIn(evt, img)
{
    newheight = parseFloat("0.5") * (img.eRezBottom - img.eRezTop);
    newwidth = parseFloat("0.5") * (img.eRezRight - img.eRezLeft);
   
    posy = img.eRezTop + (eRezYPos2(evt, img) * (img.eRezBottom - img.eRezTop));
    posx = img.eRezLeft + (eRezXPos2(evt, img) * (img.eRezRight - img.eRezLeft));

    if(img.getAttribute)
    {
       maxwidth = img.getAttribute("zoomwidth");
       maxheight = img.getAttribute("zoomheight");

       if((maxwidth  != null) && (maxheight != null))
       {
         if(img.width < maxwidth)
         {
           width = (newwidth * maxwidth) / img.width;
           posx -= (width - newwidth) / parseFloat("2.0");
           newwidth = width;
         }
				
         if(img.height < maxheight)
         {
           height = (newheight *  maxheight) / img.height;
           posy -= (height - newheight) / parseFloat("2.0");
           newheight = height;
         }    
      }
    }

    img.eRezTop = posy - (newheight  / parseFloat("2.0"));
    img.eRezLeft = posx - (newwidth / parseFloat("2.0"));



    if(img.eRezTop < 0)
    {
        img.eRezTop = 0;
    }
    if(img.eRezLeft  < 0)
    {
        img.eRezLeft  = 0;
    }
    img.eRezBottom = img.eRezTop + newheight;
    if(img.eRezBottom > 1)
    {
        img.eRezBottom = 1;
    }

    img.eRezRight = img.eRezLeft + newwidth;
    if(img.eRezRight  > 1)
    {
        img.eRezRight  = 1;
    }
}

function eRezZoomOut(evt, img)
{
	
    xout = (img.eRezRight - img.eRezLeft) / 2;
    img.eRezLeft -= xout;
    if(img.eRezLeft < 0)
    {
        img.eRezRight -= img.eRezLeft;
        img.eRezLeft = 0;
    }
    img.eRezRight += xout;
    if(img.eRezRight > 1)
    {
        img.eRezLeft -= (img.eRezRight - 1);
        if(img.eRezLeft < 0)
        {
            img.eRezLeft = 0;
        }
        img.eRezRight = 1;
    }
    yout = (img.eRezBottom - img.eRezTop) / 2;
    img.eRezTop -= yout;
    if(img.eRezTop < 0)
    {
        img.eRezBottom -= img.eRezTop;
        img.eRezTop = 0;
    }
    img.eRezBottom += xout;
    if(img.eRezBottom > 1)
    {
        img.eRezTop -= (img.eRezBottom - 1);
        if(img.eRezTop < 0)
        {
            img.eRezTop = 0;
        }
        img.eRezBottom = 1;
    }
}

function eRezPanUp(img)
{
    height = img.eRezBottom - img.eRezTop;
    img.eRezTop -= (height / 3);
    if(img.eRezTop < 0)
    {
        img.eRezTop = 0;
    }
    img.eRezBottom = img.eRezTop + height;
}

function eRezPanDown(img)
{
    height = img.eRezBottom - img.eRezTop;
    img.eRezBottom += (height / 3);
    if(img.eRezBottom > 1)
    {
        img.eRezBottom = 1;
    }
    img.eRezTop = img.eRezBottom - height;
}

function eRezPanLeft(img)
{
    width = img.eRezRight - img.eRezLeft;
    img.eRezLeft -= (width / 3);
    if(img.eRezLeft < 0)
    {
        img.eRezLeft = 0;
    }
    img.eRezRight = img.eRezLeft + width;
}

function eRezPanRight(img)
{
    width = img.eRezRight - img.eRezLeft;
    img.eRezRight += (width / 3);
    if(img.eRezRight > 1)
    {
        img.eRezRight = 1;
    }
    img.eRezLeft = img.eRezRight - width;
}

function eRezPan(evt, img)
{
    posy = eRezYPos2(evt, img);
    if(posy < (1/4))
    {
        eRezPanUp(img);
    }
    else if (posy > (3/4))
    {
       eRezPanDown(img);
    }
    posx = eRezXPos2(evt, img);
    if(posx < (1/4))
    {
        eRezPanLeft(img);
    }
    else if (posx > (3/4))
    {
        eRezPanRight(img);
    }
}

function eRezSetQuality(img, quality)
{
    img.eRezQuality = quality;
}

function eRezSetSharpen(img, sharpen)
{
    img.eRezSharpen = sharpen;
}

function eRezSetWidth(img, width)
{
    img.eRezWidth = width;
}

function eRezSetHeight(img, height)
{
    img.eRezHeight = height;
}

function eRezAltKeyDown(evt)
{
    if(eRezIE || eRezNS6)
    {
        return evt.altKey;
    }
    else
    {
        return ((evt.modifiers & Event.ALT_MASK) != 0);
    }
}

function eRezCtrlKeyDown(evt)
{
    if(eRezIE || eRezNS6 )
    {
       return evt.ctrlKey;
    }
    else
    {
        return ((evt.modifiers & Event.CONTROL_MASK) != 0);
    }
}

function eRezShiftKeyDown(evt)
{
    if(eRezIE || eRezNS6 )
    {
        return evt.shiftKey;
    }
    else
    {
        return ((evt.modifiers & Event.SHIFT_MASK) != 0);
    }
}

function handleEyecon(evt, img)
{
    var result = false;
    if((img.eRezEyecon != null) && (img.eRezEyecon > 0))
    {
        switch(img.eRezEyecon)
        {
            case 4:
                {
                    if((eRezAbsoluteXPos(evt, img) > (img.width - 40)) && (eRezAbsoluteYPos(evt, img) > (img.height - 40)))
                    {
                        result = true;
                    }
                }
                break;

            case 3:
                {
                    if((eRezAbsoluteXPos(evt, img) < 40) && (eRezAbsoluteYPos(evt, img) > (img.height - 40)))
                    {
                        result = true;
                    }
                }
                break;

            case 2:
                {
                    if((eRezAbsoluteXPos(evt, img) > (img.width - 40)) && (eRezAbsoluteYPos(evt, img) < 40))
                    {
                        result = true;
                    }
                }
                break;

            case 1:
                {
                    if((eRezAbsoluteXPos(evt, img) < 40) && (eRezAbsoluteYPos(evt, img) < 40))
                    {
                        result = true;
                    }
                }
                break;
        }

        if(result == true)
        {
            var viewURL = img.eRezServlet + "?src=" + img.eRezSource + "&tmp=Medium&cmd=view";
            window.open(viewURL , "_blank", "width=1,height=1,resizable=yes,scrollbars=no");
        }
    }
    return result;
}

function eRezClick(evt, img)
{
    if(evt.button != 2)
    {
        if(eRezPrepareImage(img))
        {
            if(!handleEyecon(evt, img))
            {
                if(eRezAltKeyDown(evt))
                {
                    eRezPan(evt, img);
                    eRezUpdateImage(img);
                }
                else if(eRezShiftKeyDown(evt))
                {
                    eRezZoomOut(evt, img);
                    eRezUpdateImage(img);
                }
                else if(!eRezCtrlKeyDown(evt))
                {
                    eRezZoomIn(evt, img);
                    eRezUpdateImage(img);
                }
            }
        }
    }
}
