﻿
var _isSafari = false;

function init()
{
    _isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") > -1);        
	if(typeof(initPage) != "undefined" && initPage.length > 0)
	{
		try
		{
			go(initPage[0]);
		}
		catch(e) {}
	}
}

function showFullSizeImage(productID)
{
    window.open("FullSizePopUp.aspx?id=" + productID, "", "height=600,width=600,scrollbars=no,resizable=yes,toolbar=no,status=no,alwaysRaised=yes");
}

function showFullSizeStamp(productID)
{
    window.open("FullSizePopUp.aspx?id=stamp/" + productID, "", "height=600,width=600,scrollbars=no,resizable=yes,toolbar=no,status=no,alwaysRaised=yes");
}

var _zoomWindow = null;
var _zoomUrl = null;
var _cache = new cache();

function openZoomURL(sender, e, url)
{
    getZoom();
    repos(_zoomWindow, e);

    if(_zoomUrl != url)
    {
        var cached = _cache.Get(url);
        if(cached != null) // in cache
        {
            _zoomWindow.innerHTML = cached;
        }
        else
        {
            _zoomWindow.innerHTML = "Loading Details...";
            getPage(url, "_cache.Add(\"" + url + "\", oXml.responseText); _zoomWindow.innerHTML = oXml.responseText;");
        }
        _zoomUrl = url;
    }
    _zoomWindow.style.visibility = 'visible';
}

function cache()
{
    var _keys = new Array();
    var _values = new Array();
    var _hits = 0;

    this.Add =
        function(key, value)
        {
            _keys.push(key);
            _values.push(value);
        }
        
    this.Get =
        function(key)
        {
            var found = false;

            if(_keys.length > 0)
            {
                var i;
                for(i = 0; i < _keys.length; i++)
                {
                    if(_keys[i] == key)
                    {
                        found = true;
                        break;
                    }
                }
            }


            if(found)
            {
                _hits++;
                
                if(_hits > 1000) // empty cache
                {
                    this.Clear();
                }
                
                return _values[i];
            }
            else
            {
                return null;
            }
        }

    this.Clear =
        function()
        {
            _hits = 0;
            _keys.splice(0, _keys.length);
            _values.splice(0, _values.length);
        }        
}

function openZoom(sender, e, imageUrl)
{
    getZoom();
    repos(_zoomWindow, e);

    if(_zoomUrl != imageUrl)
    {
        _zoomWindow.innerHTML = "<img src=\"" + imageUrl + "\" />";
        _zoomUrl = imageUrl;
    }

    _zoomWindow.style.visibility = "visible";
}

function getZoom()
{
    if(_zoomWindow == null)
    {
        _zoomWindow = document.createElement("div");
        _zoomWindow.style.position = "absolute";
        _zoomWindow.style.padding = "3px";
        _zoomWindow.style.border = "1px solid #000000";
        _zoomWindow.style.backgroundColor = "#ffffff";
        document.body.appendChild(_zoomWindow);
    }
}

function repos(obj, e)
{

    var scrollOffset = document.body.scrollTop > 0 ? document.body.scrollTop : document.documentElement.scrollTop;
    var windowWidth = document.documentElement.offsetWidth;
    var windowHeight = isNaN(window.innerHeight) ? document.documentElement.offsetHeight : window.innerHeight;

    var left = e.clientX + 15;
    var top;
    if(_isSafari)
    {
        top = e.clientY + 15;
    }
    else
    {
        top = e.clientY + 15 + scrollOffset;
    }
     
    var width = obj.offsetWidth;
    if(left + width > windowWidth)
    {
        left = e.clientX - width - 15;
    }
    
    var height = obj.offsetHeight;
    if(top + height > windowHeight + scrollOffset)
    {
        if(_isSafari)
        {
            top = e.clientY - height - 15;
        }
        else
        {
            top = e.clientY + scrollOffset - height - 15;
        }
        
    }
    
    if(top < scrollOffset)
    {
        top = windowHeight + scrollOffset - height;
    }

    obj.style.top = new String(top) + "px";
    obj.style.left = new String(left) + "px";

}

function closeZoom()
{
    if(_zoomWindow != null)
    {
        _zoomWindow.style.visibility = "hidden";
    }
}

var debug = false;
function getPage(url, retFunc, post, errFunc)
{
    var oXml;

    try
    {
        oXml = new XMLHttpRequest();
    }
    catch(e)
    {
        try
        {
              oXml = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
              oXml = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

    if(oXml == null)
    {
        return;
    }

    oXml.onreadystatechange = 
        function()
        {
              if(oXml.readyState == 4)
              {
                    if(oXml.status == 200)
                    {
                          eval(retFunc);
                    }
                    else
                    {
                          if(debug)
                          {
                                var newWin = window.open();
                                newWin.document.write(oXml.responseText);
                          }
                          if(errFunc)
                          {
                                eval(errFunc);
                          }
                    }
              }
        }

    var verb = "GET";
    if(post && post != "")
    {
        verb = "POST";
    }
    else
    {
        post = null;
    }

    oXml.open(verb, url, true);
    try
    {
        oXml.send(post);
    }
    catch(e)
    {
        if(errFunc)
        {
              eval(errFunc);
        }
    }
}

//prevent users from copying images
//document.onselectstart = new Function("return false;");
document.oncontextmenu = new Function("return false;");
//function ds(e) { return false; }
//function ra(){ return true; }
//document.onmousedown = ds;
//document.onclick = ra;
