function forceInt(x, y)
{
	return isNaN(y = parseInt(x))? 0 : y;
}

function getDivW(el)
{
	return forceInt(
		el ? (el.offsetWidth || el.style.pixelWidth || el.style.width || 0)
		: 0
	);
}

function getDivH(el)
{
	return forceInt(
		el ? (el.offsetHeight || el.style.pixelHeight || el.style.height || 0)
		: 0
	);
}

function getAbsolutePosition(el)
{
	_absX = 0;
	_absY = 0;
	
	while (el)
	{
		_absX += forceInt(el.offsetLeft);
		_absX -= forceInt(el.scrollLeft);

		_absY += forceInt(el.offsetTop);
		_absY -= forceInt(el.scrollTop);
		
		el = el.offsetParent || null;
	}
}

function getOffsetPosition(el)
{
	_absX = 0;
	_absY = 0;
	
	while (el)
	{
		_absX += forceInt(el.offsetLeft);
		_absY += forceInt(el.offsetTop);
		
		el = el.offsetParent || null;
	}
}

function nodeValue(node)
{
    return (node.firstChild == null) ? '' : node.firstChild.nodeValue
}

function toggleDivDisplay(id)
{
    var div = document.getElementById(id);
    if (!div)
        return;
        
    div.style.display = (div.style.display == 'none') ? '' : 'none';
}

function isDivVisible(id) 
{
    var div = document.getElementById(id);
    if (!div)
        return;

    var display = div.style.display != 'none';
    var visibility = div.style.visibility == 'visible';

    return display && visibility;
}

// CALENDAR
//

function calendarFocus(divID)
{
    // Mark as focused
    eval('window.focus_' + divID + ' = true;');

    // Show popup
    showDiv(divID);
}

function calendarBlur(divID)
{
    // Mark as blurred
    eval('window.focus_' + divID + ' = false;');

    // If not moused over, hide popup
    eval('var over = window.over_' + divID + ';');
    if (!over)
        hideDiv(divID);
}

function calendarOver(divID)
{
    // Mark as moused over
    eval('window.over_' + divID + ' = true;');
}

function calendarOut(divID, e)
{
    if (window.event)
        e = window.event;
        
    var div = document.getElementById(divID);
    if (!div)
        return;

    var eventX = e.clientX + document.body.scrollLeft;
    var eventY = e.clientY + document.body.scrollTop;
    getAbsolutePosition(div);
    var divW = getDivW(div);
    var divH = getDivH(div);

    // Ignore this event if the cursor is inside the div
    if (eventX > _absX && eventX < _absX + divW && eventY > _absY && eventY < _absY + divH)
        return;
    
    // Mark as moused out
    eval('window.over_' + divID + ' = false;');

    // If not focused, hide popup
    eval('var focus = window.focus_' + divID + ';');
    if (!focus)
        hideDiv(divID);
}

// HOVER
//

function hoverOver(o)
{
    _hoverColor = o.style.backgroundColor;
    o.style.backgroundColor = '#CCCCCC';
}

function hoverOut(o)
{
    o.style.backgroundColor = _hoverColor;
}

function hoverClick(o)
{
    _hoverColor = '#EEEEEE';
}

// SHOW/HIDE

function showDiv(divID)
{
    var div = document.getElementById(divID);
    if (!div)
        return;

    div.style.visibility = 'visible';
}

function hideDiv(divID)
{
    var div = document.getElementById(divID);
    if (!div)
        return;

    div.style.visibility = 'hidden';
}

function hideDivTimeout(divID, time)
{
    setTimeout("hideDiv('" + divID + "')", time);
}

function toggleDiv(divID)
{
    var div = document.getElementById(divID);
    if (!div)
        return;

    if (div.style.visibility == 'visible')
        div.style.visibility = 'hidden';
    else
        div.style.visibility = 'visible';
}

function rollOver(img, imageName)
{   
    if (!img)
        return;
    
    img.src = imageName;
}

// POPUP
//

function popup(url, width, height, winId, scroll)
{
    if (winId == null) {
        time = new Date();
        winId = time.getTime().toString();
    }
    if (!winId.substr(0, 3) == 'tn_')
        winId = 'tn_' + winId;

    var wtop = (screen.height - height) / 2 - 75;
    var wleft = (screen.width - width) / 2;
    var ref = window.open(url,winId,'width='+width+',height='+height+',top='+wtop+',left='+wleft+',resizable=yes,scrollbars=' + (scroll ? 'yes' : 'no') + ',toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no');
    ref.focus();

    return ref;
}

// UPLOAD
//

function preUpload(id)
{
    var form = document.forms['aspnetForm'];
    var action = form.elements[id + '_Action'];
    var target = form.target;

    // Set values
    action.value = 'upload';    
    form.target = id + '_Target';
    
    // Submit form
    form.submit();

    // Restore values
    action.value = '';
    form.target = target;
}

function postUpload(id, filename, displayname)
{
    var hidden = document.getElementById(id + '_SlickBack');
    var slickback = hidden.value.replace("__FILE__", filename);
    slickback = slickback.replace("__DISPLAY__", displayname);

    eval(slickback);
}

// UPS ADDRESS VERIFICATION
//

var _avUPSWindow = null;

