function DivVisibility(id) {
	var object = document.getElementById(id);
	if(object.style.display == "none") {
		ShowDiv(id);
	}
	else {
		HideDiv(id);
	}
}

function delMsg(x) {
	Check = confirm("Are you sure you want to delete this message?")

	if(Check == true) {
		document.location.href='phq_sendmsg.cgi?delete='+x;
	}
}

function ShowDiv(x) {
	$(x).style.display='block';
}

function HideDiv(x) {
	document.getElementById(x).style.display='none';
}

function Highlight(x) {
	if(x)
		x.style.backgroundColor='#555555';
}

function Downlight(x) {
	if(x)
		x.style.backgroundColor='#333333';
}

function SelectAll(form) {
	var chosenform;
	var forms = document.getElementsByTagName('form');
	// stupid IE6 fix, because after loading another form with AJAX into content, the form exists twice...
	for(i=0; i<forms.length; i++) {
		if(forms[i].name == form && !chosenform) {
			chosenform = forms[i];
		}
	}
	if(chosenform) {
		for (var i = 0; i<chosenform.elements.length; i++) {
			if ((chosenform.elements[i].type.indexOf('checkbox') > -1)) {
				if(chosenform.elements[i].checked) {
					chosenform.elements[i].checked = false;
					chosenform.selecter.value = 'Select All';
				}
				else {
					chosenform.elements[i].checked = true;
					chosenform.selecter.value = 'Deselect All';
				}
			}
		}
	}
}					

function CheckCheckBox(id) {
	if(document.getElementById(id)) {
		if(document.getElementById(id).checked == true || document.getElementById(id).disabled == true) {
			document.getElementById(id).checked = false
		}
		else {
			document.getElementById(id).checked = true
		}
	}
}

function BV_Add(id) {
	var field = document.getElementById('field_'+id);
	var td = document.getElementById('td_'+id);
	var bombs_set = 0;

	for(var i=1;i<=16;i++) {
		if(document.getElementById('field_'+i).value == 1) {
			bombs_set++;
			document.getElementById('td_'+i).style.background='url(design/mb_bomb.jpg)';
		}
	}

	if(field.value == 1) {
		td.style.background='url(design/blank.gif)';
		field.value = 0;
		bombs_set--;
	}
	else {
		if(bombs_set >= 5) {
			//alert('Sorry. You can only place 5 bombs.')
		}
		else {
			td.style.background='url(design/mb_bomb.jpg)';
			field.value = 1;
			bombs_set++;
		}
	}

	document.getElementById('bombalert').innerHTML = (5 - bombs_set);
}

var dir_array = new Array('N', 'E', 'S', 'W');

function drav(x, y) {
	var coords_display = document.getElementById('coords_display')

	if(coords_display)
		coords_display.innerHTML = '<span class="gray_font">' + x + '</span> / <span class="gray_font">' + y + '</span>'

	for(i=0;i<4;i++) {
		for(h=0;h<8;h++) {
			obj = document.getElementById('coords_'+dir_array[i]+'_'+h)

			if(obj)
				obj.src='design/drav_coords_'+dir_array[i]+'.gif'
		}
	}
	
	var north = document.getElementById('coords_N_'+x);
	var east = document.getElementById('coords_E_'+y);
	var south = document.getElementById('coords_S_'+x);
	var west = document.getElementById('coords_W_'+y);

	if(north && south && east && west)
	{
		north.src='design/drav_coords_N_hover.gif';
		east.src='design/drav_coords_E_hover.gif';
		south.src='design/drav_coords_S_hover.gif';
		west.src='design/drav_coords_W_hover.gif';
	}
	
}

function dravplace(x, y) {
	var bomb = 0
	var bombele = $('bombcheck');
	if(bombele) {
		if(bombele.checked == true)
			bomb = 1;
	}

	var pass = 0
	var passele = $('passcheck');
	if(passele) {
		if(passele.checked == true)
			pass = 1;
	}

	document.location.href='phq_draversi.cgi?placex=' + x + '&placey=' + y + '&place=1&bomb='+bomb+'&pass='+pass+'&active_game=' + active_drav_game;
}

var Images = new Array('', 'design/drav_dragon.gif', 'design/drav_victim.gif');
var dravTurns = new Array();
var currentTurn = 0;
function drawTurn(directinfo) {
	if(directinfo == undefined) {
		var directinfo = "";
	}
	else {
		//currentTurn = 0;
	}

	var output = document.getElementById('output');

	if(currentTurn < dravTurns.length || directinfo != "") {
		if(currentTurn) {
			if(output) {
				output.innerHTML='<span class="gray_font">' + currentTurn + '</span>: '
			}
		}

		var info = new Array()
		if(directinfo != "") {
			info = directinfo.split('-');
		}
		else {
			info = dravTurns[currentTurn].split('-');
		}

		var piece_side = 0;
		var piece_opposite = 0;

		if(info[0] == 'break') {
			if(output) {
				output.innerHTML+='<b>T</b>aking a break...'
				currentTurn++;
			}
		}
		else {
			if(info[0] == 'victim') {
				piece_side = 2;
				piece_opposite = 1;
			}
			
			if(info[0] == 'dragon') {
				piece_side = 1;
				piece_opposite = 2;
			}
			
			if(info[0] == 'bomb') {
				if(output) {
					if(currentTurn > 0) {
						output.innerHTML+='<b>B</b>ombing <span class="gray_font">'+ info[1] + '</span>/<span class="gray_font">'+ info[2] + '</span>!';
					}
				}

				Pieces[info[1] + '-' + info[2]] = 0;
			}
			else {
				if(info[0] == 'dragon') {
					if(output) output.innerHTML+='<b>P</b>lacing a Dragon at <span class="gray_font">'+ info[1] + '</span>/<span class="gray_font">'+ info[2] + '</span>!';
					Pieces[info[1] + '-' + info[2]] = 1;
				}
				else {
					if(output) output.innerHTML+='<b>T</b>hrowing a Victim at <span class="gray_font">'+ info[1] + '</span>/<span class="gray_font">'+ info[2] + '</span>!';
					Pieces[info[1] + '-' + info[2]] = 2;
				}
			}

			var x = info[1];
			var y = info[2];
			var check_count = 0;
			var checking = 1;
			var check_range = 1;
			var total_turned = 0
	
			while(check_count < 8) {
				x = info[1];
				y = info[2];
				checking = 1;
				check_range = 1;
				var toturn = new Object();

				while(x >= 0 && y >= 0 && x <= 7 && y <= 7 && checking) {
					if(check_count == 0 || check_count == 1 || check_count == 7) {
						y--;
					}
					
					if(check_count == 1 || check_count == 2 || check_count == 3) {
						x++;
					}
					
					if(check_count == 3 || check_count == 4 || check_count == 5) {
						y++;								
					}
					
					if(check_count == 5 || check_count == 6 || check_count == 7) {
						x--;
					}
	
					if(x < 0 || y < 0 || x > 7 || y > 7) {
						checking = 0;
					}
					else {
						if(check_range >= 1) {
							if(Pieces[x + '-' + y] == piece_side) {
								checking = 0;
								
								if(check_range > 1) {
									for(var Fill in toturn) {
										total_turned++;
										Pieces[Fill] = piece_side;
									}
								}
							}
							if(!Pieces[x + '-' + y]) {
								checking = 0;
							}
							if(Pieces[x + '-' + y] == piece_opposite) {
								toturn[x + '-' + y] = piece_side;
							}
						}
					}

					check_range++;
				}

				check_count++;
			}

			if(total_turned > 0) {
				if(output) {
					output.innerHTML += ' (+<span class="green_font">' + total_turned + '</span>)';
				}
			}

			for(var Key in Pieces) {
				var info = Key.split('-');

				if(Pieces[Key] != 0) {
					$('dr-'+info[0]+'-'+info[1]).innerHTML = '<img src="' + Images[Pieces[Key]] + '" alt="" />';
				}
				else {							
					$('dr-'+info[0]+'-'+info[1]).innerHTML = '';
				}
			}

			if(output)
				currentTurn++;
		}
	}
	else {
		if(output)
			dravReset();
	}

	if(output) {
		if($('auto_play').checked == true)
			setTimeout('drawTurn()',1000);
	}
	else {
		return total_turned;
	}
}

function dravReset() {
	currentTurn = 0;

	for(var Key in Pieces) {
		info = Key.split('-')
		document.getElementById('dr-'+info[0]+'-'+info[1]).innerHTML = ''
	}

	document.getElementById('output').innerHTML = ''

	Pieces = new Object();
	Pieces['3-3'] = 1;
	Pieces['4-4'] = 1;
	Pieces['3-4'] = 2;
	Pieces['4-3'] = 2;	
}

