/********************************************************************************************************
  KK    KK   JJJJJJJJ ''  SSSSSSS       DDDDDD     EEEEEEEE    SSSSSSS   IIIIIIII    GGGGGGG   NN    NN
  KK  KK        JJ     ' SS             DD   DD    EE         SS            II      GG         NNN   NN
  KKKK          JJ        SSSSSS        DD    DD   EEEEE       SSSSSS       II      GG  GGG    NN N  NN
  KK  KK     JJ JJ             SS       DD   DD    EE               SS      II      GG    GG   NN  N NN
  KK   KK     JJJ        SSSSSSS        DDDDDD     EEEEEEEE   SSSSSSS    IIIIIIII    GGGGGG    NN   NNN

                      SSSSSSS   TTTTTTTT   UU    UU   DDDDDD     IIIIIIII     OOOO
                     SS            TT      UU    UU   DD   DD       II       OO  OO
                      SSSSSS       TT      UU    UU   DD    DD      II      OO    OO
                           SS      TT      UU    UU   DD   DD       II       OO  OO
                     SSSSSSS       TT       UUUUUU    DDDDDD     IIIIIIII     OOOO
********************************************************************************************************/

/*******************************************************************************************************
 * @type JavaScript Document
 * @author Kevin Jesse
 * @company KJ's Design Studio
 * @website kjsdesignstudio.com
 * @copyright 2008
 * @description Main javascript document for website
 * @notes
 		
 		
 		
/******************************************************************************************************/

var version = 0; //browser version number
var compatibleBrowser = true; //flag for if browser is compatible
var scrollTxt
var newNews = ''
var oldNews = '';
var newAlerts = ''
var oldAlerts = '';
var calendarData = null;
var calTimer = null;
var calId = null;

//check for unsupported browsers
if (navigator.appVersion.indexOf("MSIE") != -1) {//Detect IE < 6
	version = parseFloat(navigator.appVersion.split("MSIE")[1]);
	if (version < 7) compatibleBrowser = false;
} else if (navigator.userAgent.indexOf("Firefox") != -1) { //Detect Firefox < 2
	version = parseInt(navigator.userAgent.charAt(navigator.userAgent.indexOf("Firefox") + 8));
	if (version < 2) compatibleBrowser = false;
} else if (doc.layers) { //NN4
	compatibleBrowser = false;
}
//if not compatible then go here
if (!compatibleBrowser) window.location.href = 'browser.html';

global.loadJavaScript('javascript/library/static.js');
global.loadJavaScript('javascript/library/elements.js');
global.loadJavaScript('javascript/library/security.js');
global.loadJavaScript('javascript/library/utilities.js');
global.loadJavaScript('javascript/library/page.js');
global.loadJavaScript('javascript/library/utilities/ajaxObject.js');
global.loadJavaScript('javascript/library/productivity/calendar.js');
global.loadJavaScript('javascript/library/animations/fadingImages.js');
global.loadJavaScript('javascript/library/animations/scrollingText.js');

/*******************************************************************************************************
 * @description function to initiate website
 * @author Kevin Jesse
 * @company KJ's Design Studio
 * @website kjsdesignstudio.com
 * @copyright 2008
/******************************************************************************************************/
function init (maintenance, manage, token) {
	if (maintenance == true && token == false) return;
	
	buildNavigation('leftNav', '#cccccc');
	global.ajax = new AjaxObject;
	global.calendar = new Calendar;
	
	//preload all images on page
	global.utilities.preLoadImages('images/calendar/detailsLeft.png', 'images/calendar/detailsRight.png');
	
	var fadingImg = new FadingImage('images', 40, 80, 200, 154);
	fadingImg.setImages('images/page/fading/picture1.jpg', 'images/page/fading/picture2.jpg', 'images/page/fading/picture3.jpg', 'images/page/fading/picture4.jpg', 'images/page/fading/picture5.jpg', 'images/page/fading/picture6.jpg');
	fadingImg.setDescriptions('Image 1', 'Image 2', 'Image 3', 'Image 4', 'Image 5', 'Image 6');
	fadingImg.start();
	
	getNews();
	getAlerts();
	if (token) {
		loadPage('pages/manage.php', '_self');
	} else if (manage) {
		loadPage('manage/login.php', '_self');
	} else {
		loadPage('pages/home.php', '_self');
	}
}

