//written by Gob

/* Preferences */
ie4up = (document.all) ? 1 : 0;
nn4up = (document.layers) ? 1 : 0;
w3c = (document.getElementById) ? 1 : 0;

function showColor(color)
{
	img = '<img src="' + pixel_trans.src + '" width=100 height=100 border=0>';
	frm = document.forms[0];
	tbl = w_Preview+'<br>';
	tbl += '<table border=1 cellpadding=0 cellspacing=0>';
	tbl += '<tr><td id=BaseFont bgcolor="'+color+'">'+img+'</td></tr>';
	tbl += '</table>';
	text = '<div style="position:absolute; z-index:2; left: 0px; top: 0px;">'+tbl+'</div>';
	lyrWrite('previewDiv', text);
	document.forms[0].bgcolor.value = color;
	ChangeData();
}
function lyrWrite(id, text)
{
	if (nn4up) {
		var lyr = document.layers[id].document;
		lyr.open();
		lyr.write(text);
		lyr.close();
	}
	else if (ie4up) document.all[id].innerHTML = text;
	else if (w3c) document.getElementById(id).innerHTML = text;
}
function defaultColor(color)
{
	showColor(color);
}

//Library wide using funcitons
function GetSelectedValue(obj)
{
	var retValue = '';
	if(obj.selectedIndex != -1) {
		with(obj) {
			for(i=0; i<options.length; i++) {
				if(options[i].selected) {
					if(retValue == '')
						retValue = options[i].value;
					else
						retValue = retValue + ',' + options[i].value;
				}
			}
		}
	}
	return retValue;
}

gQDArray = new Array();
gSaveType = "M";
/*
ABV			Description
"M"		=> "Meeting",
"T"		=> "Task",
"C"		=> "Chat",
"R"		=> "Reservation",
"RS"	=> "Resource",
"RM"	=> "Reminder",
"WC"	=> "Wake Up Call",
"G"		=> "Event",
"DV"	=> "Device"
"DN"	=> "Daily Note"
*/
function ChangeData() {
	var formObj = document.forms[0];
	sch_type = GetSelectedValue(formObj.sch_type);
	SaveQDSetForType(sch_type);
	if(sch_type == "T") {
		formObj.flag_status.checked = false;
		formObj.flag_attend.checked = false;
	} else
	if(sch_type == "DN") {
		formObj.flag_status.checked = false;
		formObj.flag_time.checked = false;
		formObj.flag_rsc.checked = false;
		formObj.flag_schedby.checked = false;
		formObj.flag_attend.checked = false;
	}
}
function ChangeType() {
	var formObj = document.forms[0];
	sch_type = GetSelectedValue(formObj.sch_type);
	SaveQDSetForType(gSaveType);

	formObj.flag_status.disabled = false;
	formObj.flag_time.disabled = false;
	formObj.flag_rsc.disabled = false;
	formObj.flag_schedby.disabled = false;
	formObj.flag_attend.disabled = false;
	formObj.flag_desc.disabled = false;

	if(sch_type == "T") {//Task
		formObj.flag_status.disabled = true;
		formObj.flag_attend.disabled = true;
	} else
	if(sch_type == "DN") {
		formObj.flag_status.disabled = true;
		formObj.flag_time.disabled = true;
		formObj.flag_rsc.disabled = true;
		formObj.flag_schedby.disabled = true;
		formObj.flag_attend.disabled = true;
	}

	LoadQDSetForType(sch_type);
	gSaveType = sch_type;
}
function QDObj(type,bgcolor,flags) {
	this.type = type;
	this.bgcolor = bgcolor;
	this.flags = flags;
}
function FindQDIndexByType(inArray, type) {
	for(var i=0; i< inArray.length; i++) {
		if(gQDArray[i].type == type)
			return i;
	}
	return -1;
}
function SaveQDSetForType(type) {
	var formObj = document.forms[0];
	i = FindQDIndexByType(gQDArray, type);
	if(i != -1) {
		gQDArray[i].bgcolor = document.forms[0].bgcolor.value;
		flags = "";
		flags += formObj.flag_status.checked ? '1':'0';
		flags += formObj.flag_time.checked ? '1':'0';
		flags += formObj.flag_rsc.checked ? '1':'0';
		flags += formObj.flag_schedby.checked ? '1':'0';
		flags += formObj.flag_attend.checked ? '1':'0';
		flags += formObj.flag_desc.checked ? '1':'0';
		gQDArray[i].flags = flags;
	}
}
function LoadQDSetForType(type) {
	var formObj = document.forms[0];
	i = FindQDIndexByType(gQDArray, type);
	if(i != -1) {
		formObj.bgcolor.value = gQDArray[i].bgcolor;
		flags = gQDArray[i].flags;
		formObj.flag_status.checked = flags.charAt(0) == '1' ? true:false;
		formObj.flag_time.checked = flags.charAt(1) == '1' ? true:false;
		formObj.flag_rsc.checked = flags.charAt(2) == '1' ? true:false;
		formObj.flag_schedby.checked = flags.charAt(3) == '1' ? true:false;
		formObj.flag_attend.checked = flags.charAt(4) == '1' ? true:false;
		formObj.flag_desc.checked = flags.charAt(5) == '1' ? true:false;
		showColor(gQDArray[i].bgcolor);
	}
}
function AssignQuickDescriptionArray(inStream) {
	arrayOfStrings = inStream.split("|");
	for( var i=0; i< arrayOfStrings.length; i++) {
		splitFields = arrayOfStrings[i].split(",");
		gQDArray[i] = new QDObj(splitFields[0],splitFields[1],splitFields[2]);
	}
}
function SetQuickDescriptionArray(inStream) {
	arrayOfStrings = inStream.split("|");
	for( var i=0; i< arrayOfStrings.length; i++) {
		splitFields = arrayOfStrings[i].split(",");
		type = splitFields[0];
		bgcolor = splitFields[1];
		flags = splitFields[2];
		index = FindQDIndexByType(gQDArray,type);
		if(index == -1) {//add new item
			index = gQDArray.length;
			gQDArray[index] = new QDObj(type,bgcolor,flags);
		} else {//update existing item
			gQDArray[index].bgcolor = bgcolor;
			gQDArray[index].flags = flags;
		}
	}
}
function QuickDescriptionSetData() {
	tmpArr = new Array();
	for( var i=0; i< gQDArray.length; i++)
		tmpArr[i] = MyImplode(",",gQDArray[i]);

	document.forms[0].descatt_str.value = Implode("|",tmpArr);
}
function MyImplode(seperator,inObj) {
	retStr = "";
	retStr += inObj.type + seperator;
	retStr += inObj.bgcolor + seperator;
	retStr += inObj.flags;
	return retStr;	
}
function Implode(seperator,strArray) {
	retStr = "";
	for( var i=0; i< strArray.length-1; i++)
		retStr += strArray[i] + seperator;

	retStr += strArray[strArray.length-1];
	return retStr;
}

