HPF = {};
HPF.Home = {};
HPF.Home.aImgToLoad = [];
HPF.Home.aLoadedImg = {};
HPF.Home.iLoadedImgCounter = 0;
HPF.Home.iLoadingCounter = 0;
HPF.Home.loadingTimer = null;
HPF.Home.resetBannerTimer = null;
HPF.Home.switchBannerTimer = null;
HPF.Home.iSwitchBannerCounter = 0;
HPF.Home.imgReceiverId = 'home_img_receiver';
HPF.Home.iTimeToFade = 200.0;

HPF.Product = {};
HPF.Demo = {};
HPF.Contact = {};

HPF.FadeState = {};
HPF.FadeState.OPAQUE 					= 2;
HPF.FadeState.TRANSPARENT_TO_OPAQUE 	= 1;
HPF.FadeState.OPAQUE_TO_TRANSPARENT 	= -1;
HPF.FadeState.TRANSPARENT 				= -2;
HPF.FadeTimeout 						= 33;

HPF.Home.updateBanner = function (imgSrc) {
	
	if (HPF.Home.loadingTimer) {
		clearTimeout(HPF.Home.loadingTimer);
	}
	if (HPF.Home.switchBannerTimer) {
		clearTimeout(HPF.Home.switchBannerTimer);
	}
	
	if (!HPF.Home.aLoadedImg[imgSrc]) {
		
		if (HPF.Home.iLoadingCounter < 20) {
			HPF.Home.iLoadingCounter++;
			HPF.Home.loadingTimer = setTimeout("HPF.Home.updateBanner('" + imgSrc + "')", 500);
		}
		else {
			HPF.Home.iLoadingCounter = 0;
		}
		
		return;
	}
	else {
		HPF.Home.iLoadingCounter = 0;
	}
	
	if (HPF.Home.resetBannerTimer) {
		clearTimeout(HPF.Home.resetBannerTimer);
	}
	
	var oImg = document.getElementById('page_title');
	if (!oImg) return;
	
	HPF.Home.fadeBanner(oImg, imgSrc);
}

HPF.Home.resetBanner = function () {
	
	if (HPF.Home.resetBannerTimer) {
		clearTimeout(HPF.Home.resetBannerTimer);
	}
	
	HPF.Home.resetBannerTimer = setTimeout("HPF.Home._resetBanner()", 200);
}

HPF.Home._resetBanner = function () {
	
	var oImg = document.getElementById('page_title');
	if (!oImg) return;
	
	HPF.Home.fadeBanner(oImg, '');
	
	if (HPF.Home.resetBannerTimer) {
		clearTimeout(HPF.Home.resetBannerTimer);
	}
	
	if (HPF.Home.switchBannerTimer) {
		clearTimeout(HPF.Home.switchBannerTimer);
	}
}

HPF.Home.loadImg = function(dir, aImgToLoad) {
	
	HPF.Home.aImgToLoad = aImgToLoad instanceof Array ? aImgToLoad : [];
	
	var oReceiver = document.getElementById(HPF.Home.imgReceiverId);
	
	if (!oReceiver) {
		oReceiver = document.body.appendChild(document.createElement('div'));
		oReceiver.id = HPF.Home.imgReceiverId;
		oReceiver.style.position = 'absolute';
		oReceiver.style.top = oReceiver.style.left = '0px';
		oReceiver.style.width = oReceiver.style.height = '10px';
		oReceiver.style.display = 'none';
	}
	
	oReceiver = null;
	
	for (var i = 0; i < HPF.Home.aImgToLoad.length; i++) {
		setTimeout("HPF.Home._loadImg('"+dir + '/' + HPF.Home.aImgToLoad[i] +"')", 1);
	}
}

