//************************************************************************************
// scrolling_popup
// 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.
//
//************************************************************************************
// float directions
var leftRight = 1;
var rightLeft = 2;
var topDown = 3;
var bottopUp = 4;
// side
var leftSide = 1;
var rightSide = 2;
// position
var topCorner = 1;
var bottomCorner = 2;
// default title
//var _title = 'Put here your title';
var _title ='';
// default width
var popupWidth = 210;
var popupHeight = 81;
var only_once_per_browser = false;
var ns4 = document.layers;
var ie4 = document.all;
var ns6 = document.getElementById&&!document.all;
var crossobj;
function getCrossObj()
{
var contentDiv;
var titleDiv;
if (ns4)
{
crossobj = document.layers.postit;
contentDiv = document.layers.postit_content;
titleDiv = document.layers.postit_title;
}
else if (ie4||ns6)
{
crossobj = ns6? document.getElementById("postit") : document.all.postit;
contentDiv = ns6? document.getElementById("postit_content") : document.all.postit_content;
titleDiv = ns6? document.getElementById("postit_title") : document.all.postit_title;
}
crossobj.style.width = popupWidth + 'px';
crossobj.style.height = popupHeight + 'px';
// adjust the size of the div "content"
contentDiv.style.width = (popupWidth-8) + 'px';
contentDiv.style.height = (popupHeight-26) + 'px';
// adjust the width of the div "title"
titleDiv.style.width = (popupWidth-8) + 'px';
titleDiv.style.height='0px'
}
//
// buildPopup_Frame
// passing it the url of the frame to display inside
//
function buildPopup_Frame(width, height, title, framesrc)
{
if (width)
popupWidth = width;
if (height)
popupHeight = height;
if (title)
_title = title
document.write('
');
document.write('
' + _title + '
');
document.write('
');
document.write('');
document.write('
');
getCrossObj();
}
//
// buildPopup_HtmlCode
// build popup passing it the html code to put inside
//
function buildPopup_HtmlCode(width, height, title, htmlCode)
{
if (width)
popupWidth = width;
if (height)
popupHeight = height;
if (title)
_title = title
document.write('');
document.write('
' + _title + '
');
document.write('
');
document.write(htmlCode);
document.write('
');
getCrossObj();
}
//
// closeit
//
function closeit()
{
if (ie4||ns6)
crossobj.style.visibility="hidden";
else if (ns4)
crossobj.visibility="hide";
}
//
// get_cookie
//
function get_cookie(Name)
{
var search = Name + "=";
var returnvalue = "";
if (document.cookie.length > 0)
{
offset = document.cookie.indexOf(search);
if (offset != -1)
{
// if cookie exists
offset += search.length;
// set index of beginning of value
end = document.cookie.indexOf(";", offset);
// set index of end of cookie value
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end));
}
}
return returnvalue;
}
//
// check the cookie
//
function showOrNot(direction)
{
var showit = false;
if (get_cookie('postTheBoxDisplay')=='')
{
showit = true;
document.cookie = "postTheBoxDisplay=yes";
}
return showit;
}
//
// showItRight
//
function showIt(direction)
{
var steps;
steps = Math.floor(popupHeight / 4)+5;
if (ie4||ns6)
{
crossobj.style.visibility = "visible";
if ((direction == rightLeft) || (direction == leftRight))
flyTheBox(direction, 0, popupWidth , steps, 1000);
else
flyTheBox(direction, 0, popupHeight , steps, 1000);
}
else if (ns4)
crossobj.visibility = "show";
}
//
// flyTheBox
//
function flyTheBox(direction, start, end, steps, msec, counter)
{
if(!counter)
counter = 1;
var tmp;
if(start < end)
{
if (direction == rightLeft)
crossobj.style.width = end / steps * counter + 'px';
else if (direction == bottopUp)
crossobj.style.height = end / steps * counter + 'px';
else if (direction == topDown)
crossobj.style.top = ((end / steps * counter) - popupHeight) + 'px';
else if (direction == leftRight)
crossobj.style.left = (end / steps * counter)-popupWidth + 'px';
}
else
{
tmp=steps - counter;
if (direction == rightLeft)
crossobj.style.width = start / steps * tmp + 'px';
else if (direction == bottopUp)
crossobj.style.height = start / steps * tmp + 'px';
else if (direction == topDown)
crossobj.style.top = ((end / steps * counter) - popupHeight) + 'px';
}
if(counter != steps)
{
counter++;
flyTheBox_timer=setTimeout('flyTheBox('+ direction + ',' + start + ','+ end + ',' + steps + ',' + msec + ', '+ counter + ')', msec/steps);
}
else
{
if(start > end)
crossobj.style.display = 'none';
}
}
//
// ShowTheBox
//
function ShowTheBox(only_once, side, corner, direction)
{
if (side == leftSide)
{
if (direction == rightLeft)
return;
crossobj.style.left = '1px';
}
else
{
if (direction == leftRight)
return;
crossobj.style.right = '1px';
}
if ((corner == topCorner) && (direction == bottopUp))
return;
if ((corner == bottomCorner) && (direction == topDown))
return;
if ( (direction == topDown) && (corner == topCorner) )
crossobj.style.top = '-' + popupHeight + 'px';
else if ( ((direction == rightLeft)||(direction == leftRight)) && (corner == topCorner) )
crossobj.style.top = '1px';
else if (corner == bottomCorner)
crossobj.style.bottom = '2px';
if (only_once)
only_once_per_browser = only_once;
if (only_once_per_browser)
{
// verify the presence of a cookie
if (showOrNot())
showIt(direction);
}
else
setTimeout("showIt("+ direction + ")",1030);
}