/* Calendar */
var isMinNS4 = (document.layers) ? 1 : 0;
var isMinIE4 = (document.all) ? 1 : 0;
var isW3C = (document.getElementById) ? 1 : 0;// W3C stands for the W3C standard, implemented in Mozilla (and Netscape 6) and IE5

activeQDName = '';

// Quick description
function showQuickNote(evt,name) {
	if (isMinIE4)
		evt = window.event;

	var currentX,		//mouse position on X axis
		currentY,		//mouse position on X axis
		x,				//layer target position on X axis
		y,				//layer target position on Y axis
		docWidth,		//width of current frame
		docHeight,		//height of current frame
		layerWidth,		//width of popup layer
		layerHeight,	//height of popup layer
		ele;			//points to the popup element
	var pageScrollX=0,	//offset of current frame on X axis
		pageScrollY=0,	//offset of current frame on Y axis
		windowWidth,	//width of vision frame
		windowHeight;	//height of vision frame

	spaceDown = 20;		//constant of shifting popup down
	spaceUp = 5;		//constant of shifting popup up
	spaceRight = 10;	//constant of shifting popup right

	// First let's initialize our variables
	/*if ( isW3C ) {
   		ele = document.getElementById(name);
		currentX = evt.clientX;
		currentY = evt.clientY;
		docWidth = document.width;
		docHeight = document.height;
		layerWidth = ele.style.width;
		layerHeight = ele.style.height;
	} else if ( isMinNS4 ) {
		ele = document.layers[name];
		currentX = evt.pageX;
		currentY = evt.pageY;
		docWidth = document.width;
		docHeight = document.height;
		layerWidth = ele.clip.width;
		layerHeight = ele.clip.height;
	} else {	// meant for IE4
		ele = document.all[name];
		currentX = evt.clientX;
		currentY = evt.clientY;
		docHeight = document.body.offsetHeight;
		docWidth = document.body.offsetWidth;
		layerWidth = ele.offsetWidth;//200;
		layerHeight = ele.offsetHeight;
	}
	// Then we calculate the popup element's new position
	if ( ( currentX + layerWidth ) > docWidth )
		x = ( currentX - layerWidth );
	else
		x = currentX;
	
	if ( ( currentY + layerHeight ) >= docHeight )
		y = ( currentY - layerHeight - 20 );
	else
		y = currentY + 20;

	*/
	if ( isMinNS4 ) {
		ele = document.layers[name];
		if(!ele) return;
		pageScrollX = window.pageXOffset;
		pageScrollY = window.pageYOffset;
		windowWidth = window.innerWidth;
		windowHeight = window.innerHeight;
		currentX = evt.pageX - pageScrollX;
		currentY = evt.pageY - pageScrollY;
		docWidth = document.width;
		docHeight = document.height;
		layerWidth = ele.clip.width;
		layerHeight = ele.clip.height;
		browserType = 'NS4';
	} else  if(isMinIE4) {
		ele = document.all[name];
		if(!ele) return;
		pageScrollX = document.body.scrollLeft;
		pageScrollY = document.body.scrollTop;
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
		currentX = evt.clientX;
		currentY = evt.clientY;
		docWidth = document.body.scrollWidth;
		docHeight = document.body.scrollHeight;
		layerWidth = ele.offsetWidth;//200;
		layerHeight = ele.offsetHeight;
		browserType = 'IE4';
	} else {
		ele = document.getElementById(name);
		if(!ele) return;
		pageScrollX = window.pageXOffset;
		pageScrollY = window.pageYOffset;
		windowWidth = window.innerWidth;
		windowHeight = window.innerHeight;
		currentX = evt.clientX;
		currentY = evt.clientY;
		docWidth = document.width;
		docHeight = document.height;
		layerWidth = ele.offsetWidth;
		layerHeight = ele.offsetHeight;
		browserType = 'W3C';
	}

	verBarWidth = (windowWidth - docWidth);//constant of vertical scroll bar width
	horBarWidth = 0;//constant of horizontal scroll bar width

	// Then we calculate the popup element's new position
	if ( ( currentX + layerWidth + spaceRight + verBarWidth) > windowWidth ) {
		x = ( currentX - layerWidth );
		if( x < 0 )
			x = 0;
	} else
		x = currentX + spaceRight;
	x += pageScrollX;

	if ( ( currentY + layerHeight + spaceDown + horBarWidth ) >= windowHeight ) {
		y = ( currentY - layerHeight - spaceUp );
		if( y < 0 )
			y = 0;
	} else
		y = currentY + spaceDown;
	y += pageScrollY;

	/*textAlert = browserType + '\n';
	textAlert += 'currentX = ' + currentX + ', currentY=' + currentY + '\n';
	textAlert += 'windowWidth = ' + windowWidth + ', windowHeight=' + windowHeight + '\n';
	textAlert += 'docWidth = ' + docWidth + ', docHeight=' + docHeight + '\n';
	textAlert += 'pageScrollX = ' + pageScrollX + ', pageScrollY=' + pageScrollY + '\n';
	textAlert += 'layerWidth = ' + layerWidth + ', layerHeight=' + layerHeight + '\n';
	textAlert += 'horBarWidth = ' + horBarWidth + ', verBarWidth=' + verBarWidth + '\n';
	textAlert += 'x = ' + x + ', y=' + y + '\n';
	alert( textAlert );*/

	// Finally, we set its position and visibility
	if ( isMinNS4 ) {
		ele.left = parseInt ( x );
		ele.top = parseInt ( y );
		ele.visibility = "show";
	} else {  // IE4 & W3C
		ele.style.left = parseInt ( x );
		ele.style.top = parseInt ( y );
		ele.style.visibility = "visible";
	}
	activeQDName = name;
}

function hideQuickNote(name) {
	if(activeQDName=='') return;

	if (isW3C) {
		document.getElementById(activeQDName).style.visibility = "hidden";
	} else if (isMinNS4) {
		document.layers[activeQDName].visibility = "hide";
	} else {
		document.all[activeQDName].style.visibility = "hidden";
	}
	activeQDName = '';
}