HPF.Home._loadImg = function(path) {
	
	HPF.Home.aLoadedImg[path] = false;

	var oReceiver = document.getElementById(HPF.Home.imgReceiverId);
	if (oReceiver) {
		var oImg = oReceiver.appendChild(document.createElement('img'));
	}
	else {
		var oImg = document.createElement('img');		
	}

	oImg.onload = new Function("HPF.Home.aLoadedImg['"+path+"'] = true; HPF.Home.iLoadedImgCounter++");
	oImg.src = path;
	oReceiver = oImg = null;
}

HPF.Home.switchBanner = function(index) {
	
	if (HPF.Home.resetBannerTimer || HPF.Home.loadingTimer) {
		return;
	}
	
	if (HPF.Home.switchBannerTimer) {
		clearTimeout(HPF.Home.switchBannerTimer);
	}
	
	if (HPF.Home.iLoadedImgCounter < HPF.Home.aImgToLoad.length) {
		
		if (HPF.Home.iSwitchBannerCounter < 10) {
			HPF.Home.iSwitchBannerCounter++;
			HPF.Home.switchBannerTimer = setTimeout("HPF.Home.switchBanner(0)", 2000);
		}
		
		return;
	}
	
	if (!index || index < 0 || parseInt(index) != index) {
		var index = 0;
	}
	else if (index >= HPF.Home.iLoadedImgCounter) {
		HPF.Home.resetBanner();
		return;
	}
	
	var i = 0;
	var path = '';
	
	for (path in HPF.Home.aLoadedImg) {
		
		
		if (i == index) {
			if (HPF.Home.aLoadedImg[path]) {
				HPF.Home.updateBanner(path);
			}
			
			HPF.Home.switchBannerTimer = setTimeout("HPF.Home.switchBanner(" + (i + 1) + ")", 10000);
			return;
		}
		else {
			i++;
		}
	}
}

HPF.Home.fadeCallback = function (lastTick) {
	
	var oBanner = document.getElementById('page_title');
	var oFadeArea = document.getElementById('page_title_fade');
	if (!oBanner || !oFadeArea) return;
	
	if (oFadeArea.FadeState == HPF.FadeState.OPAQUE) {
		
		oBanner.style.backgroundImage = oFadeArea.style.backgroundImage;
	}
	else if (oFadeArea.FadeState == HPF.FadeState.TRANSPARENT) {
		
		oFadeArea.style.backgroundImage = oBanner.style.backgroundImage;
	}
	
	oFadeArea = oBanner = null;
}

