function getCoords(object)
{
	var coords = new Object();
  	coords.x = coords.y = 0;
	for (null; object != null; coords.x += object.offsetLeft, coords.y += object.offsetTop, object = object.offsetParent) {}
	return coords;
}

function adjustWindowHeight()
{
    if (navigator.userAgent && -1 !== navigator.userAgent.indexOf('MSIE')) {
        var footer = document.getElementById('footer');
        footer && (footer.style.top = (document.body.clientHeight - 102) + 'px');
        footer;
    }
}

function addEvent( obj, type, fn )
{
    if (obj.addEventListener) {
        obj.addEventListener( type, fn, false );
    } else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj.attachEvent( "on"+type, function() { obj["e"+type+fn](); } );
	}
}

function removeEvent(obj, type, fn )
{
	if (obj.removeEventListener) {
		obj.removeEventListener( type, fn, false );
	} else if (obj.detachEvent) {
		obj.detachEvent( "on"+type, obj["e"+type+fn] );
		obj["e"+type+fn] = null;
	}
}


var global_popups = new Array()
var current_popup;
function addCloser(popup)
{
    global_popups.push(popup);
}

function closer(ev)
{
    var event = ev || window.event;

    for (var kww in global_popups) {
        var ww = global_popups[kww];
        var target = event.target || event.srcElement;
        var notfound = true;

        for (var i=0; i<32 && !!target.parentNode; i++) {
            if (ww != target && ww != current_popup) {
                target = target.parentNode;
            } else {
                notfound = false;
                break;
            }
        }

        notfound && ww && (ww.style.display = 'none');
    }
}

/* obj - link 
   baloon - div-object to be shown
   dx, dy - coordinates difference
   autohide - boolean
*/
function ShowBalloon(obj, baloon, dx, dy, autohide)
{
	if (!dx) dx = 0;
	if (!dy) dy = 0;
	var pos = getCoords(obj);
	var top = (pos.y + dy)+ "px";
	var left = (pos.x - dx) + "px";
	if ( obj && ( baloon.style.display != "block" || (top != baloon.style.top || left != baloon.style.left))) {
		baloon.style.top = top;
		baloon.style.left = left;
		current_popup = baloon; 
		baloon.style.display = "block";
	} else {
		baloon.style.display = "none";
		current_popup = null; 
	}
	if (autohide) setTimeout("current_popup = null", 10);
}

if (document.addEventListener) {
    document.addEventListener('click', closer, false);
} else if (document.attachEvent) {
    document.attachEvent('onclick', closer);
}

function parseInt0(a) {
	var n = parseInt(a);
	if (isNaN(n)) n = 0;
	return n;
}

function displayFileName(fileInput, displayName, labelId, buttonId, maxLength, maxDisplayLength, msg)
{
    var fileName = '';
    var label = document.getElementById(labelId);
    var button = document.getElementById(buttonId);
    var display = document.getElementById(displayName);

    maxLength = maxLength || 66;
    maxDisplayLength = maxDisplayLength || 50;
    msg = msg || 'File name too long';
    //button && (button.style.display = 'inline');

    if (!display) {
        return false;
    } else {
        /* clean up */
        while (display.firstChild) {
            display.removeChild(display.firstChild);
        }

        if (label) {
            var kbds = label.getElementsByTagName('kbd');

            for (var i = 0; i < kbds.length; ++i) {
                if (label == kbds[i].parentNode) {
                    label.removeChild(kbds[i]);
                }
            }
        }
    }

    if (fileInput.value) {
        fileName = fileInput.value.split(/[\\\/]/)[fileInput.value.split(/[\\\/]/).length - 1];
        
        if (fileName.length > maxLength) {
            var kbd = document.createElement('kbd');
            kbd.appendChild(document.createTextNode(msg));
            label && label.appendChild(kbd);
            button && (button.style.display = 'none');
        }
        
        if (fileName.length > maxDisplayLength) {
            fileName = fileName.substring(0, maxDisplayLength - 1) + '...';
        }
        
        display.appendChild(document.createTextNode(fileName));
        button.className = button.className.replace(' grey', '').replace('grey', '');
    }

    return true;
}

function highlight(value, id, className)
{
    className = className || 'fc_orange';
    var elem = document.getElementById(id);
    
    if (!elem) {
        return false;
    }
    
    if (value) {
        elem.className += ' ' + className;
    } else {
        elem.className = value.className.replace(' ' + className, '').replace(className, '');
    }
}

