// JavaScript Document
function fnImgFadeTransition(imgId, imgSrc, d, once) {
	var oImg = $(imgId);
	if (oImg.xPropImSwapping) return false;
	oImg.xPropImSwapping = true;
	oImg.xPropSwapImg = imgSrc;
	var oldMouseOver = oImg.onmouseover;
	var doMouseOut = false;
	oImg.onmouseout = function() {doMouseOut = true};
	oImg.onmouseover = "";
	new Effect.Fade(oImg, {
		duration: d,
		afterFinish: function () {
			var tmp = oImg.src;
			oImg.src = oImg.xPropSwapImg;
			oImg.xPropSwapImg = tmp;
			new Effect.Appear(oImg, {
				duration: d,
				afterFinish: function () {
					oImg.onmouseover = oldMouseOver;
					if (!once) {
						oImg.xPropImSwapping = false;
						if (doMouseOut)	{
							var tmp = oImg.src;
							oImg.src = oImg.xPropSwapImg;
							oImg.xPropSwapImg = tmp;
						}	else {
							oImg.onmouseout = function() {
								var tmp = oImg.src;
								oImg.src = oImg.xPropSwapImg;
								oImg.xPropSwapImg = tmp;
							};
						}
					}
				}
			});
		}
	})
}
function fnImgPuffTransition(imgId, imgSrc, d, once) {
	var oImg = $(imgId);
	if (oImg.xPropImSwapping) return false;
	oImg.xPropImSwapping = true;
	oImg.xPropSwapImg = imgSrc;
	var oldMouseOver = oImg.onmouseover;
	var doMouseOut = false;
	oImg.onmouseout = function() {doMouseOut = true};
	oImg.onmouseover = "";
	new Effect.Puff(oImg, {
		duration: d,
		afterFinish: function () {
			var tmp = oImg.src;
			oImg.src = oImg.xPropSwapImg;
			oImg.xPropSwapImg = tmp;
			new Effect.Appear(oImg, {
				duration: d,
				afterFinish: function () {
					oImg.onmouseover = oldMouseOver;
					if (!once) {
						oImg.xPropImSwapping = false;
						if (doMouseOut)	{
							var tmp = oImg.src;
							oImg.src = oImg.xPropSwapImg;
							oImg.xPropSwapImg = tmp;
						}	else {
							oImg.onmouseout = function() {
								var tmp = oImg.src;
								oImg.src = oImg.xPropSwapImg;
								oImg.xPropSwapImg = tmp;
							};
						}
					}
				}
			});
		}
	})
}
function fnImgBlindTransition(imgId, imgSrc, d, once) {
	var oImg = $(imgId);
	if (oImg.xPropImSwapping) return false;
	oImg.xPropImSwapping = true;
	oImg.xPropSwapImg = imgSrc;
	var oldMouseOver = oImg.onmouseover;
	var doMouseOut = false;
	oImg.onmouseout = function() {doMouseOut = true};
	oImg.onmouseover = "";
	new Effect.BlindUp(oImg, {
		duration: d,
		afterFinish: function () {
			var tmp = oImg.src;
			oImg.src = oImg.xPropSwapImg;
			oImg.xPropSwapImg = tmp;
			new Effect.BlindDown(oImg, {
				duration: d,
				afterFinish: function () {
					oImg.onmouseover = oldMouseOver;
					if (!once) {
						oImg.xPropImSwapping = false;
						if (doMouseOut)	{
							var tmp = oImg.src;
							oImg.src = oImg.xPropSwapImg;
							oImg.xPropSwapImg = tmp;
						}	else {
							oImg.onmouseout = function() {
								var tmp = oImg.src;
								oImg.src = oImg.xPropSwapImg;
								oImg.xPropSwapImg = tmp;
							};
						}
					}
				}
			});
		}
	})
}
function fnImgRandomTransition(imgId, imgSrc, d, once) {
	var oImg = $(imgId);
	if (oImg.xPropImSwapping) return false;
	var r = Math.round(Math.random()*10);
	if (r >= 5)
		fnImgFadeTransition(imgId, imgSrc, d, once);
	else if (r >= 2)
		fnImgPuffTransition(imgId, imgSrc, d, once);
	else
		fnImgBlindTransition(imgId, imgSrc, d, once);
}
function fnCompanyDetails(id, base) {
	var url = base ? base+"/company.details.php" : "company.details.php";
	var win = window.open(url+'?id='+id, "winCompanyDetails", "width=630,height=400,resizable=yes");
	if (win) win.focus();
	return false;
}
function fnLoginBox(loginType, url, base) {
	if (!url) url="";
	var winUrl = 'login.php?type='+loginType+'&goto='+url;
	winUrl = base ? base+"/"+winUrl : winUrl;
	var win = window.open(winUrl, "winLoginBox", "left=200,width=630,height=400,resizable=yes");
	if (win) win.focus();
	return false;
}
function fnLogoutBox() {
	var win = window.open('logout.php', "winLoginBox", "width=100,height=50,resizable=no");
	return false;
}
function fnShowPicture(obj, _url, opt) {
	var _offset = Position.cumulativeOffset(obj);
	var _dims = $(obj).getDimensions();
	var _oImg = $("fnShowPictureImage");
	if (!_oImg) {
		_oImg = document.createElement("img");
		document.body.appendChild(_oImg);
		_oImg.id = "fnShowPictureImage";
		_oImg.className = "pcategory-floating";
	}
	fnHidePicture();
	_oImg.style.width = "";
	_oImg.style.height = "";	
	_oImg.src = _url;
	var fnDoTheShow = function (oImg, offset, dims) {
		var factor = 1.5;
		var imgDims = $(oImg).getDimensions();
		imgDims = xImageDims(imgDims.width, imgDims.height, 0, 0, (1/factor)*100);
		var newHalfWidth = parseInt((factor-1)*imgDims.width/2+2);
		var newHalfHeight = parseInt((factor-1)*imgDims.height/2);
		var top = offset[1], left = offset[0];
		oImg.style.width = imgDims.width+"px";
		oImg.style.height = imgDims.height+"px";
		oImg.style.top = (top+newHalfHeight)+"px";
		oImg.style.left = (left > 600) ? (left-imgDims.width-newHalfWidth)+"px" : (left+dims.width+newHalfWidth)+"px";
		oImg.fnShowPictureEffect = new Effect.Parallel(
			[
 				new Effect.Appear(oImg, {from: 0.2, to: 1.0, sync: true}),
				new Effect.Scale(oImg, factor*100, {scaleFromCenter: true, sync: true})
			],
			{duration: 2.0}
		);	
	};
	_oImg.fnShowPictureTimer = setTimeout(function () {fnDoTheShow(_oImg, _offset, _dims);}, 500);
}
function fnHidePicture() {
	var oImg = $("fnShowPictureImage");
	if (!oImg) return;
	if (oImg.fnShowPictureTimer) clearTimeout(oImg.fnShowPictureTimer);
	oImg.fnShowPictureTimer = null;
	if (oImg.fnShowPictureEffect)	oImg.fnShowPictureEffect.finish();
	oImg.fnShowPictureEffect = null;
	oImg.style.display = "none";
}
function fnJobDetails(id, base) {
	var url = base ? base+"/job.details.php" : "job.details.php";
	var win = window.open(url+'?id='+id, "winJobDetails", "left=200,width=630,height=400,resizable=yes");
	if (win) win.focus();
	return false;
}
function fnApplicationDetails(id, base) {
	var url = base ? base+"/application.details.php" : "application.details.php";
	var win = window.open(url+'?id='+id, "winApplicationDetails", "left=200,width=630,height=400,resizable=yes");
	if (win) win.focus();
	return false;
}
function fnCompanyPackageDetails(id, base) {
	var url = base ? base+"/company.package.details.php" : "company.package.details.php";
	var win = window.open(url+'?id='+id, "winPackageDetails", "left=200,width=630,height=400,resizable=yes");
	if (win) win.focus();
	return false;
}
function fnAdvertiserPackageDetails(id, base) {
	var url = base ? base+"/advertiser.package.details.php" : "advertiser.package.details.php";
	var win = window.open(url+'?id='+id, "winPackageDetails", "left=200,width=630,height=400,resizable=yes");
	if (win) win.focus();
	return false;
}
function fnWhitePaperDetails(id, base) {
	var url = base ? base+"/white_paper.details.php" : "white_paper.details.php";
	var win = window.open(url+'?id='+id, "winWhitePaperDetails", "left=200,width=630,height=400,resizable=yes,scrollbars=yes");
	if (win) win.focus();
	return false;
}
function fnNewsDetails(id, base) {
	var url = base ? base+"/news.details.php" : "news.details.php";
	var win = window.open(url+'?id='+id, "winNewsDetails", "left=200,width=630,height=400,resizable=yes,scrollbars=yes");
	if (win) win.focus();
	return false;
}
function fnProductDetails(id, base) {
	var url = base ? base+"/product.details.php" : "product.details.php";
	var win = window.open(url+'?id='+id, "winProductDetails", "left=200,width=630,height=400,resizable=yes,scrollbars=yes");
	if (win) win.focus();
	return false;
}