HPF.Home.fadeBanner = function (oBanner, imgDest) {
	
	var strFadeAreaId = 'page_title_fade';
	
	if (imgDest == '') {
		var strCSSbg = '';
		var iTargetedState = HPF.FadeState.TRANSPARENT;
	}
	else {
		var strCSSbg = "url(" + imgDest + ")";
		var iTargetedState = HPF.FadeState.OPAQUE;
	}
	
	var oFadeArea = document.getElementById(strFadeAreaId);
	if (oFadeArea == null) {

		oFadeArea = document.createElement('div');
		oFadeArea.id = strFadeAreaId;
	}
	
	if (oFadeArea.FadeState == null) {
		oFadeArea.FadeState = HPF.FadeState.TRANSPARENT;
	}
	
	if (oFadeArea.FadeState == HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
		
		if (iTargetedState == HPF.FadeState.OPAQUE && oFadeArea.style.backgroundImage != strCSSbg) {
			oFadeArea.style.backgroundImage = strCSSbg;
			return;
		}
		else if (iTargetedState == HPF.FadeState.TRANSPARENT) {
			
			oFadeArea.FadeState = HPF.FadeState.OPAQUE_TO_TRANSPARENT;
			oFadeArea.FadeTimeLeft = HPF.Home.iTimeToFade - oFadeArea.FadeTimeLeft;
			oBanner.style.backgroundImage = strCSSbg;
		}
		
		return;
	}
	else if (oFadeArea.FadeState == HPF.FadeState.OPAQUE_TO_TRANSPARENT) {
		
		if (iTargetedState == HPF.FadeState.OPAQUE) {
			
			oFadeArea.FadeState = HPF.FadeState.TRANSPARENT_TO_OPAQUE;
			
			oFadeArea.FadeTimeLeft = HPF.Home.iTimeToFade - oFadeArea.FadeTimeLeft;
			oFadeArea.style.backgroundImage = strCSSbg;
		}
			
		return;
	}
	else {
		
		if (oBanner.style.backgroundImage == strCSSbg) return;
		
		oFadeArea.FadeTimeLeft = HPF.Home.iTimeToFade;
		
		if (iTargetedState == HPF.FadeState.OPAQUE) {
			
			oBanner.style.backgroundImage = oFadeArea.style.backgroundImage;
			
			HPF.setFade(oFadeArea, 0);
			oFadeArea.FadeState = HPF.FadeState.TRANSPARENT_TO_OPAQUE;
			
			oFadeArea.style.backgroundImage = strCSSbg;
		}
		else {
			HPF.setFade(oFadeArea, 1);
			oFadeArea.FadeState = HPF.FadeState.OPAQUE_TO_TRANSPARENT;
			
			oFadeArea.style.backgroundImage = oBanner.style.backgroundImage;
			oBanner.style.backgroundImage = strCSSbg;
		}
	}
	
	if (!oFadeArea.parentNode) {
		oBanner.insertBefore(oFadeArea, oBanner.firstChild);
	}

	setTimeout("HPF.runFade(" + new Date().getTime() + ", '" + strFadeAreaId + "', " + HPF.Home.iTimeToFade + ", 'HPF.Home.fadeCallback()', true)", HPF.FadeTimeout);
	
	oFadeArea = oBanner = null;
}

HPF.setFade = function (oFadeArea, fFadeLevel) {
	
	oFadeArea.style.opacity = fFadeLevel;
	oFadeArea.style.filter = 'alpha(opacity = ' + fFadeLevel*100 + ')';
}


HPF.runFade = function (lastTick, fadeAreaId, iTimeToFade, callbackMethod, bCallbackOnlyWhenFinished) {
	
	if (!bCallbackOnlyWhenFinished) {
		var bCallbackOnlyWhenFinished = false;
	}
	
	var bCallback = !bCallbackOnlyWhenFinished && callbackMethod;
	
	var oFadeArea = document.getElementById(fadeAreaId);
	if (!oFadeArea) return;
	
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;

	if (oFadeArea.FadeTimeLeft <= elapsedTicks) {
		
		if (oFadeArea.FadeState == HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
			
			HPF.setFade(oFadeArea, 1);
			oFadeArea.FadeState = HPF.FadeState.OPAQUE;
		}
		else {
			
			HPF.setFade(oFadeArea, 0);
			oFadeArea.FadeState = HPF.FadeState.TRANSPARENT;
		}
		
		oFadeArea.FadeTimeLeft = 0;
		
		if (callbackMethod) {
			bCallback = true;
		}
	}
	else {
	
		oFadeArea.FadeTimeLeft -= elapsedTicks;
		
		var newOpVal = oFadeArea.FadeTimeLeft / iTimeToFade;
		if (oFadeArea.FadeState == HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
			newOpVal = 1 - newOpVal;
		}
	
		HPF.setFade(oFadeArea, newOpVal);
		setTimeout("HPF.runFade(" + curTick + ", '"+fadeAreaId+"', " + iTimeToFade + ", " + (callbackMethod ? "\"" + callbackMethod + "\"" : 'null') + ")", HPF.FadeTimeout);
	}
	
	if (bCallback) {
		new Function(callbackMethod).call(null);
	}
	
	oFadeArea = null;
}


HPF.Product.iTimeToFade = 500;

