﻿objItems = new Object();
var objPO = objItems;

objPO.QuickLook = new Object();

objPO.initializeQuickLook = function() {
    objPO.QuickLook = returnObjById('QuickLook');
    objPO.QuickLauncher = returnObjById('QuickLauncher');
    objPO.ListQuickLauncher = returnObjById('ListQuickLauncher');
    objPO.itemId = 0;
    objPO.targetImage = null;
	objPO.isLoaded = true;
	objPO.isQuickLookOpen = false;
	objPO.type = '';
}

objPO.launchQuickLook = function() {
    var targetPosition = returnObjPosition(objPO.QuickLauncher);
    var x;
    if (targetPosition.x > 700)
        x = targetPosition.x - 375;
    else
        x = targetPosition.x;
    
    setObjPosition(objPO.QuickLook,x+30,targetPosition.y-50);
	objPO.type = '';
    requestQuickLookInfo(objPO.itemId, objPO.type);
}

objPO.launchListQuickLook = function() {
    var targetPosition = returnObjPosition(objPO.ListQuickLauncher);
    setObjPosition(objPO.QuickLook,targetPosition.x-220,targetPosition.y+30);
	objPO.type = 'Image';
    requestQuickLookInfo(objPO.itemId, objPO.type);
}

objPO.closeQuickLook = function() {
    setObjVisibility(objPO.QuickLook,'hidden');
	objPO.isQuickLookOpen = false;
}

document.onmouseover = function(e) {
	var obj = getEventTarget(e);
    onMouseOverFunctions(e);
}

document.onmouseout = function(e) {
	onMouseOutFunctions(e);
}

document.onmouseup = function(e) {
	onMouseUpFunctions(e);
}

function onLoadFunctions() {
    objPO.initializeQuickLook();
}

function onMouseOverFunctions(e) {
	var obj = getEventTarget(e);
	
    if (isOnItemImageObject(obj)) {
        if (obj.id.indexOf('item_') != -1) {
            objPO.targetImage = obj;
            objPO.itemId = obj.id.split('_')[1];
            var targetPosition = returnObjPosition(obj);
            setObjPosition(objPO.QuickLauncher,targetPosition.x+55,targetPosition.y+55);
        }
        
        setObjVisibility(objPO.QuickLauncher,'visible');
    }
    else if (isOnListItemObject(obj)) {
        if (obj.id.indexOf('listItem_') != -1) {
            objPO.itemId = obj.id.split('_')[1];
            var targetPosition = returnObjPosition(obj);
            setObjPosition(objPO.ListQuickLauncher,targetPosition.x+182,targetPosition.y+2);
        }
        
        setObjVisibility(objPO.ListQuickLauncher,'visible');
    }
}

function onMouseOutFunctions(e) {
	var obj = getEventTarget(e);
	
    if (isOnItemImageObject(obj)) {
        setObjVisibility(objPO.QuickLauncher,'hidden');
    }
    else if (isOnListItemObject(obj)) {
        setObjVisibility(objPO.ListQuickLauncher,'hidden');
    }
}

function onMouseUpFunctions(e) {
	var obj = getEventTarget(e);

    if (objPO.QuickLook == null)
        return;

    if (!isOnQuickLook(obj) || isOnQuickLookClose(obj)) {
        objPO.closeQuickLook();
    }
}

function setObjPosition(objLayer,intX,intY) {
	strX = String(intX);
	strY = String(intY);
	if (objLayer==null) return;
	objLayer.style.top = intY + (strY.indexOf("px") == -1 ? "px" : "");
	objLayer.style.left = intX + (strX.indexOf("px") == -1 ? "px" : "");
}

function setObjVisibility(objLayer,strState) {
	if (objLayer==null || objLayer.style==null) return;
	objLayer.style.visibility = strState;
}

function getEventTarget(e) {
	if (!e) return window.event.srcElement;
	else return e.target;
}

function isOnItemImageObject(obj) {
    if (obj.tagName == 'IMG' && (obj.id.indexOf('item_') != -1 || obj.id == 'QuickLauncher' || obj.id == 'QuickLauncherButton')) {
        return true;
    }
    else {
        return false;
    }
}

function isOnListItemObject(obj) {
    if ((obj.tagName == 'LI' && obj.id.indexOf('listItem_') != -1) || (obj.parentNode.tagName == 'LI' && obj.parentNode.id.indexOf('listItem_') != -1) || (obj.tagName == 'IMG' && obj.id == 'ListQuickLauncher' || obj.id == 'ListQuickLauncherButton')) {
        return true;
    }
    else {
        return false;
    }
}

function isOnQuickLook(obj) {
    return hasIdObject(obj,'QuickLook');
}

function isOnQuickLookClose(obj) {
    return hasIdObject(obj,'QuickLookClose');
}

function hasIdObject(obj,targetId) {
    if (obj.id != targetId) {
        if (obj.parentNode != null) {
            obj = obj.parentNode;
	        return hasIdObject(obj,targetId);
        }
        else {
            return false;
        }
    }
    else {
        return true;
    }
}

function returnObjById(strId) {
	var tempObj = document.getElementById(strId);
	return tempObj;
}

function returnObjPosition(target){
    var wrap = document.getElementById('wrap');

	var x = 0;
	var y = 0;
	var tempObj = new Object();
	var obj = (typeof target == "object" ? target : returnObjById(target));
	while (obj.offsetParent != null) {
		x += obj.offsetLeft;
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	x += obj.offsetLeft;
	y += obj.offsetTop;
	tempObj.x = x - wrap.offsetLeft;
	tempObj.y = y;
	return tempObj;
}

function requestQuickLookInfo(itemId, type) {
    var url = 'Ajax/GetItemInfo.aspx?ItemId=' + itemId + '&type=' + type;
    new net.ContentLoader(url, responseQuickLookInfo);
}

function responseQuickLookInfo() {
    var targetElement = document.getElementById('QuickLook');
    var resultHTML = this.req.responseText;
    if (objPO.type == 'Image')
        targetElement.className = 'ViewBoxImage';
    else
        targetElement.className = 'ViewBox';
    targetElement.innerHTML = resultHTML;

    setObjVisibility(objPO.QuickLook,'visible');
	objPO.isQuickLookOpen = true;
}

// applied default setting at document onload
OnloadFunction.Add(onLoadFunctions);