function fnPicturePopup(url, w, h) {
	var oBody = $(document.body);
	var bodyDims = oBody.getDimensions();
	var bodyOffset = Position.realOffset(oBody);
	var baseLeft = bodyOffset[0];	
	var baseTop = bodyOffset[1];
	var baseWidth = bodyDims.width;
	var winDims = xImageDims(w+20, h+40, baseWidth, 0, 0);
	var auxLeft = Math.floor((baseWidth-winDims.width)/2);
	var winLeft = baseLeft+auxLeft;
	var oWindow = $('fnPicturePopup_Window') || document.createElement("div");
	if (!oWindow.id) {
		oWindow.id = 'fnPicturePopup_Window';
		oWindow.style.position = 'absolute';
		oWindow.style.zIndex = '1000';
		oWindow.style.backgroundColor = "#FCFCF8";
		oWindow.style.border = "#F4F4F4 4px outset";
	}
	oWindow.style.display = "block";
	oWindow.style.left = winLeft+'px';
	oWindow.style.top = (baseTop+40)+'px';
	oWindow.style.width = winDims.width+'px';
	oWindow.style.height = winDims.height+'px';
	oWindow.innerHTML = ''+
		'<p id="fnPicturePopup_Handle" style="background: url(img/product_subcategories_title.jpg) bottom repeat-x; text-align: right; margin-bottom: 4px; padding: 4px; cursor: move">'+
			'<a style="font-weight: bold; font-size: 16px; color: #993333; text-decoration: none;" href="#" onclick="$(this.parentNode.parentNode)._clickout(); return false">Close this window</a>'+
		'</p>'+
		'<p style="text-align: center;"><img src="'+url+'" /></p>';
	var _this = oWindow;
	oWindow._clickout = function () {
		var tmp = new Effect.Appear($(window.document.body).down(), {duration: 0.2});
		Event.stopObserving(oBody, 'click', oWindow._clickout);
		_this.remove();
	};
	var effect = new Effect.Fade($(oBody).down(), {afterFinish: function () {
		oBody.appendChild(oWindow);
		var oHandle = $('fnPicturePopup_Handle');
		if (!oHandle.fnPicturePopup_Draggable)
			oHandle.fnPicturePopup_Draggable = new Draggable(oWindow, {ghosting: false});
		Event.observe(oBody, 'click', oWindow._clickout);
	}});
	return false;
}