var drav_types = new Array('', 'dragons', 'victims');
var legal_moves = 0;
var fetching_draversi_info = false;
function fetchDraversiInfo() {
	if(fetching_draversi_info == false) {
		fetching_draversi_info = true;
		var request_updateinfo = new Request.HTML({
			onComplete: function(resTree, resEls, resHTML, resJS) {
				fetching_draversi_info = false;
				var updateinfo = new Element('div');
				if(resEls) {
					resEls.each(function(el, i) {
						if(el.id == "dravupdateinfo") {
							updateinfo.innerHTML = el.innerHTML;
							el.destroy();
						}
					});
	
					// update info
					var dravlog = $('drav_log');
					var dravlogtable = dravlog.getElement('table');
					var dravlogtabletrs = dravlogtable.getElements('tr');
	
					var infos = updateinfo.getElements('span');
					infos.each(function(el, i) {
						var newrow = new Element('tr');
						var newcell = new Element('td');
						newcell.inject(newrow, 'top');
	
						var params = el.innerHTML.split('~n~');
						if(el.title == "turn") {
							// params: id, name, type, x, y
							newcell.addClass("left_td2");
							if(params[2] == 'bomb') {
								var total_turned = drawTurn(params[2] + '-' + params[3] + '-' + params[4]);
								newcell.innerHTML = '<span color="#C0FFC0">' + params[1] + '</span> dropped a ' + params[2] + ' at <span class="gray_font">' + params[3] + '</span>/<span class="gray_font">' + params[4] + '</span>!';
							}
							else if(params[2] == 'break') {
								newcell.innerHTML = '<span color="#C0FFC0">' + params[1] + '</span> takes a break!';
							}
							else {
								var total_turned = drawTurn(params[2] + '-' + params[3] + '-' + params[4]);
								newcell.innerHTML = '<span color="#C0FFC0">' + params[1] + '</span> placed a ' + params[2] + ' at <span class="gray_font">' + params[3] + '</span>/<span class="gray_font">' + params[4] + '</span> (+<span class="green_font">' + total_turned + '</span>)!';
							}

							var totalobjects = new Array('', 0, 0);
							for(var Key in Pieces)
							{
								totalobjects[Pieces[Key]]++;
							}

							$('drav_dragons').innerHTML = totalobjects[1];
							$('drav_victims').innerHTML = totalobjects[2];

							var totalturnscont = $('drav_turns');
							if(totalturnscont) {
								totalturnscont.innerHTML = Math.round(totalturnscont.innerHTML) + 1;
							}

							var dravmessage = $('drav_message');
							if(dravmessage) {
								if($('drav_enemyname').innerHTML == params[1]) {
									dravmessage.innerHTML = '<span class="green_font"><b>I</b>t\'s your turn!</span>';
	
									var dravactions = "";
	
									if(bomb_used && legal_moves <= 0)
										dravactions += '<br><table><tr><td><input onchange="dravplace(1, 1)" type="checkbox" name="pass" id="passcheck"></td><td><label for="passcheck"><b>P</b>ass Turn</label></td></tr></table>';
	
									if(!bomb_used) 
										dravactions += '<br><table><tr><td><input type="checkbox" name="bomb" id="bombcheck"></td><td><label for="bombcheck"><b>D</b>rop Bomb</label></td></tr></table>';
	
									$('drav_actions').innerHTML = dravactions;
								}
								else if($('drav_enemyname').innerHTML != params[1]) {
									dravmessage.innerHTML = '<span class="gray_font"><b>W</b>aiting for opponent\'s turn.</span>';
								}
							}
						}
						else if(el.title == "log") {
							// params: id, name, message
							newcell.innerHTML = '<span class="gray_font">' + params[1] + '</span>: ' + params[2];
							newcell.addClass("left_td");
						}
	
						if(el.title == "legalmoves") {
							legal_moves = Math.round(el.innerHTML);
						}
						else if(el.title == "bombused") {
							bomb_used = Math.round(el.innerHTML);
						}
						else if(el.title == "gameover") {
							$('drav_actions').innerHTML = el.innerHTML;
						}
						else {
							last_comment_id = params[0];
							if(dravlogtabletrs.length >= 13) { 
								dravlogtabletrs[1].destroy();
							}
							newrow.inject(dravlogtabletrs[dravlogtabletrs.length-2], 'before');
						}
					});
				}
				updateinfo.destroy();
			}
		}).get("phq_ajaxactions.cgi?ajax=1&get_draversiupdate=1&id=" + last_comment_id + "&gameid=" + active_drav_game + "&random=" + Math.random());
	}
	else {
		//alert('already fetching draversi');
	}
}

var trapSettings = new Object();
window.addEvent('domready', function() {
	initAjaxFormsAndLinks();

	if($('summon_chat')) {
		showAjaxLoading();
		var summonchatrequest = new Request.HTML({
			onComplete: function(resTree, resEls, resHTML, resJS) {
				hideAjaxLoading();
				$('summon_chat').innerHTML = resHTML;
				initAjaxFormsAndLinks();
				if($('sendchatinput')) {
					$('chatoutput').style.overflow = "auto";

					var form = $('sendchatinput');
					form.addEvent('submit', function(e) {
						if(e) {
							var eve = new Event(e);
							eve.stop();
						}

						if($('chatmessage').value != "") {
							var request = new Request.HTML({ 
								url: this.action
							}).post(this);
							$('chatmessage').value = "";
						}
						$('chatmessage').focus();
					});

					var setform = $('chatsettingsform');
					setform.addEvent('submit', function(e) {
						new Event(e).stop();
						$('settingssaveresult').innerHTML = "Saving ...";
						var request = new Request.HTML({ 
							url: this.action,
							update: $('settingssaveresult')
						}).post(this);
					});

					if($('cv_commander')) {
						$$('#cv_commander input').each(function(imp, i) {
							imp.addEvent('click', function() {
								if(imp.title == "/cv examine") {
									$('chatmessage').value = imp.title + ' ';
									$('chatmessage').focus();
								}
								else {
									chatQuery(imp.title);
								}
							});
						});
					}

					fetchRecentChatEntries();
					window.setInterval('fetchRecentChatEntries()', 2000);
					initChatScroll();
				}
			}
		}).get("hq_chat2.cgi?summon_chat=1&random=" + Math.random());
	}
	else { //not in chat
		var summonchatrequest = new Request.HTML({
			onComplete: function(resTree, resEls, resHTML, resJS) {
			}
		}).get("phq_ajaxactions.cgi?ajax=1&not_in_chat=1&random=" + Math.random());
	}

	if($$('.index').length == 0)
		window.setInterval('fetchUpdateInfo()', 10000);

	if($('drav_log') && $('draversi_field')) {
		window.setInterval('fetchDraversiInfo()', 2000);

		var draversichatform = $('draversi_chat_form');
		draversichatform.addEvent('submit', function(e) {
			new Event(e).stop();
			var request = new Request.HTML({
				url: "phq_ajaxactions.cgi"
			}).post(this);
			$('draversi_chat_comment').value = "";
			$('draversi_chat_comment').focus();
		});
	}

	if($$('.check_sale_history').length) {
		$$('.check_sale_history').each(function(el, i) {
			var namesplit = el.name.split('_');
			var elid = namesplit[1];
			el.elid = elid;
			el.addEvent('mouseover', function() {
				var historic = $('sale_history_' + this.elid);
				var historic_shade = $('sale_history_shade_' + this.elid);
				if(!historic_shade) {
					historic_shade = new Element('div');
					historic_shade.inject(document.body, 'bottom');
					historic_shade.setStyles({
						position: 'absolute',
						top: el.getTop()+5,
						left: el.getLeft()-305+5,
						width: 300,
						background: 'black',
						display: 'none',
						opacity: 0.5
					});
					historic_shade.id = 'sale_history_shade_' + this.elid;
				}
				if(!historic) {
					historic = new Element('div');
					historic.inject(document.body, 'bottom');
					historic.setStyles({
						position: 'absolute',
						top: el.getTop(),
						left: el.getLeft()-305,
						width: 300,
						display: 'none'
					});
					historic.id = 'sale_history_' + this.elid;
					historic.addClass('sale_historic_lesson');
				}
				historic.setStyle('display', 'block');
				historic.set('html', '<table class="general_table"><tr><td class="center_td2"><b>L</b>ooking for yummy data ...</td></tr></table>');
				historic_shade.setStyles({
					display: 'block',
					height: historic.getHeight()
				});

				var request_history = new Request.HTML({
					onComplete: function(resTree, resEls, resHTML, resJS) {
						fetching_update_info = false;
						var updateinfo = new Element('div');
						var current_offers = new Element('div');
						if(resEls) {
							var inventoryid;
							resEls.each(function(el, i) {	
								if(el.id == "sales_history") {
									updateinfo.innerHTML = el.innerHTML;
									inventoryid = el.title;
									el.destroy();
								}
								if(el.id == "current_offers") {
									current_offers.innerHTML = el.innerHTML;
									el.destroy();
								}
							});

							var his = $('sale_history_' + inventoryid);
							var newhtml = '<table class="general_table"><tr><td class="center_td3" colspan="3"><b>S</b>ales History</td></tr>';

							// update info
							var infos = updateinfo.getElements('div');
							infos.each(function(el, i) {
								newhtml += '<tr>';
								var spans = el.getElements('span');
								spans.each(function(span, i) {
									if(span.title == "error") {
										newhtml += '<td colspan="3" class="center_td2">' + span.innerHTML + '</td>';
									}
									if(span.title == "date") {
										newhtml += '<td class="center_td2">' + span.innerHTML + '</td>';
									}
									if(span.title == "time") {
										newhtml += '<td class="right_td2">' + span.innerHTML + '</td>';
									}
									if(span.title == "price") {
										newhtml += '<td class="right_td2"><span class="green_font">' + span.innerHTML + '</span></td>';
									}
								});
								newhtml += "</tr>";
							});

							if(current_offers.innerHTML != "") {
								newhtml += '<tr><td class="center_td3" colspan="3"><b>C</b>urrent Offers</td></tr>';

								// current offers
								var infos = current_offers.getElements('div');
								infos.each(function(el, i) {
									newhtml += '<tr>';
									var spans = el.getElements('span');
									spans.each(function(span, i) {
										if(span.title == "seller") {
											newhtml += '<td colspan="2" class="center_td2">' + span.innerHTML + '</td>';
										}
										if(span.title == "price") {
											newhtml += '<td class="right_td2"><span class="green_font">' + span.innerHTML + '</span></td>';
										}
									});
									newhtml += "</tr>";
								});
							}

							newhtml += "</table>";
							his.set('html', newhtml);

							var historic = $('sale_history_' + inventoryid);
							var historic_shade = $('sale_history_shade_' + inventoryid);
							historic_shade.setStyles({
								width: historic.getWidth(),
								height: historic.getHeight()
							});
						}
						updateinfo.destroy();
					}
				}).get("phq_ajaxactions.cgi?ajax=1&get_sales_history=1&inventoryid=" + elid + "&random=" + Math.random());

			});

			el.addEvent('mouseout', function() {
				$('sale_history_' + this.elid).setStyle('display', 'none');
				$('sale_history_shade_' + this.elid).setStyle('display', 'none');
				$('sale_history_' + this.elid).set('html', '');
			});
		});
	}

	if($('traps_list')) {
		/*$$('#traps_list tr').each(function(tr, i) {
			if(i > 0 && i < $$('#traps_list tr').length-1) {
				var tds = tr.getElements('td');
				// 0 img, 1 name, 2 kills, 3 fixcosts, 4 dirimg, 5 pos, 6 crafter, 7 dur, 8 discosts
				trapSettings[tr.id] = new Object();
				trapSettings[tr.id]['name'] = tds[1].getElements('a')[0].innerHTML;
				trapSettings[tr.id]['kills'] = tds[2].innerHTML.replace(',', '').replace('.', '');
				trapSettings[tr.id]['fixcosts'] = tds[3].innerHTML.replace(',', '').replace('.', '');
				var trapdirections = tds[4].getElement('img').src.split('_')[1].replace('.gif', '').split('');
				trapSettings[tr.id]['entry'] = trapdirections[0];
				trapSettings[tr.id]['exit'] = trapdirections[1];
				var pos_fonts = tds[5].getElements('span');
				trapSettings[tr.id]['x'] = pos_fonts[0].innerHTML;
				trapSettings[tr.id]['y'] = pos_fonts[1].innerHTML;
				trapSettings[tr.id]['crafter'] = tds[6].innerHTML;
				var trapdurs = tds[7].getElements('span');
				trapSettings[tr.id]['dur'] = trapdurs[0].innerHTML;
				trapSettings[tr.id]['maxdur'] = trapdurs[1].innerHTML;
				trapSettings[tr.id]['discosts'] = tds[7].innerHTML;
			}
		});

		var tds = $$('.trap_filter tr')[1].getElements('td');
		//var fil_entry = tds[0].getElement('select');
		//fil_entry.onchange = function() {
		//	applyTrapFilter();
		//}*/
	}
});

