//************************************************************************************
// Copyright (C) 2006, Massimo Beatini
//
// This software is provided "as-is", without any express or implied warranty. In 
// no event will the authors be held liable for any damages arising from the use 
// of this software.
//
// Permission is granted to anyone to use this software for any purpose, including 
// commercial applications, and to alter it and redistribute it freely, subject to 
// the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not claim 
//    that you wrote the original software. If you use this software in a product, 
//    an acknowledgment in the product documentation would be appreciated but is 
//    not required.
//
// 2. Altered source versions must be plainly marked as such, and must not be 
//    misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
//
//************************************************************************************

//
// global variables
//
var isMozilla;
var objDiv = null;
var originalDivHTML = "";
var DivID = "";
var over = false;

//
// dinamically add a div to 
// dim all the page
//
function buildDimmerDiv()
{
    document.write('<div id="dimmer" class="dimmer" style="width:'+ window.screen.width + 'px; height:' + window.screen.height +'px"></div>');
}


//
//
//
function displayFloatingDiv(divId, title, width, height, left, top) 
{
	DivID = divId;

	document.getElementById('dimmer').style.visibility = "visible";

    document.getElementById(divId).style.width = width + 'px';
    document.getElementById(divId).style.height = height + 'px';
    document.getElementById(divId).style.left = left + 'px';
    document.getElementById(divId).style.top = top + 'px';
	
	var addHeader;
	
	if (originalDivHTML == "")
	    originalDivHTML = document.getElementById(divId).innerHTML;
	
	addHeader = '<table border="0" cellspacing="0" cellpadding="0" align="center"><tr><td class="linebg" valign="top"><table style="width:' + width + 'px" class="ntitleheader">' +
	            '<tr><td class="ntitlenew" ondblclick="void(0);" onmouseover="over=true;" onmouseout="over=false;" style="cursor:move;height:18px">' + title + '</td>' + 
	            '<td style="width:18px" align="right"><a href="javascript:hiddenFloatingDiv(\'' + divId + '\');void(0);">' + 
	            '<img alt="Close..." title="Close..." src="images/close.jpg" border="0"></a></td></tr></table></td></tr></table>';
	

    // add to your div an header	
	document.getElementById(divId).innerHTML = addHeader + originalDivHTML;
	
	
	document.getElementById(divId).className = 'dimming';
	document.getElementById(divId).style.visibility = "visible";


}


//
//
//
function hiddenFloatingDiv(divId) 
{
	document.getElementById(divId).innerHTML = originalDivHTML;
	document.getElementById(divId).style.visibility='hidden';
	document.getElementById('dimmer').style.visibility = 'hidden';
	
	DivID = "";
}

//
//
//
function MouseDown(e) 
{
    if (over)
    {
        if (isMozilla) {
            objDiv = document.getElementById(DivID);
            X = e.layerX;
            Y = e.layerY;
            return false;
        }
        else {
            objDiv = document.getElementById(DivID);
            objDiv = objDiv.style;
            X = event.offsetX;
            Y = event.offsetY;
        }
    }
}


//
//
//
function MouseMove(e) 
{
    if (objDiv) {
        if (isMozilla) {
            objDiv.style.top = (e.pageY-Y) + 'px';
            objDiv.style.left = (e.pageX-X) + 'px';
            return false;
        }
        else 
        {
            objDiv.pixelLeft = event.clientX-X + document.body.scrollLeft;
            objDiv.pixelTop = event.clientY-Y + document.body.scrollTop;
            return false;
        }
    }
}

//
//
//
function MouseUp() 
{
    objDiv = null;
}


//
//
//
function init()
{
    // check browser
    isMozilla = (document.all) ? 0 : 1;


    if (isMozilla) 
    {
        document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
    }

    document.onmousedown = MouseDown;
    document.onmousemove = MouseMove;
    document.onmouseup = MouseUp;

    // add the div
    // used to dim the page
	buildDimmerDiv();

}

// call init
//init();

function OpenDivPopUp(content)
{
 myDialog.Open();
 document.getElementById('tdContent').innerHTML = ReplaceXMLEscapeCharacters(content);
}

function displayWindow()
{
    var w, h, l, t;
    w = 400;
    h = 200;
    
    var posX = getScreenCenterX();
    l = posX;
    var posY = getScreenCenterY(); 
    t = posY;//document.documentElement.scrollHeight / 3 + 100;
    
    // no title		        
    // displayFloatingDiv('windowcontent', '', w, h, l, t);

    // with title		        
    displayFloatingDiv('windowcontent', 'Details', w, h, l, t);
}

function EscapeXMLCharacters(rawString)
{
 if (rawString == null || trim(rawString) == "")
    {
        return rawString;
    }
    var xmlCharacters = [">", "<", "\"", "'", "&"];
    var escapeCharacters = ["&gt;", "&lt;", "&quot;", "&apos;", "amp;" ];
       
    var formatedString = rawString;
    var regExpression;
    var index;
    for (index = 0; index < xmlCharacters.length; index++)
    {
        regExpression =  new RegExp(xmlCharacters[index], "g");
        formatedString = formatedString.replace(regExpression, escapeCharacters[index]);
    }
    return formatedString;
}
function ReplaceXMLEscapeCharacters(rawString)
{
    if (rawString == null )
    {
        return rawString;
    }
    rawString = new String(rawString);
    var xmlCharacters = [">", "<", "\"", "'", "&"];
    var escapeCharacters = ["&gt;", "&lt;", "&quot;", "&apos;", "amp;"];
       
    var formatedString = rawString;
    var regExpression;
    var index;
    for (index = xmlCharacters.length; index > 0; index--)
    {
        regExpression =  new RegExp(escapeCharacters[index - 1], "g");
        formatedString = formatedString.replace(regExpression, xmlCharacters[index - 1]);
    }
    return formatedString;
}


 
 
function getScreenCenterY() 
{ 
var y = 0; 
 
 
y = getScrollOffset()+(getInnerHeight()/2); 
 
 
return(y); 
} 
 
 
function getScreenCenterX() 
{ 
return(document.body.clientWidth/2); 
} 
 
 
function getInnerHeight()
{ 
var y; 
if (self.innerHeight) // all except Explorer 
{ 
y = self.innerHeight; 
} 
else if (document.documentElement && document.documentElement.clientHeight) 
{ 
  y = document.documentElement.clientHeight; 
} 
else if (document.body) // other Explorers 
{ 
y = document.body.clientHeight; 
} 
return(y); 
} 
function getScrollOffset() 
{ 
var y; 
if (self.pageYOffset) // all except Explorer 
{ 
y = self.pageYOffset; 
} 
else if (document.documentElement && document.documentElement.scrollTop) 
{ 
y = document.documentElement.scrollTop; 
} 
else if (document.body) // all other Explorers 
{ 
y = document.body.scrollTop; 
} 
return(y); 
}
