


function setFocus()
{
if (document.forms.length > 0) {
var form = document.forms[0];
for (i = 0; i < form.length; i++) {
if ( !form.elements[i].disabled
&& ( (form.elements[i].type == "text") 
|| (form.elements[i].type == "textarea")
|| (form.elements[i].type == "select-one")
|| (form.elements[i].type == "select-multiple")
|| (form.elements[i].type == "radio")
|| (form.elements[i].type == "checkbox")
|| (form.elements[i].type == "password") ) ) {

var parts = window.location.href.split("#");
if (parts.length == 1)
document.forms[0].elements[i].focus();
return;
}
}
}
}


function setTextFocus()
{
if (document.forms.length > 0) {
var form = document.forms[0];
for (i = 0; i < form.length; i++) {
if ( !form.elements[i].disabled
&& ( (form.elements[i].type == "text") 
|| (form.elements[i].type == "textarea")
|| (form.elements[i].type == "password") ) ) {

var parts = window.location.href.split("#");
if (parts.length == 1)
document.forms[0].elements[i].focus();
return;
}
}
}
}


function setInnerHtml(id, html)
{
if ( (elmnt = document.getElementById(id)) != null)
elmnt.innerHTML = html;
}


function clearInnerHtml(id)
{
setInnerHtml(id, '');
}


function restrict(cur, maxLen, cntId, event)
{
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 38 || keyCode == 40) 
return;
charsLeft = (maxLen - cur.value.length);
if (charsLeft < 0)
charsLeft = 0;
if ( (elmnt = document.getElementById(cntId)) != null)
elmnt.innerHTML = charsLeft;
if (cur.value.length > maxLen) {
cur.value = cur.value.substr(0, maxLen);
}
}


function enterTabHandler(field, event)
{
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
for (j = 0; j < field.form.elements.length; j++) {
if (field == field.form.elements[j]) {
break;
}
}
j = (j + 1) % field.form.elements.length;
if (!field.form.elements[j].disabled && field.form.elements[j].type != 'hidden') {
field.form.elements[j].focus();
}
return false;
} else {
return true;
}
}


function disableEnter(event)
{
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
return false;
} else {
return true;
}
}


function enterSubmits(event, sbId)
{
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
sb = document.getElementById(sbId);
if (sb != null) {
sb.click();
}
return false;
} else {
return true;
}
}


function showCalendar(id, startYear, endYear, calendarUrl)
{
url = calendarUrl + "/calendar.php?id=" + id + "&year=" + document.getElementById(id + "_" + "year").value + "&month=" + document.getElementById(id + "_" + "month").value + "&startYear=" + startYear + "&endYear=" + endYear;
window.open(url, "Calendar", "resizable=YES,height=280,width=450");
}


function setDate(id, year, month, day)
{
document.getElementById(id + "_" + "year").value = year;
document.getElementById(id + "_" + "month").value = month;
document.getElementById(id + "_" + "day").value = day;
document.getElementById(id + "_" + "year").focus();
}


function showPalette(id, ffRootUrl)
{
url = ffRootUrl + "/palette.php?id=" + id;
window.open(url, "Calendar", "status=YES,resizable=YES,height=350,width=550");
}


function setColor(id, color)
{
document.getElementById(id).value = color;
document.getElementById(id).focus();
}


function removeAnchor(url)
{
parts = url.split("#");
return parts[0];
}



function getNextElement(elmt) 
{

outer:
for (i = 0; i < document.forms.length; i++) {
for (j = 0; j < document.forms[i].elements.length; j++) {
if (document.forms[i].elements[j] == elmt) {
if (j < document.forms[i].elements.length - 1) { 
j++;
break outer;
} else if (i < document.forms.length - 1) { 
i++;
j = 0;
break outer;
} else {
return null;
}
}
}
}


for (m = i; m < document.forms.length; m++) {
for (n = j; n < document.forms[m].elements.length; n++) {
if (document.forms[m].elements[n].name != undefined) {
return document.forms[m].elements[n];
}
}
}
return null;
}


function containsElement(a, e) 
{
for (i = 0; i < a.length; i++) {
if (a[i] == e) {
return true;
}
}
return false;
}


function printElements() 
{
str = "";
for (i = 0; i < document.forms.length; i++) {
for (j = 0; j < document.forms[i].elements.length; j++) {
str = str + "document.forms[" + i + "].elements[" + j + "].name = " + document.forms[i].elements[j].name + "\n";
}
}
alert(str);
}