/*******************************************************************************************************
 * @description Builds left navigation menu
 * @author Kevin Jesse
 * @company KJ's Design Studio
 * @website kjsdesignstudio.com
 * @copyright 2008
 * @param targetId - Id of menu container
 * @param color - color to swap on mouse over
/******************************************************************************************************/
function buildNavigation (targetId, color) {
	var menuItems = doc.getElementById(targetId).getElementsByTagName('li');
	for (var i = 0; i < menuItems.length; i++) {
		menuItems[i].bgColor = global.utilities.getStyle(menuItems[i], 'background-color');
		menuItems[i].color = global.utilities.getStyle(menuItems[i], 'color');
		menuItems[i].hColor = color;
		menuItems[i].onmouseover = function () {
			this.style.color = this.color;
			this.style.backgroundColor = this.hColor;
			this.style.cursor = 'pointer';
		}
		menuItems[i].onmouseout = function () {
			this.style.color = this.color;
			this.style.backgroundColor = this.bgColor;
		}
	}
}

/*******************************************************************************************************
 * @description Callback function from AJAX request
 * @author Kevin Jesse
 * @company KJ's Design Studio
 * @website kjsdesignstudio.com
 * @copyright 2008
 * @param http - XMLHttp object
/******************************************************************************************************/
function getCallBack (http) {
	doc.getElementById('content').innerHTML = http.responseText;
	global.utilities.processScript(http.responseText);
}

/*******************************************************************************************************
 * @description Failed callback function from AJAX request
 * @author Kevin Jesse
 * @company KJ's Design Studio
 * @website kjsdesignstudio.com
 * @copyright 2008
/******************************************************************************************************/
function getFailedCallBack (fileName) {
	doc.getElementById('content').innerHTML = '<center>The requested page could be be loaded. Please try again at a later time. Thank you.</center>';
}

function getNews(http) {
	if (http) {
		setInterval('updateNews()', (1000 * 60 * 5));
		var newsObj = doc.getElementById('news');
		if (http.responseText == '') {
			newsObj.style.display = 'none';
		} else {
			newsObj.style.display = 'block';
		}
		oldNews = newNews = http.responseText;
		var divElem = doc.createElement('div');
		divElem.id = 'news1';
		divElem.className = 'scrollEvents';
		divElem.innerHTML = newNews;
		doc.getElementById('newsContent').appendChild(divElem);
		scrollTxt = new ScrollingText('news1', 'vertical', 50, 4);
		scrollTxt.start();
	} else {
		var request = new AjaxObject;
		request.send('POST', 'feeds/news.php', '', 'getNews');
	}
}

function updateNews (http) {
	if (http) {
		var newsObj = doc.getElementById('news');
		if (http.responseText == '') {
			newsObj.style.display = 'none';
		} else {
			newsObj.style.display = 'block';
		}
		newNews = http.responseText;
		if (newNews != oldNews) {
			doc.getElementById('news1').innerHTML = newNews;
			doc.getElementById('news2').innerHTML = newNews;
			scrollTxt.update();
		}
		oldNews = newNews;
		doc.getElementById('newsTop').innerHTML = 'News &amp; Events';
	} else {
		doc.getElementById('newsTop').innerHTML = 'News &amp; Events<span style="font-size: 8pt;">(updating)</span>';
		var request = new AjaxObject;
		request.send('POST', 'feeds/news.php', '', 'updateNews');
	}
}