function applyTrapFilter() {
	var directions = new Array('', 'n', 'e', 's', 'w');
	var tds = $$('.trap_filter tr')[1].getElements('td');

	var fil_entry = tds[0].getElement('select').value;

	$$('#traps_list tr').each(function(tr, i) {
		if(i > 0 && i < $$('#traps_list tr').length-1) {
			var show = true;
			if(trapSettings[tr.id]['entry'] == directions[fil_entry] || fil_entry == 0) {
				
			}
			else {
				show = false;
			}

			if(show) {
				// maybe make a temporary table and get data out of it to the front display table
			}
			else {
				// save this tr to somewhere else temporarily...
				//tr.destroy();
				//tr.setStyle('display', 'none');
			}
		}
	});

	$('traps_container').innerHTML = $('traps_container').innerHTML;
}

var fetching_chat_entries = false;
function fetchRecentChatEntries() {
	var finalid = "";
	var spans = $$('#chatoutput .i');
	if(spans.length > 0) {
		finalid = spans[spans.length - 1].id;
	}

	if(fetching_chat_entries == false) {
		fetching_chat_entries = true;
		var recententries = new Request.HTML({
			onComplete: function(resTree, resEls, resHTML, resJS) {
				fetching_chat_entries = false;
				var output = $('chatoutput');
				var lastid = "";
				var updateinfo = "";
				if(resEls) {
					resEls.each(function(el, i) {
						if(el.id.indexOf('chatid') > -1) {
							lastid = el.id;
						}
	
						if(el.id == "updateinfo") {
							updateinfo = el.innerHTML;
							el.destroy();
						}
					});
	
					var upd = false;
					if(spans.length == 0) {
						upd = true;
					}
					else {
						if(lastid != finalid) {
							upd = true;
						}
					}
		
					if(upd == false) {
						resHTML = "";
					}
	
					clearChatOutput(updateinfo, resHTML);
					scrollChat();
				}
			}
		}).get("hq_chat2.cgi?get_recent_chatoutput=1&finalid=" + finalid.replace('chatid', '') + "&random=" + Math.random());
	}
	else {
		//alert('already fetching chat');
	}
}

var sound;
var lastspanid = 0;
function clearChatOutput(updateinfo, innerhtml) {
	if($('chatoutput')) {
		if(innerhtml != "") {
			$('chatoutput').innerHTML += innerhtml.split('-4mp-').join('&');
		}

		// check limit
		var loglimit = $('lines').value;
		var spans = $$('#chatoutput .i');
		if(spans.length > 0) {
			if(spans.length > loglimit) {
				var todelete = spans.length - loglimit;
				spans.each(function(el, i) {
					if(todelete > 0) {
						el.destroy();
						todelete--;
					}
				});
			}
	
			// play sound if last id != lastspan id
			if(lastspanid != spans[spans.length-1].id) {
				if(lastspanid != 0 && !spans[spans.length-1].getElement('.nosound')) {
					var flashvars = {
					   soundid: $('updatesound').value
					};
					var params = {};
					var attributes = {};
					swfobject.embedSWF("design/chatsounds2.swf", "updatesoundcontainer", "1", "1", "9.0.0", '', flashvars, params, attributes);
				}
	
				lastspanid = spans[spans.length-1].id;
			}
	
			// clear times
			var times = $$('#chatoutput .time');
			times.each(function(el, i) {
				if($('hidetime').checked == true)
					el.destroy();
			});
	
			// check pre widths
			var pres = $$('#chatoutput pre');
			pres.each(function(el, i) {
				if(el.getWidth() > 500) {
					el.setStyle("width", 500);
				}
			});
		}

		// update info
		var update = new Object();
		var infodiv = new Element('div');
		infodiv.innerHTML = updateinfo;
		var infos = infodiv.getElements('span');
		infos.each(function(el, i) {
			update[el.title] = el.innerHTML;
			var infocont = $('info_' + el.title);
			if(infocont) {
				if(infocont.innerHTML != update[el.title]) {
					infocont.innerHTML = update[el.title];
				}
			}
		});

		if(update['cv_health']) {
			$('cv_commander').setStyle('display', 'block');
		}
		else {
			$('cv_commander').setStyle('display', 'none');
		}

		infodiv.destroy();

		// clear updateinfos
		while($('updateinfo')) {
			$('updateinfo').destroy();
		}

		var maxheight = Math.round($('maxheight').value);
		if(maxheight < 50) {
			maxheight = 50;
		}
		if(maxheight > 500) {
			maxheight = 500;
			$('maxheight').value = 500;
		}

		if($('chatoutput').getHeight() != maxheight) {
			$('chatoutput').style.overflow = 'auto';
			$('chatoutput').style.height = maxheight + "px";
		}

		initAjaxFormsAndLinks();
	}
}

var chatScroller;
function initChatScroll() {
	chatScroller = new Fx.Scroll('chatoutput', {
		wait: false,
		duration: 200,
		transition: Fx.Transitions.Quad.easeInOut
	});
}

function scrollChat() {
	if(chatScroller) {
		var autoscroll = $('autoscroll');
		if(autoscroll) {
			if(autoscroll.checked == true) {
				chatScroller.toBottom();
			}
		}
		else {
			chatScroller.toBottom();
		}
	}
}

function showChatSettings() {
	var sets = $('chatsettings');
	var shade = $('chatsettings_shadow');

	if(sets.style.display == 'block') {
		sets.setStyle('display', 'none');
		shade.setStyle('display', 'none');
	}
	else {
		sets.setStyle('display', 'block');
		shade.setStyle('display', 'block');
		shade.setStyle('width', sets.getWidth());
		shade.setStyle('height', sets.getHeight());
		shade.setStyle('top', 25);
		shade.setStyle('left', 25);
		shade.setStyle('opacity', 0.8);
		$('settingssaveresult').innerHTML = "";
	}
}

function refreshChat() {
	$('chatoutput').innerHTML = "";
}

function diceChat() {
	$('chatmessage').value += ":dice";
	$('chatmessage').focus();
}

function chatQuery(query) {
	$('chatmessage').value = query;
	$('sendchatinput').fireEvent('submit');
}

var fetching_update_info = false;
function fetchUpdateInfo() {
	if(fetching_update_info == false) {
		fetching_update_info = true;
		var request_updateinfo = new Request.HTML({
			onComplete: function(resTree, resEls, resHTML, resJS) {
				fetching_update_info = false;
				var updateinfo = new Element('div');
				if(resEls) {
					resEls.each(function(el, i) {	
						if(el.id == "allupdateinfo") {
							updateinfo.innerHTML = el.innerHTML;
							el.destroy();
						}
					});

					// update info
					var update = new Object();
					var infos = updateinfo.getElements('span');
					infos.each(function(el, i) {
						update[el.title] = el.innerHTML;
						var infocont = $('info_' + el.title);
						if(infocont) {
							if(infocont.innerHTML != el.innerHTML)
								infocont.innerHTML = el.innerHTML;
						}
					});

					if($('player_rating')) {
						$('player_rating').style.width = update['rating'] + "%";
					}
	
					if($('clock')) {
						if(update['clockdisplay'] > 0) { // analog clock
							$('clock').innerHTML = '<img src="design/clock_' + update['clockhour'] + '.jpg" border="0" alt="' + update['clockmins'] + '" title="' + update['clockmins'] + '" width="57">';
						}
						else { // digital clock
							if(update['clockmins']) {
								var newclockhtml = "";
								if(update['clockmins'] == 666) {
									newclockhtml = '<img src="design/clock_dig_666.jpg" border="0" alt="" width="57">';
								}
								else {
									var splitmins = update['clockmins'].split("");
									splitmins.each(function(el, i) {
										newclockhtml += '<img src="design/clock_dig_' + el + '.jpg" border="0" alt="">';
									});
								}
								newclockhtml += '<br /><img src="design/clock_mins.jpg" border="0" alt="">';
								$('clock').innerHTML = newclockhtml;
							}
						}
					}

					if($('alerts') && update['newalerts'] != undefined) {
						if(update['newalerts'] != $('alerts').innerHTML) {
							$('alerts').innerHTML = update['newalerts'];
						}
					}
	
					if($('messages') && update['messages']) {
						if(update['messages'] != "" && update['messages'] != $('messages').innerHTML) {
							$('messages').innerHTML = update['messages'];
						}
					}
	
					if($('online_users') && update['onlineusers']) {
						if(update['onlineusers'] != "" && update['onlineusers'] != $('online_users').innerHTML) {
							$('online_users').innerHTML = update['onlineusers'];
						}
					}
				}
				updateinfo.destroy();
			}
		}).get("phq_ajaxactions.cgi?ajax=1&get_updateinfo=1&random=" + Math.random());
	}
	else {
		//alert('already fetching update');
	}
}