function parseDate(dateString)
{
    var pattern = '%m/%d/%Y';
    var regexp, result, dPos, mPos, yPos, d, m, y;

    if (window.localDateFormat) {
        pattern = window.localDateFormat;
    }

    if (-1 == pattern.indexOf('%d') || -1 == pattern.indexOf('%m') || -1 == pattern.indexOf('%Y')) {
        return null;
    }

    dPos = parseInt(pattern.indexOf('%d') / 3) + 1;
    mPos = parseInt(pattern.indexOf('%m') / 3) + 1;
    yPos = parseInt(pattern.indexOf('%Y') / 3) + 1;

    if (!(dPos > 0 && dPos <= 3) || !(mPos > 0 && mPos <= 3) || !(yPos > 0 && yPos <= 3)) {
        return null;
    }

    pattern = pattern.replace('%d', '([0-9]{1,2})');
    pattern = pattern.replace('%m', '([0-9]{1,2})');
    pattern = pattern.replace('%Y', '([0-9]{4})');
    pattern = '^' + pattern + '$';
    regexp = new RegExp(pattern);
    result = regexp.exec(dateString);

    if (null === result || 4 !== result.length) {
        return null;
    }

    d = parseInt(result[dPos]);
    m = parseInt(result[mPos]);
    y = parseInt(result[yPos]);

    if (m > 0 && m <= 12 && d > 0 && d <= 31) {
        var daysCount = getMonthDayCount(m, y);

        if (false === daysCount || d > daysCount) {
            return null;
        }

        return {'d': d, 'm': m, 'y': y};
    }

    return null;
}

function getMonthDayCount(m, y)
{
    try {
        m = parseInt(m);
        y = parseInt(y);
    } catch (e) {
        return false;
    }

    if (m < 1 || m > 12) {
        return false;
    }

    var md = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

    if (2 == m && (0 == y % 400 || 0 == y % 4 && 0 != y % 100)) {
        return 29;
    } else {
        return md[m - 1];
    }
}
/// [KVA]
/// <summary><summary>
/// <params name="id">html tag atribbute id</params>
/// <return>object | false</return>
function getObj(id)
{
	return document.getElementById(id) ? document.getElementById(id) : false ;
}

/// [KVA]
/// <summary><summary>
/// <params name="id">html tag atribbute id</params>
/// <return>object | false</return>
function chkUnckChildCheckboxes(obj, isDoCheck)
{
	if(!obj) return false;

	var spans = obj.getElementsByTagName('button');	

	for (var i=0; i<spans.length; i++) {
        	var span = spans.item(i);		
        	span.bset && (isDoCheck ? span.bset() : span.bclear());        	
    	}	
}


function insertErrorMessage(objectId, message)
{
    if (!objectId) {
        return false;
    }

    var object = document.getElementById(objectId);
    
    if (!object) {
        return false;
    }

    removeErrorMessage(object);
    
    var kbd = document.createElement('kbd');
    kbd.appendChild(document.createTextNode(message.toString()));
    object.appendChild(kbd);
}

function removeErrorMessage(objectId)
{
    if (!objectId) {
        return false;
    }

    var object = document.getElementById(objectId);
    
    if (!object) {
        return false;
    }

    while (object.getElementsByTagName('kbd').length > 0) {
        object.getElementsByTagName('kbd').item(0).parentNode.removeChild(object.getElementsByTagName('kbd').item(0));
    }
}

/* functions for SUBMIT buttons in MSIE */
function submitToSolid(obj)
{
	if ((obj)&&(navigator.userAgent) && (-1 !== navigator.userAgent.indexOf('MSIE'))) {
		obj.style.borderBottomStyle = 'solid';
	} 
}

function submitToDashed(obj)
{
	if ((obj)&&(navigator.userAgent) && (-1 !== navigator.userAgent.indexOf('MSIE'))) {
		obj.style.borderBottomStyle = 'dashed';
	} 
}

/*  */
function clickinc(id)
{
    var requestUrl = '/ajaxbannertest.aspx?key0=' + id;
    request.open('get', requestUrl)
	request.onreadystatechange = function () {}
	request.send();
	var link = document.getElementById('banner_link');
	link && link.blur(); 
}

/* functions for showing/hiding state block */
function showStates(labelId)
{
    var label = document.getElementById(labelId);
    
    if (label) {
        label.style.display = 'block';
        
        if (label.getElementsByTagName('dfn').length > 0) {
            var dfn = label.getElementsByTagName('dfn').item(0);
            dfn.showOptList && dfn.showOptList();
            dfn.hideOptList && dfn.hideOptList();
        }
    }
}

function hideStates(labelId)
{
    var label = document.getElementById(labelId);
    label && (label.style.display = 'none');
}

/* functions for setting/setting window scroll top value */
function getScrollTop()
{
    return document.documentElement.scrollTop || document.body.scrollTop;
}

function setScrollTop(scrollTop)
{
    document.documentElement.scrollTop = scrollTop;
    document.body.scrollTop = scrollTop;
}

function storeScrollPosition()
{
    var input = document.getElementById('scrolltop');

    if (input) {
        input.value = getScrollTop();
    }
}