function autoTab(cur, event) 
{













var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
var filter = [8, 9, 16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 46];
if (cur.value.length == cur.maxLength && !containsElement(filter, keyCode)) {
next = getNextElement(cur);
if (next != null)
next.focus();
}
}


function ffGetXmlHttpObject()
{
var xmlHttp = null;
try {

xmlHttp = new XMLHttpRequest();
} catch (e) { 
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
alert("Your browser does not support AJAX!");
}
}
}
return xmlHttp;
}


function ffGetParameterValueFromUrl(url, name)
{
var urlParts = url.split('?');
if (urlParts.length > 1) { 
var params = urlParts[1].split('&');
for (var i = 0; i < params.length; i++) {
var paramParts = params[i].split('=');
if (paramParts[0] == name) {
if (paramParts.length > 1)
return paramParts[1];
else
return '';
}
}
}
return null;
}


function ffRemoveParameterFromUrl(url, name)
{
var urlParts = url.split('?');
if (urlParts.length > 1) { 
var newQs = '';
var params = urlParts[1].split('&');
for (var i = 0; i < params.length; i++) {
var paramParts = params[i].split('=');
if (paramParts[0] != name) {
newQs += (newQs.length > 1 ? '&' : '');
if (paramParts.length > 1)
newQs += paramParts[0] + '=' + paramParts[1];
else
newQs += paramParts[0];
}
}
if (newQs.length > 0)
return urlParts[0] + '?' + newQs;
return urlParts[0];
} else
return url;
}


function ffAddParameterToUrl(url, name, value)
{
var newUrl = ffRemoveParameterFromUrl(url, name);
var urlParts = newUrl.split('?');
var qs = '';
if (urlParts.length > 1) { 
qs = urlParts[1] + '&';
}
qs += name + (value ? '=' + ffUrlEncode(value) : '');
return urlParts[0] + '?' + qs;
}