HPF.Product.openFeatureScreen = function(oImgContainer) {
	
	var oImg = oImgContainer.firstChild;
	var oFeature = oImgContainer.parentNode;
	var strFullImgClass = "feature_fullsc";	
	
	if (oFeature.lastChild && oFeature.lastChild.className == strFullImgClass) {
		var oFullImgContainer = oFeature.lastChild;
		oFullImgContainer.style.display = '';
	}
	else {
		var oFullImgContainer = oFeature.appendChild(document.createElement('a'));
		oFullImgContainer.href = '#';
		oFullImgContainer.className = strFullImgClass;
		oFullImgContainer.FadeState = HPF.FadeState.TRANSPARENT;
		oFullImgContainer.id = oFeature.id + "_fullsc";
		oFullImgContainer.onclick = new Function("HPF.Product.closeFeatureScreen('" + oFeature.id + "'); return false");
		
		var oFullImg = oFullImgContainer.appendChild(document.createElement('img'));
		oFullImg.HPF_initHeight = oImg.height;
		oFullImg.style.height = '0px';
		oFullImg.src = oImg.src;
		oFullImg.alt = oImg.alt;
	}
	
	if (oFullImgContainer.FadeState != HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
		
		if (oFullImgContainer.FadeState == HPF.FadeState.OPAQUE_TO_TRANSPARENT) {
			oFullImgContainer.FadeTimeLeft = HPF.Product.iTimeToFade - oFullImgContainer.FadeTimeLeft;
		}
		else {
			
			oFullImgContainer.FadeTimeLeft = HPF.Product.iTimeToFade;
			HPF.setFade(oFullImgContainer, 0);
		}
		
		oFullImgContainer.FadeState = HPF.FadeState.TRANSPARENT_TO_OPAQUE;
		
		setTimeout("HPF.runFade(" + new Date().getTime() + ", '"+oFullImgContainer.id+"', "+HPF.Product.iTimeToFade+", \"HPF.Product.checkFeatureFullScreenDisplay('" + oFullImgContainer.id + "')\")", HPF.FadeTimeout);
	}
	
	if (!oImgContainer.FadeState) {
		oImgContainer.FadeState = HPF.FadeState.TRANSPARENT;
	}
	
	if (oImgContainer.FadeState != HPF.FadeState.OPAQUE_TO_TRANSPARENT) {
		
		if (oImgContainer.FadeState == HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
			oImgContainer.FadeTimeLeft = HPF.Product.iTimeToFade - oFadeArea.FadeTimeLeft;
		}
		else {
			oImgContainer.FadeTimeLeft = HPF.Product.iTimeToFade;
			HPF.setFade(oImgContainer, 0);
		}
		
		oImgContainer.FadeState = HPF.FadeState.OPAQUE_TO_TRANSPARENT;
		
		if (oImgContainer.id == '') {
			oImgContainer.id = oFeature.id + "_thumbc";
		}
		
		setTimeout("HPF.runFade(" + new Date().getTime() + ", '"+oImgContainer.id+"', "+HPF.Product.iTimeToFade+", \"HPF.Product.checkThumbFeatureDisplay('" + oImgContainer.id + "', '" + oFeature.id + "')\")", HPF.FadeTimeout);
	}	
}

HPF.Product.iDefaultThumbWidth = null;
HPF.Product.iDefaultThumbHeight = null;