function onlineUser(obj) {
	if(obj.value != "") {
		document.location.href='phq_other_users.cgi?view=single_user&users_id='+obj.value;
	}
}

function jaymeeowHover(tr) {
	var divs = $(tr).getElements('div');
	var table = divs[2];
	$(divs[2]).setStyle('display', 'block');
	$(divs[1]).setStyles({
		display: 'block',
		width: table.getWidth(),
		height: table.getHeight(),
		position: 'absolute',
		top: 5,
		left: 5+table.getStyle('left').toInt(),
		background: 'black',
		opacity: 0.5
	});
	Highlight(tr);
}

function jaymeeowOut(tr) {
	var divs = tr.getElements('div');
	divs.each(function(el, i) {
		if(i > 0)
			el.setStyle('display', 'none');
	});
	Downlight(tr);
}

/* AJAX Forms and Links */

function initAjaxFormsAndLinks(obj) {
	initTableHover();
	initTableClick();
	initTraps();
	initPopups();
	initPersonalLinks();
	initColorChooser();
	initGalleries();

	if($('message_receiver')) {
		$('message_receiver').focus();
	}

	$$('.spoiler').each(function(span, i) {
		span.removeEvents();
		span.addEvent('mouseover', function() {
			this.addClass('spoilerhover');
		});
		span.addEvent('mouseout', function() {
			this.removeClass('spoilerhover');
		});
	});

	var forms = $$('form.ajax');
	var links = $$('a.ajax');
	if(obj) {
		forms = obj.getElements('form.ajax');
		links = obj.getElements('a.ajax');
	}

	forms.each(function(form, i) {
		var input = new Element('input');
		input.type = 'hidden';
		input.name = 'ajax';
		input.value = '1';
		input.inject(form, 'top');

		form.updateobj = obj;
		form.removeEvents();
		form.addEvent('submit', function(e) {
			var event = new Event(e).stop();
			showAjaxLoading();
			var request = new Request.HTML({ 
				url: this.action,
				onComplete: function(resTree, resEls, resHTML, resJS) {
					hideAjaxLoading();
					if(this.updateobj) {
						this.updateobj.set('html', resHTML);
						if(this.updateobj.ajaxready) {
							this.updateobj.ajaxready(this.updateobj);
						}
						initAjaxFormsAndLinks(this.updateobj);
					}
					else {
						if($$('.actual_content').length) {
							$$('.actual_content').set('html', resHTML);
						}
						else {
							$(document.body).set('html', resHTML);
						}
						window.fireEvent('domready');
					}
				}
			}).post(this);
			request.updateobj = this.updateobj;
		});
	});

	links.each(function(a, i) {
		a.updateobj = obj;
		if(!a.ajaxlink) {
			a.ajaxlink = a.href;
			a.href = '#';
		}
		a.removeEvents();
		a.addEvent('click', function(e) {
			var event = new Event(e).stop();

			if(this.ajaxlink.indexOf('?') > -1) {
				this.ajaxlink = this.ajaxlink + '&ajax=1&random=' + Math.floor(Math.random()*5000);
			}
			else {
				this.ajaxlink = this.ajaxlink + '?ajax=1&random=' + Math.floor(Math.random()*5000);
			}

			showAjaxLoading();
			var request = new Request.HTML({ 
				url: this.ajaxlink,
				onComplete: function(resTree, resEls, resHTML, resJS) {
					hideAjaxLoading();
					if(this.updateobj) {
						this.updateobj.set('html', resHTML);
						if(this.updateobj.ajaxready) {
							this.updateobj.ajaxready(this.updateobj);
						}
						initAjaxFormsAndLinks(this.updateobj);
					}
					else {
						if($$('.actual_content').length) {
							$$('.actual_content').set('html', resHTML);
						}
						else {
							$(document.body).set('html', resHTML);
						}
						window.fireEvent('domready');
					}
				}
			}).get(this.ajaxlink);
			request.updateobj = this.updateobj;
		});
	});
}

/* General Hover Effect and Click */

function initTableHover() {
	var tables = $$('.tr_hover');
	tables.each(function(table, i) {
		var trs = table.getElements('tr');
		trs.each(function(tr, b) {
			if(!tr.hasClass('nohover')) {
				tr.removeEvents();
				tr.addEvent('mouseover', function() {
					this.addClass('hover');
				});
				tr.addEvent('mouseout', function() {
					this.removeClass('hover');
				});
			}
		});
	});
}

function initTableClick() {
	$$('.clickable_by_tr').each(function(el, i) {
		var tr = el.getParent('tr');
		if(tr) {
			tr.clickchild = el;
			tr.removeEvents('click');
			tr.addClass('pointer');
			tr.addEvent('click', function(e) {
				if(this.clickchild.checked && this.clickchild.type == 'checkbox') {
					this.clickchild.checked = false;
				}
				else {
					this.clickchild.checked = true;
				}
			});
			el.removeEvents('click');
			el.addEvent('mousedown', function(e) {
				var event = new Event(e).stop();
				this.getParent('tr').fireEvent('click');
			});
		}
	});
}

/* Mr. Alert */

var alerterWindows = new Array();
var alerterFxs = new Array();
var alerterShadowFxs = new Array();
function showAlerter(message) {
	var alerter = new Element('div');
	alerter.inject($(document.body), 'bottom');
	var newTop = 20;
	alerterWindows.each(function(el, i) {
		newTop += el.getHeight()+15;
	});
	alerter.setStyles({
		top: newTop,
		left: 20,
		width: 250,
		display: 'block',
		opacity: 0,
		zIndex: 1000+alerterWindows.length
	});
	alerter.addClass('alerter');
	alerter.set('html', '<table class="general_table maxheight"><tr><td class="center_td2">' + message + '</td></tr></table>');
	dropShadow(alerter, 'alertershadow');
	alerterWindows.push(alerter);
	alerterFxs[alerterWindows.length-1] = new Fx.Morph(alerter, {
		duration: 400,
		wait: false
	});
	alerterFxs[alerterWindows.length-1].start({
		opacity: 1
	});
	alerterShadowFxs[alerterWindows.length-1] = new Fx.Morph(alerter.shadow, {
		duration: 400,
		wait: false
	});

	setTimeout('destroyNextAlerter()', 5000);
}

function destroyNextAlerter() {
	var firstAlert = alerterWindows[0];
	if(firstAlert) {
		alerterFxs[0].onComplete = function() {
			//this.subject is a mootools defined variable
			if(this.subject.shadow) {
				this.subject.shadow.dispose();
			}
			this.subject.dispose();
		};
		alerterFxs[0].start({
			opacity: 0
		});
		alerterShadowFxs[0].start({
			opacity: 0
		});

		alerterWindows.shift();
		alerterFxs.shift();
		alerterShadowFxs.shift();
		var newTop = 20;
		alerterWindows.each(function(el, i) {
			alerterFxs[i].start({
				top: newTop,
				opacity: 1
			});
			alerterShadowFxs[i].start({
				top: newTop+10
			});
			newTop += el.getHeight()+15;
		});
	}
}

/* Logout */

function logOut() {
	var logoutrequest = new Request.HTML({
		onComplete: function(resTree, resEls, resHTML, resJS) {
			hideAjaxLoading();
			var result = new Element('div');
			result.set('html', resHTML);
			var status = result.getElement('.status').innerHTML;

			showAlerter(status);

			result.dispose();

			// dispose cookie
			document.cookie = 'sessionid=; path=/; domain=muddasheep.com; expires=Thu, 01-Jan-70 00:00:01 GMT;';
			setTimeout("document.location.href = 'index.cgi'", 500)
		}
	}).get("phq_ajaxactions.cgi?ajax=1&logout=1&random=" + Math.random());
	showAjaxLoading();
}

/* INDEX */