function fnShowTooltip(title, text, target, layout, distance) {
	var oBody = $(document.body);
	var oTarget = $(target);
	var targetDims = oTarget.getDimensions();
	var targetOffset = Position.cumulativeOffset(oTarget);
	var baseLeft = targetOffset[0];	
	var baseTop = targetOffset[1];
	var baseWidth = targetDims.width;
	var baseHeight = targetDims.height;
	title = decodeURIComponent(title);
	text = decodeURIComponent(text);
	layout = layout || 'top';
	distance = typeof distance == 'undefined' ? 2 : distance;
	var oWindow = $('xtooltip-window') || document.createElement("div");
	if (!oWindow.id) {
		oWindow.id = 'xtooltip-window';
		oWindow.className = 'xtooltip-outer';
		oWindow.xTarget = oTarget;
		oWindow.style.display = 'none';
		oWindow = $(oWindow);
	}
	oWindow.innerHTML = ''+
		'<div class="xtooltip-title">'+title+'</div>'+
		'<div class="xtooltip-content">'+text+'</div>';
	oBody.appendChild(oWindow);
	oWindow.style.display = 'block';
	var winDims = oWindow.getDimensions();
	var winLeft = 0; winTop = 0;
	switch (layout) {
		case 'left':
			winTop = baseTop-parseInt((winDims.height-baseHeight)/2);
			winLeft = baseLeft-winDims.width-distance;
			break;
		case 'right':
			winTop = baseTop-parseInt((winDims.height-baseHeight)/2);
			winLeft = baseLeft+baseWidth+distance;
			break;
		case 'bottom':
			winTop = baseTop+baseHeight+distance;
			winLeft = baseLeft-parseInt((winDims.width-baseWidth)/2);
			break;
		default:
			// Top
			winTop = baseTop-winDims.height-distance;
			winLeft = baseLeft-parseInt((winDims.width-baseWidth)/2);
	}
	oWindow.style.top = winTop+'px';
	oWindow.style.left = winLeft+'px';
	new Effect.Highlight(oWindow, {duration: 1.5, restorecolor: '#FFFFFF'});
	var lists = document.getElementsByTagName("select");
	$A(lists).each(function (oList) {oList.style.visibility = 'hidden';});
	return false;
}
function fnHideTooltip() {
	var oBody = $(document.body);
	var oWindow = $('xtooltip-window');
	oWindow.style.display = 'none';
	var lists = document.getElementsByTagName("select");
	$A(lists).each(function (oList) {oList.style.visibility = 'visible';});
}

