﻿var radWindowContentRequest = createRequest();
var radWindowContentSrc;
var radWindowContentTitle = '';
var openerElem;
var canOpenWindow;

var originalWidth = 0;
var originalHeight = 0;

var isPopapActive = false;
var isPopapLoading = false;
var isScrollable = false;

addEvent(window,'load',InitializeRadWindow);

function InitializeRadWindow() {
	var radWindowWrapper = document.getElementById('radWindowWrapper');
	originalWidth = parseInt(radWindowWrapper.style.width,10);
	originalHeight = parseInt(radWindowWrapper.style.height,10);
}

function OpenRadWindow(elem, src, title) {
	openerElem = elem;
	radWindowContentSrc = src;
	radWindowContentTitle = title;
	canOpenWindow = true;
	addEvent(document, 'mousemove', MouseMoveForOpen);
	isScrollable = false;
	setTimeout("InnerOpenRadWindow(" + originalWidth + ");", 500);
}

function OpenModificationInfoWindow(elem, src, title) {
    openerElem = elem;
    radWindowContentSrc = src;
    radWindowContentTitle = title;
    canOpenWindow = true;
    addEvent(document, 'mousemove', MouseMoveForOpen);
    var overrideWidth = 630;
    isScrollable = true;
    setTimeout("InnerOpenRadWindow(" + overrideWidth + ");", 500);
}

function OpenImageRadWindow(elem, src, title, height, width) {
	openerElem = elem;
	radWindowContentSrc = src;
	radWindowContentTitle = title;
	canOpenWindow = true;
	addEvent(document, 'mousemove', MouseMoveForOpen);
	isScrollable = false;
	setTimeout("InnerOpenImageRadWindow(" + height + ", " + width + ");", 500);
}

function InnerOpenRadWindow(width) {
	if (!canOpenWindow) {
		return;
    }

    if (isPopapLoading) {
        return;
    }

    isPopapLoading = true;

    CloseRadWindow();

	var radWindowWrapper = document.getElementById('radWindowWrapper');
	if (radWindowWrapper && radWindowWrapper.style.display == 'none') {
		var radWindowTitle = document.getElementById('radWindowTitle');
		if (radWindowTitle) {
			radWindowTitle.innerHTML = radWindowContentTitle;
		}

		LoadRadWindowContent(radWindowContentSrc);

		var elemPos = GetElementPosition(openerElem);

		radWindowWrapper.style.height = originalHeight + "px";
		radWindowWrapper.style.width = width + "px";

		var radWindowTitle = document.getElementById('radWindowTitle');
		if (radWindowTitle) {
			radWindowTitle.style.width = (width - 20) + "px";
		}

		var radWindowMain = document.getElementById('radWindowMain');
		if (radWindowMain) {
			radWindowMain.style.width = width + "px";
		}

		var radWindowContent = document.getElementById('radWindowContent');
		if (radWindowContent) {
			radWindowContent.style.width = width + "px";
		}
		
		var radWindowWrapperWidth = parseInt(radWindowWrapper.style.width, 10);
		var radWindowWrapperHeight = parseInt(radWindowWrapper.style.height, 10);

		if (elemPos.left + elemPos.width + radWindowWrapperWidth > GetClientWidth()) {
			radWindowWrapper.style.left = GetClientWidth() - radWindowWrapperWidth - 5 + 'px';
		}
		else {
			radWindowWrapper.style.left = elemPos.left + elemPos.width + 'px';
		}

		if (elemPos.top + elemPos.height + radWindowWrapperHeight > GetClientHeight() + document.documentElement.scrollTop) {
			radWindowWrapper.style.top = (GetClientHeight() + document.documentElement.scrollTop) - (radWindowWrapperHeight) + 'px';
		}
		else {
			radWindowWrapper.style.top = elemPos.top + 'px';
		}

		radWindowWrapper.style.display = '';

		isPopapActive = true;
		
		setTimeout("addEvent(document, 'mousemove', MouseMoveForClose);", 1000);
	}
}