window.addEvent('domready', function() {
	if($('not_logged_in')) {
		$('not_logged_in').setStyles({
			width: 470,
			margin: 20
		});
	}

	if($('login_form') && $$('.login').length > 0 && $$('.register').length > 0) {
		dropShadow($$('.login')[0]);
		dropShadow($$('.register')[0]);
	}

	if($('login_form')) {
		var form = $('login_form');
		form.addEvent('submit', function(e) {
			if(e) {
				var eve = new Event(e);
				eve.stop();
			}

			if($('username').value != "" && $('username').value != "") {
				showAjaxLoading();
				var request = new Request.HTML({ 
					url: this.action,
					onComplete: function(resTree, resEls, resHTML, resJS) {
						hideAjaxLoading();
						var result = new Element('div');
						result.set('html', resHTML);
						var status = result.getElement('.status').innerHTML;
						if(status == "success") {
							var sessionid = result.getElement('.sessionid').innerHTML;
							var username = result.getElement('.username').innerHTML;
							var gender = result.getElement('.gender').innerHTML;
							gender = (gender == 1) ? "Mistress" : "Master";
							var theend = new Date();
							var expire = theend.getTime() + (30 * 24 * 60 * 60 * 1000);
							theend.setTime(expire);
							document.cookie = 'remember=' + username + '\; path=/\; expires=' + theend.toGMTString();
							document.cookie = 'sessionid=' + sessionid + '\; domain=muddasheep.com\; path=/\; expires=' + theend.toGMTString();
							if($('redirect')) {
								if(Browser.Engine.presto) { // Opera
									setTimeout('document.location.href = "' + $('redirect').value + '"', 500);
								}
								else {
									setTimeout('document.location.href = "' + $('redirect').value + '"', 10);
								}
							}
							else {
								if(Browser.Engine.presto) { // Opera
									setTimeout('document.location.href = "phq_main.cgi"', 500);
								}
								else {
									setTimeout('document.location.href = "phq_main.cgi"', 10);
								}
							}
							showAlerter('Welcome, ' + gender + '.');
						}
						else {
							showAlerter(status);
						}
						result.dispose();
					}
				}).post(this);
				if($('alerter')) {
					$('alerter').setStyle('display', 'none');
					hideShadow($('alerter'));
				}
				request.sender = this; // save the form for later use
			}
		});

		if(Cookie.read('remember')) {
			$('username').value = Cookie.read('remember');
			$('password').focus();
		}
		else {
			$('username').focus();
		}

		// login automatically if there's username and password in URL... for some reason <.<
		var scripturl = document.location.href;
		if(scripturl.indexOf('username') > -1) {
			var spliturl = scripturl.split('?');
			var params = spliturl[1].split('&');
			var savedparams = new Object();
			for(i=0; i<params.length; i++) {
				var splitparams = params[i].split('=');
				savedparams[splitparams[0]] = splitparams[1];
			}
			$('username').value = savedparams['username'];
			$('password').value = savedparams['password'];

			$('loginbutton').click();
		}
	}

	/* Flag Editor */
	if($('chosen_flag')) {
		if($('flag')) {
			if($('userflag') && $('flag').value == 25) {
				$('chosen_flag').setStyle('background', "url('design/flags/flag" + $('userflag').value + ".jpg') no-repeat");
			}
			else {
				$('chosen_flag').setStyle('background', "url('design/flag" + $('flag').value + ".gif') no-repeat");
			}
		}
		$('chosen_flag').removeEvents();
		$('chosen_flag').addEvent('mouseover', function() {
			this.setStyle('opacity', 0.7);
		});
		$('chosen_flag').addEvent('mouseout', function() {
			this.setStyle('opacity', 1);
		});
		$('chosen_flag').addEvent('click', function(e) {
			this.parentNode.style.position = 'relative';

			var event = new Event(e).stop();
			var chooser = $('flag_chooser');
			if(!chooser) {
				chooser = new Element('div');
				chooser.id = "flag_chooser";
				var newhtml = "";
				var maxflag = 24;
				for(i=1; i<=maxflag; i++) {
					newhtml += '<a href="#"><img src="design/flag' + i + '.gif" alt="Flag ' + i + '" /></a>';
				}
				if($('userflag')) {
					newhtml += '<a href="#"><img src="design/flags/flag' + $('userflag').value + '.jpg" alt="Your Flag" /></a>';
				}
				chooser.set('html', newhtml);

				if(Browser.Engine.trident) {
					chooser.inject(this, 'after');
					chooser.setStyles({
						position: 'absolute',
						top: 0,
						left: 0
					});
				}
				else {
					chooser.inject($(document.body), 'bottom');
					chooser.setStyles({
						position: 'absolute',
						top: this.getTop(),
						left: this.getLeft()
					});
				}

				chooser.getElements('a').each(function(a, i) {
					a.number = i+1;
				});
			}
			$('flag_chooser').setStyle('display', 'block');
			dropShadow($('flag_chooser'));
			chooser.getElements('a').removeEvents();
			chooser.getElements('a').addEvent('click', function(e) {
				var event = new Event(e).stop();
				if(this.number == 25) {
					$('chosen_flag').setStyle('background', "url('design/flags/flag" + $('userflag').value + ".jpg') no-repeat");
				}
				else {
					$('chosen_flag').setStyle('background', "url('design/flag" + this.number + ".gif') no-repeat");
				}
				$('flag').value = this.number;
				$('flag_chooser').setStyle('display', 'none');
				hideShadow($('flag_chooser'));
			});
		});
	}
});

function dropShadow(obj, shadowclass) {
	if(obj) {
		var shadow = obj.shadow;
		if(!obj.shadow) {
			shadow = new Element('div');
			obj.shadow = shadow;
			shadow.inject(obj, 'before');
			shadow.addClass('shadow');
			if(shadowclass) {
				shadow.addClass(shadowclass);
			}
		}
	
		shadow.setStyles({
			top: obj.getStyle('top').toInt() + 10,
			left: obj.getStyle('left').toInt() + 10,
			width: obj.getWidth(),
			height: obj.getHeight(),
			background: '#000',
			opacity: 0.5,
			display: 'block'
		});

		// if there are images loading inside parent, resize shadow onload
		if(!obj.totalloadedimages) {
			obj.totalimages = $(obj).getElements('img').length;
			obj.totalloadedimages = 0;
		}
		$(obj).getElements('img').each(function(img, i) {
			if(!img.onload) {
				img.prnt = obj;
				img.onload = function() {
					img.prnt.totalloadedimages++;
					if(img.prnt.getHeight() != img.prnt.shadow.getHeight()
						|| img.prnt.getWidth() != img.prnt.shadow.getWidth()) {
						dropShadow(img.prnt);
					}
				};
				img.src = img.src;
			}
		});
	}
}

function hideShadow(obj) {
	var shadow = obj.shadow;
	if(shadow) {
		shadow.setStyle('display', 'none');
	}
}

function showAjaxLoading() {
	var ajaxloading = $('ajaxloading');
	if(!ajaxloading) {
		ajaxloading = new Element('div');
		ajaxloading.id = 'ajaxloading';
		ajaxloading.title = 'Collecting data...';
		ajaxloading.inject($(document.body), 'bottom');
		ajaxloading.set('html', '<div></div>');
	}
	ajaxloading.setStyles({
		display: 'block'
	});
	dropShadow(ajaxloading);
}

function hideAjaxLoading() {
	var ajaxloading = $('ajaxloading');
	if(ajaxloading) {
		ajaxloading.setStyles({
			display: 'none'
		});
		hideShadow(ajaxloading);
	}
}

/* Board of Absence */

var absence_total_images = 0;
var absence_loaded_images = 0;

function absence_loaded() {
	absence_total_images = $('absence_board').getElements('img').length;
	absence_loaded_images++;
	if(absence_loaded_images >= absence_total_images) {
		$('absence_board').style.visibility = 'visible';
		$('loading').style.display = 'none';
		$('loadingcount').style.display = 'none';
	}
	else {
		$('loadingbar').style.width = Math.round((absence_loaded_images/absence_total_images)*100) + '%';
		$('loadingcount').innerHTML = '<span class="green_font">' + absence_loaded_images + '</span> / <span class="gray_font">' + absence_total_images + '</span>';
	}
}

function absence_add_image(x, y) {
	document.absence_form.x.value = x;
	document.absence_form.y.value = y;
	document.absence_form.submit();
}

function absence_view(x, y) {
	var cur_x = document.view_form.start_x.value-0;
	var cur_y = document.view_form.start_y.value-0;
	if((x + cur_x) >= 0) {
		document.view_form.start_x.value = (x + cur_x);
	}
	else {
		document.view_form.start_x.value = 0;
	}

	if((y + cur_y) >= 0) {
		document.view_form.start_y.value = (y + cur_y);
	}
	else {
		document.view_form.start_y.value = 0;
	}

	document.view_form.submit();
}

function absence_choose_image(x) {
	document.absence_form.chosen_image.value = x;
	document.absence_form.submit();
}

/* TRAPS */

function initTraps() {
	if($('trap_crafting')) {
		HighlightCosts();
		HighlightSelection(1);
		HighlightSelection(2);
		CalcDifficulty();
		
		$$('#trap_crafting_selector input').each(function(el, i) {
			if(el.type.toLowerCase() == 'radio' && el.name == 'craft_selection' && el.checked) {
				el.getParent().getParent().onclick();
			}
		});
	}
}
var alphabet = new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
var directions = new Array('N', 'E', 'S', 'W');
var opp_directions = new Array('S', 'W', 'N', 'E');
var entrance_direction = '';
var exit_direction = '';

function CheckTarget(id)
{
	obj = document.getElementById(id)
	if(obj)
	{
		obj.checked = 'true'
	}
	CalcDifficulty()
}