function fnAddTooltipHandler(target, layout, distance, title, text) {
	var target = $(target);
	Event.observe(target, 'mouseover', function() {
		fnShowTooltip(title, text, target, layout, distance);
	}, false);
	Event.observe(target, 'mouseout', fnHideTooltip, false);
}

function fnCompanyTabSelect(tab, companyId, randId) {
	var tabs = ['company', 'products', 'white-papers', 'articles', 'news'];
	var toSelect = $('tabpage-'+tab+'-'+companyId+'-'+randId);
	var toSelectBtn = $('tabbutton-'+tab+'-'+companyId+'-'+randId);
	tabs.each(function (t) {
		var obj = $('tabpage-'+t+'-'+companyId+'-'+randId);
		var btn = $('tabbutton-'+t+'-'+companyId+'-'+randId);
		if (obj != toSelect && obj.getStyle('display') != 'none') {
			new Effect.SlideUp(obj, {duration: 0.5, afterFinish: function () {
				btn.style.backgroundImage = 'url(img/company_tab.jpg)';
				toSelectBtn.style.backgroundImage = 'url(img/company_tab_f2.jpg)';
				toSelectBtn.blur();
				new Effect.SlideDown(toSelect);
			}});
		}
	});
}

function fnMainTabSelect(tab) {
	var tabs = ['search', 'description', 'subcategories'];
	var toSelect = $('tabpage-'+tab);
	var toSelectBtn = $('tabbutton-'+tab);
	tabs.each(function (t) {
		var obj = $('tabpage-'+t);
		var btn = $('tabbutton-'+t);
		if (obj != toSelect && obj.getStyle('display') != 'none') {
			new Effect.SlideUp(obj, {duration: 0.5, afterFinish: function () {
				btn.style.backgroundImage = 'url(img/main_tab.jpg)';
				btn.style.color = '#808080';
				toSelectBtn.style.backgroundImage = 'url(img/main_tab_f2.jpg)';
				toSelectBtn.style.color = '#333333';
				toSelectBtn.blur();
				new Effect.SlideDown(toSelect);
			}});
		}
	});
}