HPF.Product.checkThumbFeatureDisplay = function(imgContainerId, anchor) {

	var oImgContainer = document.getElementById(imgContainerId);
	if (!oImgContainer) return;
	
	var oImg = oImgContainer.firstChild;
	if (HPF.Product.iDefaultThumbWidth == null || HPF.Product.iDefaultThumbHeight == null) {
		
		HPF.Product.iDefaultThumbWidth = oImgContainer.offsetWidth;
		HPF.Product.iDefaultThumbHeight = oImgContainer.offsetHeight;
	}
	
	var oUL = null;
	var refWidth = null;
	if (oImgContainer.parentNode && oImgContainer.parentNode.className == 'feature') {
		
		var oCollec = oImgContainer.parentNode.getElementsByTagName('ul');
		if (oCollec.length > 0) {
			oUL = oCollec.item(0);
		}
		
		oCollec = null;
		refWidth = oImgContainer.parentNode.offsetWidth;
	}
	
	if (oImgContainer.FadeState == HPF.FadeState.TRANSPARENT) {
		oImgContainer.style.display = 'none';
		setTimeout("window.location = '#" +anchor+"'", 200);
		if (oUL) oUL.style.width = (refWidth - 30) + 'px';
	}
	else if (oImgContainer.FadeState == HPF.FadeState.OPAQUE) {
		oImgContainer.style.display = oImgContainer.style.width = oImgContainer.style.height = '';
		if (oUL) oUL.style.width = '';
	}
	else {
		oImgContainer.style.display = '';
		
		var ratio = oImgContainer.FadeTimeLeft / HPF.Product.iTimeToFade;
		
		if (oImgContainer.FadeState == HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
			ratio = 1 - ratio;
		}
		
		oImgContainer.style.width = Math.round(ratio * HPF.Product.iDefaultThumbWidth) + 'px';
		oImgContainer.style.height = Math.round(ratio * HPF.Product.iDefaultThumbHeight) + 'px';
		
		if (oUL && refWidth > 0) {
			oUL.style.width = (refWidth - Math.round(ratio * HPF.Product.iDefaultThumbWidth) - 30) + 'px';
		}
	}
}

HPF.Product.checkFeatureFullScreenDisplay = function(imgContainerId) {

	var oImgContainer = document.getElementById(imgContainerId);
	if (!oImgContainer) return;
	
	var oImg = oImgContainer.firstChild;
	if (!oImg.HPF_initHeight) {
		oImg.HPF_initHeight = oImgContainer.offsetHeight;
	}
	
	if (oImgContainer.FadeState == HPF.FadeState.TRANSPARENT) {
		oImgContainer.style.display = 'none';
		oImg.style.height = '';
	}
	else if (oImgContainer.FadeState == HPF.FadeState.OPAQUE) {
		oImgContainer.style.display = '';
		oImg.style.height = '';
	}
	else {
		oImgContainer.style.display = '';
		
		var ratio = oImgContainer.FadeTimeLeft / HPF.Product.iTimeToFade;
		
		if (oImgContainer.FadeState == HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
			ratio = 1 - ratio;
		}
		
		oImg.style.height = Math.round(ratio * oImg.HPF_initHeight) + 'px';
	}
}

HPF.Product.closeFeatureScreen = function(featureId) {
	
	var oFullImgContainer = document.getElementById(featureId + '_fullsc');
	if (oFullImgContainer && oFullImgContainer.FadeState != HPF.FadeState.OPAQUE_TO_TRANSPARENT) {
		
		oFullImgContainer.FadeTimeLeft = HPF.Product.iTimeToFade;
		oFullImgContainer.FadeState = HPF.FadeState.OPAQUE_TO_TRANSPARENT;
		
		setTimeout("HPF.runFade(" + new Date().getTime() + ", '"+oFullImgContainer.id+"', "+HPF.Product.iTimeToFade+", \"HPF.Product.checkFeatureFullScreenDisplay('" + oFullImgContainer.id + "')\")", HPF.FadeTimeout);
	}
	
	
	var oImgContainer = document.getElementById(featureId + '_thumbc');
	if (oImgContainer && oImgContainer.FadeState != HPF.FadeState.TRANSPARENT_TO_OPAQUE) {
		
		oImgContainer.FadeTimeLeft = HPF.Product.iTimeToFade;
		oImgContainer.FadeState = HPF.FadeState.TRANSPARENT_TO_OPAQUE;
		
		setTimeout("HPF.runFade(" + new Date().getTime() + ", '"+oImgContainer.id+"', "+HPF.Product.iTimeToFade+", \"HPF.Product.checkThumbFeatureDisplay('" + oImgContainer.id + "', '" + featureId + "')\")", HPF.FadeTimeout);
	}
	
}

