function extLink(thisUrl,thisName)
{
    if (confirm("By clicking [ OK ] you will be taken to another website,\nwhich may offer a different privacy policy and\nlevel of security from TIB.\n\nTIB is not responsible for and does not endorse,\nguarantee or monitor content, availability, viewpoints,\nproducts or services that are offered or expressed\non other Web sites, except for those products and\nservices that explicitly carry our name.\n\nYou can click on [ Cancel ] to remain on the current page."))
    {
        if (thisName == '') thisName = Math.random();
        thisRef = window.open(thisUrl,thisName);
    }
}

function CreateBookmarkLink()
{
    if (window.sidebar)
    { // Mozilla Firefox Bookmark
        window.sidebar.addPanel( document.title, location.href, '');
    }
    else if (window.external)
    { // IE Favorite
        window.external.AddFavorite( location.href, document.title );
    }
    else if (window.opera && window.print)
    { // Opera Hotlist
        return true;
    }
}

function confirmAction(msg)
{
    if (!msg|| msg.length < 1)
    {
        var msg= "May I continue with this action?";
    }


    var agree=confirm(msg);

    if (agree)
    {
        return true ;
    }
    else
    {
        return false ;
    }
}


function blurSearch(obj)
{
    if (obj.value != '' && obj.value != 'Search...')
    {
        alert('Search would submit (' + obj.value + ')');
    }

    obj.value='Search...';
}

function focusSearch(obj)
{
    if (obj.value == 'Search...') obj.value = '';
}

function customHighlight(obj,flag)
{
    switch(flag)
    {
        case 1:
        //new Effect.Highlight(obj, {duration:0.3, startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99'})
        $(obj).addClassName('highlight');
        break;
        case 0:
        //new Effect.Highlight(obj, {duration:0.3, startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff'})
        $(obj).removeClassName('highlight');
        break;
    }
}

function changeParentClass(o,c)
{
    p = o.parentNode;
    p.setAttribute('class',c);

    tabs = $('tabs').getElementsByTagName('LI');

    for(i=0;i<tabs.length;i++)
    {
        if (p != tabs[i] && tabs[i].nodeName == 'LI') tabs[i].removeAttribute('class');
    }

}

function hideParent(o)
{
    o.parentNode.hide();
}

function visibleChildren(id)
{
    children = $(id).descendants();
    for(i=0;i<children.length;i++)
    {
        if (children[i].nodeName == 'LI') children[i].show();
    }
}

function pushNextElement(o, l)
{
    end = (l == 0) ? o.getAttributeNode('maxlength').value : l;

    if (end == o.value.length)
    {
        // Prototype call
        $(o).next().focus();
    }
}

startLoad = function()
{
    new Effect.Appear('loading', {queue:'parallel'});
}
endLoad = function()
{
    new Effect.Fade('loading', {queue:'parallel'});
}

setFormElements = function(obj)
{
    for(key in obj)
    {
        if (obj[key]) $(key).value = obj[key];
        else $(key).value = '';
    }
}

loopArray = function (items)
{
    if (items.length > 0)
    {
        for(i=0;i<items.length;i++)
        {
            alert(items[i]);
        }
    }
    else
    {
        loopArray(items.toArray());
    }
    return false;
}

function setData(key,str)
{
    var newKey = key;
    var value = str;


}

function resetForm(form)
{
    f = document.forms[form];
    f.reset();
}

numbersDivClose = function()
{

    $('numberDataSubmit').hide();
}

numbersDivOpen = function()
{
    $('numberData').show();
    $('numberDataSubmit').show();
}

numbersShowData = function (a)
{
    $('numberData').show();
    $('numberDataSubmit').show();

    for(i=0;i<a.length;i++)
    {
        alert(a[i].length);
    }

}

function showRemoveButton()
{
    $('removeButton').show();
}

function hideRemoveButton()
{
    $('removeButton').hide();
}

departmentsDivClose = function()
{

    $('departmentDataSubmit').hide();
}

departmentsDivOpen = function()
{
    $('departmentData').show();
    $('departmentDataSubmit').show();
}

departmentsShowData = function (a)
{
    $('departmentData').show();
    $('departmentDataSubmit').show();

    for(i=0;i<a.length;i++)
    {
        alert(a[i].length);
    }

}