function getAlerts (http) {
	if (http) {
		setInterval('updateAlerts()', (1000 * 60 * 5));
		var alertObj = doc.getElementById('alert');
		if (http.responseText == '') {
			alertObj.style.display = 'none';
		} else {
			alertObj.style.display = 'block';
		}
		oldAlerts = newAlerts = http.responseText;
		doc.getElementById('alert').innerHTML = newAlerts;
	} else {
		var request = new AjaxObject;
		request.send('POST', 'feeds/alerts.php', '', 'getAlerts');
	}
}

function updateAlerts (http) {
	if (http) {
		var alertObj = doc.getElementById('alert');
		if (http.responseText == '') {
			alertObj.style.display = 'none';
		} else {
			alertObj.style.display = 'block';
		}
		newAlerts = http.responseText;
		if (newAlerts != oldAlerts) doc.getElementById('alert').innerHTML = newAlerts;
		oldAlerts = newAlerts;
	} else {
		var request = new AjaxObject;
		request.send('POST', 'feeds/alerts.php', '', 'updateAlerts');
	}
}

function loadPage (url, target) {
	if (target == '_self') {
		if (url.substring((url.length - 3)).match(/pdf/i) != null) {
			doc.getElementById('content').innerHTML = '<object width="850" height="700" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"><param value="' + url + '#navpanes=0&amp;toolbar=1&amp;zoom=88" name="src"><embed width="850" height="700" src="' + url + '?v=1268709491#navpanes=0&amp;toolbar=1&amp;zoom=88"><noembed> Your browser does not support embedded PDF files.</noembed></object>';
		} else {
			global.ajax.send('POST', url, '', 'getCallBack', 'getFailedCallBack');
		}
	}
}

function goToPrevMonth () {
	clearTimeout(calTimer);
	global.calendar.prevMonth();
	doc.getElementById('calText').innerHTML = global.calendar.getMonthString() + ' ' + global.calendar.getFullYear();
	calTimer = setTimeout('buildCalendar()', 50);
}

function goToNextMonth () {
	clearTimeout(calTimer);
	global.calendar.nextMonth();
	doc.getElementById('calText').innerHTML = global.calendar.getMonthString() + ' ' + global.calendar.getFullYear();
	calTimer = setTimeout('buildCalendar()', 50);
}

function goToToday () {
	clearTimeout(calTimer);
	global.calendar.today();
	doc.getElementById('calText').innerHTML = global.calendar.getMonthString() + ' ' + global.calendar.getFullYear();
	calTimer = setTimeout('buildCalendar()', 50);
}

function printCalendar () {
	var date = new Date();
	window.open('pages/calendar.html?v=' + date.getTime(),'print','menubar=no,width=1,height=1,toolbar=no');	
}

function buildCalendar (id) {
	if (calendarData == null) {
		calId = id;
		global.calendar.ajax = new AjaxObject;
		global.calendar.ajax.send('POST', 'pages/calendarData.php', '', 'processCalData');
	} else {
		var calendar = global.calendar.getCalendar();
		var weeks = (calendar.length / 7);
		var content = '';
		var count = 0;
		var now = new Date();
		var style = '';
		while(doc.getElementById('calContent').firstChild) {
			doc.getElementById('calContent').removeChild(doc.getElementById('calContent').firstChild);
		}
		for (var i = 1; i <= weeks; i++) {
			var contentElem = doc.createElement('div');
			contentElem.className = 'calRow';
			for (var x = 1; x <= 7; x++) {
				var dayElem = doc.createElement('div');
				if (count >= global.calendar.firstDay && count < (global.calendar.totalDays + global.calendar.firstDay)) {
					style = 'calCurMonth';
				} else {
					style = 'calNonMonth';
				}
				if (now.getMonth() == calendar[count][0] - 1 && now.getDate() == calendar[count][1] && now.getFullYear() == calendar[count][2]) {
					dayStyle = 'calCurCol';
				} else {
					dayStyle = 'calCol';
				}
				dayElem.className = dayStyle;
				dayElem.id = calendar[count][2] + '-' + calendar[count][0] + '-' + calendar[count][1];
				var textElem = doc.createElement('div');
				textElem.className = 'calDayText';
				var spanElem = doc.createElement('span');
				spanElem.className = style;
				var textNode = doc.createTextNode(calendar[count][1]);
				spanElem.appendChild(textNode);
				textElem.appendChild(spanElem);
				var dayContentElem = doc.createElement('div');
				dayContentElem.className = 'calDayContent';
				var newDate = new Date(calendar[count][2], calendar[count][0] - 1, calendar[count][1]);
				dayContentElem = getCalData(dayContentElem, newDate);
				count++;
				dayElem.appendChild(textElem);
				dayElem.appendChild(dayContentElem);
				contentElem.appendChild(dayElem);
			}
			doc.getElementById('calContent').appendChild(contentElem);
		}
	}	
}