function ffHtmlSpecialChars(string)
{
var html = string;
html = html.replace(/&/g, '&amp;');
html = html.replace(/"/g, '&quot;');
html = html.replace(/'/g, '&#039;');
html = html.replace(/</g, '&lt;');
html = html.replace(/>/g, '&gt;');
return html;
}


function ffUrlEncode(str)
{
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}


function ffUrlDecode(str)
{
str = str.replace('+', ' ');
str = unescape(str);
return str;
}



function GeJsLoader() {}

GeJsLoader.loadModule = function(moduleName)
{


FfJsLoader.loadModule(moduleName, FfPaths.FF_ROOT_URL + '/../goExpo/js/' + moduleName + '.js');
}
function FfSection()
{

this.getHeaderHtml = getHeaderHtml;
function getHeaderHtml(classPrefix)
{


if (!classPrefix)
classPrefix = 'ffSection';
var html = '';
html += '<table class="' + classPrefix + '" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border-spacing:0px;">';
html += '<tr>';
html += '<td class="' + classPrefix + 'TopLeft">';
html += '</td>';
html += '<td class="' + classPrefix + 'TopMiddle">';
html += '</td>';
html += '<td class="' + classPrefix + 'TopRight">';
html += '</td>';
html += '</tr>';
html += '<tr class="' + classPrefix + '">';
html += '<td class="' + classPrefix + 'Left">';
html += '</td>';
html += '<td class="' + classPrefix + 'Middle">';
return html;
}


this.getFooterHtml = getFooterHtml;
function getFooterHtml(classPrefix)
{
if (!classPrefix)
classPrefix = 'ffSection';
var html = '';
html += '</td>';
html += '<td class="' + classPrefix + 'Right">';
html += '</td>';
html += '</tr>';
html += '<tr>';
html += '<td class="' + classPrefix + 'BottomLeft">';
html += '</td>';
html += '<td class="' + classPrefix + 'BottomMiddle">';
html += '</td>';
html += '<td class="' + classPrefix + 'BottomRight">';
html += '</td>';
html += '</tr>';
html += '</table>';
return html;
}


this.getHtml = getHtml;
function getHtml(html, classPrefix)
{
return this.getHeaderHtml(classPrefix) + html + this.getFooterHtml(classPrefix);
}
}
function FfWindow(cssClassName)
{
this.cssClassName = cssClassName;
if (!cssClassName)
this.cssClassName = 'FfWindow';
this.htmlElement;
this.id = ffmh.getNextHtmlId();

this.createHtmlElement = createHtmlElement;
function createHtmlElement()
{
this.htmlElement = document.createElement('div');
this.htmlElement.id = this.id;
this.htmlElement.className = this.cssClassName;


ffmh.disableMouseEvents(this.htmlElement);
}

this.createElementIfNeeded = createElementIfNeeded;
function createElementIfNeeded()
{
if (!this.htmlElement)
this.createHtmlElement();
}

this.getHtmlElement = getHtmlElement;
function getHtmlElement()
{
this.createElementIfNeeded();
return this.htmlElement
}

this.show = show;
function show()
{
this.htmlElement.style.visibility = 'visible';
}

this.hide = hide;
function hide()
{
this.htmlElement.style.visibility = 'hidden';
}

this.setContents = setContents;
function setContents(html)
{
var s = new FfSection();
var ihtml = '';

ihtml = '<table><td>' + html + '</td><td><img class="FfWindowClose" onclick="document.getElementById(\'' + this.id + '\').style.visibility=\'hidden\';" src="images/ffWindowClose.png"/></td></tr></table>';
this.htmlElement.innerHTML = s.getHtml(ihtml);
}

this.setContentsAndShow = setContentsAndShow;
function setContentsAndShow(html)
{
this.setContents(html);
this.show();
}

this.setPosition = setPosition;
function setPosition(left, top, right, bottom)
{
this.createElementIfNeeded();
if (left)
this.htmlElement.style.left = left + 'px';
if (top)
this.htmlElement.style.top = top + 'px';
if (right)
this.htmlElement.style.right = right + 'px';
if (bottom)
this.htmlElement.style.bottom = bottom + 'px';
}
}

function FfTabMenuOld()
{
this.tabs;
this.selectedTabTitle;
this.name = '';
this.HTML_ID = 'ffTabMenuId';

this.initialize = initialize;
function initialize(tabs, selectedTabTitle)
{
this.tabs = tabs; 
this.selectedTabTitle = selectedTabTitle;
}

this.getElement = getElement;
function getElement()
{
return document.getElementById(this.name + '_' + this.HTML_ID);
}

this.display = display;
function display()
{
document.write(this.getHtml());
}

this.getHtml = getHtml;
function getHtml()
{
var html = '';
html += '<table class="' + this.name + 'ffTabMenuOld" id="' + this.name + '_' + this.HTML_ID + '"><tr>';
for (var i = 0; i < this.tabs.length; i++) {
var c = 'ffTabMenuOldNotSelected';
if (this.tabs[i][0] == this.selectedTabTitle) {
c = 'ffTabMenuOldSelected';
}
html += '<td id="' + this.name + '_td_' + i + '" class="' + c + '"><a id="' + this.name + '_a_' + i + '" class="' + c + '" href="' + this.tabs[i][1] + '" ' + this.tabs[i][2] + '>' + this.tabs[i][0] + '</a></td>';
}
html += '</tr></table>';
return html;
}

this.setSelectedTabTitle = setSelectedTabTitle;
function setSelectedTabTitle(tabTitle)
{
this.selectedTabTitle = tabTitle;
}

this.getTabAElement = getTabAElement;
function getTabAElement(i)
{
return document.getElementById(this.name + '_a_' + i);
}

this.getTabTdElement = getTabTdElement;
function getTabTdElement(i)
{
return document.getElementById(this.name + '_td_' + i);
}

this.selectTab = selectTab;
function selectTab(tabTitle)
{
this.setSelectedTabTitle(tabTitle);
for (var i = 0; i < this.tabs.length; i++) {
var aElmnt = this.getTabAElement(i);
var tdElmnt = this.getTabTdElement(i);
var c = 'ffTabMenuOldNotSelected';
if (this.tabs[i][0] == this.selectedTabTitle) {
c = 'ffTabMenuOldSelected';
}
aElmnt.className = c;
tdElmnt.className = c;
}
}

this.setPosition = setPosition;
function setPosition(left, top)
{
var elmnt = this.getElement();
if (elmnt) {
elmnt.style.left = left + 'px';
elmnt.style.top = top + 'px';
}
}

this.setWidth = setWidth;
function setWidth(width)
{
var elmnt = this.getElement();
if (elmnt) {
elmnt.style.width = width + 'px';
}
}

this.getHeight = getHeight;
function getHeight()
{
var elmnt = this.getElement();
if (elmnt) {
return elmnt.offsetHeight;
}
}
}

function FfmPosition(x, y)
{
this.x = x;
this.y = y;

this.toString = toString;
function toString()
{
return 'x = ' + this.x + ', y = ' + this.y;
}

this.setCss = setCss;
function setCss(elmnt)
{
elmnt.style.left = this.x + 'px';
elmnt.style.top = this.y + 'px';
}
}

function FfmDimension(width, height)
{
this.width = width;
this.height = height;
}

function FfmRectangle(left, top, width, height)
{
this.left = left;
this.top = top;
this.width = width;
this.height = height;

this.toString = toString;
function toString()
{
return 'left = ' + this.left + ', top = ' + this.top + ', width = ' + this.width + ', height = ' + this.height;
}

this.setCss = setCss;
function setCss(elmnt)
{
elmnt.style.left = this.left + 'px';
elmnt.style.top = this.top + 'px';
elmnt.style.width = this.width + 'px';
elmnt.style.height = this.height + 'px';
}
}

function FfmDisableEvent()
{
return false;
}

function FfmHelper()
{
var USING_IE = (typeof(window.innerWidth) == 'number' ? false : true);
var alertLimitCount = 0;
this.DISABLE_JAVASCRIPT_MOUSE_EVENTS_EXCEPT_CLICK_HTML = 'onmousemove="return FfmDisableEvent();" onmousedown="return FfmDisableEvent();" onmouseup="return FfmDisableEvent();" onmouseover="return FfmDisableEvent();" onmouseout="return FfmDisableEvent();" ondblclick="return FfmDisableEvent();" onfocus="return FfmDisableEvent();" onblur="return FfmDisableEvent();"';
this.DISABLE_JAVASCRIPT_MOUSE_EVENTS_HTML = 'onclick="return FfmDisableEvent();" ' + this.DISABLE_JAVASCRIPT_MOUSE_EVENTS_EXCEPT_CLICK;
this.nextHtmlIdN = 0;


this.getAbsoluteX = getAbsoluteX;
function getAbsoluteX(elmnt)
{
var x = 0;
while (elmnt != null) {
x += elmnt.offsetLeft;
elmnt = elmnt.offsetParent;
}
return x;
}


this.getAbsoluteY = getAbsoluteY;
function getAbsoluteY(elmnt)
{
var y = 0;
while (elmnt != null) {
y += elmnt.offsetTop;
elmnt = elmnt.offsetParent;
}
return y;
}

this.getAbsolutePosition = getAbsolutePosition;
function getAbsolutePosition(elmnt)
{
var position = new FfmPosition(0, 0);
position.x = getAbsoluteX(elmnt);
position.y = getAbsoluteY(elmnt);
return position;
}

this.getMousePosition = getMousePosition;
function getMousePosition(e)
{
position = new FfmPosition(0, 0);
if (document.all) {
position.x = event.clientX + document.body.scrollLeft;
position.y = event.clientY + document.body.scrollTop;

if (USING_IE) {
position.x -= 2;
position.y -= 2;
}
} else {
position.x = e.pageX;
position.y = e.pageY;
}
if (position.x < 0)
position.x = 0;
if (position.y < 0)
position.y = 0;
return position;
}

this.getScreenDimensions = getScreenDimensions;
function getScreenDimensions()
{
var width = 0;
var height = 0;
if (!USING_IE) { 
width = window.innerWidth;
height = window.innerHeight;
} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { 
width = document.documentElement.clientWidth;
height = document.documentElement.clientHeight;
} else if (document.body && (document.body.clientWidth || document.body.clientHeight )) { 
width = document.body.clientWidth;
height = document.body.clientHeight;
}
return new FfmDimension(width, height);
}

this.limitedAlert = limitedAlert;
function limitedAlert(str)
{
if (alertLimitCount++ < 3)
alert(str);
}


this.getXmlHttpObject = getXmlHttpObject;
function getXmlHttpObject()
{
var xmlHttp = null;
try {

xmlHttp = new XMLHttpRequest();
} catch (e) { 
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
alert("Your browser does not support AJAX!");
}
}
}
return xmlHttp;
}

this.loadXmlDoc = loadXmlDoc;
function loadXmlDoc(dname)
{
var xmlDoc;

if (window.ActiveXObject)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}

else if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument("","",null);
}
else
{
alert('Your browser cannot handle this script');
}
xmlDoc.async = false;
xmlDoc.load(dname);
return(xmlDoc);
}