function fnShowTooltip2(title, text, target, layout, distance) {
	var oBody = $(document.body);
	var oTarget = $(target);
	var targetDims = oTarget.getDimensions();
	var targetOffset = Position.cumulativeOffset(oTarget);
	var baseLeft = targetOffset[0];	
	var baseTop = targetOffset[1];
	var baseWidth = targetDims.width;
	var baseHeight = targetDims.height;
	oTarget.blur();
	title = decodeURIComponent(title);
	text = decodeURIComponent(text);
	layout = layout || 'top';
	distance = typeof distance == 'undefined' ? 0 : distance;
	var oWindow = $('xtooltip2-window') || document.createElement("div");
	if (!oWindow.id) {
		oWindow.id = 'xtooltip2-window';
		oWindow.className = 'xtooltip2-outer';
		oWindow.xTarget = oTarget;
		oWindow.style.display = 'none';
		oWindow = $(oWindow);
	}
	if (oWindow._target) {
		fnHideTooltip2();	
		return;
	}
	oWindow._target = oTarget;
	oWindow.innerHTML = ''+
		'<div class="xtooltip2-title">'+title+'</div>'+
		'<div class="xtooltip2-content">'+text+'</div>';
	oBody.appendChild(oWindow);
	var winDims = oWindow.getDimensions();
	var winLeft = 0; winTop = 0;
	switch (layout) {
		case 'left':
			winTop = baseTop-parseInt((winDims.height-baseHeight)/2);
			winLeft = baseLeft-winDims.width-distance;
			break;
		case 'left-top':
			winTop = baseTop;
			winLeft = baseLeft-winDims.width-distance;
			break;
		case 'left-bottom':
			winTop = baseTop+baseHeight-winDims.height;
			winLeft = baseLeft-winDims.width-distance;
			break;
		case 'right':
			winTop = baseTop-parseInt((winDims.height-baseHeight)/2);
			winLeft = baseLeft+baseWidth+distance;
			break;
		case 'right-top':
			winTop = baseTop;
			winLeft = baseLeft+baseWidth+distance;
			break;
		case 'right-bottom':
			winTop = baseTop+baseHeight-winDims.height;
			winLeft = baseLeft+baseWidth+distance;
			break;
		case 'bottom':
			winTop = baseTop+baseHeight+distance;
			winLeft = baseLeft-parseInt((winDims.width-baseWidth)/2);
			break;
		case 'bottom-left':
			winTop = baseTop+baseHeight+distance;
			winLeft = baseLeft;
			break;
		case 'bottom-right':
			winTop = baseTop+baseHeight+distance;
			winLeft = baseLeft+baseWidth-winDims.width;
			break;
		case 'top-left':
			winTop = baseTop-winDims.height-distance;
			winLeft = baseLeft;
			break;
		case 'top-right':
			winTop = baseTop-winDims.height-distance;
			winLeft = baseLeft+baseWidth-winDims.width;
			break;
		case 'top':
		default:
			// Top
			winTop = baseTop-winDims.height-distance;
			winLeft = baseLeft-parseInt((winDims.width-baseWidth)/2);
	}
	oWindow.style.top = winTop+'px';
	oWindow.style.left = winLeft+'px';
	oWindow.show();
//	oWindow._effect = new Effect.Appear(oWindow);
	var lists = document.getElementsByTagName("select");
	$A(lists).each(function (oList) {oList.style.visibility = 'hidden';});
	return false;
}