function updateCalData (id) {
	calendarData = null;
	buildCalendar(id);
}

function getCalData (obj, date) {
	if (calendarData != null) {
		newDate = date;
		if (global.utilities.isDST(newDate)) newDate = new Date(newDate.getTime() + ONE_HOUR);
		for (var x = 0; x < calendarData.events.length; x++) {
			if (calId == calendarData.events[x].calId) {
				var start = new Date(calendarData.events[x].start * 1000);
				start = new Date(start.getFullYear(), start.getMonth(), start.getDate());
				if (global.utilities.isDST(start)) start = new Date(start.getTime() + ONE_HOUR);
				var until = '';
				if (calendarData.events[x].until != '') {
					until = new Date(calendarData.events[x].until * 1000);
					until = new Date(until.getFullYear(), until.getMonth(), until.getDate());
					if (global.utilities.isDST(until)) until = new Date(until.getTime() + ONE_HOUR);
				}
				var first = (start.getTime() <= newDate.getTime()) ? true : false;
				var second = (until == '' || until.getTime() >= newDate.getTime() || until.getTime() == '-62169966000000') ? true : false;
				//console.log(until.getTime());
				//if (newDate.getDate() == 21 && calendarData.events[x].title == 'Chapel - TB, BA, GE, 3RK, AS') alert(until.getTime() + ' ' + newDate.getTime());
				//if (newDate.getDate() == 21 && calendarData.events[x].title == 'Chapel - TB, BA, GE, 3RK, AS') alert(first + ' ' + second);
				if (first && second) {
					switch (calendarData.events[x].type) {
						case 'Does not repeat':
							if (start.getTime() == newDate.getTime()) {
								obj = addCalEvent(obj, calendarData.events[x]);
							} else if (start.getHours() == 0 && start.getMinutes() == 0 && newDate.getTime() <= (calendarData.events[x].end * 1000)) {
								obj = addCalEvent(obj, calendarData.events[x]);
							}
							break;
						case 'Daily':
							var numDays = ((newDate.getTime() - start.getTime()) / ONE_DAY);
							if ((numDays % calendarData.events[x].duration) == 0) obj = addCalEvent(obj, calendarData.events[x]);
							break;
						case 'Monthly':
							var startDate = new Date(start.getTime());
							if (newDate.getDate() == startDate.getDate()) {
								var numMonths = (newDate.getFullYear() - startDate.getFullYear()) * 12 + newDate.getMonth() - startDate.getMonth();
								if ((numMonths % calendarData.events[x].duration) == 0) obj = addCalEvent(obj, calendarData.events[x]);
							}
							break;
						case 'Yearly':
							if (newDate.getMonth() == start.getMonth() && newDate.getDate() == start.getDate()) {
								var numYears = (newDate.getFullYear() - start.getFullYear());
								if ((numYears % calendarData.events[x].duration) == 0) obj = addCalEvent(obj, calendarData.events[x]);
							}
							break;
						case 'Weekly':
							var oneWeek = (1000 * 60 * 60 * 24 * 7);
							var numWeeks = ((newDate.getTime() - start.getTime()) / oneWeek);
							if ((numWeeks % calendarData.events[x].duration) == 0) obj = addCalEvent(obj, calendarData.events[x]);
							break;
					}
				}
			}
		}
	}
	return obj;
}