function CalcDifficulty()
{
	var total_resources = 0
	total_resources -= 0
	var trap_level = 0
	var selected_trap_id = 0
	
	var todo = 0
	var kills = 0
	var durability = 0

	for (var i = 0; i<document.forms['craft_form'].elements.length; i++)
	{
		if ((document.forms['craft_form'].elements[i].name.indexOf('kills') > -1))
		{
			if(document.forms['craft_form'].elements[i].checked == true)
			{
				kills = document.forms['craft_form'].elements[i].value
			}
		}

		if ((document.forms['craft_form'].elements[i].name.indexOf('durability') > -1))
		{
			if(document.forms['craft_form'].elements[i].checked == true)
			{
				durability = document.forms['craft_form'].elements[i].value
			}
		}

		if ((document.forms['craft_form'].elements[i].name.indexOf('todo') > -1))
		{
			if(document.forms['craft_form'].elements[i].checked == true)
			{
				todo = document.forms['craft_form'].elements[i].value
			}
		}
	}

	for (var i = 0; i<document.forms['craft_form'].elements.length; i++)
	{
		if ((document.forms['craft_form'].elements[i].name.indexOf('craft_entry') > -1))
		{
			if(document.forms['craft_form'].elements[i].checked == true)
			{
				document.getElementById('diff_entrance').innerHTML = document.forms['craft_form'].elements[i].value
				entrance_direction = document.forms['craft_form'].elements[i].value
			}
		}

		if ((document.forms['craft_form'].elements[i].name.indexOf('craft_exit') > -1))
		{
			if(document.forms['craft_form'].elements[i].checked == true)
			{
				document.getElementById('diff_exit').innerHTML = document.forms['craft_form'].elements[i].value
				exit_direction = document.forms['craft_form'].elements[i].value
			}
		}
	}

	for (var i = 0; i<document.forms['craft_form'].elements.length; i++)
	{
		if ((document.forms['craft_form'].elements[i].name.indexOf('craft_selection') > -1))
		{
			if(document.forms['craft_form'].elements[i].checked == true)
			{
				document.getElementById('diff_trap').innerHTML = document.getElementById('craft_trap_name_'+document.forms['craft_form'].elements[i].value).innerHTML
				selected_trap_id = document.forms['craft_form'].elements[i].value

				var array = new Array()
				array = document.getElementById('craft_resource_costs_'+document.forms['craft_form'].elements[i].value).value.split(' ')
				var letter = new Array()
				
				for (var s=0;s<array.length-1;s++)
				{
					letter = array[s].split('-')
					total_resources = (total_resources + Math.abs(letter[1]))
				}

				document.getElementById('diff_res').innerHTML = total_resources

				trap_level = document.getElementById('craft_level_'+document.forms['craft_form'].elements[i].value).value
			}
		}
	}

	if(total_resources > 0 && entrance_direction != '' && exit_direction != '')
	{
		overall_difficulty = 15 + Math.floor(trap_level/2);
		trapcosts = document.getElementById('tc'+selected_trap_id).innerHTML
		trapcosts = trapcosts.replace(",", "")
		trapcosts = trapcosts.replace(".", "")
		trapcosts = Math.abs(trapcosts)
		trapcostsPercentage = Math.round( (trapcosts*7) / 100 )

		trapfixcosts = document.getElementById('tfc'+selected_trap_id).innerHTML
		trapfixcosts = trapfixcosts.replace(",", "")
		trapfixcosts = trapfixcosts.replace(".", "")
		trapfixcosts = Math.abs(trapfixcosts)
		trapfixcostsPercentage = Math.round( (trapfixcosts*7) / 100 )

		trapkills = document.getElementById('tk'+selected_trap_id).innerHTML
		trapkills = trapkills.replace(",", "")
		trapkills = trapkills.replace(".", "")
		trapkills = Math.abs(trapkills)
		trapkills_min = trapkills + Math.round( (trapkills*5)/100)
		trapkills_norm = trapkills + Math.round( (trapkills*10)/100)
		trapkills_max = trapkills + Math.round( (trapkills*15)/100)

		if(kills == 1)
		{
			overall_difficulty -= 7;
			document.getElementById('kills_forecast').innerHTML = '(<font class=\"green_font\">'+trapkills+' - '+trapkills_min+'</font>)'
			trapcosts -= trapcostsPercentage
			trapfixcosts -= trapfixcostsPercentage
		}

		if(kills == 2)
		{
			document.getElementById('kills_forecast').innerHTML = '(<font class=\"green_font\">'+trapkills_min+' - '+trapkills_norm+'</font>)'
		}

		if(kills == 3)
		{
			overall_difficulty += 7;
			document.getElementById('kills_forecast').innerHTML = '(<font class=\"green_font\">'+trapkills_norm+' - '+trapkills_max+'</font>)'
			trapcosts += trapcostsPercentage
			trapfixcosts += trapfixcostsPercentage
		}

		if(durability == 1)
		{
			overall_difficulty -= 7;
			document.getElementById('durability_forecast').innerHTML = '(<font class=\"green_font\">5 - 10</font>)'
			trapcosts -= trapcostsPercentage
			trapfixcosts -= trapfixcostsPercentage
		}
		
		if(durability == 2)
		{
			document.getElementById('durability_forecast').innerHTML = '(<font class=\"green_font\">10 - 15</font>)'
		}

		if(durability == 3)
		{
			overall_difficulty += 7;
			document.getElementById('durability_forecast').innerHTML = '(<font class=\"green_font\">15 - 20</font>)'
			trapcosts += trapcostsPercentage
			trapfixcosts += trapfixcostsPercentage
		}

		if(entrance_direction != exit_direction)
		{
			document.getElementById('dir_picture_result').src='design/trapdirbigger_'+entrance_direction.toLowerCase()+exit_direction.toLowerCase()+'.gif'
		}
		else
		{
			document.getElementById('dir_picture_result').src='design/blank.gif'
		}

		for(var i=0;i<directions.length;i++)
		{
			if(entrance_direction == directions[i])
			{
				entrance_direction = i
			}

			if(exit_direction == directions[i])
			{
				exit_direction = i
			}
		}

		if(entrance_direction-1 == exit_direction || entrance_direction+1 == exit_direction || entrance_direction-3 == exit_direction || entrance_direction+3 == exit_direction)
		{
			overall_difficulty += 5
		}
		else if(entrance_direction-2 == exit_direction || entrance_direction+2 == exit_direction)
		{
			overall_difficulty += 15
		}

		if(todo == 2)
		{
			overall_difficulty -= 10;
		}

		if(overall_difficulty < 0)
		{
			overall_difficulty = 0
		}

		if(overall_difficulty > 95)
		{
			overall_difficulty = 95
		}

		if(entrance_direction == exit_direction)
		{
			overall_difficulty = '---'
		}
		else
		{
			overall_difficulty = overall_difficulty + '\%'
		}

		document.getElementById('diff_result').innerHTML = '<font class=\"green_font\">'+overall_difficulty+'</font>'
		document.getElementById('price_forecast').innerHTML = '<font class=\"green_font\">'+trapcosts+'</font>'
		document.getElementById('fixcosts_forecast').innerHTML = '<font class=\"green_font\">'+trapfixcosts+'</font>'
	}
}

function HighlightSelection(type)
{
	//type 1 = entrance
	//type 2 = exit

	if(type == 1)
	{
		type = 'entrance'
	}
	else
	{
		type = 'exit'
	}

	for(i=0;i<directions.length;i++)
	{
		if(document.getElementById('radio_'+type+'_'+directions[i]).checked == true)
		{
			document.getElementById(type+'_'+directions[i]).style.backgroundColor = '#999999'
			if(type == 'entrance')
			{
				document.getElementById('dir_picture_'+type).src='design/trapdirbigger_'+directions[i].toLowerCase()+opp_directions[i].toLowerCase()+'.gif'
			}
			else
			{
				document.getElementById('dir_picture_'+type).src='design/trapdirbigger_'+opp_directions[i].toLowerCase()+directions[i].toLowerCase()+'.gif'
			}
		}
		else
		{
			document.getElementById(type+'_'+directions[i]).style.backgroundColor = '#333333'
		}
	}

	CalcDifficulty()
}

function GetResourceString(resource, amount)
{
	resourcestring = ''
	for(var a=0;a<amount;a++)
	{
		resourcestring = resourcestring +''+ resource
	}

	return(resourcestring)
}

var oldcosts = ''

function HighlightCosts(costs)
{
	if(!costs)
	{
		costs = oldcosts;
	}
	else
	{
		oldcosts = costs
	}

	if(costs)
	{
		possible = 1
		result_string = ''
		lack_string = ''
		order_string = ''
	
		craft_amount = Math.abs(document.craft_form.craft_amount.value-1+1)
	
		if(!craft_amount)
		{
			craft_amount = 1
		}
	
		total_needed_orders = 0
	
		document.getElementById('craft_outcome').innerHTML = ''
	
		for (i=0;i<alphabet.length;i++)
		{
			document.getElementById('resource_'+alphabet[i]).style.backgroundColor = '#333333'
		}
	
		var array = costs.split(' ')
	
		for (i=0;i<array.length-1;i++)
		{
			letter = array[i].split('-')
	
			letter[1] = letter[1] * craft_amount
			max_possible_order = possibleOrder - total_needed_orders
	
			if(max_possible_order > resourceStorage[letter[0]])
			{
				max_possible_order = resourceStorage[letter[0]]
			}
	
			if(max_possible_order < 1)
			{
				max_possible_order = 0
			}
	
			if((document.getElementById('resource_'+letter[0]).innerHTML - 1 + 1) < letter[1] && (document.getElementById('resource_'+letter[0]).innerHTML - 1 + 1) + max_possible_order < letter[1]) //impossible
			{
				document.getElementById('resource_'+letter[0]).style.backgroundColor = '#000000'
				difference = Math.abs(document.getElementById('resource_'+letter[0]).innerHTML - letter[1] + max_possible_order)
				lack_string = lack_string + '<font class=\"green_font\">' + difference + '</font><b>' + letter[0].toUpperCase() + '</b> '
				//order_string = order_string +''+ GetResourceString(letter[0], difference)
				possible = 0
	
			}
			else if((document.getElementById('resource_'+letter[0]).innerHTML - 1 + 1) < letter[1] && (document.getElementById('resource_'+letter[0]).innerHTML - 1 + 1) + max_possible_order >= letter[1]) //order resources is needed
			{
				document.getElementById('resource_'+letter[0]).style.backgroundColor = '#008000'
				difference = Math.abs(document.getElementById('resource_'+letter[0]).innerHTML - letter[1])
				total_needed_orders += difference
				result_string = result_string + '<font class=\"green_font\">' + difference + '</font><b>' + letter[0].toUpperCase() + '</b> '
			}
			else
			{
				document.getElementById('resource_'+letter[0]).style.backgroundColor = '#008000'
			}
		}
	
		if(possible == 1)
		{
			if(result_string)
			{
				result_string = '<b>T</b>o be ordered: ' + result_string
			}
	
			result_string = '<font class=\"green_font\"><b>This trap is possible to craft!</b></font> ' + result_string
		}
		else
		{
			result_string = '<b>Y</b>ou lack: ' + lack_string
		}
	
		document.getElementById('craft_outcome').innerHTML = result_string
	}
}