function fnHideTooltip2() {
	var oBody = $(document.body);
	var oWindow = $('xtooltip2-window');
	if (!oWindow) return;
	var oTarget = oWindow._target;
	try {
		oTarget.blur();
		oWindow._target = null;
		oWindow._effect.finish();
		oWindow._effect = null;
	} catch (e) {};
	oWindow.style.display = 'none';
	var lists = document.getElementsByTagName("select");
	$A(lists).each(function (oList) {oList.style.visibility = 'visible';});
}

function fnAddTooltipHandler2(target, layout, distance, title, text) {
	var target = $(target);
	Event.observe(target, 'mouseover', function() {
		fnShowTooltip2(title, text, target, layout, distance);
	}, false);
	Event.observe(target, 'mouseout', fnHideTooltip2, false);
}

function fnWindowDims() {
	var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
	return {width: myWidth, height: myHeight};
}

function fnWindowScroll() {
  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 {left: scrOfX, top: scrOfY};
}

function fnMaskSuspendedMessage() {
	// Disable flash;
	var objects = $A($(document.getElementsByTagName('object')));
	var embeds = $A($(document.getElementsByTagName('embed')));
	objects.each(function (obj) {
		if (obj && obj.style) obj.style.visibility = 'hidden';
	});
	embeds.each(function (obj) {
		if (obj && obj.style) obj.style.visibility = 'hidden';
	});
	// Mask Body
	var el = $(document.body);
	var content = ''
		+'<div class="boxes1" style="margin: 200px auto;">'
			+'<div class="header"></div>'
			+'<div class="inner">'
				+'<p class="title">This Website Is No Longer Accessible</p>'
				+'<p class="normal">More information at <a href="mailto:info@bestplace.net">info@bestplace.net</a></p>'
				+'<p class="normal"><strong>BESTPLACE CORPORATION Account department</strong></p>'
				+'<p class="normal"><a target="_blank" href="http://www.bestplace.biz">http://www.bestplace.biz</a></p>'
			+'</div>'
			+'<div class="footer"></div>'
		+'</div>';
	var options;
	options = Object.extend({
		id: '',
		bgColor: '#ffffff',
		opacity: 0.98
	}, options || {});
	var dims = fnWindowDims(), pos = fnWindowScroll();
	var width = dims.width, height = dims.height;
	var left = pos.left || 0, top = pos.top || 0;
	var style = {
		position: 'absolute', zIndex: 2000, top: (top-100)+'px', left: left+'px', overflow: 'hidden',
		width: width+'px', height: (height+200)+'px'
	}
	if (options.bgColor) style.backgroundColor = options.bgColor;
	var elOverlay = document.createElement('div');
	Object.extend(elOverlay.style, style);
	elOverlay.innerHTML = content;
	document.body.appendChild(elOverlay);
	if (options.id) elOverlay.id = options.id;
	if (options.opacity) {
		new Effect.Opacity(elOverlay, {from: 0.5, to: options.opacity, duration: 0.4});
	};
	var originalHeight = top+height;
	var handleOverlay = function () {
		var dims = fnWindowDims(), pos = fnWindowScroll();
		var width = dims.width, height = dims.height;
		var left = pos.left || 0, top = pos.top || 0;
		var oldTop = parseInt(this.style.top);
		var oldHeight = parseInt(this.style.height);
		if (top < oldTop || oldTop+oldHeight < top+height) {
			this.style.top = (top-100)+"px";
			this.style.left = left+"px";
			this.style.width = width+"px";
			this.style.height = (height+200)+"px";
		}
	}.bind(elOverlay);
	Event.observe(window, 'resize', handleOverlay);
	Event.observe(window, 'scroll', handleOverlay);
	Event.observe(window, 'onafterupdate', handleOverlay);
	Event.observe(document, 'onmousemove', handleOverlay);
	return elOverlay;
}