function addHiddenForm(f,n,v)
{
    new Insertion.Top(f,'<input type="hidden" id="'+n+'" name="'+n+'" value="'+v+'" />');

    $('addAction').hide();
}

function goTo(url)
{
    if (confirmAction())
    {
        window.location = url;
    }
}

getImage = function(obj, url, showLoading)
{
    var sLoading = '<img id="loading" src="/images/mozilla_blu.gif" alt="Loading..." />';
    var showLoading = showLoading;
    var sHost = location.host;
    var sProtocol = location.protocol;
    var sWebRoot = sProtocol + '//' + sHost;

    if (!url.search(sProtocol)) url = sWebRoot + url;

    new Ajax.Request(url, {
        onLoading: function(transport)
        {
            new Insertion.Top(obj, sLoading);
            if (showLoading)
            {
                startLoad();
            }
        },
        onFailure: function(transport, json)
        {
            endLoad();
            $(obj).hide();
            if (showLoading)
            {
                $('loading').remove();
            }

            alert('Failure');

            var sJson = transport.responseText;
            alert(sJson);

            new Effect.Appear(obj);
        },
        onSuccess: function(transport, json)
        {
            endLoad();
            $(obj).hide();
            if (showLoading)
            {
                $('loading').remove();
            }
        },
        onComplete: function(transport, json)
        {
            var oJson = eval('(' + transport.responseText + ')');
            var sJson = transport.responseText;

            $(obj).update('');

            if (oJson.Result.length > 0)
            {
                new Insertion.Bottom(obj, '<img src="'+oJson.Result+'" />');
            }
            else
            {
                new Insertion.Bottom(obj, '<strong>Could not find image for...</strong> ');
            }

            new Effect.Appear(obj);
        }

    })
}

getData = function(obj, url, descWordCount, itemsInList, currentPage, showLoading)
{
    var objDimensions = $(obj).getDimensions();
    var marginWidthPx = objDimensions.width/2;
    var marginHeightPx = objDimensions.height/2;
    var sLoading = '<img id="loading" style="display:none" src="/images/mozilla_blu.gif" alt="Loading..." />';
    var iDescWordCount = descWordCount;
    var iItemsInList = itemsInList;
    var iCurrentPage = currentPage;
    var showLoading = showLoading;

    new Ajax.Request(url, {
        onLoading: function(transport)
        {
            $(obj).descendants().each(function(s)
            {
                new Effect.Fade(s, {queue:'parallel'});
            });

            if (showLoading)
            {
                new Insertion.Top(obj, sLoading);
                startLoad();
            }
        },
        onFailure: function(transport, json)
        {
            $(obj).hide();

            if (showLoading)
            {
                $('loading').remove();
            }

            alert('Failure');

            var sJson = transport.responseText;
            alert(sJson);

            new Insertion.Bottom(obj, '<p>&raquo; <a href="javascript:;" onclick="getData(\''+obj+'\',\''+url+'\', '+iDescWordCount+', '+iItemsInList+', 1, true);$(\''+obj+'\').update(\'\');">Refresh</a></p>');
            new Effect.Appear(obj);
        },
        onSuccess: function(transport, json)
        {
            //$(obj).hide();

            if (showLoading)
            {
                $('loading').remove();
            }

        },
        onComplete: function(transport, json)
        {
            var oJson = eval('(' + transport.responseText + ')');
            var sJson = transport.responseText;

            $(obj).update();

            var iItemsCount = oJson.items.length;
            var iItemCount = 0;

            oJson.items.each(function(item)
            {
                var iEndCount = (iItemsInList * iCurrentPage);
                var iStartCount = (iEndCount - iItemsInList);

                iItemCount++;

                if (iItemCount <= iEndCount && iItemCount > iStartCount)
                {
                    var desc = item.description.split(" ");
                    var newDesc = '';

                    if (desc.length >= iDescWordCount)
                    {
                        desc = desc.slice(0, iDescWordCount);
                    }
                    newDesc = desc.join(" ");

                    new Insertion.Bottom(obj, '<p><strong><a href="javascript:extLink(\''+item.link+'\')">'+item.title+'</a></strong><br />'+newDesc+'...</p>');
                }
                //}
            });

            if (iItemsCount > iItemsInList)
            {
                var iTotalPages = (iItemsCount/iItemsInList);

                if (iTotalPages > Math.round(iTotalPages))
                {
                    var iTotalPages = Math.round(iTotalPages + 1);
                }
                else
                {
                    var iTotalPages = Math.round(iTotalPages);
                }

                var buildString = '<p style="display:none">&raquo; Lists: ';
                for(i=1;i<=iTotalPages;i++)
                {
                    if (i > 1)
                    {
                        buildString = buildString + ' | ';
                    }

                    if (i != iCurrentPage)
                    {
                        buildString = buildString + '<a href="javascript:;" onclick="getData(\''+obj+'\',\''+url+'\', '+iDescWordCount+', '+iItemsInList+', '+i+', '+showLoading+');">'+i+'</a>';
                    }
                    else
                    {
                        buildString = buildString + '<strong>'+i+'<strong>';
                    }
                }
                new Insertion.Bottom(obj, buildString);
                new Insertion.Bottom(obj, '</p>');
            }

            //new Insertion.Bottom(obj, '<p>&raquo; <a href="javascript:;" onclick="getData(\''+obj+'\',\''+url+'\', '+iDescWordCount+', '+iItemsInList+', 1);$(\''+obj+'\').update(\'\');">Refresh</a></p>');
            //new Effect.Appear(obj,{duration:2});
            $(obj).descendants().each(function(s)
            {
                new Effect.Appear(s);
            });
        }
    });
}