this.getMouseTarget = getMouseTarget;
function getMouseTarget(e)
{
if (!e) e = window.event;
return (typeof e.target != "undefined" ? e.target : e.srcElement);
}

this.getEventTarget = getEventTarget;
function getEventTarget(e)
{
if (!e) e = window.event;
return (typeof e.target != "undefined" ? e.target : e.srcElement);
}

this.isRightClick = isRightClick;
function isRightClick(e)
{
if (!e) var e = window.event;
if (e.which) rightclick = (e.which == 3);
else if (e.button) rightclick = (e.button == 2);
return rightclick;
}

this.mouseInElement = mouseInElement;
function mouseInElement(e, elmnt, mousePosition)
{
if (!mousePosition) {
mousePosition = this.getMousePosition(e);
}
if (mousePosition.x >= this.getAbsoluteX(elmnt)
    && mousePosition.x <= this.getAbsoluteX(elmnt) + elmnt.offsetWidth
    && mousePosition.y >= this.getAbsoluteY(elmnt)
    && mousePosition.y <= this.getAbsoluteY(elmnt) + elmnt.offsetHeight) {
return true;
} else {
return false;
}
}

this.disableMouseEvents = disableMouseEvents;
function disableMouseEvents(elmnt)
{

elmnt.onmouseover = FfmDisableEvent;
elmnt.onmouseout = FfmDisableEvent;
elmnt.onmousemove = FfmDisableEvent;
elmnt.onclick = FfmDisableEvent;
elmnt.onmousedown = FfmDisableEvent;
elmnt.onmouseup = FfmDisableEvent;
elmnt.ondblclick = FfmDisableEvent;
elmnt.onfocus = FfmDisableEvent;
elmnt.onblur = FfmDisableEvent;
}