function CraftSubmitCheck()
{
	if(entrance_direction == exit_direction)
	{
		alert('Entrance and exit directions cannot be the same for some reasons!')
	}
	else
	{
		document.craft_form.submit()
	}
}

function placeCoords(x, y)
{
	document.getElementById('placecoords').innerHTML = '<b>T</b>he trap will be placed at <font class="green_font">' + x + '</font>/<font class="green_font">' + y + '</font>.'
	document.craft_form.placecoord_x.value = x
	document.craft_form.placecoord_y.value = y
	document.craft_form.placecoord.value = 1
}

function randomDirections() {
	var randomentrance = directions[Math.floor(Math.random()*directions.length)];
	var randomexit = randomentrance;
	while(randomexit == randomentrance) {
		randomexit = directions[Math.floor(Math.random()*directions.length)];
	}

	document.getElementById('radio_entrance_' + randomentrance).checked='true';
	document.getElementById('radio_exit_' + randomexit).checked='true';
	HighlightSelection(1);
	HighlightSelection(2);
}

/* Personal Links */

function initPersonalLinks() {
	var favpaths = $$('.fav_link_paths span');
	if(favpaths.length > 0) {
		var choosers = $$('td .fav_icon');
		choosers.each(function(el, i) {
			var input = el.getParent().getElement('input');
			if(input.value == "") {
				input.value = favpaths[0].innerHTML;
			}
			el.myinput = input;
			el.setStyles({
				width: 25,
				height: 25,
				background: "url('" + input.value + "') no-repeat top left",
				cursor: 'pointer'
			});
			el.removeEvents();
			el.addEvent('click', function() {
				var beggars = $('beggars');
				if(beggars) {
					hideShadow(beggars);
					beggars.dispose();
				}
				beggars = new Element('div');
				beggars.id = 'beggars';
				beggars.inject($(document.body), 'bottom');
				beggars.setStyles({
					position: 'absolute',
					top: this.getTop() + 'px',
					left: this.getLeft() + 'px'
				});
				if(Browser.Engine.trident) {
					beggars.setStyles({
						top: (this.getTop() + 297)
					});
				}
				beggars.clicker = this;
				beggars.setStyles({
					width: 218
				});
				beggars.addClass('fav_chooser');
				var newhtml = "";
				favpaths.each(function(fav, f) {
					newhtml += '<a href="#"><img src="' + fav.innerHTML + '" alt="' + fav.innerHTML + '" /></a>';
				});
				beggars.set('html', newhtml);

				dropShadow(beggars);
				beggars.getElements('a').removeEvents();
				beggars.getElements('a').addEvent('click', function(e) {
					var event = new Event(e).stop();
					var fav = this.getElement('img').alt;
					this.getParent().clicker.setStyle('background', "url('" + fav + "') no-repeat");
					this.getParent().clicker.myinput.value = fav;
					hideShadow($('beggars'));
					$('beggars').dispose();
				});
			});
		});
	}
}

/* PHQ Browser */

window.addEvent('domready', function() {
	if($('mainiframe')) {
		window.addEvent('resize', function() {
			$('mainiframe').style.height = ($(document.body).getHeight() - 40) + 'px';
		});
		$('mainiframe').style.height = ($(document.body).getHeight() - 40) + 'px';
	}
});

/* Popup */

function initPopups() {
	$$('.summonpopup').each(function(el, i) {
		if(!el.popuplink) {
			if(el.href) {
				el.popuplink = el.href;
				el.href = '#';
			}
			if(el.src) {
				el.popuplink = el.src;
				el.src = '#';
			}
		}
		el.removeEvents();
		el.addEvent('click', function(e) {
			var event = new Event(e).stop();
			var url = this.popuplink;
			if(url != "" && url != "#")
				showPopup(url, event.page.y, event.page.x);
		});
	});

	$$('.summonmessagepreview').each(function(el, i) {
		el.removeEvents();
		el.addEvent('click', function(e) {
			var event = new Event(e).stop();
			var url = this.src;
			var params = url.split('?');

			var textarea = this.getPrevious('textarea');
			var newform = new Element('form');
			newform.inject($(document.body), 'bottom');
			newform.setStyle('display', 'none');
			newform.action = params[0];

			params = params[1].split('&');
			for(i=0; i<params.length; i++) {
				var newparams = params[i].split('=');
				var input = new Element('input');
				input.type = 'hidden';
				input.name = newparams[0];
				input.value = newparams[1];
				input.inject(newform, 'bottom');
			}
			var newtextarea = textarea.clone().inject(newform, 'bottom');
			newtextarea.name = 'text_value';
			newtextarea.value = textarea.value;

			if(newtextarea.value != "") {
				showAjaxLoading();
				var request = new Request.HTML({ 
					url: newform.action,
					onComplete: function(resTree, resEls, resHTML, resJS) {
						hideAjaxLoading();
						if($('color_border') && !$('color_background2')) {
							showPopup('', event.page.y, event.page.x, 210, resHTML);
							$('sirpopup').getElement('table table').setStyles({
								backgroundColor: $('color_border').value
							});
							$('sirpopup').getElements('table table td').setStyles({
								backgroundColor: $('color_background').value,
								color: $('color_font').value,
								textAlign: 'center'
							});
						}
						else if($('color_background2')) {
							showPopup('', event.page.y, event.page.x, 600, resHTML);
							var previewtext = $('sirpopup').getElement('.left_td2').innerHTML;
							$('sirpopup').getElement('.left_td2').set('html', '');
							var table2 = new Element('table').inject($('sirpopup').getElement('.left_td2'), 'top');
							table2.addClass('general_table');
							var tr2 = new Element('tr').inject(table2, 'top');
							var td2 = new Element('td').inject(tr2, 'top');
							td2.set('html', previewtext);
							table2.setStyles({
								border: '2px solid ' + $('color_border').value,
								backgroundColor: $('color_background2').value
							});
							$('sirpopup').getElement('table table').setStyles({
								backgroundColor: $('color_border').value
							});
							$('sirpopup').getElements('table table td').setStyles({
								backgroundColor: $('color_background').value,
								color: $('color_font').value,
								textAlign: 'center'
							});
							td2.setStyles({
								backgroundColor: $('color_background2').value,
								textAlign: 'left'
							});
						}
						else {
							showPopup('', event.page.y, event.page.x, 600, resHTML);
						}
					}
				}).post(newform);
			}
			else {
				showAlerter('There\'s nothing to preview, I\'m afraid.');
			}
			newform.dispose();
		});
	});
}

var lastMousePosition = new Object();
var mousedown = 0;
var mousedownmoved = 0;
function showPopup(url, popTop, popLeft, popWidth, HTML) {
	if(popWidth == undefined) {
		popWidth = 450;
	}
	var popup = $('sirpopup');
	var closer = $('sirpopupcloser');
	if(!popup) {
		popup = new Element('div');
		popup.id = 'sirpopup';
		popup.inject($(document.body), 'bottom');
		closer = new Element('div');
		closer.inject(popup, 'after');
		closer.id = 'sirpopupcloser';
		$(document.body).addEvent('mouseup', function(e) {
			mousedown = 0;
			new Event(e).stop();
			lastMousePosition['x'] = undefined;
			lastMousePosition['y'] = undefined;
		});
		$(document.body).addEvent('mousemove', function(e) {
			var event = new Event(e);
			if(mousedown == 1) {
				if(lastMousePosition['x'] != undefined) {
					mousedownmoved += Math.abs(event.page.x - lastMousePosition['x']) + Math.abs(event.page.y - lastMousePosition['y']);
					$('sirpopup').setStyles({
						left: $('sirpopup').getLeft() + (event.page.x - lastMousePosition['x']),
						top: $('sirpopup').getTop() + (event.page.y - lastMousePosition['y'])
					});
					$('sirpopup').shadow.setStyles({
						left: $('sirpopup').shadow.getLeft() + (event.page.x - lastMousePosition['x']),
						top: $('sirpopup').shadow.getTop() + (event.page.y - lastMousePosition['y'])
					});
					$('sirpopupcloser').setStyles({
						left: $('sirpopupcloser').getLeft() + (event.page.x - lastMousePosition['x']),
						top: $('sirpopupcloser').getTop() + (event.page.y - lastMousePosition['y'])
					});
					$('sirpopupcloser').shadow.setStyles({
						left: $('sirpopupcloser').shadow.getLeft() + (event.page.x - lastMousePosition['x']),
						top: $('sirpopupcloser').shadow.getTop() + (event.page.y - lastMousePosition['y'])
					});
				}
				lastMousePosition['x'] = event.page.x;
				lastMousePosition['y'] = event.page.y;
			}
		});
	}

	if(popLeft + popWidth > document.body.offsetWidth) {
		popLeft = document.body.offsetWidth - popWidth - 30;
	}
	popup.setStyles({
		top: popTop,
		left: popLeft,
		width: popWidth,
		display: 'block'
	});
	popup.set('html', '<table class="general_table"><tr><td class="center_td2">Waiting for something to happen...</td></tr></table>');
	dropShadow(popup);
	popup.ajaxready = function(obj) {
		obj.innerHTML = '<table class="general_table"><tr><td class="left_td">' + obj.innerHTML + '</td></tr></table>';
		dropShadow(obj);

		$$('#sirpopup img, .sirpopupmover').removeEvents('mousedown');
		$$('#sirpopup img, .sirpopupmover').addEvent('mousedown', function(e) {
			mousedown = 1;
			mousedownmoved = 0;
			new Event(e).stop();
		});

		var focusinput;
		obj.getElements('input').each(function(input, i) {
			if(input.type != 'hidden' && input.type != 'button' && !focusinput) {
				focusinput = input;
			}
		});
		if(focusinput) {
			focusinput.focus();
		}
	}
	closer.setStyles({
		top: popTop-9,
		left: popLeft + popWidth - 9,
		display: 'block'
	});
	closer.set('html', 'X');
	closer.addEvent('click', function(e) {
		hidePopup();
	});
	dropShadow(closer);

	window.addEvent('keydown', function(e) {
		var event = new Event(e);
		if(event.key == 'esc') {
			hidePopup();
		}
	});

	if(url != "") {
		if(url.indexOf('?') > -1) {
			url = url + '&ajax=1&random=' + Math.floor(Math.random()*5000);
		}
		else {
			url = url + '?ajax=1&random=' + Math.floor(Math.random()*5000);
		}
		showAjaxLoading();
		var request = new Request.HTML({ 
			url: url,
			onComplete: function(resTree, resEls, resHTML, resJS) {
				hideAjaxLoading();
				var popup = $('sirpopup');
				popup.set('html', resHTML);
				popup.ajaxready(popup);
				initAjaxFormsAndLinks(popup);
			}
		}).get(url);
	}
	else if(HTML != undefined) {
		popup.set('html', HTML);
		popup.ajaxready(popup);
		initAjaxFormsAndLinks(popup);
	}
}