setFormData = function(obj, data)
{
    var oJson = eval('(' + data + ')');
    var sJson = data;

    for(key in oJson)
    {
        if ($(key)) $(key).value = oJson[key];
    }
}

getFormData = function(obj, url)
{
    var sLoading = '<img id="loading" src="/images/mozilla_blu.gif" alt="Loading..." />';

    new Ajax.Request(url, {
        onLoading: function(transport)
        {
            new Insertion.Before(obj, sLoading);
            startLoad();
        },
        onSuccess: function(transport, json)
        {
            endLoad();
            $('loading').remove();

            setFormData (obj, transport.responseText);
        }
    });
}

submitFormData = function(obj)
{
    if ($(obj).next('.errMsg')) $(obj).next('.errMsg').remove();

    var sLoading = '<img id="loading" src="/images/mozilla_blu.gif" alt="Loading..." />';
    var myParent = obj.parentNode;
    var sData = $(myParent).serialize(true);

    new Ajax.Request($(myParent).action, {
        method: 'post',
        parameters: sData,
        onLoading: function(transport)
        {
            new Insertion.Before(obj, sLoading);
            startLoad();
        },
        onSuccess: function(transport, json)
        {
            endLoad();
            $('loading').remove();
        },
        onFailure: function(transport, json)
        {
            endLoad();
            $('loading').remove();
            var sJson = transport.responseText;
            alert(sJson);
        },
        onComplete: function(transport, json)
        {
            var oJson = eval('(' + transport.responseText + ')');
            var sJson = transport.responseText;

            for(key in oJson)
            {
                if (key == 'confirm' || key == 'error')
                {
                    var value = oJson[key];
                    $(key).update(buidElementUl(value));
                    if (!$(key).visible()) new Effect.BlindDown(key);
                }
            }

        }
    });
}

buidElementUl = function(a)
{
    var str = '<ul>';
    for(i=0;i<a.length;i++)
    {
        str = str + '<li>' + a[i] + '</li>';
    }
    str = str + '</ul>';
    return str;
}

forcePhoneFormat = function (obj)
{
    // Example : XXX-XXX-XXXXxXXXXX
    switch ($(obj).value.length)
    {
        case 3:
        case 7:
            $(obj).value = $(obj).value + "-";
        break;
        case 12:
            $(obj).value = $(obj).value + "x";
        break;
    }
    
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

function addRequiredTo(n)
{
    if (isArray(n))
    {
        for(i=0;i<n.length;i++)
        {
            addRequiredTo(n[i]);
        }
    }
    else
    {
        $(n).addClassName('required');
    }
}

function removeRequiredFrom(n)
{
    if (isArray(n))
    {
        for(i=0;i<n.length;i++)
        {
            removeRequiredFrom(n[i]);
        }
    }
    else
    {
        $(n).removeClassName('required');
    }
}