var buffer = null;
function loginFocus() {
	if (document.jcForm)
		document.jcForm.jobcode.focus();
	if (document.adminLoginForm)
		document.adminLoginForm.username.focus();
}

function breakout() {
	if(top.location != location)
		top.location.href = document.location.href;
}

function handleMove(e) {
	if (!e) var e = window.event;
	if(target != null) {
		target.style.left = e.clientX - offsetX;
		target.style.top = e.clientY - offsetY;
	}
}

_mouseX = 0;
_mouseY = 0;
target = null;
offsetX = 0;
offsetY = 0;

document.onmousemove=handleMove;

function beginDrag(e, elem) {
	target = elem;
	offsetX = e.clientX - elem.offsetLeft;
	offsetY = e.clientY - elem.offsetTop;
}

function endDrag() {
	target = null;
	offsetX = 0;
	offsetY = 0;
}

function move(e) {
    if (document.all) {
        _mouseX=window.event.clientX
        _mouseY = window.event.clientY;
    } else if (document.layers) {
        _mouseX = e.pageX;
        _mouseY = e.pageY;
    }
}

function getYOffset() {
	if(document.all)
		return document.body.scrollTop;
	else
		return window.pageYOffset;
}

function setDivPos(e, div) {
	div.style.display = "block";
	dw = div.clientWidth;
	dh = div.clientHeight;
	div.style.display = "none";

	w = document.body.clientWidth;

	if (div.id == "newJob") {
		div.style.left = 100;
		div.style.top = 100;
		div.style.display = "block";
	}
	else {
		div.style.left = e.clientX;
	
		if (e.clientY + getYOffset() + dh + 50 > document.body.scrollHeight) {
			div.style.top = e.clientY + getYOffset() - dh;
		} 
		else {
			div.style.top = e.clientY + getYOffset();
		}
		
		div.style.display = "block";
		dl = div.offsetLeft;
		div.style.display = "none";
		
		if (w < dw + e.clientX) {
			div.style.left = dl - dw;
		}
		div.style.display = "block";
		div.style.left = div.offsetLeft - 1;	// To fix scrollbars
	}	 
	
}

