if (typeof Zapatec != 'undefined') {
	Zapatec.Utils.emulateWindowEvent(['mouseover','mouseout']);
}

PcP = function() {};

// Misc >>>>

PcP.el = function(sId) {
	return document.getElementById(sId);
};

PcP.escape = function(sStr) {
	return escape(sStr).replace(/'/, '%27');
};

PcP.getRadioValue = function(aRadios) {
	if (!aRadios) {
		return;
	}
	var iRadios = aRadios.length;
	var oRadio;
	for (var iRadio = 0; iRadio < iRadios; iRadio++) {
		oRadio = aRadios[iRadio];
		if (oRadio.checked) {
			return oRadio.value;
		}
	}
};

PcP.fixFlashAds = function(oContainer) {
	if (!oContainer) {
		return;
	}
	var aEls = oContainer.getElementsByTagName('object');
	if (aEls) {
		for (var iEl = 0; iEl < aEls.length; iEl++) {
			try {
				aEls[iEl].innerHTML += '<param name="wmode" value="transparent">';
			} catch(oException) {};
		}
		aEls = oContainer.getElementsByTagName('embed');
		if (aEls) {
			for (var iEl = 0; iEl < aEls.length; iEl++) {
				try {
					aEls[iEl].setAttribute('wmode', 'transparent');
				} catch(oException) {};
			}
		}
	}
};

PcP.toClipboard = function(oEl){
	var sVal = oEl.value;
	if (sVal.length > 0) {
		if (window.clipboardData) {
			window.clipboardData.setData("Text", sVal);
			alert("Your video code has been copied to the clipboard!\n\nSimply paste (Ctrl+V) it into your HTML document.");
		} else {
			oEl.focus();
			oEl.select();
			alert("Press Ctrl+C to copy or use right mouse button!");
		}
	} else {
		alert("There is nothing to copy!");
	}
};

// <<<< Misc

// News >>>>

PcP.newsOn = function() {
	oNews = PcP.el('pcpNews');
	PcP.el('pcpNewsPreview').style.display = 'none';
	oNews.style.display = '';
	var iH = PcP.el('pcpNewsText').offsetHeight -
	 PcP.el('pcpNewsTop').offsetHeight - PcP.el('pcpNewsBot').offsetHeight;
	if (iH < 0) {
		iH = 0;
	}
	PcP.el('pcpNewsMid').style.height = iH + 'px';
};

PcP.newsOff = function() {
	oNews = PcP.el('pcpNews');
	var oOffset = Zapatec.Utils.getElementOffset(oNews);
	var oPos = Zapatec.Utils.getMousePos();
	if (oPos.pageX - 2 <= oOffset.left ||
	 oPos.pageX + 2 >= oOffset.left + oOffset.width ||
	 oPos.pageY - 2 <= oOffset.top ||
	 oPos.pageY + 2 >= oOffset.top + oOffset.height) {
		oNews.style.display = 'none';
		PcP.el('pcpNewsPreview').style.display = '';
	}
};

// <<<< News

// Alerts >>>>

PcP.alertLoad = function() {
	if (!dojo.io.cookie.get('pcpalert')) {
		Zapatec.Transport.fetchJsonObj({
			url: 'alert-get.php?' + Math.random(),
			reliable: true,
			onLoad: PcP.alertLoaded
		});
	}
};

PcP.alertAds = function() {
	if (!dojo.io.cookie.get('pcpalert')) {
		var oContainer = document.getElementById('adalert');
		if (oContainer) {
			var sMessage = oContainer.innerHTML;
			oContainer.innerHTML = '';
			PcP.alertLoaded({
				alerts: [{
					id: 0,
					subject: '',
					message: sMessage
				}]
			});
		}
	}
};

PcP.alertLoaded = function(oResponse) {
	var aAlerts = oResponse.alerts;
	if (!aAlerts) {
		PcP.alertAds();
		return;
	}
	var iAlerts = aAlerts.length;
	if (!iAlerts) {
		PcP.alertAds();
		return;
	}
	var aHtml = [];
	aHtml.push('<div class="pcpAlertFrame1"><div class="pcpAlertFrame2"><div class="pcpAlertBody">');
	var oAlert, iLastAlertId;
	for (var iAlert = 0; iAlert < iAlerts; iAlert++) {
		oAlert = aAlerts[iAlert];
		aHtml.push('<div class="pcpAlert">');
		if (oAlert.subject) {
			aHtml.push('<div class="pcpAlertSubject">');
			aHtml.push(oAlert.subject);
			aHtml.push('</div>');
		}
		aHtml.push('<div class="pcpAlertMessage">');
		aHtml.push(oAlert.message);
		aHtml.push('</div></div>');
		iLastAlertId = oAlert.id;
	}
	aHtml.push('</div></div></div><div class="pcpAlertHeader">PcPlanets Alert System:</div><div class="pcpAlertClose" onclick="PcP.alertClose(');
	aHtml.push(iLastAlertId);
	aHtml.push(')"></div>');
	PcP.alertCreate(aHtml.join(''));
};

PcP.alertMessage = function(aAlerts) {
	if (!aAlerts) {
		return;
	}
	var iAlerts = aAlerts.length;
	if (!iAlerts) {
		return;
	}
	var aHtml = [];
	aHtml.push('<div class="pcpAlertFrame1"><div class="pcpAlertFrame2"><div class="pcpAlertBody">');
	var oAlert;
	for (var iAlert = 0; iAlert < iAlerts; iAlert++) {
		oAlert = aAlerts[iAlert];
		aHtml.push('<div class="pcpAlert"><div class="pcpAlertSubject">');
		aHtml.push(oAlert.subject);
		aHtml.push('</div><div class="pcpAlertMessage">');
		aHtml.push(oAlert.message);
		aHtml.push('</div></div>');
	}
	aHtml.push('</div></div></div><div class="pcpAlertHeader">PcPlanets Alert System:</div><div class="pcpAlertClose" onclick="PcP.alertHide()"></div>');
	PcP.alertCreate(aHtml.join(''));
};

PcP.alertCreate = function(sAlert) {
	var oContainer = PcP.el('pcpAlertContainer');
	if (!oContainer) {
		oContainer = document.createElement('div');
		oContainer.style.display = 'none';
		oContainer.id = 'pcpAlertContainer';
		oContainer.className = 'pcpAlertContainer';
		document.body.insertBefore(oContainer, document.body.firstChild);
	}
	oContainer.style.top = '-9999px';
	oContainer.style.display = '';
	oContainer.innerHTML = sAlert;
	if (Zapatec.windowLoaded) {
		PcP.alertShow();
	} else {
		Zapatec.Utils.addEvent(window, 'load', PcP.alertShow);
	}
};

PcP.alertShow = function() {
	if (PcP.alertTimeout) {
		clearTimeout(PcP.alertTimeout);
		PcP.alertTimeout = null;
	}
	var oContainer = PcP.el('pcpAlertContainer');
	if (!oContainer) {
		return;
	}
	var oStyle = oContainer.style;
	var iTop = parseInt(oStyle.top);
	if (iTop >= -5) {
		oStyle.top = '0';
	} else {
		if (iTop == -9999) {
			oStyle.top = '-' + oContainer.offsetHeight + 'px';
		} else {
			oStyle.top = iTop + 5 + 'px';
		}
		PcP.alertTimeout = setTimeout(PcP.alertShow, 50);
	}
};

PcP.alertHide = function() {
	if (PcP.alertTimeout) {
		clearTimeout(PcP.alertTimeout);
		PcP.alertTimeout = null;
	}
	var oContainer = PcP.el('pcpAlertContainer');
	if (!oContainer) {
		return;
	}
	var iHeight = oContainer.offsetHeight;
	var oStyle = oContainer.style;
	var iTop = parseInt(oStyle.top);
	if (iTop <= -iHeight) {
		oStyle.top = '-9999px';
	} else {
		oStyle.top = iTop - 5 + 'px';
		PcP.alertTimeout = setTimeout(PcP.alertHide, 50);
	}
};

PcP.alertClose = function(iLastMsgId) {
	dojo.io.cookie.set('pcpalert', 1);
	if (iLastMsgId) {
		dojo.io.cookie.set('pcplmsg', iLastMsgId, 3650);
		dojo.io.bind({
			url: 'alert-setlastmsgid.php',
			content: {'lastmsgid': iLastMsgId},
			method: 'POST',
			handler: function() {}
		});
	}
	PcP.alertHide();
};

// <<<< Alerts

// Ringtone preview

PcP.ringtonePreview = function(sMp3, sTitle, sType, sUrl) {
	PcP.ringtonePreview.title = sTitle;
	PcP.ringtonePreview.type = sType;
	PcP.ringtonePreview.url = sUrl;
	if (sMp3.match(/\.mp3$/i)) {
		PcP.ringtonePreview.mp3 = sMp3.replace(/^http:\/\/[^\/]+\/storage\//i, '').replace(/\.mp3$/i, '');
		window.open('ringtoneprelisten.html', 'ringtonepreview', 'height=300,width=400');
	} else {
		PcP.ringtonePreview.mp3 = sMp3;
		window.open('ringtonepreview.html', 'ringtonepreview', 'height=400,width=400');
	}
};

PcP.ringtonePreviewLoad = function() {
	if (PcP.ringtonePreview.type == 'Video Ringtone') {
		this.document.getElementById('flash').innerHTML = '<embed src="http://www.pcplanets.com/preview.swf" width="176" height="164" bgcolor="#FFFFFF" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="displaywidth=176&displayheight=144&file=' + PcP.ringtonePreview.mp3 + '&autostart=true&repeat=false" scale="showall" name="index"/>';
	} else {
		this.document.getElementById('flash').innerHTML = '<object width="270" height="90" type="application/x-shockwave-flash" data="prelisten.swf"><param value="prelisten.swf" name="movie"/><param value="false" name="menue"/><param value="high" name="quality"/><param value="true" name="AutoStart"/><param value="false" name="menu"/><param value="file=' + PcP.ringtonePreview.mp3 + '&webapp=jamster.com" name="FlashVars"/></object>';
	}
	this.document.getElementById('title').innerHTML = '<a href="#" onclick="self.opener.document.location=\'' + PcP.ringtonePreview.url + '\';self.close()">' + PcP.ringtonePreview.title + '</a><br/>' + PcP.ringtonePreview.type;
	this.document.getElementById('button').innerHTML = '<a href="#" onclick="self.opener.document.location=\'' + PcP.ringtonePreview.url + '\';self.close()">Get it!</a>';
};

// Share icons

PcP.shareIcons = function() {
	var sUrl = location.href.replace(/&/g, '%26');
	var sTitle = document.title.replace(/"/, '');
	document.writeln('<div class="pcpBookmarks">Bookmark This Page:');
	document.writeln('<a href="http://www.facebook.com/share.php?u=' + sUrl + '" target="_blank"><img src="/share-ico-facebook.gif" alt="Share this page on Facebook" border="0"/></a>');
	document.writeln('<a href="http://digg.com/submit?phase=2&url=' + sUrl + '&title=' + sTitle + '" target="_blank"><img src="/share-ico-digg.gif" alt="Digg this page" border="0"/></a>');
	document.writeln('<a href="http://www.furl.net/store?t=' + sTitle + '&u=' + sUrl + '" target="_blank"><img src="/share-ico-furl.gif" alt="Bookmark this page at furl.net" border="0"/></a>');
	document.writeln('<a href="http://del.icio.us/post?v=4&amp;noui&amp;jump=close%20&amp;url=' + sUrl + '&title=' + sTitle + '" target="_blank"><img src="/share-ico-delicious.gif" alt="Bookmark this page at del.icio.us" border="0"/></a>');
	document.writeln('<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=' + sUrl + '&amp;title=' + sTitle + '&amp;top=1" target="_blank"><img src="/share-ico-live.gif" alt="Bookmark this page at Live.com" border="0"/></a>');
	document.writeln('<a href="http://myweb.yahoo.com/myresults/bookmarklet?%20t=' + sTitle + '&u=' + sUrl + '&ei=UTF" target="_blank"><img src="/share-ico-yahoo.gif" alt="Bookmark this page at Yahoo! my web" border="0"/></a>');
	document.writeln('<a href="http://reddit.com/submit?url=' + sUrl + '&amp;title=' + sTitle + '" target="_blank"><img src="/share-ico-reddit.gif" alt="Bookmark this page at reddit.com" border="0"/></a>');
	document.writeln('<a href="http://www.stumbleupon.com/submit?url=' + sUrl + '&title=' + sTitle + '" target="_blank"><img src="/share-ico-stumbleit.gif" alt="Bookmark this page at stumbleupon.com" border="0"/></a>');
	document.writeln('<a href="http://ma.gnolia.com/bookmarklet/snap/add?url=' + sUrl + '&amp;title=' + sTitle + '" target="_blank"><img src="/share-ico-magnolia.gif" alt="Bookmark this page at ma.gnolia.com" border="0"/></a>');
	document.writeln('<a href="http://www.newsvine.com/_tools/seed&save?u=' + sUrl + '&h=' + sTitle + '" target="_blank"><img src="/share-ico-newsvine.gif" alt="Bookmark this page at newsvine.com" border="0"/></a>');
	document.writeln('<a href="#" onclick="window.external.AddFavorite(location.href,document.title)"><img src="/share-ico-bookmark.gif" alt="Add this page to favorites" border="0"/></a>');
	document.writeln('<a href="mailto:?subject=PcPlanets.com%20Recommendation&body=Dear%20Friend%2C%0A%0AI%20just%20found%20this%20page%20on%20PcPlanets.com%20and%20would%20love%20for%20you%20to%20see%20it.%20%20Please%20click%20on%20this%20link%3A%0A%0A' + sUrl + '%0A%0A"><img src="/share-ico-tell.gif" alt="Tell a friend about this page" border="0"/></a>');
	document.writeln('</div>');
};

PcP.shareIconsCn = function() {
	var sUrl = location.href.replace(/&/g, '%26');
	var sTitle = document.title.replace(/"/, '');
	document.writeln('<div class="pcpBookmarks">添加到收藏夹:');
	document.writeln('<a href="http://www.facebook.com/share.php?u=' + sUrl + '" target="_blank"><img src="/share-ico-facebook.gif" alt="Facebook添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://digg.com/submit?phase=2&url=' + sUrl + '&title=' + sTitle + '" target="_blank"><img src="/share-ico-digg.gif" alt="Digg添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://www.furl.net/store?t=' + sTitle + '&u=' + sUrl + '" target="_blank"><img src="/share-ico-furl.gif" alt="furl.net添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://del.icio.us/post?v=4&amp;noui&amp;jump=close%20&amp;url=' + sUrl + '&title=' + sTitle + '" target="_blank"><img src="/share-ico-delicious.gif" alt="del.icio.us添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url=' + sUrl + '&amp;title=' + sTitle + '&amp;top=1" target="_blank"><img src="/share-ico-live.gif" alt="Live.com添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://myweb.yahoo.com/myresults/bookmarklet?%20t=' + sTitle + '&u=' + sUrl + '&ei=UTF" target="_blank"><img src="/share-ico-yahoo.gif" alt="Yahoo! my web添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://reddit.com/submit?url=' + sUrl + '&amp;title=' + sTitle + '" target="_blank"><img src="/share-ico-reddit.gif" alt="reddit.com添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://www.stumbleupon.com/submit?url=' + sUrl + '&title=' + sTitle + '" target="_blank"><img src="/share-ico-stumbleit.gif" alt="stumbleupon.com添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://ma.gnolia.com/bookmarklet/snap/add?url=' + sUrl + '&amp;title=' + sTitle + '" target="_blank"><img src="/share-ico-magnolia.gif" alt="ma.gnolia.com添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="http://www.newsvine.com/_tools/seed&save?u=' + sUrl + '&h=' + sTitle + '" target="_blank"><img src="/share-ico-newsvine.gif" alt="newsvine.com添加到收藏夹" border="0"/></a>');
	document.writeln('<a href="#" onclick="window.external.AddFavorite(location.href,document.title)"><img src="/share-ico-bookmark.gif" alt="Add this page to favorites" border="0"/></a>');
	document.writeln('<a href="mailto:?subject=PcPlanets.com%20Recommendation&body=Dear%20Friend%2C%0A%0AI%20just%20found%20this%20page%20on%20PcPlanets.com%20and%20would%20love%20for%20you%20to%20see%20it.%20%20Please%20click%20on%20this%20link%3A%0A%0A' + sUrl + '%0A%0A"><img src="/share-ico-tell.gif" alt="Tell a friend about this page" border="0"/></a>');
	document.writeln('</div>');
};

// Playlist

PcP.playlistAdd = function(oArg) {
	if (!oArg) {
		return;
	}
	var aUrl = [
		'/playlist-addrec.php?sid=',
		oArg.sessionId
	];
	if (oArg.youtubeId) {
		aUrl.push('&yt=');
		aUrl.push(oArg.youtubeId);
	} else if (oArg.metacafeId) {
		aUrl.push('&mc=');
		aUrl.push(oArg.metacafeId);
	} else {
		aUrl.push('&id=');
		aUrl.push(oArg.videoId);
	}
	if (oArg.title) {
		aUrl.push('&title=');
		aUrl.push(oArg.title);
	}
	get({
		url: aUrl.join(''),
		callback: function(oResponse) {
			if (!oResponse.authorised) {
				if (confirm('You must be signed in to add this song to your playlist.\nIt is FREE to sign up for playlist access. Just click "OK" button below.\nThere is a $5 one-time fee which removes all the ads from the site and also allows access to ALL the premium features such as free video and image uploading, etc.\nWould you like to sign up now ?')) {
					var oWindow = window;
					if (window.opener) {
						oWindow = window.opener;
					}
					oWindow.document.location = 'http://www.pcplanets.com/member_login.shtml';
				}
			} else if (oResponse.added) {
				var oEl = PcP.el('pcpAddToPlaylist');
				if (oEl) {
					oEl.style.display = 'none';
				}
				oEl = PcP.el('pcpAddedToPlaylist');
				if (oEl) {
					oEl.style.display = '';
				}
				oEl = PcP.el('pcpPlaylistCount');
				if (oEl) {
					oEl.innerHTML = oResponse.numList;
				}
			}
		}
	});
};

// ajax.js

function createXmlHttpRequest() {
	if (typeof XMLHttpRequest != 'undefined') {
		return new XMLHttpRequest();
	}
	if (typeof ActiveXObject != 'undefined') {
		try {
			return new ActiveXObject('Microsoft.XMLHTTP');
		} catch (objException) {};
	}
	return null;
}

function fetch(objArgs) {
	if (!objArgs || !objArgs.url || typeof objArgs.callback != 'function') {
		return;
	}
	var objRequest = createXmlHttpRequest();
	if (!objRequest) {
		return;
	}
	if (!objArgs.method) {
		objArgs.method = 'GET';
	}
	var boolErrorDisplayed = false;
	try {
		objRequest.open(objArgs.method, objArgs.url, true);
		objRequest.onreadystatechange = function () {
			if (objRequest.readyState == 4) {
				if (objRequest.status == 200 || objRequest.status == 304 ||
				 (location.protocol == 'file:' && !objRequest.status)) {
					try {
						objArgs.callback(objRequest.responseText);
						return;
					} catch (objException) {
						objArgs.callback('');
					}
				} else if (!boolErrorDisplayed) {
					boolErrorDisplayed = true;
					objArgs.callback('');
				}
			}
		};
		if (objArgs.method.toUpperCase() == 'POST') {
			objRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		var arrContent = [];
		if (objArgs.params) {
			for (var strKey in objArgs.params) {
				arrContent[arrContent.length] = escape(strKey) + '=' + escape(objArgs.params[strKey]);
			}
		}
		objRequest.send(arrContent.join('&') || null);
	} catch (objException) {
		if (!boolErrorDisplayed) {
			boolErrorDisplayed = true;
			objArgs.callback('');
		}
	}
}

function get(objArgs) {
	if (!objArgs || typeof objArgs.callback != 'function') {
		return;
	}
	var funcCallback = objArgs.callback;
	objArgs.callback = function(strResponseText) {
		if (strResponseText) {
			funcCallback(parse(strResponseText));
		} else {
			funcCallback({error: 'No response from server'});
		}
	};
	fetch(objArgs);
}

function post(objArgs) {
	if (!objArgs) {
		return;
	}
	objArgs.method = 'POST';
	get(objArgs);
}

function parse(text) {
	var p = /^\s*(([,:{}\[\]])|"(\\.|[^\x00-\x1f"\\])*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)\s*/,
			token,
			operator;
	function error(m, t) {
			throw {
					name: 'JSONError',
					message: m,
					text: t || operator || token
			};
	}
	function next(b) {
			if (b && b != operator) {
					error("Expected '" + b + "'");
			}
			if (text) {
					var t = p.exec(text);
					if (t) {
							if (t[2]) {
									token = null;
									operator = t[2];
							} else {
									operator = null;
									try {
											token = eval(t[1]);
									} catch (e) {
											error("Bad token", t[1]);
									}
							}
							text = text.substring(t[0].length);
					} else {
							error("Unrecognized token", text);
					}
			} else {
					// undefined changed to null because it is not supported in IE 5.0
					token = operator = null;
			}
	}
	function val() {
			var k, o;
			switch (operator) {
			case '{':
					next('{');
					o = {};
					if (operator != '}') {
							for (;;) {
									if (operator || typeof token != 'string') {
											error("Missing key");
									}
									k = token;
									next();
									next(':');
									o[k] = val();
									if (operator != ',') {
											break;
									}
									next(',');
							}
					}
					next('}');
					return o;
			case '[':
					next('[');
					o = [];
					if (operator != ']') {
							for (;;) {
									o.push(val());
									if (operator != ',') {
											break;
									}
									next(',');
							}
					}
					next(']');
					return o;
			default:
					if (operator !== null) {
							error("Missing value");
					}
					k = token;
					next();
					return k;
			}
	}
	next();
	return val();
}

// rating.js

var CONST_NUM_STARS = 5;
var CONST_OFF_STAR = new Image();
CONST_OFF_STAR.src = '/star_off.gif';
var CONST_ON_STAR = new Image();
CONST_ON_STAR.src = '/star_on.gif';
var CONST_ROLLOVER_STAR = new Image();
CONST_ROLLOVER_STAR.src = '/star_over.gif';
var CONST_RATED_OFF_STAR = new Image();
CONST_RATED_OFF_STAR.src = '/star_rated-off.gif';
var CONST_RATED_ON_STAR = new Image();
CONST_RATED_ON_STAR.src = '/star_rated-on.gif';
var CONST_UNRATED_STAR = new Image();
CONST_UNRATED_STAR.src = '/star_unrated.gif';

function UserRating(id, rating) {
	this.id = id;
	this.rating = rating;
	this.userRating = 0;
}

UserRating.prototype.setRollout = function() {
	if (this.userRating == 0) {
		if (this.rating > 0) {
			this.setVisualState(this.rating, CONST_ON_STAR, CONST_OFF_STAR);
		} else {
			this.setVisualState(CONST_NUM_STARS, CONST_UNRATED_STAR, CONST_UNRATED_STAR);
		}
	}
};

UserRating.prototype.setRollover = function(num) {
	if (this.userRating == 0) {
		this.setVisualState(num, CONST_ROLLOVER_STAR, CONST_OFF_STAR);
	}
};

UserRating.prototype.setUserRated = function(num) {
	if (document.getElementById && this.userRating == 0) {
		this.userRating = num;
		this.setVisualState(num, CONST_RATED_ON_STAR, CONST_RATED_OFF_STAR);
		var responseDiv = document.getElementById('ratingText-' + this.id);
		if (responseDiv) {
			responseDiv.innerHTML = 'Thank you.';
		}
		var objRequest = createXmlHttpRequest();
		objRequest.open('GET', '/rate.php?id=' + this.id + '&n=' + num, false);
		objRequest.send(null);
	}
};

UserRating.prototype.setVisualState = function(num, stateOn, stateOff) {
	if (document.getElementById) {
		for (var x = 1; x <= CONST_NUM_STARS; ++x) {
			if (x <= num) {
				this.getStar(x).src = stateOn.src;
			} else {
				this.getStar(x).src = stateOff.src;
			}
		}           
	}
};

UserRating.prototype.getStar = function(num) {
	return document.getElementById('ratingStar-' + this.id + '-' + num);
};

// Webshots >>>>

Webshot = {};
Webshot.urls = {};
Webshot.activeDiv = null;

Webshot.position = function(oDiv, oPos) {
	var oWindowSize = Zapatec.Utils.getWindowSize();
	var iScrollX = Zapatec.Utils.getPageScrollX();
	var iScrollY = Zapatec.Utils.getPageScrollY();
	var iWinW = iScrollX + oWindowSize.width;
	var iWinH = iScrollY + oWindowSize.height;
	var iLeft = oPos.pageX - 56;
	var iTop = oPos.pageY + 15;
	var iRight = iLeft + 116;
	var iBottom = iTop + 77;
	if (iRight > iWinW) {
		iLeft += iWinW - iRight;
	}
	if (iBottom > iWinH) {
		iTop = oPos.pageY - 82;
	}
	if (iLeft < iScrollX) {
		iLeft = iScrollX;
	}
	if (iTop < iScrollY) {
		iTop = iScrollY;
	}
	oDiv.style.top = iTop + 'px';
	oDiv.style.left = iLeft + 'px';
};

Webshot.show = function(sUrl) {
	var oDiv;
	if (Webshot.urls[sUrl]) {
		oDiv = document.getElementById(Webshot.urls[sUrl]);
		if (!oDiv) {
			return;
		}
	} else {
		oDiv = document.createElement('div');
		oDiv.style.position = 'absolute';
		oDiv.style.zIndex = 1;
		oDiv.style.display = 'none';
		oDiv.style.width = '112px';
		oDiv.style.height = '73px';
		oDiv.style.border = '2px solid #99f';
		oDiv.style.MozBorderRadius = '5px';
		oDiv.style.background = '#fff';
		document.body.insertBefore(oDiv, document.body.firstChild);
		oDiv.innerHTML = '<iframe src="http://sitesnat.ch/submit.php?js=true&url=' + sUrl +
		 '" frameborder="0" marginheight="0" marginwidth="0" width="108" height="69" scrolling="no"></iframe>';
		sId = sUrl.replace(/\W/g, '_');
		oDiv.id = sId;
		Webshot.urls[sUrl] = sId;
	}
	var oPos = Zapatec.Utils.getMousePos();
	Webshot.position(oDiv, oPos);
	oDiv.style.display = '';
	Webshot.activeDiv = Webshot.urls[sUrl];
};

Webshot.hide = function(sUrl) {
	Webshot.activeDiv = null;
	if (!Webshot.urls[sUrl]) {
		return;
	}
	var oDiv = document.getElementById(Webshot.urls[sUrl]);
	if (!oDiv) {
		return;
	}
	oDiv.style.display = 'none';
};

Webshot.move = function(oEvent) {
	if (!Webshot.activeDiv) {
		return;
	}
	var oDiv = document.getElementById(Webshot.activeDiv);
	if (!oDiv) {
		return;
	}
	var oPos = Zapatec.Utils.getMousePos(oEvent);
	Webshot.position(oDiv, oPos);
};

if (typeof Zapatec != 'undefined' && document.body) {
	Zapatec.Utils.addEvent(document.body, 'mousemove', Webshot.move);
}

// <<<< Webshots