HPF.Demo.scrollerIndex = 0;
HPF.Demo.scrollerLength = 0;

HPF.Demo.initScroller = function() {
	
	var oRush = document.getElementById('prd_features_rush');
	if (!oRush) return;

	var oList = null;
	for (var i = 0; i < oRush.childNodes.length; i++) {
		if (oRush.childNodes[i].tagName && oRush.childNodes[i].className == 'prd_features_list') {
			oList = oRush.childNodes[i];
			oList.id = 'prd_features_rush_list';
			break;
		}
	}
	
	if (!oList) return;
	
	// Keeps only the features node
	var i = 0, lock = 0;
	var limit = oList.childNodes.length + 1;
	
	while (oList.childNodes[i] && lock++ < limit) {
		
		if (oList.childNodes[i].tagName && oList.childNodes[i].className == 'feature') {
			i++;
		}
		else {
			oList.removeChild(oList.childNodes[i], true);
		}
	}
	
	HPF.Demo.scrollerLength = oList.childNodes.length;
	
	if (HPF.Demo.scrollerLength == 0) return;
	
	var oContainer = document.getElementById('prd_features_scroll_feature');
	if (oContainer) {
		oContainer.innerHTML = '';
		var oBlank = document.createElement('div');
		oBlank.style.border = '1px solid blue';
		oContainer.appendChild(oList.replaceChild(oBlank, oList.firstChild));
	}
		
	HPF.Demo.checkScrollLinks();
	
	oList = oRush = null;
	/*
<div class='prd_features_list' id='prd_features_scroller'>
	<a id='prd_features_scroll_back' href='#' style='display:none' onclick=HPF.Demo.scrollBack(); return false">&nbsp;</a>
	<div id='prd_features_scroll_feature'></div>
	<a id='prd_features_scroll_next' href='#' style='display:none' onclick=HPF.Demo.scrollNext(); return false">&nbsp;</a>
</div>*/
}

HPF.Demo.checkScrollLinks = function() {
	
	var oContainer = document.getElementById('prd_features_scroll_back');
	if (oContainer) {
		oContainer.style.visibility = HPF.Demo.scrollerIndex > 0 ? 'visible' : 'hidden';
	}
	
	var oContainer = document.getElementById('prd_features_scroll_next');
	if (oContainer) {
		oContainer.style.visibility = HPF.Demo.scrollerIndex < HPF.Demo.scrollerLength - 1 ? 'visible' : 'hidden';
	}
	
	oContainer = null;
}

HPF.Demo.scrollDuration = 700;
HPF.Demo.bIsScrolling = false;

HPF.Demo.scroll = function(iScroll) {
	
	if (iScroll == 0 || HPF.Demo.scrollerLength == 0 || HPF.Demo.bIsScrolling) return;
	
	var iDestIndex = Math.min(HPF.Demo.scrollerLength - 1, Math.max(0, HPF.Demo.scrollerIndex + iScroll));
	
	var oList = document.getElementById('prd_features_rush_list');
	if (!oList || !oList.childNodes[HPF.Demo.scrollerIndex]) return;
	
	var oContainer = document.getElementById('prd_features_scroll_feature');
	if (!oContainer || !oContainer.firstChild) return;
	
	var oDest = oList.childNodes[iDestIndex];
	if (!oDest) {
		
		if (HPF.Demo.scrollerIndex == 0) return;
		else oDest = oList.firstChild;
	}
	
	var iInitHeight = oContainer.offsetHeight;
	oContainer.style.height = iInitHeight + 'px';
	oContainer.style.overflow = 'hidden';
	oContainer.HPF_ScrollLeft = HPF.Demo.scrollDuration;
	
	HPF.setFade(oDest, 1);
	
	if (iScroll > 0) {
		oContainer.appendChild(oList.replaceChild(document.createElement('div'), oDest));
	}
	else {
		oContainer.appendChild(oList.replaceChild(document.createElement('div'), oDest));
		
		var height = oDest.offsetHeight;
		oDest.style.display = 'none';
		oDest.style.marginTop = "-" + height + "px";
		oContainer.insertBefore(oContainer.lastChild, oContainer.firstChild);
		oDest.style.display = '';
	}
	
	setTimeout("HPF.Demo.runScroll('" + oContainer.id +"', " + iScroll + ", " + HPF.Demo.scrollerIndex + ", " + new Date().getTime() + ")", 33);
	
	HPF.Demo.scrollerIndex = iDestIndex;
	HPF.Demo.checkScrollLinks();
	
	oContainer = oDest = oList = null;
}