function InnerOpenImageRadWindow(height, width) {
	if (!canOpenWindow) {
		return;
	}

	if (height == 0 || width == 0)
			return;

	CloseRadWindow();

	var radWindowWrapper = document.getElementById('radWindowWrapper');
	if (radWindowWrapper && radWindowWrapper.style.display == 'none') {
		var elemPos = GetElementPosition(openerElem);

		var radWindowWrapperWidth = width;
		var radWindowWrapperHeight = height;
		radWindowWrapper.style.height = height + "px";
		radWindowWrapper.style.width = width + "px";

		var radWindowTitle = document.getElementById('radWindowTitle');
		if (radWindowTitle) {
			radWindowTitle.innerHTML = radWindowContentTitle;
			radWindowTitle.style.width = (width - 20) + "px";
		}

		var radWindowMain = document.getElementById('radWindowMain');
		if (radWindowMain) {
			radWindowMain.style.width = width + "px";
		}

		var radWindowContent = document.getElementById('radWindowContent');
		if (radWindowContent) {
			radWindowContent.innerHTML = "<img src='" + radWindowContentSrc + "' alt='" + radWindowContentTitle + "' />";
			radWindowContent.style.width = width + "px";
		}

		if (elemPos.left + elemPos.width + radWindowWrapperWidth > GetClientWidth()) {
			radWindowWrapper.style.left = GetClientWidth() - radWindowWrapperWidth - 5 + 'px';
		}
		else {
			radWindowWrapper.style.left = elemPos.left + elemPos.width + 'px';
		}

		if (elemPos.top + elemPos.height + radWindowWrapperHeight > GetClientHeight() + document.documentElement.scrollTop) {
			radWindowWrapper.style.top = (GetClientHeight() + document.documentElement.scrollTop) - (radWindowWrapperHeight) + 'px';
		}
		else {
			radWindowWrapper.style.top = elemPos.top + 'px';
		}

		SetDisplay('radWindowLoadingPanel', 'none');
		radWindowWrapper.style.display = '';
		radWindowContent.style.display = '';
		isPopapActive = true;

		setTimeout("addEvent(document, 'mousemove', MouseMoveForClose);", 1000);
	}
}

function CloseRadWindow() {
    AbortLoadingRadWindowContent();
	
	var radWindowWrapper = document.getElementById('radWindowWrapper');
	if (radWindowWrapper) {
		var radWindowContent = document.getElementById('radWindowContent');
		if (radWindowContent) {
		    radWindowContent.innerHTML = '';
		    radWindowContent.className = '';
		    radWindowContent.style.height = '';		    
		}

		radWindowWrapper.style.display = 'none';
		removeEvent(document, 'mousemove', MouseMoveForOpen);
		removeEvent(document, 'mousemove', MouseMoveForClose);
	}
	isPopapActive = false;
}

function MouseMoveForOpen(e) {
	var elem = (e.srcElement) ? e.srcElement : e.target;
	if (elem) {
	    canOpenWindow = elem == openerElem || elem.parentNode == openerElem;
	}
}

function MouseMoveForClose(e) {
	var elem = (e.srcElement) ? e.srcElement : e.target;
	if (elem.parentNode == openerElem) {
		return;
	}
	while (elem) {
		elem = elem.parentNode;
		if (elem && elem.id == 'radWindowWrapper') {
			break;
		}
		else if (!elem) {
		    CloseRadWindow();
		    isPopapLoading = false;
		}
	}
}

function AbortLoadingRadWindowContent() {
	removeEvent(radWindowContentRequest, 'onreadystatechange', RequestReadyStateChanged);    
	radWindowContentRequest.abort();
}

function LoadRadWindowContent(src) {
    AbortLoadingRadWindowContent();

	SetDisplay('radWindowContent', 'none');
	SetDisplay('radWindowLoadingPanel', '');
	
	radWindowContentRequest.onreadystatechange = RequestReadyStateChanged;
	radWindowContentRequest.open("GET", src, true);
	radWindowContentRequest.send(null);
}

function RequestReadyStateChanged() {
	if (!isPopapActive)
		return;
	
	if (radWindowContentRequest.readyState == 4 && radWindowContentRequest.status == 200 &&
		radWindowContentRequest.responseText != null && radWindowContentRequest.responseText != '') {
		SetDisplay('radWindowLoadingPanel', 'none');
		SetDisplay('radWindowContent', '');
		var result = eval("(" + radWindowContentRequest.responseText + ")");
		if (result) {
			var radWindowTitle = document.getElementById('radWindowTitle');
			if (radWindowTitle) {
				radWindowTitle.innerHTML = result.Title;
			}
			var radWindowContent = document.getElementById('radWindowContent');
			if (radWindowContent) {
				radWindowContent.innerHTML = result.Content;
            }

            if (isScrollable && radWindowContent != null &&
                radWindowContent.clientHeight > 300) {
                radWindowContent.style.height = "300px";
                //radWindowContent.className = "RadWindowScrollable";
                radWindowContent.scrollTop = 0;
                
                // fix title width for ie6
                var radWindowMain = document.getElementById('radWindowMain');
                if (radWindowMain && radWindowTitle) {
                    radWindowTitle.style.width = (radWindowMain.clientWidth - 20) + "px";
                }

                $("#data").fixedHeader({
                    width: 630, height: 300
                });
            }
		}
	}
}