function hidePopup() {
	$('sirpopup').setStyles({
		display: 'none'
	});
	hideShadow($('sirpopup'));
	$('sirpopupcloser').setStyles({
		display: 'none'
	});
	hideShadow($('sirpopupcloser'));
}

/* Gallery */

function initGalleries() {
	$$('a.gallery').each(function(link, i) {
		link.removeEvents();
		link.addEvent('click', function(e) {
			var event = new Event(e).stop();
			var imgurl = this.href + '?' + Math.random();
			var html = '<table class="general_table sirpopupmover"><tr><td class="center_td3">' + this.title + '</td></tr>';
			html += '<tr><td class="center_td2"><img src="' + imgurl + '" alt="" /></td></tr></table>';
			showAjaxLoading();
			var loadcontainer = new Element('div');
			loadcontainer.popuphtml = html;
			loadcontainer.id = 'loadcontainer';
			loadcontainer.inject($(document.body), 'bottom');
			var loader = new Element('img');
			loadcontainer.setStyles({
				visibility: 'hidden',
				position: 'absolute',
				top: 0,
				left: 0,
				width: 100,
				height: 100,
				overflow: 'hidden'
			});
			loader.clickedx = event.page.x;
			loader.clickedy = event.page.y;
			loader.addEvent('load', function(e) {
				hideAjaxLoading();
				var width = this.offsetWidth;
				var height = this.offsetHeight;
				var bodyheight = $(document.body).getHeight();
				var bodywidth = $(document.body).getWidth();
				if(width + 50 > bodywidth) {
					var ratio = height / width;
					width = bodywidth - 50;
					height = width * ratio;
				}

				if(height + 50 > bodyheight) {
					var ratio = width / height;
					height = bodyheight - 50;
					width = height * ratio;
				}

				var top = this.clickedy - 250;
				var left = (bodywidth/2) - (width / 2);
				showPopup('', top, left, (width+20), $('loadcontainer').popuphtml);
				$('sirpopup').getElement('img').setStyles({
					width: width,
					height: height
				});
				$('sirpopup').getElement('img').addClass('pointer');
				$('sirpopup').getElement('img').addEvent('click', function() {
					if(!mousedownmoved) {
						hidePopup();
					}
				});
				$('loadcontainer').dispose();
			});
			loader.src = imgurl;
			loader.inject(loadcontainer, 'bottom');
		});
	});
}

/* Color Chooser */

var currentColorChooserInput;
function initColorChooser() {
	if($('color_border')) {
		$$('#color_border, #color_background, #color_background2, #color_font').each(function(el, i) {
			el.addClass('pointer');
			el.removeEvents();
			el.addEvent('click', function(e) {
				currentColorChooserInput = this;
				var event = new Event(e).stop();
				var html = '<table class="sirpopupmover">';
				html += '<tr><td class="center_td"><span class="even_bigger_font"><b>COLOR</b></span><span class="bigger_font"><i>Chooser</i></span>&#153;<br/><br/>';
				html += '<table class="general_table chooser_table">';
				for(i=1; i<17; i++) {
					if((i-1) % 4 == 0) {
						html += '\n<tr>';
					}
					html += '<td class="fourth_width" id="color' + i + '">#000000</td>';
					if((i-1) % 4 == 4) {
						html += '</tr>\n';
					}
				}
				html += '</table>';
				html += '<br/><input type="button" onclick="chooserDarken()" value="Darken" /> <input type="button" onclick="chooserBrighten()" value="Brighten" /> <input type="button" onclick="chooserRandom()" value="Randomize" /> <input type="button" onclick="chooserCurrent()" value="Current" /> <input type="button" onclick="hidePopup()" value="Done" />';
				html += '<br/><br/><center><table class="general_table chooser_table old_color"><tr><td class="center_td2 no_choose">Old color:</td><td class="center_td" id="color17">#000000</td></tr></table></center><br/>';
				html += '<b>C</b>lick on Randomize to make new colors. If you want to select a color, just click on the field showing the respective color. To close this window you can click on Done. Or the small X in the upper right corner.';
				html += '</td></tr></table>';

				showPopup('', event.page.y, event.page.x+20, 450, html);
				$('sirpopup').getElements('.chooser_table td').each(function(td, i) {
					if(!td.hasClass('no_choose')) {
						td.addEvent('click', function(e) {
							chooserPublic(this.innerHTML);
						});
					}
				});

				$('color17').innerHTML = currentColorChooserInput.value;
				$('color17').style.backgroundColor = currentColorChooserInput.value;
				chooserRandom();
			});
		});
		$('color_border').getParent('form').addEvent('mouseover', function() {
			chooserUpdatePreview();
		});
		chooserUpdatePreview();
	}
}

function chooserRandom()
{
	for(i=1;i<=16;i++)
	{
		total_digit = '';
		digit = 0;
		random = 0;

		for(d=0;d<6;d++) {
			random = Math.ceil(Math.random()*15);
			digit = random;
			if(random == 10) { digit = 'A'; }
			if(random == 11) { digit = 'B'; }
			if(random == 12) { digit = 'C'; }
			if(random == 13) { digit = 'D'; }
			if(random == 14) { digit = 'E'; }
			if(random == 15) { digit = 'F'; }

			total_digit = total_digit + '' + digit;
		}

		$('color'+i).innerHTML = '#' + total_digit;
		$('color'+i).style.backgroundColor='#' + total_digit;
	}
}

function chooserCurrent()
{
	for(i=1;i<=16;i++)
	{
		$('color'+i).innerHTML = currentColorChooserInput.value;
		$('color'+i).style.backgroundColor = currentColorChooserInput.value;
	}
}

function chooserBrighten()
{
	for(i=1;i<=16;i++)
	{
		total_digit = $('color'+i).innerHTML;
		array = total_digit.split('');

		for(d=1;d<array.length;d++)
		{
			if(array[d] == 'A') { array[d] = 'B' } else
			if(array[d] == 'B') { array[d] = 'C' } else
			if(array[d] == 'C') { array[d] = 'D' } else
			if(array[d] == 'D') { array[d] = 'E' } else
			if(array[d] == 'E') { array[d] = 'F' } else
			if(array[d] == 'F') { array[d] = 'F' } else
			if((array[d] >= 0) && (array[d] < 9)) { array[d]++ } else
			if(array[d] >= 9) { array[d] = 'A' }
		}

		$('color'+i).innerHTML = array.join('');
		$('color'+i).style.backgroundColor = array.join('');
	}
}

function chooserDarken()
{
	for(i=1;i<=16;i++)
	{
		total_digit = $('color'+i).innerHTML;
		array = total_digit.split('');

		for(d=1;d<array.length;d++)
		{
			if(array[d] == 'A') { array[d] = '9' } else
			if(array[d] == 'B') { array[d] = 'A' } else
			if(array[d] == 'C') { array[d] = 'B' } else
			if(array[d] == 'D') { array[d] = 'C' } else
			if(array[d] == 'E') { array[d] = 'D' } else
			if(array[d] == 'F') { array[d] = 'E' } else
			if((array[d] > 0) && (array[d] <= 9)) { array[d]-- }
		}

		$('color'+i).innerHTML = array.join('');
		$('color'+i).style.backgroundColor = array.join('');
	}
}

function chooserPublic(x)
{
	currentColorChooserInput.value = x;
	chooserUpdatePreview();
}

function chooserUpdatePreview()
{
	$('preview_table').style.backgroundColor = $('color_background').value;
	$('preview_table').style.border = '2px solid ' + $('color_border').value;
	$('preview_td').style.color = $('color_font').value;
	$('color_border').style.backgroundColor = $('color_border').value;
	$('color_font').style.backgroundColor = $('color_font').value;
	$('color_background').style.backgroundColor = $('color_background').value;
	if($('preview_table2')) {
		$('color_background2').style.backgroundColor = $('color_background2').value;
		$('preview_td2').style.backgroundColor = $('color_background2').value;
		$('preview_table2').style.backgroundColor = $('color_background2').value;
		$('preview_table2').style.border = '2px solid ' + $('color_border').value;
		$('preview_td2').style.color = $('color_font').value;
	}
}

/* XMAS Event */

window.addEvent('domready', function() {
	$$('.bagdiv a').each(function(bag, i) {
		bag.addEvent('click', function(e) {
			var event = new Event(e).stop();
			showPopup(this.href, event.page.y, event.page.x, 350);
			document.location.href='#sirpopup';
			this.getParent('div').setStyle('display', 'none');
		});
	});
});