HPF.Demo.runScroll = function(containerId, iDirection, iCurrentIndex, lastTick) {
	
	HPF.Demo.bIsScrolling = false;
	if (iDirection == 0) return;
	
	var oContainer = document.getElementById(containerId);
	if (!oContainer || oContainer.childNodes.length != 2) return;
	
	var oRemoved = iDirection > 0 ? oContainer.firstChild : oContainer.lastChild;
	var oInserted = iDirection < 0 ? oContainer.firstChild : oContainer.lastChild;
	
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;

	if (oContainer.HPF_ScrollLeft <= elapsedTicks) {
		
		var oList = document.getElementById('prd_features_rush_list');
		if (oList && oList.childNodes[iCurrentIndex]) {
			oList.replaceChild(oRemoved, oList.childNodes[iCurrentIndex]);
			oRemoved.style.marginTop = '';
			HPF.Product.closeFeatureScreen(oRemoved.id);
		}
		else {
			oRemoved.parentNode.removeChild(oRemoved);
		}
		
		oInserted.style.marginTop = '';
	
		oContainer.style.height = '';
		oContainer.style.overflow = '';
	}
	else {
		oContainer.HPF_ScrollLeft -= elapsedTicks;
		var ratio = oContainer.HPF_ScrollLeft / HPF.Demo.scrollDuration;
		
		HPF.setFade(oRemoved, ratio);
		
		if (iDirection > 0) {
			ratio = 1 - ratio;
		}
		
		var marginTop = oContainer.firstChild.offsetHeight * ratio;
		oContainer.firstChild.style.marginTop = "-" + marginTop + "px";
		
		var diffHeight = oInserted.offsetHeight - oRemoved.offsetHeight;
		
		if (Math.abs(diffHeight) > 5) {
			
			if (iDirection < 0) {
				ratio = 1 - ratio;
			}
			
			oContainer.style.height = (oRemoved.offsetHeight + diffHeight * ratio) + 'px';
		}
		
		HPF.Demo.bIsScrolling = true;
		
		setTimeout("HPF.Demo.runScroll('" + containerId +"', " + iDirection + ", " + iCurrentIndex + ", " + curTick + ")", 33);
	}
	
	oContainer = oInserted = oRemoved = null;
}

HPF.Contact.checkForm = function(inputPrefix, unfilledMsg, emailErrorMsg) {
	
	var aInputSuffixes = new Array('_cmpy', '_lname', '_fname', '_job', '_emaddr', '_phone', '_town', '_msg');
	
	for (var i = 0; i < aInputSuffixes.length; i++) {

		var o = document.getElementById(inputPrefix + aInputSuffixes[i]);
		if (o != null) {
			if (o.value.replace(/[ \.\-\!\?]/g, '') == '') {
				alert (unfilledMsg);
				o.focus();
				o.select();
				return false;
			}
		}
	}
	
	var strPattern = /[^\@ ]+\@[^ ]+\.[a-zA-Z]+/;
	var oEmail = document.getElementById(inputPrefix + '_emaddr');
	if (oEmail != null) {
		if (!strPattern.test(oEmail.value)) {
			alert(emailErrorMsg);
			oEmail.focus();
			oEmail.select();
			return false;
		}
	}
	
	return true;
}