function openUPSAddressVerification()
{
    _avUPSWindow = popup('UPSAddressEmpty.aspx', 450, 350, 'av', true);
}

function viewUPSAddressVerification(address)
{
    if (!_avUPSWindow)
        return;

    _avUPSWindow.location = 'UPSAddressVerification.aspx?Address=' + address;
}

// USPS ADDRESS VERIFICATION
//

var _avUSPSWindow = null;

function openUSPSAddressVerification()
{
    _avUSPSWindow = popup('USPSAddressEmpty.aspx', 600, 350, 'av', true);
}

function viewUSPSAddressVerification(address)
{
    if (!_avUSPSWindow)
        return;

    _avUSPSWindow.location = 'USPSAddressVerification.aspx?Address=' + address;
}

// TREE VIEW
//

function copyAttributes(source, target)
{
    var i;
    var attrs = source.attributes;
    for (i=0; i<attrs.length; i++)
    {
        var attr = attrs.item(i);

        if (attr.name == 'style')
            target.style.cssText = attr.value;
        else
            target.setAttribute(attr.name, attr.value);
    }
}

function treeClick(img)
{
    img.className = (img.className == 'treeOpen') ? 'treeClosed' : 'treeOpen';
}

function treeViewExpand(node)
{
    var dataList = node.getElementsByTagName('data');
    if (dataList.length == 0)
        return;
        
    var data = dataList[0];
    var id = data.getAttribute('id');
    var parent = document.getElementById(id);
    if (!parent)
        return;
        
    var root = parent.parentNode;
    var target = parent.nextSibling;
    
    var i;
    for (i=0; i<data.childNodes.length; i++)
    {
        var row = data.childNodes[i];
        if (row.nodeType != 1)
            continue;

        if (row.nodeName == 'div')
        {
            var div = document.createElement('div');
            copyAttributes(row, div);
            div.innerHTML = nodeValue(row);
            
            root.insertBefore(div, target);
        }
        else
        {
            var tr = document.createElement('tr');
            copyAttributes(row, tr);

            root.insertBefore(tr, target);
            
            var j;
            for (j=0; j<row.childNodes.length; j++)
            {
                var cell = row.childNodes[j];
                
                var td = document.createElement('td');
                copyAttributes(cell, td);
                td.innerHTML = nodeValue(cell);

                tr.appendChild(td);
            }
        }
    }
}

function treeViewCollapse(node)
{
    var dataList = node.getElementsByTagName('data');
    if (dataList.length == 0)
        return;
        
    var data = dataList[0];
    var id = data.getAttribute('id');
    var parent = document.getElementById(id);
    if (!parent)
        return;
        
    var root = parent.parentNode;
        
    var current;
    var next = parent.nextSibling;
    while (next)
    {
        current = next;
        next = current.nextSibling;
    
        if (current.nodeType != 1)
            continue;
            
        var childID = current.getAttribute('id');
        if (!childID)
            continue;
        
        if (childID.substring(0, id.length) != id)
            break;
 
        root.removeChild(current); 
    }
}

// SEARCH FIELDS
// 

function searchFocus(f)
{
    if (f.value == f.title)
    {
        f.value = '';
        f.className = 'input';
    }
}

function searchBlur(f)
{
    if (f.value == '')
    {
        f.value = f.title;
        f.className = 'inputGrey';
    }
}

// AD DISPLAY
//

function initializeAds()
{
    var args = arguments;
    var i;

    for (i = 0; i < args.length; i++) 
    {
        var time = args[i];
        var element = document.getElementById("Ad" + i);

        if (element) 
        {
            if (i > 0)
                setTimeout("document.getElementById('Ad" + (i - 1) + "').style.display='none';", time);
            setTimeout("document.getElementById('Ad" + i + "').style.display='';", time);
        }
    }
}

function initWatermarks(cssClass) {
    var inputs = $('.' + cssClass);
    inputs.each(function() {
        $(this).val($(this).attr('title'));
        if ($(this).val() == $(this).attr('title'))
            $(this).addClass('on');

        if ($(this).attr('type') == 'password') {
            var dummy = $(document.createElement('input'));
            dummy.attr('type', 'text');
            dummy.attr('class', $(this).attr('class'));
            dummy.attr('tabindex', $(this).attr('tabindex'));
            dummy.attr('style', $(this).attr('style'));
            dummy.val($(this).val());
            dummy.addClass('dummy');

            dummy.focus(function() {
                $(this).hide();
                $(this).prev('input[type="password"]').show();
                $(this).prev('input[type="password"]').focus();
            });

            $(this).hide();
            $(this).val('');
                        
            dummy.insertAfter(this);
        }
    });

    inputs.blur(function() {
        if ($(this).val().length == 0) {
            $(this).addClass('on');
            $(this).val($(this).attr('title'));

            if ($(this).attr('type') == 'password') {
                $(this).hide();
                $(this).next().show();
            }
        }
    });

    inputs.focus(function() {
        if ($(this).val() == $(this).attr('title') ||
		   ($(this).hasClass('on') && $(this).attr('type') == 'password')) {
            $(this).val('');
            $(this).removeClass('on');
        }
    });
}

if ($) $(document).ready(function() { initWatermarks('watermark'); });