
function isMobileSafari() {
	return (navigator.userAgent.indexOf("iPhone") > -1 || navigator.userAgent.indexOf("iPod") > -1 || navigator.userAgent.indexOf("iPad") > -1);
}

function getWindowHeight() {
	var hg = 500;
	if (document.all && document.getElementById) {
		hg = ( document.compatMode == "CSS1Compat" ) ? document.documentElement.clientHeight  : document.body.clientHeight ;
	} else {
		hg = window.innerHeight;
	}
	return hg;
}

function setContentHeight() {
	var elem = document.getElementById("page_content");
	if(elem) {
		// alert(elem.parentNode.clientHeight);
		var hg = getWindowHeight();  // elem.parentNode.clientHeight;
		hg = Math.max(hg, elem.parentNode.clientHeight);
		if(navigator.userAgent.indexOf("Firefox") > -1) {
			hg -= 18;
		}
		elem.style.height = hg+"px";
	}
}


function setElementHeight(elid, hg) {
	var elem = document.getElementById(elid);
	if(elem) {
		elem.style.height=String(hg)+"px";
	}
}


// Autoscrolling to Element - 80...

function findElementPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}


// need to do div-height & document-scroll in one and the same Timeout
// otherwise clients will eventually suffer epileptic fits...
// :


function expandAndScrollAnim(cElementId, cStartHeight, cGoalHeight, dur, sElementId) {
	if(!sElementId) {
		sElementId = cElementId;
	}
	
	var selem = document.getElementById(sElementId);
	if(selem) {
		var sstart = getScrollXY()[1];

		var sgoal = findElementPos(selem)[1] - 80;
		
		var steps = dur/20;
		for(var t=0; t<=steps; t++) {
			var frac = 0.5-Math.cos(Math.PI*t/steps)/2;
			var chg = Math.floor((1-frac)*cStartHeight + frac*cGoalHeight);
						
			var sy = Math.floor((1-frac)*sstart + frac*sgoal);
							
			var cmd = "setHeightAndScroll(\'"+cElementId+"\', "+chg+", "+sy+");";
			
			window.setTimeout(cmd, t*20-10);
		}
	}
}

function setHeightAndScroll(cid, chg, sy) {
	var celem = document.getElementById(cid);
	if(celem) {
		celem.style.height=String(chg)+"px";
		setDocScrollV(sy);
	}
}

function setDocScrollV(scrollV) {
	top.scrollTo(0, scrollV);
}