this.fixPngSrcIfNeeded = fixPngSrcIfNeeded;
function fixPngSrcIfNeeded(elmnt)
{


}

this.fixPngBgIfNeeded = fixPngBgIfNeeded;
function fixPngBgIfNeeded(elmnt)
{


}

this.keyPressed = keyPressed;
function keyPressed(e, keyCode)
{
if (!e) var e = window.event;
var kc = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;

if (kc == keyCode)
return true;
return false;
}

this.htmlspecialchars = htmlspecialchars;
function htmlspecialchars(string)
{
var html = string;
html = html.replace(/&/g, '&amp;');
html = html.replace(/"/g, '&quot;');
html = html.replace(/'/g, '&#039;');
html = html.replace(/</g, '&lt;');
html = html.replace(/>/g, '&gt;');
return html;
}

this.urlencode = urlencode;
function urlencode(str)
{
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

this.urldecode = urldecode;
function urldecode(str)
{
str = str.replace('+', ' ');
str = unescape(str);
return str;
}

this.getNextHtmlId = getNextHtmlId;
function getNextHtmlId()
{
return 'ff_' + (this.nextHtmlIdN++);
}
}
var ffmh = new FfmHelper();

function FfmClientRequest(request, responseHandler, extraQueryString)
{


var xmlHttp;

makeRequest(request, extraQueryString);

function makeRequest(request, extraQueryString)
{
var url = 'GeFpServer.php';
url += '?request=' + request;
if (extraQueryString) {
url += '&' + extraQueryString;
}

xmlHttp = ffmh.getXmlHttpObject();
xmlHttp.onreadystatechange = processResponse;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

function processResponse()
{
if (xmlHttp.readyState == 4) {
if (responseHandler)
responseHandler(xmlHttp);
}
}
}
function FfmLogger()
{
var lines;
var maxLines;
this.isActive = true;

this.getLogger = getLogger;
function getLogger()
{
return document.getElementById('ffmLogId');
}

this.log = log;
function log(str)
{
if (!this.isActive)
return;
if (maxLines && lines == maxLines) {
clearLog();
}
var logger = getLogger();
if (!logger)
return;
date = new Date();

logger.innerHTML = date.toLocaleString() + ':<br/>' + str + '<hr/>' + logger.innerHTML;
lines++;
}

this.clearLog = clearLog;
function clearLog()
{
var logger = getLogger();
if (!logger)
return;
logger.innerHTML = '';
lines = 0;
}

this.logBreak = logBreak;
function logBreak()
{
log("--------------------");
}

this.display = display;
function display(x, y, width, height)
{
document.write('<div id="ffmLogId" style="position:absolute;top:' + y + 'px;left:' + x + 'px;height:' + height + 'px;width:' + width + 'px;overflow:scroll;"></div>');
}

this.setIsActive = setIsActive;
function setIsActive(isActive)
{
this.isActive = isActive;
}

this.toggleIsActive = toggleIsActive;
function toggleIsActive()
{
this.isActive = !this.isActive;
}
}
var ffml = new FfmLogger();


function FfmConfig()
{
this.BUFFER_SIZE = 1;
this.TILE_WIDTH = 200;
this.TILE_HEIGHT = 200;
this.TILE_IMAGE_EXT = 'jpg';
this.TILE_BLANK_IMAGE_BASENAME = 'images/blank.gif';
this.MAX_LOADING_IMAGES = 10;
this.PAN_SIZE = 100;
this.VIEW_MOUSE_DRAG_DISCARD_MS = 100; 
this.ZOOM_FACTOR = 2;
this.ZOOM_MIN_WIDTH = 700;
this.ZOOM_MIN_HEIGHT = 500;
this.MAX_ZOOM_LEVEL = 1;
this.MAX_COLUMNS = 100; 
this.SHOW_LOG = false;
this.VIEWER_MARGIN_LEFT = 10;
this.VIEWER_MARGIN_RIGHT = 20;
this.VIEWER_MARGIN_TOP = 10;
this.VIEWER_MARGIN_BOTTOM = 20;
this.MENU_MARGIN_BOTTOM = 5;
this.SEARCHER_MARGIN_BOTTOM = 120;
this.SEARCHER_MIN_HEIGHT = 200;
this.LOG_WINDOW_WIDTH = 300;
this.LOG_WINDOW_MARGIN_LEFT = 10;
this.RESET_IMAGES_LOADING_MS = 2000;
this.USER_ID;
this.APPOINTMENT_DAY;

this.TILE_IMAGE_BASENAME;
this.VIEW_FINDER_IMAGE;
this.HIDE_BACKGROUND_IMAGE = false;
this.MAP_WIDTH;
this.MAP_HEIGHT;
this.HELP_CONTENT = '';
this.FP_AREA_ID;
this.BOOTH_NUMBERS = new Array();
this.ZOOM_BOOTH_NUMBER;
this.AREAS = new Array();
this.CAN_EDIT = false;
this.IS_IE_6 = false;

this.IS_EXHIBITOR = false;
this.IS_ATTENDEE = false;
this.GE_NAME = '';

this.QUICK_BOOTH_CHUNKS = 2000; 

this.AVAILABLE_BOOTH_BG_IMG;

this.setMAX_COLUMNS = setMAX_COLUMNS;
function setMAX_COLUMNS()
{
this.MAX_COLUMNS = Math.ceil(this.MAP_WIDTH/this.TILE_WIDTH) + 1;
}
}
var ffmConfig = new FfmConfig();




function FfmArea(id, name, abbreviation, mapWidth, mapHeight, bgImage, startX, startY)
{
this.id = id;
this.name = name;
this.abbreviation = abbreviation;
if (ffmConfig.AREAS.length > 1)
this.tabName = this.name + ' (' + this.abbreviation + ')';
else
this.tabName = this.name;
this.mapWidth = mapWidth;
this.mapHeight = mapHeight;
this.bgImage = bgImage;
this.offset = new FfmPosition(startX, startY);
this.zoomLevel;

this.setPaths = setPaths;
function setPaths(booths)
{
var boothPath = 'booths_gen';
if (ffmConfig.CAN_EDIT) {
if (booths) {
boothPath = 'booths';
} else {
boothPath = 'no_booths';
}
}
this.bgImageConverted = 'mapData/' + this.id + '/' + boothPath + '/fp_bg.jpg';
this.tileImageBasename = 'mapData/' + this.id + '/' + boothPath + '/fp_tile_';
this.viewFinderImage = 'mapData/' + this.id + '/' + boothPath + '/fp_vf.jpg';
}



this.setPaths();

this.toString = toString;
function toString()
{
return 'id = ' + this.id + ', name = ' + this.name + ', abbreviation = ' + this.abbreviation + ', mapWidth = ' + this.mapWidth + ', mapHeight = ' + this.mapHeight + ', bgImage = ' + this.bgImage + ', offset = ' + this.offset + ', zoomLevel = ' + this.zoomLevel;
}
}