function processCalData (http) {
	if (http) {
		calendarData = eval('(' + http.responseText + ')');
		buildCalendar();
	}
}

function addCalEvent (obj, event) {
	var divElem = doc.createElement('div');
	divElem.setAttribute('id', event.id);
	divElem.className = 'calEvent';
	divElem.onclick = function () { showEvent(this); };
	var textNode = doc.createTextNode(event.title);
	divElem.appendChild(textNode);
	var start = new Date(event.start * 1000);
	var end = new Date(event.end * 1000);
	if (global.utilities.isDST(start)) start = new Date(start.getTime() - ONE_HOUR);
	if (global.utilities.isDST(end)) end = new Date(end.getTime() - ONE_HOUR);
	if (start.getHours() == 0 && start.getMinutes() == 0 && end.getHours() == 0 && end.getMinutes() == 0) {
		divElem.className = 'calAllDayEvent';
		obj.insertBefore(divElem, obj.firstChild);
	} else {
		obj.appendChild(divElem);
	}
	return obj;
}

function showEvent (obj) {
	var events = global.utilities.getElementsByClassName('calEventDetailsClose');
	for (var i = 0; i < events.length; i++) {
		events[i].parentNode.parentNode.removeChild(events[i].parentNode);
	}
	for (var i = 0; i < calendarData.events.length; i++) {
		if (obj.innerHTML == calendarData.events[i].title && obj.id == calendarData.events[i].id) {
			var start = new Date(calendarData.events[i].start * 1000);
			var end = new Date(calendarData.events[i].end * 1000);
			if (global.utilities.isDST(start)) start = new Date(start.getTime() - ONE_HOUR);
			if (global.utilities.isDST(end)) end = new Date(end.getTime() - ONE_HOUR);
			
			var startHours = start.getHours();
			var startMinutes = (start.getMinutes() < 10) ? '0' + start.getMinutes() : start.getMinutes();
			var startTime = (startHours > 12) ? (startHours - 12) + ':' + startMinutes + ' pm' : startHours + ':' + startMinutes + ' am';
			var endHours = end.getHours();
			var endMinutes = (end.getMinutes() < 10) ? '0' + end.getMinutes() : end.getMinutes();
			var endTime = (endHours > 12) ? (endHours - 12) + ':' + endMinutes + ' pm' : endHours + ':' + endMinutes + ' am';
			var divElem = doc.createElement('div');
			divElem.className = 'calEventDetails';
			
			var closeElem = doc.createElement('div');
			closeElem.className = 'calEventDetailsClose';
			closeElem.onclick = function () { this.parentNode.parentNode.removeChild(this.parentNode); };
			
			var detailElem = doc.createElement('div');
			detailElem.className = 'calEventDetailsContent';
			
			var titleElem = doc.createElement('h3');
			var textNode = doc.createTextNode(calendarData.events[i].title);
			titleElem.appendChild(textNode);
			
			if (startTime != '0:00 am' && endTime != '0:00 am') {
				var timeElem = doc.createElement('p');
				timeElem.setAttribute('style', 'font-size: 10pt;');
				textNode = doc.createTextNode(startTime + ' - ' + endTime);
				timeElem.appendChild(textNode);
			}
			
			var whereElem = doc.createElement('p');
			textNode = doc.createTextNode(calendarData.events[i].where);
			whereElem.appendChild(textNode);
			
			var descriptionElem = doc.createElement('div');
			descriptionElem.innerHTML = calendarData.events[i].description;
			
			detailElem.appendChild(titleElem);
			if (startTime != '0:00 am' && endTime != '0:00 am') detailElem.appendChild(timeElem);
			detailElem.appendChild(whereElem);
			detailElem.appendChild(descriptionElem);
			
			divElem.appendChild(closeElem);
			divElem.appendChild(detailElem);
			
			obj.parentNode.insertBefore(divElem, obj.parentNode.firstChild);
		}
	}
}