function focusFirst(form) {
	i = 0;
	while ((i < form.elements.length) &&
			((form.elements[i].type == "hidden") ||
			(form.elements[i].disabled) ||
			(form.elements[i].type == "submit") ||
			(form.elements[i].name == "language"))) {
		i++;
	}
	if (i < form.elements.length) {
		form.elements[i].focus();
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function getProps(myObj) {
	var objs = myObj;
	var s="", i=0;
	var c = 0;
	for (i in objs) {
		c++;
		if(c > 20)
			break;
		s += "  objs[" + i + "] = " + objs[i] + "<BR>";
	}
	
	window.open('', 'propsWindow', 'height=350,width=360,toolbar,scrollbars,resizable').document.write(s);
}

function setPage() {
    // Call to turn off prototype conflict with Arrays:
  Prototypify;
    
	// Set default number of times resize has fired
	resizePhase = 0;

	if (document.all) {
		window.onresize = setPage;
  	}

	document.onmousedown 	= new Function("return false");
	document.onselectstart 	= new Function("return false");
	document.oncontextmenu 	= new Function("return false");

	// Positive/Negative scale properties
	var layoutTableObj 	= document.getElementById("layoutTable");
	var firstSlotObj 	= document.getElementById("L1");

	// Core globals
	
	elem = layoutTableObj;
	overallLeft = 0;
	while(elem != null) {
		overallLeft += elem.offsetLeft;
		elem = elem.offsetParent;			
	}
	
	// Set properties and attributes of page slots
	coordTable = new Array();
    
	var lastSlotObj = setSlotArray();

	cellWidth = document.getElementById("cell_L1").offsetWidth;

	winW 	= overallLeft + (cellWidth * 2);
	winH 	= document.body.scrollHeight;
	centr 	= overallLeft + cellWidth - 95;
	frmObj 	= document.forms[0];

	// Div used to hold data as it is dragged across screen
	containerObj = document.getElementById('containerL');
	containerObj.style.padding = 2;
	// Create a lookup table using available page coords as a key for slot values
	buildLookupCoordTable();
	layoutTableObj.style.visibility		= 'visible';
	isDown = false;
	isScrolling = false;
	window.onscroll = flagScroll;

	document.getElementById('cell_L1').style.position = 'relative';
	stackTop = document.getElementById('cell_L1').offsetTop;
	slotHeight = document.getElementById('cell_L1').offsetHeight;
}

function killKeys(evnt) {
	evt = (document.all) ? window.event : evnt;
	var kCode = evt.keyCode;
	if (evt.keyCode == 9 || kCode == 32 || kCode == 34 || kCode == 33) {
		releaseSlot();
	}
}

// Flag system that user is attempting to auto scroll or use a key to shift around the screen
function flagScroll() {
	if (document.all) {
		isScrolling = true;
		document.onmousemove = resetScroll;
	} else {
		document.onmousemove = releaseSlot;
	}

	if (isDown) {
		releaseSlot();
	}
}

function resetScroll() {
	isScrolling = false;
}

function setPageBackground() {
	for (var end in backgroundStrc[page]) {
		for (var item in backgroundStrc[page][end]) {
			if (backgroundStrc[page][end][item]['type'] == 'form') {
				if (backgroundStrc[page][end][item]['value']) {
					buttonObj = eval('frmObj.' + item);
					buttonObj.value = backgroundStrc[page][end][item]['value'];
					var targetObj = document.getElementById(item);
					targetObj.style.visibility = 'visible';
				} else {
					var targetObj = document.getElementById(item);
					targetObj.style.visibility = 'hidden';
				}
			} else {
				var targetObj 		= document.getElementById(end + "_" + item);
				targetObj.innerHTML = backgroundStrc[page][end][item]['value'];
			}
		}
	}
}

// Sets properties of master array
function setSlotArray(callType) {
	var homeNum = 1;
	// Loop through master array
	for (var partNum in slotDataStr) {
		for (var half in slotDataStr[partNum]) {
			var slotNum = slotDataStr[partNum][half].length;			
			for (var i = 1; i < slotNum; i++) {
				// Current slot object
				var slotObj = document.getElementById(half + i);
				slotObj.style.height = (document.all) ? 17 : 14;
				slotObj.style.padding = 2;

				// Populate array based on attributes of slotObj
				populateMasterArray(partNum, half, i, slotObj);

				if (partNum == dd_page) {
					if (slotDataStr[partNum][half][i]['cell']) {
						slotObj.innerHTML = slotDataStr[partNum][half][i]['cell'];
					} else {
						slotObj.innerHTML = '';
					}

					if (slotObj.innerHTML) {
						slotObj.style.backgroundColor 	= defaultBackgroundColor;
						slotObj.style.borderColor 		= defaultBorderColor;
					} else {
						slotObj.style.backgroundColor 	= emptyBackgroundColor;
						slotObj.style.borderColor 		= emptyBorderColor;
					}

					if (navigator.userAgent.match(/Mozilla\/5.0/)) {
						var rv = navigator.userAgent.match(/rv:(.*)\)/);
							if (parseFloat(rv[1]) > 1.1) {
							// Fixes bug in Mozilla 1.2 where 100% causes an overflow
							slotObj.style.width = '95%';
						}
					}
				}

				slotObj.style.visibility = 'visible';
				slotObj.style.zIndex = 0;
				if (slotObj.innerHTML) {
					// Capture event for left side only
					slotObj.onmousedown = selectSlot;
				}
			}
			homeNum++;
		}
	}
	return slotObj;
}

// Populate array based on attributes of incoming slot object
function populateMasterArray(page, side, homeNum, slotObj) {
	var cellObj = document.getElementById("cell_" + side + homeNum);
	var pageCtr = (cellObj.offsetHeight/2) + cellObj.offsetTop;

	if (side == 'L') {
		coordTable[cellObj.offsetTop] = homeNum;
	}
}

// Creates a lookup table using available page coords as a key for slot values
function buildLookupCoordTable() {

	var slotNum = 1;
	// Loop through height of current window
	for (var i=0;i<winH;i++) {
		if (coordTable[i]) {
			// Coord was set in populateMasterArray as top boundary of slot
			var slotNum = coordTable[i];
		} else {
			// Set slot number as a range of available coords not yet set
			coordTable[i] = slotNum;
		}
	}
}

// This function has been modified specifically for use in IDS3 Survey:
function submitResults(buttonObj, evt) {	
	var isComplete = true;
	for (var partNum in slotDataStr) {
		for (var i in slotDataStr[partNum]['R']) {
			if (slotDataStr[partNum]['R'][i]['form']) {
			    var hidFrm = $("0_" + i);
			    hidFrm.value = slotDataStr[partNum]['R'][i]['form'];
			}
		}
	}
}

function toggleScreen(pageNum) {
	if (pageNum == '1') {
		dd_page = '2';
	} else {
		dd_page = '1';
	}
	setPage();
}
