function getScrollPos(){
    if (window.pageYOffset){
        return {y:window.pageYOffset, x:window.pageXOffset};
    }
    if(document.documentElement && document.documentElement.scrollTop){
        return {y:document.documentElement.scrollTop, x:document.documentElement.scrollLeft};
    }
    if(document.body){
        return {y:document.body.scrollTop, x:document.body.scrollLeft};
    }
    return {x:0, y:0};
}

function isObject(a) {
   return typeof a == 'object';
}

function isArray(a) {
   return isObject(a) && (typeof a.constructor == Array || typeof a.length == 'number');
}

function getWindowDims(){
    if (window.innerWidth){
        return {w:window.innerWidth, h:window.innerHeight};
    }
    if (document.documentElement && document.documentElement.clientWidth){
        return {w:document.documentElement.clientWidth, h:document.documentElement.clientHeight};
    }
    if (document.body){
        return {w:document.body.clientWidth, h:document.body.clientHeight};
    }
    return {w:0, h:0}
}

function getWindowCenter() {
	var scrollPositions = getScrollPos();
	var windowDimensions = getWindowDims();
	
	return {x:Math.floor((scrollPositions.x + windowDimensions.w) / 2), 
		y:Math.floor((scrollPositions.y + windowDimensions.h) / 2)};
}

/*
*	additionalArguments:
*		width, height, zindex, gray
*/
function showDiv(divId, args) {
	
	var windowCenter = getWindowCenter();
	var windowDimensions = getWindowDims();
	var scrollPos = getScrollPos();

	var defaultArgs = {
			width: (Math.floor(windowDimensions.w * .5) > 600) ? 600 : Math.floor(windowDimensions.w * .5), 
			height: Math.floor(windowDimensions.h * .75), 
			zindex: 20 
	}
		
	args = args || defaultArgs;
	
	if (!args.width)
		args.width = defaultArgs.width;
	if (!args.height)
		args.height = defaultArgs.height;
	if (!args.zindex)
		args.zindex = defaultArgs.zindex;
	if (args.width > 600) 
		args.width = 600;
		
	var div = document.getElementById(divId);
	if (!div)
		div = createDiv(divId);

	var top = Math.floor((windowDimensions.h - args.height) / 3) + scrollPos.y;
	if (args.top != undefined)
		top = args.top
	var left = Math.floor(windowCenter.x - (args.width / 2)) + scrollPos.x;
	if (args.left != undefined)
		left = args.left

	div.style.width = args.width + "px";
	div.style.height = args.height + "px";
	div.style.top = top + "px";
	div.style.left = left + "px";
	div.style.zIndex = args.zindex;
	div.style.visibility = "visible";
	div.style.display = "block";
	
	return false;
}

function createDiv(divId, additionalArguments) {

	var div = document.createElement('div');
		div.style.position='absolute';                 // Position absolutely
        div.style.top='0px';                           // In the top
        div.style.left='0px';                          // Left corner of the page
        div.style.overflow='auto';              	   // Auto Scroll           
        div.style.display='none';                      // Start out Hidden
        div.style.visibility='hidden';				   //   
        div.style.border = 'solid black 1px';
		div.style.background = '#FFFFFF';               	

 	div.id=divId; 
 	
 	var closeFunctionName = 'closeDiv';
 	if (additionalArguments && additionalArguments.closeFunctionName)
 		closeFunctionName = additionalArguments.closeFunctionName;

	div.innerHTML = '<table border="0" width="100%">' +
				'<tr>' +
					'<td align="right"><a href="#" onclick="return ' + closeFunctionName + '(\'' + divId + '\');">' +
						'<img src="/images/sm_x_15x15.gif" width="15" height="15" border="0"></a></td>' +
				'</tr>' +
				'<tr>' +
					'<td align="center">' +
						'<div id="' + divId + 'Content"></div></td>' +
				'</tr>' +
			'</table>';
	var tbody = document.getElementsByTagName("body")[0];
	tbody.appendChild(div);
	return div;
}

function closeDiv(divId) {
	var searchDiv = document.getElementById(divId);
	if (searchDiv) {
		searchDiv.style.visibility = "hidden";
		searchDiv.style.display = "none";
	}
	return false;
};

//http://www.quirksmode.org/js/findpos.html
//does not work if the browser has no offsetParent
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
	return false;
}
	
/*********************************************************************
 * No onMouseOut event if the mouse pointer hovers a child element 
 * *** Please do not remove this header. ***
 * This code is working on my IE7, IE6, FireFox, Opera and Safari
 * 
 * Usage: 
 * <div onMouseOut="fixOnMouseOut(this, event, 'JavaScript Code');"> 
 *		So many childs 
 *	</div>
 *
 * @Author Hamid Alipour Codehead @ webmaster-forums.code-head.com		
**/
function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}
function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
	}
}
/*********************************************************************/	