function loadProfiles (obj) {
	if (global.utilities.isString(obj)) {
		var ajax = new AjaxObject;
		ajax.send('POST', 'pages/peopleData.php', 'group=' + escape(obj), 'loadProfile');
		doc.getElementById('peopleCategory').innerHTML = obj;
	} else {
		global.ajax.send('POST', 'pages/peopleData.php', 'group=' + escape(obj.innerHTML), 'loadProfile');
		doc.getElementById('peopleCategory').innerHTML = obj.innerHTML;
	}
}

function loadProfile (http) {
	if (http) {
		doc.getElementById('profiles').innerHTML = http.responseText;
	}
}

function loadClassrooms (obj) {
	if (global.utilities.isString(obj)) {
		var ajax = new AjaxObject;
		ajax.send('POST', 'pages/classroomData.php', 'group=' + escape(obj), 'loadClassroom');
	} else {
		global.ajax.send('POST', 'pages/classroomData.php', 'group=' + escape(obj.innerHTML), 'loadClassroom');
	}
}

function loadClassroom (http) {
	if (http) {
		doc.getElementById('rooms').innerHTML = http.responseText;
		processScript(http.responseText);
	}
}

function sendMessageDialog (id, name) {
	var obj = global.elements.windowMask('#ffffff', 70);
	obj.id = 'message-box-mask';
	
	var messageBox = doc.createElement('div');
	messageBox.id = 'message-box';
	
	messageBox.innerHTML = '<form id="messageForm" onsubmit="sendMessage(this); return false" method="post"><table width="100%"><tr><td align="right">To:</td><td>' + name + '</td></tr><tr><td align="right" width="130px">From:</td><td><input type="text" name="senderName" style="width: 275px;" /></td></tr><tr><td align="right">E-mail Address:</td><td><input type="text" name="senderEmail" style="width: 275px;" /></td></tr><tr><td valign="top">Message:</td><td></td></tr><tr><td align="center" colspan="2"><textarea name="message" rows="8" cols="30"></textarea></td></tr><tr><td align="center" colspan="2"><input type="submit" name="submit" value="Send" /><input type="button" name="cancel" value="Cancel" onclick="closeSendMessage();" /></td></tr></table><input type="hidden" name="id" value="' + id + '" /><input type="hidden" name="toName" value="' + name  + '"</form>';

	doc.body.appendChild(messageBox);
	
	doc.getElementById('messageForm').senderName.focus();
	
	onscroll = function () {
		updateMessagePosition(messageBox);
	}
	
	updateMessagePosition(messageBox);
}

function sendMessage (obj) {
	var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)"; //not valid
	var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,7})(\\]?)$"; //valid
	var reg1 = new RegExp(reg1str);
	var reg2 = new RegExp(reg2str);
	
	if (obj.senderName.value == '' ) {
		alert('Please provide a name');
		obj.senderName.focus();
	} else if (obj.senderEmail.value == "") {
		alert('Please provide an E-mail address');
		obj.senderEmail.focus();
	} else if (!reg1.test(obj.senderEmail.value) && !reg2.test(obj.senderEmail.value)) {
		alert('Invalid E-mail Address!');
		obj.senderEmail.focus();
	} else if (obj.message.value == '') {
		alert('Please provide a message');
		obj.message.focus();
	} else {
		var ajax = new AjaxObject();
		ajax.send('POST', 'sendMessage.php', 'id=' + escape(obj.id.value) + '&toName=' + escape(obj.toName.value) + '&senderName=' + escape(obj.senderName.value) + '&senderEmail=' + escape(obj.senderEmail.value) + '&message=' + escape(obj.message.value), 'closeSendMessage');
	}
}

