var omT = {

/*





 _       _ _   
(_)     (_) |  
 _ _ __  _| |_ 
| | '_ \| | __|
| | | | | | |_ 
|_|_| |_|_|\__|

                              
*/
init : function() {
	omT.loadStackID = new Array();
	omT.loadStackURL = new Array();
	omT.aImages = new Array();

	omT.mode = 1;
	omT.scrollerX = 0;
	omT.aTW = 0;
	omT.setup("head");
	setTimeout( function() {
		if ( om.url.initial.area.length > 0 ) {
			if ( om.url.initial.group_id != 0 ) {
				if ( om.url.initial.entry_id != 0 ) {
					// initial group + entry
					setTimeout( function() {
						omT.action( "entry_Open", om.url.initial.group_id, om.url.initial.entry_id );
						}, 1000);
				} else {
					// initial group
					setTimeout( function() {
						omT.action( "entry_Open", om.url.initial.group_id, om.url.initial.entry_id );
						}, 1000);
					}
			} else { 
				if ( om.url.initial.entry_id != 0 ) {
					// initial entry
					setTimeout( function() {
						omT.action( "entry_Open", om.url.initial.group_id, om.url.initial.entry_id );
						}, 1000);
					}
				}
			if ( om.url.initial.area == "contact" ) {
				// initial area is contact
				omT.send( "init_ContactArea", "contact" );
			} else {
				// initial area
				omT.send( "init_WorkArea", om.url.initial.area);
				}
		} else {
			// no initial area
			omT.send( "go_Home", "home");
			}
		}, 250);
	},
/*







mode
*/
// mode
// 1 = home
// 2 = contact
// 3 = work scroller
// 4 = open entry
mode : Number,

modeGo : function( mode, delay ) {
	omT.mode = 0;
	setTimeout( "omT.modeNext(" + mode + ")", delay);
	},
	
modeNext : function( m ) {
	omT.mode = m;
	},



/*




            _   _             
           | | (_)            
  __ _  ___| |_ _  ___  _ __  
 / _` |/ __| __| |/ _ \| '_ \ 
| (_| | (__| |_| | (_) | | | |
 \__,_|\___|\__|_|\___/|_| |_|
                              
                              
*/

action : function ( x_action, group_id, entry_id ) {

	// while mode is in transition (0) no action is allowed
	if (omT.mode>0) {

		switch( x_action ) {
	
		case "go_Home":
			omT.mode = 1;
			omT.setup( "home", om.config.area, group_id, entry_id, 0 );
			om.url.pageView(null);
			break;
			
		case "init_WorkArea":
			setTimeout( function() { omT.scrollerSetup(true); }, 175 );
			omT.setup( "workarea", om.config.area, group_id, entry_id, 1 );
			omT.scrollerDo();
			om.url.pageView(om.config.area);
			omT.modeGo(3, 500);
			break;
	
		case "entry_Open":
			omT.scrollerSetup(false);
			omT.setup( "entry", om.config.area, group_id, entry_id, 1 );
			om.url.pageView(om.config.area, group_id, entry_id, om.hashEntry.get(entry_id+".meta_title") );
			omT.modeGo(4, 500);
			break;
			
		case "entry_Jump":
			omT.setup( "entry", om.config.area, group_id, entry_id, 2 );
			om.url.pageView(om.config.area, group_id, entry_id, om.hashEntry.get(entry_id+".meta_title") );
			omT.modeGo(4, 500);
			break;
			
		case "entry_Close":
			omT.setup( "entry", om.config.area, group_id, entry_id, 0 );
			setTimeout( function() { omT.setup( "workarea", om.config.area, null, null, 0 ); }, 200);
			setTimeout( function() { omT.scrollerSetup(true); }, 250 );
			om.url.pageView(om.config.area);
			omT.modeGo(3, 500);
			break;
			
		case "open_Contact":
			omT.setup( "contact", om.config.area, group_id, entry_id, 0 );
			om.url.pageView("contact");
			omT.modeGo(2, 500);
			break;			
			
			}
		}
	},





/*
                    _ 
                   | |
 ___  ___ _ __   __| |
/ __|/ _ \ '_ \ / _` |
\__ \  __/ | | | (_| |
|___/\___|_| |_|\__,_|
                      

*/
send : function ( o_action, area, group_id, entry_id ) {

//	var postBody = "";

	switch( o_action ) {
		case "go_Home":
			om.ajaxGetHomeXML( om.config.url_content + area + "/publish.xml" );
			omT.setup( "clearworkarea" );
			break;
			
		case "init_WorkArea":
			om.ajaxGetAreaXML( om.config.url_content + area + "/publish.xml" );
			omT.setup( "clearworkarea" );
			break;
	
		case "init_WorkArea_Entry":
			break;
			
		case "init_ContactArea":
			omT.setup( "clearworkarea" );
			omT.action("open_Contact");
			break;
		}

	if ( area !== null ) {
		om.config.area = area;
		}

//	om.ajaxSendPost(postBody);

},





/*





          _             _____                    _       _       
         | |           |_   _|                  | |     | |      
 ___  ___| |_ _   _ _ __ | | ___ _ __ ___  _ __ | | __ _| |_ ___ 
/ __|/ _ \ __| | | | '_ \| |/ _ \ '_ ` _ \| '_ \| |/ _` | __/ _ \
\__ \  __/ |_| |_| | |_) | |  __/ | | | | | |_) | | (_| | ||  __/
|___/\___|\__|\__,_| .__/\_/\___|_| |_| |_| .__/|_|\__,_|\__\___|
                   | |                    | |                    
                   |_|                    |_|                    
*/

aImages : Array, // array to hold image objects
aTW : Number, // total width of all images in gallery

homeImage : null,

state : String,
template : String,
entry_id : Number,
prev_entry_id : Number,
h1_MarinaSenra : Object,
c_Works : Object,
h2_Works : Object,
h2_Contact : Object,
h3_People : Object,
h3_Places : Object,
a_BtnLeft : Object,
a_BtnRight : Object,
mIC : Object,

setup : function ( template, area, group_id, entry_id, state ) { 

var el1, el2, el3, el4, el5, el6, el7, el8, el9;
var iW, iH, jW, jH, mW, mH, mR;
var iX, iY, iO, iText;
var nextID, prevID;
var x;

var h1_MarinaSenra, c_Works, h2_Works, h2_Contact, h3_People, h3_Places, a_BtnLeft, a_BtnRight, mIC;

if (!group_id) { group_id = 0; }
if (!entry_id) { entry_id = 0; }
if (!state) { state = 0; }

omT.template = template;
omT.state = state;

switch(template) {

	case "head":
		// title
		omT.h1_MarinaSenra = $("<h1 id='h1_MarinaSenra' class='sprite20 sprite20perm'/>").css("opacity",0).appendTo( om.mC );
			
		// works container
		omT.c_Work = $("<div id='c_Work'/>").appendTo( om.mC );
		omT.c_Work.mouseenter(function(){omT.menu.works("open");});
		omT.c_Work.mouseleave(function(){omT.menu.works("close");});

			// works
			omT.h2_Works = $("<a id='h2_Work' class='sprite20' />").css("opacity",0).appendTo( omT.c_Work );
			omT.h2_Works.css( "top", "0px" );
			omT.h2_Works.css( "left", "0px" );
			
			// people
			omT.h3_People = $("<a id='h3_People' class='sprite10' />").css("opacity",0).appendTo( omT.c_Work );
			omT.h3_People.click(function(){omT.send('init_WorkArea','people');});
			omT.h3_People.mouseover(function(){omT.menu.works("people");});
			omT.h3_People.mouseout(function(){omT.menu.works("none");});
			omT.h3_People.css( "top", "30px" );
			omT.h3_People.css( "left", "0px" );
			
			// places
			omT.h3_Places = $("<a id='h3_Places' class='sprite10' />").css("opacity",0).appendTo( omT.c_Work );
			omT.h3_Places.click(function(){omT.send('init_WorkArea','places');});
			omT.h3_Places.mouseover(function(){omT.menu.works("places");});
			omT.h3_Places.mouseout(function(){omT.menu.works("none");});
			omT.h3_Places.css( "top", "50px" );
			omT.h3_Places.css( "left", "0px" );

			// things
			omT.h3_Things = $("<a id='h3_Things' class='sprite10' />").css("opacity",0).appendTo( omT.c_Work );
			omT.h3_Things.click(function(){omT.send('init_WorkArea','things');});
			omT.h3_Things.mouseover(function(){omT.menu.works("things");});
			omT.h3_Things.mouseout(function(){omT.menu.works("none");});
			omT.h3_Things.css( "top", "70px" );
			omT.h3_Things.css( "left", "0px" );

		// contact
		omT.h2_Contact = $("<a id='h2_Contact' class='sprite20' />").css("opacity",0).appendTo( om.mC );
		omT.h2_Contact.click(function(){omT.send('init_ContactArea','contact');});
		omT.h2_Contact.mouseover(omT.roll.over20);
		omT.h2_Contact.mouseout(omT.roll.out20);

		// appear them all
		omT.h1_MarinaSenra.animate( { opacity: 1 }, 1500);
		omT.h2_Works.animate( { opacity: 1 }, 1500);
		omT.h2_Contact.animate( { opacity: 1 }, 1500);
		break;

	case "home":
		// select a random _id:
		omT.entry_id = om.indexEntry[ Math.floor(Math.random() * om.indexEntry.length ) ];

		// the ideal entry image size
		iX = omT.entryImageSize(omT.entry_id);
		iW = iX[0];
		iH = iX[1];
		
		// create home image
		iO = omT.imagePreLoader( "img_home", om.config.url_content + area + "/" + omT.entry_id + "_large.jpg?refresh=" + Math.floor(Math.random() * 99999 ).toString(), iW, iH, "img_home" ).addClass("homeImage removeWithArea").css("opacity",0).appendTo(om.mC);

		iO.animate( { opacity: 1 }, 450);
		omT.homeImage = iO;
		iO.css("top", Number(om.mH + om.mH + 20).toString() + "px");
		iO.css("left", Number(om.mW).toString() + "px");

		// the copyright
		el1 = $("<div id='entryCopyright' class='removeWithArea'>&copy;&nbsp;" + om.config.meta_copyright + "</div>").appendTo( om.mC ).css("opacity",0);
		$("#entryCopyright").css("left", Number(om.mW).toString() + "px");
		$("#entryCopyright").css("top", Number(iH + om.mH + om.mH + 40).toString() + "px" );
		$("#entryCopyright").animate( { opacity: 1 }, 450);

		break;

	case "contact":
		iText = "<h2>" + om.config.meta_contact_name + "</h2><h3>" + om.config.meta_contact_phone + "</h3><h3>" + om.config.meta_contact_address + "</h3><h3><a href=\"mailto:" + om.config.meta_contact_email + "\">" + om.config.meta_contact_email + "</a></h3>\n";
		el1 = $("<div id='contactContent' class='removeWithArea' />").appendTo( om.mC ).css("opacity",0).animate( { opacity: 1 },  450 ).html( iText );
		el1.css("right", Number(om.mW).toString() + "px");
		el1.css("top", Number(om.mH + om.mH + om.mH + 20).toString() + "px");
		break;

	case "clearworkarea":
		$(".removeWithArea").remove();
		break;
		
	case "workarea":
		if(state==1) {
			omT.aImages = new Array();
			omT.a_BtnLeft = $("<a id='a_BtnLeft' class='removeWithArea sprite14' />").appendTo( om.mC ).css("opacity",0);
			omT.a_BtnRight = $("<a id='a_BtnRight' class='removeWithArea sprite14' />").appendTo( om.mC ).css("opacity",0); 
			el1 = $("<div id='entryCardRight' class='removeWithArea' />").appendTo( om.mC ).css("opacity",0);
			el1 = $("<div id='entryCopyright' class='removeWithArea'>&copy;&nbsp;" + om.config.meta_copyright + "</div>").appendTo( om.mC ).css("opacity",0);
			omT.mIC = $("<div id='mIC' class='removeWithArea' />").css("top",Number( om.mH + om.mH + 20 ).toString() + "px").css("left",om.mW.toString()+"px").appendTo( om.mC );

			omT.aTW = 0; // reset total-gallery-width for recalculation
			$.each(om.indexEntry,function(i){ var _id = om.indexEntry[i];
				omT.aImages.push(_id);

				// the ideal workarea image size
				iX = omT.workareaImageSize(_id);
				iW = iX[0];
				iH = iX[1];

				el1 = omT.imagePreLoader( "img_"+_id, om.config.url_content + area + "/" + _id + "_large.jpg?refresh=" + Math.floor(Math.random() * 99999 ).toString(), iW, iH, _id ).addClass("workImage removeWithArea").css("opacity",0).appendTo(omT.mIC);
				el1.click(function(event) {
					omT.imageClick($(event.target).attr("name"));
					});

				el1.css("top", "0px");
				el1.css("left", Number( omT.aTW ).toString() + "px");
				el1.animate( { opacity: 1 },  450 );

				// store X position
				om.hashEntry.set(_id.toString()+".mIC_x", omT.aTW)

				// add to calculated total
				omT.aTW += (iW + om.mW);

				});
			// subtract the one extra gap
			omT.aTW -= om.mW;
		} else {
			$.each(omT.aImages,function(i){ var _id = omT.aImages[i];
				iO = $("#img_" + _id);

				// the ideal workarea image size
				var iX = omT.workareaImageSize(_id);
				iW = iX[0];
				iH = iX[1];
				
				iO.css("width", iW.toString()+"px");
				iO.css("height", iH.toString()+"px");
				iO.animate( { opacity: 1 },  450 );

				});
			}
		break;
		
	case "entry":

		prevID = om.indexEntry[ om.indexEntry.indexOf(entry_id.toString())-1 ];
		if ( prevID !== null && prevID > 0) {
			omT.prevID = prevID;
			omT.a_BtnLeft.click(function(){
				omT.action('entry_Jump', null, omT.prevID);
				});
			omT.a_BtnLeft.removeClass("sprite14off");
			omT.a_BtnLeft.addClass("sprite14");
		} else {
			omT.a_BtnLeft.unbind("click");
			omT.a_BtnLeft.removeClass("sprite14");
			omT.a_BtnLeft.addClass("sprite14off");
			}

		nextID = om.indexEntry[ om.indexEntry.indexOf(entry_id.toString())+1 ];
		if ( nextID !== null && nextID > 0) {
			omT.nextID = nextID;
			omT.a_BtnRight.click(function(){
				omT.action('entry_Jump', null, omT.nextID);
				});
			omT.a_BtnRight.removeClass("sprite14off");
			omT.a_BtnRight.addClass("sprite14");
		} else {
			omT.a_BtnRight.unbind("click");
			omT.a_BtnRight.removeClass("sprite14");
			omT.a_BtnRight.addClass("sprite14off");
			}

		omT.prev_entry_id = omT.entry_id;
		if (entry_id!==null) { omT.entry_id = entry_id; }

		switch(state) {
		case 1: // transition from work area to entry

			iO = $("#img_" + entry_id);

			// THE ENTRY TO BE OPENED

			// the ideal entry image size
			var iX = omT.entryImageSize(entry_id);
			iW = iX[0];
			iH = iX[1];

			// move the imageContainer
			omT.mIC.delay(200).animate({
				left: Number(om.mW - om.hashEntry.get(entry_id.toString()+".mIC_x")).toString() + "px"
				}, 250);

			// scale the image
			iO.delay(200).animate({
				width: iW.toString()+"px",
				height: iH.toString()+"px",
				}, 250);
			
			// button prev
			omT.a_BtnLeft.css("left", Number(iW + om.mW + 20).toString() + "px");
			omT.a_BtnLeft.css("top", Number(om.mH + om.mH + 25).toString() + "px");
			omT.a_BtnLeft.delay(220).animate( { opacity: 1 },  250 );

			// button next
			omT.a_BtnRight.css("left", Number(iW + om.mW + 44).toString() + "px");
			omT.a_BtnRight.css("top", Number(om.mH + om.mH + 25).toString() + "px");
			omT.a_BtnRight.delay(240).animate( { opacity: 1 },  250 );

			// the description card
			iText = omT.descriptionCardText(entry_id);
			$("#entryCardRight").css("left", Number(iW + om.mW + 20 ).toString() + "px");
			$("#entryCardRight").css("top", Number(Math.max( iH, 95 ) + om.mH + om.mH - 55).toString() + "px");
			$("#entryCardRight").delay(260).animate( { opacity: 1 },  250 );
			$("#entryCardRight").html(iText);

			// the copyright
			$("#entryCopyright").css("left", Number(om.mW).toString() + "px");
			$("#entryCopyright").css("top", Number(iH + om.mH + om.mH + 40).toString() + "px");
			$("#entryCopyright").delay(280).animate( { opacity: 1 },  250 );

			// make all the other images go away
			// should be replaced with a slick jquery select, img_* wildcard minus img_entry_id
			$.each(omT.aImages,function(i){ var _id = omT.aImages[i]; if ( _id != entry_id ) { $("#img_" + _id).animate( { opacity: 0 }, 200); } });
			break;
		case 2: // transition from entry to entry
			// get the previous 
			iO = $("#img_" + omT.prev_entry_id);
			// the ideal workarea image size
			var iX = omT.workareaImageSize(omT.prev_entry_id);
			iW = iX[0];
			iH = iX[1];
			// hide the image
			iO.css("opacity", 0);

			// get the current image
			iO = $("#img_" + entry_id);		
			// the ideal entry image size
			var iX = omT.entryImageSize(entry_id);
			iW = iX[0];
			iH = iX[1];
			// scale the image
			iO.css({
				"width": iW.toString()+"px",
				"height": iH.toString()+"px"
				});

			// fade in the image
			iO.animate({
				opacity: 1
				}, 450);

			// move the imageContainer
			omT.mIC.css({
				"left": Number(om.mW - om.hashEntry.get(entry_id.toString()+".mIC_x")).toString() + "px"
				});
			
			// button prev
			$("#a_BtnLeft").css({
				"left": Number( om.mW + iW + 20 ).toString()+"px",
				"top": Number( om.mH + om.mH + 25 ).toString()+"px"
				});

			// button next
			$("#a_BtnRight").css({
				"left": Number( om.mW + iW + 44 ).toString()+"px",
				"top": Number( om.mH + om.mH + 25 ).toString()+"px"
				});

			// the description card
			iText = omT.descriptionCardText(entry_id);
			$("#entryCardRight").css({
				"left": Number( om.mW + iW + 20 ).toString()+"px",
				"top": Number( Math.max( iH, 95 ) + om.mH + om.mH - 55 ).toString()+"px"
				});
			$("#entryCardRight").html(iText);

			// the copyright
			$("#entryCopyright").css({
				"left": Number( om.mW ).toString()+"px",
				"top": Number( iH + om.mH + om.mH + 40 ).toString()+"px"
				});

			break;
		default:
			$("#a_BtnLeft").animate( { opacity: 0 }, 200);
			$("#a_BtnRight").animate( { opacity: 0 }, 200);
			$("#entryCardRight").animate( { opacity: 0 }, 200);
			$("#entryCopyright").animate( { opacity: 0 }, 200);

			// get the current image
			iO = $("#img_" + omT.entry_id);
			// the ideal workarea image size
			var iX = omT.workareaImageSize(omT.entry_id);
			iW = iX[0];
			iH = iX[1];
			// hide the image
			iO.animate({
				width: iW.toString()+"px",
				height: iH.toString()+"px",
				}, 200);
/*

			iX = omT.scrollerX ? (omT.scrollerX + om.mW) : 0;

			$.each(omT.aImages,function(i){ var _id = omT.aImages[i];

				// the ideal workarea image size
				var iX = omT.workareaImageSize(_id);
				iW = iX[0];
				iH = iX[1];

				if ( _id == entry_id ) {
					iO = $("#img_" + entry_id);
					iO.animate({
						width: iW.toString()+"px",
						height: iH.toString()+"px",
						}, 50);
					}

				iX += iW + om.mW;
				});

*/

			break;
			}
		break;

	}
},
/*






setup scroller

*/

scrollerInterval : Number,
scrollerX : Number,
scrollerOn : Boolean,
scrollterTime : Number,

scrollerSetup : function( activate ) {
	if (activate) {
		omT.scrollerOn = true;
		omT.scrollerX = 0;
		/* interval method
		omT.scrollerTime = 100;
		scrollerInterval = setInterval( "omT.scrollerDo()", omT.scrollerTime );
		*/
	} else {
		omT.scrollerOn = false;
		/* interval method
		clearInterval(scrollerInterval);
		*/
		}
	},

scrollerDo : function() {	if (omT.scrollerOn==true) {

	/* calculate the delta from here to target */
	var D = ( 0 - ( ( /* scroll amount in floating point 0 to 1 */ Math.min( 1, Math.max( 0, ( om.pX - om.mW ) ) / ( om.vW - om.mW - om.mW ) ) ) /* max scroll distance */ * ( omT.aTW - ( om.vW - om.mW - om.mW ) ) ) ) /* relative to current position */ - omT.scrollerX;

	/* dampen the motion towards target */
	omT.scrollerX += ( D * 0.2 );

	/* execute */
//	omT.mIC.animate( { left: Number(omT.scrollerX + om.mW).toString()+"px" }, omT.scrollerTime, 'linear' );
	omT.mIC.css( "left", Number(omT.scrollerX + om.mW).toString()+"px" );

	} },


/*






setup scroller

*/

imageClick : function( _id ) {
	switch(omT.mode) {
		case 3:
			omT.action("entry_Open",null,_id);
			break;
		case 4:
			omT.action("entry_Close",null,_id);
			break;
		}
	},

/*





             _   _ _                                _   _____ _                            
            | | | (_)                              | | /  __ \ |                           
  ___  _ __ | | | |_  _____      ___ __   ___  _ __| |_| /  \/ |__   __ _ _ __   __ _  ___ 
 / _ \| '_ \| | | | |/ _ \ \ /\ / / '_ \ / _ \| '__| __| |   | '_ \ / _` | '_ \ / _` |/ _ \
| (_) | | | \ \_/ / |  __/\ V  V /| |_) | (_) | |  | |_| \__/\ | | | (_| | | | | (_| |  __/
 \___/|_| |_|\___/|_|\___| \_/\_/ | .__/ \___/|_|   \__|\____/_| |_|\__,_|_| |_|\__, |\___|
                                  | |                                            __/ |     
                                  |_|                                           |___/      

*/
onViewportChange : function() {

	// title
	omT.h1_MarinaSenra.css("top", Number( om.mH ).toString() + "px");
	omT.h1_MarinaSenra.css("left", Number( om.mW ).toString() + "px");

	// menu: works
	omT.c_Work.css("top", Number( om.mH ).toString() + "px");
//	omT.c_Work.css("left", Number( Math.max( om.mW + 364,  om.vW / 2 ) ).toString() + "px");
	omT.c_Work.css("left", Number( om.mW + 350 + ( ( om.vW - 570 - ( om.mW * 2 ) ) / 2 ) ).toString() + "px");

	// menu: contact
	omT.h2_Contact.css("top", Number( om.mH ).toString() + "px");
	omT.h2_Contact.css("right", Number( om.mW ).toString() + "px");

	switch(omT.template) {
		case "workarea":
			if (omT.scrollerOn) {
			omT.mIC.css("top", Number( om.mH + om.mH + 20 ).toString() + "px");
			}
			break;
		case "home":
			if ( omT.homeImage !== null ) {
				// the ideal entry image size
				iX = omT.entryImageSize(omT.entry_id);
				iW = iX[0];
				iH = iX[1];
				omT.homeImage.css("width", Number(iW).toString() + "px");
				omT.homeImage.css("height", Number(iH).toString() + "px");
				omT.homeImage.css("top", Number(om.mH + om.mH + 20).toString() + "px");
				omT.homeImage.css("left", Number(om.mW).toString() + "px");
				}
			break;
		case "entry":
			if (omT.state==1 || omT.state==2) {
				iO = $("#img_" + omT.entry_id);
			
				// the ideal entry image size
				var iX = omT.entryImageSize(omT.entry_id);
				iW = iX[0];
				iH = iX[1];
				
				// transform the image
				iO.css( "width", iW.toString()+"px" );
				iO.css( "height", iH.toString()+"px" );

				omT.mIC.css("left", Number(om.mW - Number(iO.css("left").split("px")[0])).toString() + "px");
				omT.mIC.css("top", Number( om.mH + om.mH + 20 ).toString() + "px");
	
				// desc card
				$("#entryCardRight").css("left", Number(om.mW + iW + 20 ).toString() + "px");
				$("#entryCardRight").css("top", Number( Math.max( iH, 95 ) + om.mH + om.mH - 55).toString() + "px");
	
				// button prev
				$("#a_BtnLeft").css("left", Number( om.mW + iW + 20 ).toString() + "px");
				$("#a_BtnLeft").css("top", Number( om.mH + om.mH + 25 ).toString() + "px");
	
				// button next
				$("#a_BtnRight").css("left", Number( om.mW + iW + 44 ).toString() + "px");
				$("#a_BtnRight").css("top", Number( om.mH + om.mH + 25 ).toString() + "px");
	
				// the copyright
				$("#entryCopyright").css("left", Number( om.mW ).toString() + "px");
				$("#entryCopyright").css("top", Number( iH + om.mH + om.mH + 40 ).toString() + "px");
				
				}
		
			break;
		case "contact":
			$('#contactContent').css("right", Number(om.mW).toString() + "px");
			$('#contactContent').css("top", Number(om.mH + om.mH + om.mH + 20).toString() + "px");
			break;
			}

	},
/*









 _ _ _   _   _        _          _                     
| (_) | | | | |      | |        | |                    
| |_| |_| |_| | ___  | |__   ___| |_ __   ___ _ __ ___ 
| | | __| __| |/ _ \ | '_ \ / _ \ | '_ \ / _ \ '__/ __|
| | | |_| |_| |  __/ | | | |  __/ | |_) |  __/ |  \__ \
|_|_|\__|\__|_|\___| |_| |_|\___|_| .__/ \___|_|  |___/
                                  | |                  
                                  |_|                  

*/

loadStackID : Array,
loadStackURL : Array,

imagePreLoader : function( iD, iURL, iW, iH, iName ) {
	var i = $("<img id='" + iD + "' src='/assets/img/loading-base.jpg' name='" + iName + "' />");
	i.css("width",iW.toString()+"px");
	i.css("height",iH.toString()+"px");
	omT.loadStackID.push( iD ); omT.loadStackURL.push( iURL );
	setTimeout( function() { omT.imageLoader(omT.loadStackID.shift(),omT.loadStackURL.shift()); }, 100 );
	return i;
	},

imageLoader : function( iD, iURL ) {
	$("#"+iD).attr("src", iURL)	;
	},

descriptionCardText : function(_id) {
	// the description card
	var iText = "";
	// title & year
		if (om.hashEntry.get(_id+".meta_title")) { iText += om.hashEntry.get(_id+".meta_title"); } else { iText += ""; }
		if (om.hashEntry.get(_id+".meta_year")) { iText += ", " + om.hashEntry.get(_id+".meta_year"); }
		iText += "<br/>";
	// materials
		if (om.hashEntry.get(_id+".meta_materials")) { iText += om.hashEntry.get(_id+".meta_materials")  + "<br/>";}
	// height x width
	if (om.hashEntry.get(_id+".meta_size_height_inches") && om.hashEntry.get(_id+".meta_size_width_inches")) { iText += om.hashEntry.get(_id+".meta_size_height_inches") + " x " + om.hashEntry.get(_id+".meta_size_width_inches") + " inches<br/>"; }
	// special materials info
	if (om.hashEntry.get(_id+".meta_size_special")) { iText += om.hashEntry.get(_id+".meta_size_special");}
	return iText;
	},

workareaImageSize : function(_id) {
	// from CMS size
	mW = Number(om.hashEntry.get(_id.toString()+".media_width"));
	mH = Number(om.hashEntry.get(_id.toString()+".media_height"));
	mR = mH/mW; // ratio
	
	if (mR>2) {
		iH = 360;
	} else if(mR>1) {
		iH = 270;
	} else if(mR>0.5) {
		iH = 180;
	} else {
		iH = 90;
		}
	iW = Math.floor(mW * (iH / mH));

	if (!iW) { iW = 0; iH = 0; }

	return Array( Math.floor(iW), Math.floor(iH) );
	},

entryImageSize : function(_id) {
	// from CMS size
	var mW = Number(om.hashEntry.get(_id+".media_width"));
	var mH = Number(om.hashEntry.get(_id+".media_height"));
	var mR = mH / mW; // ratio
	
	// what size it would be scaled to full width
	var iW = (om.vW - om.mW - om.mW - 200);
	var iH = iW * mR;
	// what size it would be scaled to full height
	var jH = (om.vH - om.mH - om.mH - om.mH - 25);
	// but if j height is smaller, use it
	if (jH < iH) {
		iH = jH;
		iW = jH / mR;
		}

	// display size percent multiplier
	var mult = Number(om.hashEntry.get(_id+".meta_size_displaypercent")) / 100;

	if (mult>0) { /* do nothing */ } else { mult = 1; }

	iH = iH * mult;
	iW = iW * mult;
	
	return Array( Math.floor(iW), Math.floor(iH) );
	},

menu : {
	works : function(state) { 
		switch(state) {
			case "close":
				omT.h2_Works.removeClass("sprite20on");
				omT.h3_People.animate( { opacity: 0 }, 450 );
				omT.h3_Places.animate( { opacity: 0 }, 450 );
				omT.h3_Things.animate( { opacity: 0 }, 450 );
				break;
			case "open":
				omT.h2_Works.addClass("sprite20on");omT.menu.hideWorks
				omT.h3_People.animate( { opacity: 1 } );
				omT.h3_Places.animate( { opacity: 1 } );
				omT.h3_Things.animate( { opacity: 1 } );
				break;
			case "none":
				omT.h3_People.removeClass("sprite10on");
				omT.h3_Places.removeClass("sprite10on");
				omT.h3_Things.removeClass("sprite10on");
				break;
			case "people":
				omT.h3_People.addClass("sprite10on");
				omT.h3_Places.removeClass("sprite10on");
				omT.h3_Things.removeClass("sprite10on");
				break;
			case "places":
				omT.h3_Places.addClass("sprite10on");
				omT.h3_People.removeClass("sprite10on");
				omT.h3_Things.removeClass("sprite10on");
				break;
			case "things":
				omT.h3_Things.addClass("sprite10on");
				omT.h3_Places.removeClass("sprite10on");
				omT.h3_People.removeClass("sprite10on");
				break;
			}
		},

	showWorks : function() { if (!$("#h2_Works").hasClass("sprite20on")) {
		$("#h2_Works").addClass("sprite20on");
		$("#h3_People").animate( { opacity: 1 } );
		$("#h3_Places").animate( { opacity: 1 } );
		$("#h3_Things").animate( { opacity: 1 } );
		}},
	hideWorks : function() { if ($("#h2_Works").hasClass("sprite20on")) {
		$("#h2_Works").removeClass("sprite20on");
		$("#h3_People").animate( { opacity: 0 }, 450 );
		$("#h3_Places").animate( { opacity: 0 }, 450 );
		$("#h3_Things").animate( { opacity: 0 }, 450 );
		}}
	},

roll : {
	over20 : function( event ) {
		$(event.target).addClass("sprite20on");
		},
	out20 : function( event ) {
		$(event.target).removeClass("sprite20on");
		},
	over10 : function( event ) {
		$(event.target).addClass("sprite10on");
		},
	out10 : function( event ) {
		$(event.target).removeClass("sprite10on");
		}
	}

};