﻿// JavaScript Document
function GetMouseX(Event) {
	if (document.all) return event.clientX + document.body.scrollLeft + (navigator.appName.indexOf('Internet Explorer')==-1 ? 0 : -2);
	else return Event.pageX;
}
function GetMouseY(Event) {
	if (document.all) return event.clientY + document.body.scrollTop + (navigator.appName.indexOf('Internet Explorer')==-1 ? 0 : -2);
	else return Event.pageY;
}
function GetX(myObject) {
	if (document.layers) {
		if (myObject.x) X = myObject.x;
	} else {
		X = 0;
		while(myObject) {
			X += parseInt(myObject.offsetLeft);
			myObject = myObject.offsetParent;
		}
	}
	return X;
}
function GetY(myObject) {
	if (document.layers) {
		if (myObject.y) Y = myObject.y;
	} else {
		Y = 0;
		while(myObject) {
			Y += parseInt(myObject.offsetTop);
			myObject = myObject.offsetParent;
		}
	}
	return Y;
}
function pulldownMenu() {
	if (!document.getElementById('PulldownMenu')) {
		document.writeln('<span id="PulldownMenu" style="position:absolute;overflow:auto;z-index:2;background-color:#FFFFFF;border:solid 1px #a5acb2;display:none;overflow-x:hidden"></span>');
	}
	this.item = new Array;
	this.main;
	var displayMenuItem;
	var originalValue = false;
	selectItem = false;
	var onMenuSelect;

	this.addEventListener = function(Event, Listener) {
		switch (Event) {
			case 'onMenuSelect':
				onMenuSelect = Listener;
				break;
		}
	}

	this.changeSelectItem = function(Event, myObject) {
		var Key = window.event ? Event.keyCode : Event.which;
		if (document.getElementById('PulldownMenu').style.display == 'none') return;
		if (selectItem !== false) {
			document.getElementById('i' + selectItem).style.backgroundColor='';
			document.getElementById('i' + selectItem).style.color='';
		}
		switch (Key) {
			case 38:
				if (selectItem === false) {
					selectItem = displayMenuItem.length-1;
					if (originalValue === false) originalValue = myObject.value;
					myObject.value = typeof(displayMenuItem[selectItem]) != 'undefined' && displayMenuItem[selectItem].constructor == Array ? displayMenuItem[selectItem][this.main] : displayMenuItem[selectItem];
				} else if (selectItem > 0) {
					selectItem--;
					if (originalValue === false) originalValue = myObject.value;
					myObject.value = typeof(displayMenuItem[selectItem]) != 'undefined' && displayMenuItem[selectItem].constructor == Array ? displayMenuItem[selectItem][this.main] : displayMenuItem[selectItem];
				} else {
					selectItem = false;
					myObject.value = originalValue;
				}
				break;
			case 40:
				if (selectItem === false) {
					selectItem = 0;
					if (originalValue === false) originalValue = myObject.value;
					myObject.value = typeof(displayMenuItem[selectItem]) != 'undefined' && displayMenuItem[selectItem].constructor == Array ? displayMenuItem[selectItem][this.main] : displayMenuItem[selectItem];
				} else if (selectItem < displayMenuItem.length-1) {
					selectItem++;
					if (originalValue === false) originalValue = myObject.value;
					myObject.value = typeof(displayMenuItem[selectItem]) != 'undefined' && displayMenuItem[selectItem].constructor == Array ? displayMenuItem[selectItem][this.main] : displayMenuItem[selectItem];
				} else {
					selectItem = false;
					myObject.value = originalValue;
				}
				break;
			case 9:
				UnloadMenu();
				break;
		}
		if (selectItem !== false) {
			var menuObject = document.getElementById('PulldownMenu');
			var Y = selectItem * 18;
			if (menuObject.scrollTop > Y) {
				menuObject.scrollTop = Y;
			} else if (menuObject.scrollTop + menuObject.offsetHeight - 5 < Y) {
				menuObject.scrollTop = Y + 18 - menuObject.offsetHeight + 2;
			}
			document.getElementById('i' + selectItem).style.backgroundColor='#3399FF';
			document.getElementById('i' + selectItem).style.color='#FFFFFF';
		}
	}

	this.renewMenu = function(Event, myObject, Search) {
		var Key = window.event ? Event.keyCode : Event.which;
		if (Key == 8 || Key == 32 || Key == 46 || (Key >= 65 && Key <= 111) || (Key >= 186 && Key <= 222)) {
			originalValue = false;
			this.showMenu(myObject, Search);
		}
	}
	this.showMenu = function(myObject, Search) {
		selectItem = false;
		var MenuHTML = '<table width="100%" cellpadding="1" cellspacing="0" onmouseover="if (selectItem) {document.getElementById(\'i\' + selectItem).style.backgroundColor=\'\';document.getElementById(\'i\' + selectItem).style.color=\'\'}" onmouseout="if (selectItem) {document.getElementById(\'i\' + selectItem).style.backgroundColor=\'#3399FF\';document.getElementById(\'i\' + selectItem).style.color=\'#FFFFFF\'}">';
		displayMenuItem = new Array;
		var j = -1;
		var temp;
		if (Search.charCodeAt(0) > 255 && / /.test(Search)) {
			Search = Search.split(" ");
			var test;
			for (i=0; i<this.item.length; i++) {
				test = true;
				for (j=0; j<Search.length; j++) {
					if (!RegExp(Search[j], 'i').test(this.item[i])) {
						test = false;
					} 
				}
				if (test) {
					j++;
					displayMenuItem.push(this.item[i]);
					if (this.item[i].constructor == Array) {
						MenuHTML += '<tr height="18"><td id="i' + j + '" style="cursor:pointer;white-space:nowrap" onclick="' + onMenuSelect + '(\'' + myObject.id + '\', ' + i + ');UnloadMenu();" onmouseover="this.style.backgroundColor=\'#3399FF\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.backgroundColor=\'\';this.style.color=\'\'">' + this.item[i].join('&nbsp;&nbsp;') + '</tr></td>';
					} else {
						MenuHTML += '<tr height="18"><td id="i' + j + '" style="cursor:pointer;white-space:nowrap" onclick="' + onMenuSelect + '(\'' + myObject.id + '\', ' + i + ');UnloadMenu();" onmouseover="this.style.backgroundColor=\'#3399FF\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.backgroundColor=\'\';this.style.color=\'\'">' + this.item[i] + '</tr></td>';
					}
				}
			}
		} else {
			for (i=0; i<this.item.length; i++) {
				temp = this.item[i].join("\n");
				if (Search == '' || (Search.charCodeAt(0) > 255 && RegExp(Search, 'i').test(temp)) || RegExp("\n" + Search, 'i').test(temp)) {
					j++;
					displayMenuItem.push(this.item[i]);
					if (this.item[i].constructor == Array) {
						MenuHTML += '<tr height="18"><td id="i' + j + '" style="cursor:pointer;white-space:nowrap" onclick="' + onMenuSelect + '(\'' + myObject.id + '\', ' + i + ');UnloadMenu();" onmouseover="this.style.backgroundColor=\'#3399FF\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.backgroundColor=\'\';this.style.color=\'\'">' + this.item[i].join('&nbsp;&nbsp;') + '</tr></td>';
					} else {
						MenuHTML += '<tr height="18"><td id="i' + j + '" style="cursor:pointer;white-space:nowrap" onclick="' + onMenuSelect + '(\'' + myObject.id + '\', ' + i + ');UnloadMenu();" onmouseover="this.style.backgroundColor=\'#3399FF\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.backgroundColor=\'\';this.style.color=\'\'">' + this.item[i] + '</tr></td>';
					}
				} 
			}
		}
		document.getElementById('PulldownMenu').innerHTML = MenuHTML + '</table>';
		var Total = Math.min(displayMenuItem.length, 20);
		if (Total > 0) {
			var Height = Total * 18 + 2;
			var X = GetX(myObject);
			var Y = GetY(myObject);
			document.getElementById('PulldownMenu').style.width = myObject.offsetWidth + 'px';
			document.getElementById('PulldownMenu').style.height = Height + 'px';
			document.getElementById('PulldownMenu').style.left = X + 'px';
			if (document.body.scrollHeight - Y - myObject.offsetHeight < Height) {
				document.getElementById('PulldownMenu').style.top = (Y - Height + 3) + 'px';
				document.body.onmousedown = function(Event) {
					if (GetMouseX(Event) < X || GetMouseX(Event) > X + myObject.offsetWidth || GetMouseY(Event) < Y - Height - document.documentElement.scrollTop || GetMouseY(Event) > Y + myObject.offsetHeight - document.documentElement.scrollTop) {
						UnloadMenu();
					}	
				}
			} else {
				document.getElementById('PulldownMenu').style.top = (Y + myObject.offsetHeight - 1) + 'px';
				document.body.onmousedown = function(Event) {
					if (GetMouseX(Event) < X || GetMouseX(Event) > X + myObject.offsetWidth || GetMouseY(Event) < Y - document.documentElement.scrollTop || GetMouseY(Event) > Y + myObject.offsetHeight + Height - document.documentElement.scrollTop) {
						UnloadMenu();
					}	
				}
			}
			document.getElementById('PulldownMenu').style.display = '';
		} else {
			UnloadMenu();
		}
	}
}
function UnloadMenu() {
	document.body.onmousedown = null;
	document.getElementById('PulldownMenu').style.display = 'none';
}

//-------------------------------------------------------------------------------
RSS = new pulldownMenu();
RSS.addEventListener('onMenuSelect', 'onRSSMenuSelect');
picasa = new Array;

RSS.main = 1;
RSS.item[0] = new Array;
RSS.item[0][0] = 'ZionDaily';
RSS.item[0][1] = 'http://picasaweb.google.com/data/feed/base/user/ZionDailyHK?alt=rss&kind=photo&hl=zh_TW';
picasa[0] = 'http://picasaweb.google.com/ZionDailyHK/';
/*
RSS.item[1] = new Array;
RSS.item[1][0] = '';
RSS.item[1][1] = '';
picasa[1] = '';
*/
function onRSSMenuSelect(InputBox, Index) {
	var gadgetID = InputBox.match(/Gadget[0-9]+_/)[0];
	document.getElementById(InputBox).value = RSS.item[Index][RSS.main];
	document.getElementById(gadgetID + 'zgTitle').value = RSS.item[Index][0];
	document.getElementById(gadgetID + 'zgLink').value = picasa[Index];
}