function closeSendMessage (http) {
	if (http) {
		alert(http.responseText);
	}
	doc.body.removeChild(doc.getElementById('message-box'));
	doc.body.removeChild(doc.getElementById('message-box-mask'));
	onscroll = function () {}
}

function updateMessagePosition (obj) {
        var client = getClientHeightWidth();
        var scroll = getScrollXY();
        var form = new Array();

        form[0] = parseInt(getStyle(obj, 'height'));
        //form[1] = parseInt(getStyle(popup, 'width'));

        obj.style.top = ((client[0] / 2) - (form[0] / 2) + scroll[1]) + 'px';
    	//popup.style.left = (((client[1] - form[1]) / 2) + scroll[0]) + 'px';
}

function getStyle (obj, style) {
        var value;
        if (obj.currentStyle) {
                style = style.replace('-c','C');
                style = style.replace('-i','I');
                value = obj.currentStyle[style];
        } else if (window.getComputedStyle) {
                value = document.defaultView.getComputedStyle(obj,null).getPropertyValue(style);
        }
        return value;
}

function getScrollXY() {
        var x = 0, y = 0;
        if (typeof(window.pageYOffset) == 'number') {
                //Netscape compliant
                y = window.pageYOffset;
                x = window.pageXOffset;
        } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
                //DOM compliant
                y = document.body.scrollTop;
                x = document.body.scrollLeft;
        } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		//IE standards compliant mode
                y = document.documentElement.scrollTop;
                x = document.documentElement.scrollLeft;
        }
        x = parseInt(x);
        y = parseInt(y);

	return [x,y];
}

function getClientHeightWidth () {
        var w = 0, h = 0;
        if (typeof(window.innerWidth) == 'number') {
                w = window.innerWidth;
                h = window.innerHeight;
        } else if (document.documentElement) {
                w = document.documentElement.clientWidth;
                h = document.documentElement.clientHeight;
        } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
                w = document.body.clientWidth;
                h = document.body.clientHeight;
        }
        w = parseInt(w);
        h = parseInt(h);
        return [h,w];
}

function selectColor (obj) {
	var mask = global.elements.windowMask('#ffffff', 70);
        mask.id = 'select-color-box-mask';
	
	var colorSelectBox = doc.createElement('div');
	colorSelectBox.id = 'select-color-box';
	
	var curOnscroll = onscroll;
	
	colorSelectBox.onclick = function () {
		doc.body.removeChild(doc.getElementById('select-color-box'));
        	doc.body.removeChild(doc.getElementById('select-color-box-mask'));
	        onscroll = curOnscroll;
	}
	
	var hexArray = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
	
	var colors = '<table>';
	
	for (var i = 1; i <= 16; i++) {
		colors += '<tr>';
		for (var x = 1; x <= 16; x+=3) {
			for (var y = 1; y <= 16; y+=3) {
				var color = hexArray[i - 1] + hexArray[x - 1] + hexArray[y - 1];
				
				colors += '<td style="width: 10px; height: 10px; background-color: #' + color + '; border: 1px solid #' + color + ';" onmouseover="this.style.borderColor = \'#FFF\'" onmouseout="this.style.borderColor = \'#' + color + '\';" onclick="doc.getElementById(\'colorSelector\').style.backgroundColor = this.style.backgroundColor;"></td>';
			}
		}
		colors += '</tr>';
	}
	
	colors += '</table>';
	
	colorSelectBox.innerHTML = colors;
	
	doc.body.appendChild(colorSelectBox);

        onscroll = function () {
                updateMessagePosition(colorSelectBox);
        }

        updateMessagePosition(colorSelectBox);
}
