/************************************************

$(function() {
    $(".slider").slider(
    {   orientation: 'vertical',
        change: handleChange,
        slide: handleSlide,
        min: -100,
        max: 0
    });
});

function handleChange(e, ui) {
    var maxScroll = $(".scroller")
      .attr("scrollHeight") -
      $(".scroller").height();
    $(".scroller")
      .animate({ scrollTop: -ui.value *
     (maxScroll / 100)
      }, 1000);

}

function handleSlide(e, ui) {
    var maxScroll = $(".scroller")
      .attr("scrollHeight") -
      $(".scroller").height();
    $(".scroller")
      .attr({ scrollTop: -ui.value
        * (maxScroll / 100)
      });
}
  
******************************************************************************************************/



// ---------------------------------- start: ddd

// start: Loader
var Loader=
{
	_objId: '', // div that is to follow the mouse
                    // (must be position:absolute)
					
	_offX: 0, // X offset from mouse position
	_offY: 0, // Y offset from mouse position

	_timeoutId:0,

	_objLoadStyle: null,
	
	init: function(objId, offX, offY)
	{
		Loader._objId = objId;
		Loader._offX = offX;
		Loader._offY = offY;
		
		Loader._objLoadStyle=document.getElementById(Loader._objId).style;
		
		document.onclick=Loader._setCoord;
	},

	show: function()
	{
		Loader._timeoutId = setTimeout(Loader._showLoader, 1); //500

	//	Loader._showLoader();
	},

	hide: function()
	{
		if(Loader._timeoutId)
		{
			clearTimeout( 	Loader._timeoutId );
		}
		
		$('#'+Loader._objId).addClass('displaynone');
		
		document.onmousemove = null;
	},

	_showLoader: function()
	{
		document.onmousemove = Loader._follow;
		
		$('#'+Loader._objId).removeClass('displaynone');
	},

	
	_setCoord: function(evt)
	{
		Loader._objLoadStyle.left = (parseInt(Loader._mouseX(evt))+Loader._offX) + 'px';
		Loader._objLoadStyle.top = (parseInt(Loader._mouseY(evt))+Loader._offY) + 'px';
	},
	
	_follow: function(evt)
	{
		Loader._objLoadStyle.visibility = 'visible';
		Loader._objLoadStyle.left = ( parseInt(Loader._mouseX(evt)) + Loader._offX ) + 'px';
		Loader._objLoadStyle.top = ( parseInt(Loader._mouseY(evt)) + Loader._offY ) + 'px';
	},
	
	
	_mouseX: function(evt)
	{
		if (!evt)
			evt = window.event;
	
		if (evt.pageX)
			return evt.pageX;
		else if (evt.clientX)
			return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft);
		else
			return 0;
	
	},
	
	_mouseY: function(evt)
	{
		if (!evt) evt = window.event;
	
		if (evt.pageY)
			return evt.pageY;
		else if (evt.clientY)
			return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		else
			return 0;
	}
};
// end: Loader


var Position=
{
	_googleMapDiv:null,
	_maxW:0,
	_maxH:0,
	_offsetX: 0,
	_offsetY: 0,

	init: function()
	{
		Position._googleMapDiv=$('#google_map:first');
		
		Position._maxW = Position._googleMapDiv.width();
		Position._maxH = Position._googleMapDiv.height();
		
		Position._offsetX= Position._googleMapDiv.offset().left;
		Position._offsetY= Position._googleMapDiv.offset().top;
	},
	
	setCookie: function(cookieName, pos)
	{
		var val=pos[0] + ',' + pos[1];
		if(cookieDomain != '')
			$.cookie( cookieName, val, {expires: 365, path:'/', domain: cookieDomain} );
		else
			$.cookie( cookieName, val, {expires: 365, path:'/'} );
	},

	getCookie: function(cookieName, dialogNum, w, h, parentDialog)
	{
		var res= new Array();
		
		if( parentDialog && parentDialog.isOpen() )
		{
			var pos=parentDialog.pos();
			

			res[0]= pos[0] + 10;
			res[1]= pos[1] + 30;
		}
		else
		{
			res[0]= Position._offsetX + 10 + ((dialogNum-1) * 10);
			res[1]= Position._offsetY + 10 + ((dialogNum-1) * 30);
		}


		var val=$.cookie( cookieName );
		
		if(!val)
			return res;
		
		var p=val.indexOf(',', 0);
		
		if(p<=0)
			return res;
		
		var x=parseInt( val.substr(0, p) );
		var y=parseInt( val.substr(p+1, val.length) );
		
		if(isNaN(x) || isNaN(y) || x<0 || y<0)
		{
			return res;
		}
		
		res[0]=x;
		res[1]=y;
		
		res=Position.checkCoordinates(res, w, h);
		
		return res;
	},
	
	checkCoordinates: function(pos, w, h)
	{
		var res=pos;
		
		
		if(res[0]<0)
			res[0]=0;
			
		if(res[1]<0)
			res[1]=0;
		
		if(res[0]==0 || res[1]==0 || w<=0 || h<=0)
			return res;
		
		if(res[0] + w - Position._offsetX > Position._maxW )
		{
			res[0]= Position._maxW + Position._offsetX - w  -1;
			
			if(res[0]<0)
				res[0]=0;
		}
		
		if(res[1] + h - Position._offsetY > Position._maxH )
		{
			res[1]= Position._maxH + Position._offsetY - h -1;
			
			if(res[1]<0)
				res[1]=0;
		}
		
		return res;
	}

};


// start: BookSearch
var BookSearch=
{
	_dialogObj:null,
	_scrollerObj:null,
	
	_pos: [0,0],
	_width: 332,
	_height: 328, //303
	
	init: function()
	{
		BookSearch._dialogObj = $('#book_search_dialog');
		
		
		BookSearch._dialogObj.dialog({
					
					resizable: false,
					autoOpen: false,
					title: 'Zoeken',
					width:332,
					
					dragStop:BookSearch._onDragStopAction,
					close: BookSearch._onCloseAction
				});
		
		
		BookSearch._dialogObj.find('ul.ghost_tabs li a').click( function() { BookSearch._onClickTab(this); } );
		
		$('a#link1').click( function() {BookSearch.open(); return false;} );
		
		// privremeno
		//BookSearch._dialogObj.find('a.close_ghost').click( function() { BookSearch.close(this); } );
		
		
		BookSearch._scrollerObj=BookSearch._dialogObj.find('.scroller');
		
		BookSearch._dialogObj.find('.slider').slider(
											{
												orientation: 'vertical',
												change: BookSearch._handleChange,
												slide: BookSearch._handleSlide,
												min: -100,
												max: 0
											});
		
	},
	
	open: function()
	{
		BookSearch._pos = Position.getCookie('book_search', 1, BookSearch._width, BookSearch._height, null);
		BookSearch._dialogObj.dialog('option', 'position', BookSearch._pos);
		
		BookSearch._dialogObj.dialog('open');
	},
	
	isOpen: function()
	{
		return BookSearch._dialogObj.dialog('isOpen');
	},
	
	close: function()
	{
		if(!BookSearch._dialogObj.dialog('isOpen'))
			return;
		
		BookSearch._dialogObj.dialog('close');
	},
	
	search: function()
	{
		var needle=BookSearch._dialogObj.find('input[type=text][name=book_search]').val();
		
		if(needle=='')
			return false;
		
		var o=BookSearch._dialogObj.find('ul.ghost_tabs li a.current');
		
		if(o.hasClass('tab1'))
			mode='text';
		else
			mode='isbn';

		BookSearch._submitSearch(needle, mode);
		return false;
	},
	
	_submitSearch: function(needle, mode)
	{
		Loader.show();
		fwajax.phpExecute(
						  {url:'/xbook/cosmox-search'},
						  needle,
						  mode
						 );
		
	},
	
	callbackSearch: function(html)
	{
		var contentScrollerObj=BookSearch._dialogObj.find('div.content_scroller');
		
		contentScrollerObj.html(html);

		Loader.hide();
		
		contentScrollerObj.find('img').error( function() { fixThumbUrl(this); } );
		
		var sliderObj=BookSearch._dialogObj.find('.slider');

		// reset slider
		sliderObj.slider('option', 'value', 0);
		BookSearch._scrollerObj.attr({ scrollTop: 0 });
		
		if( totalHeight(contentScrollerObj) > 208  ) 
		{
			sliderObj.show();
		}
		else
		{
			sliderObj.hide();
		}
	},

	_onCloseAction: function()
	{
		//alert('adio');
	},
	
	_onClickTab: function(aDom)
	{
		BookSearch._dialogObj.find('ul.ghost_tabs li a').removeClass('current');
		$(aDom).addClass('current');
		return false;
	},
	
	displayBook: function(isbn)
	{
		var obj=$('#book_search_' + isbn);
		
		if(!obj.length)
			return false;
		
		var title='';
		var description='';
		var author='';
		var thumbUrl='';
		
		t=obj.find('.title');
		if(t.length)
			title=t.text();
			
		t=obj.find('.description');
		if(t.length)
			description=t.text();
			
		t=obj.find('.author');
		if(t.length)
			author=t.text();
			
		t=obj.find('img');
		if(t.length)
			thumbUrl=t.attr('src');

		BookDisplay.open(isbn, title, author, thumbUrl, description);
		
		return false;
	},
	
	
	_handleChange: function(e, ui)
	{
		var maxScroll = BookSearch._scrollerObj.attr("scrollHeight") -  BookSearch._scrollerObj.height();
		
		BookSearch._scrollerObj.animate(
							   { scrollTop: -ui.value *	 (maxScroll / 100) },
							   1000
							  );

	},

	_handleSlide:function(e, ui)
	{
		var maxScroll = BookSearch._scrollerObj.attr("scrollHeight") -  BookSearch._scrollerObj.height();
		BookSearch._scrollerObj.attr(
							{ scrollTop: -ui.value * (maxScroll / 100) }
						);
	},
	
	_onDragStopAction: function(event, ui)
	{
		BookSearch._pos[0]=ui.position.left;
		BookSearch._pos[1]=ui.position.top;
		
		Position.setCookie('book_search', BookSearch._pos, BookSearch._width, BookSearch._height);
	},
	
	pos: function()
	{
		return BookSearch._pos;
	}
};
// end: BookSearch

// start: BookDisplay
var BookDisplay=
{
	_dialogObj: null,
	
	_isbn: '',
	_title: '',
	_author: '',
	_thumbUrl: '',
	_description: '',
	_bookId: 0,
	
	_scrollerInfoObj: null,
	_scrollerLocationsObj: null,
	_scrollerTwitterObj: null,
	
	_pos: [0, 0],
	_width: 332,
	_height: 365, //340,
	
	init: function()
	{
		BookDisplay._dialogObj=$('#book_display_dialog');
		
		BookDisplay._dialogObj.dialog({
							
							resizable: false,
							autoOpen: false,
							title: 'Boek op de kaart',
							width:332,
							
							dragStop:BookDisplay._onDragStopAction,
							close: BookDisplay._onCloseAction
						});
	},
	
	// postavi doNotInsertFlag u slucaju kada "znam" da je knjiga u bazi (otvaram iz markera)
	open: function(isbn, title, author, thumbUrl, description, insertFlag, locationId)
	{
		if(isbn=='')
		{
			BookDisplay._clearBookData();
			return;
		}
		
		if(typeof(insertFlag)=='undefined')
		{
			insertFlag=true;
		}
		
		if(typeof(locationId)=='undefined')
		{
			locationId=0;
		}
		
		BookDisplay._isbn=isbn;
		BookDisplay._title=title;
		BookDisplay._author=author;
		BookDisplay._thumbUrl=thumbUrl;
		BookDisplay._description=description;
		BookDisplay._bookId=0;
		
		BookDisplay._submitBookSearchNivasDb(insertFlag, locationId);
	},

	isOpen: function()
	{
		return BookDisplay._dialogObj.dialog('isOpen');
	},

	close: function()
	{
		if(!BookDisplay._dialogObj.dialog('isOpen'))
			return;
		
		BookDisplay._dialogObj.dialog('close');
	},
	
	_submitBookSearchNivasDb: function(insertFlag, locationId)
	{
		Loader.show();
		fwajax.phpExecute(
							{url:'/xbook/isbn-search'},
							BookDisplay._isbn,
							BookDisplay._title,
							BookDisplay._author,
							BookDisplay._thumbUrl,
							BookDisplay._description,
							insertFlag,
							locationId
						  );
	},
	
	_callbackBookSearchNivasDb: function(bookId, bookName, html)
	{
		Loader.hide();

		if(bookId==0 || html=='')
		{
			//alert('Book Error (BookDisplay._callbackBookSearchNivasDb)'); // book not found
			return;
		}
		
		BookDisplay._bookId=bookId;
		BookDisplay._title=bookName;
		
		BookDisplay.close();
		
		BookNewLocation.close();
		
		$('#holder_book_display_dialog').html(html);
		
		BookDisplay._dialogObj.find('#holder_book_display_dialog p.book_name img.bookimg').error( function() { this.src='/images/noimg_60_85.gif'; this.width=51; this.height=72;} );
		
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// book locations slider
		BookDisplay._scrollerLocationsObj=BookDisplay._dialogObj.find('#book_display_locations .scroller_small');
		BookDisplay._dialogObj.find('#book_display_locations .slider').slider(
											{
												orientation: 'vertical',
												change: BookDisplay._handleLocationsChange,
												slide: BookDisplay._handleLocationsSlide,
												min: -100,
												max: 0
											});
		
		
		
		// book info slider
		BookDisplay._scrollerInfoObj=BookDisplay._dialogObj.find('#book_display_info .scroller_alt');
		BookDisplay._dialogObj.find('#book_display_info .slider').slider(
											{
												orientation: 'vertical',
												change: BookDisplay._handleInfoChange,
												slide: BookDisplay._handleInfoSlide,
												min: -100,
												max: 0
											});
		
		
		// book twitter slider
		BookDisplay._scrollerTwitterObj=BookDisplay._dialogObj.find('#book_display_twitter .scroller_alt');
		BookDisplay._dialogObj.find('#book_display_twitter .slider').slider(
											{
												orientation: 'vertical',
												change: BookDisplay._handleTwitterChange,
												slide: BookDisplay._handleTwitterSlide,
												min: -100,
												max: 0
											});

		
		//////////////////////////////////////////////
		
		BookDisplay._pos = Position.getCookie('book_display', 2, BookDisplay._width, BookDisplay._height, BookSearch);
		BookDisplay._dialogObj.dialog('option', 'position', BookDisplay._pos);
		
		BookDisplay._dialogObj.find('a.ext').attr('target', '_blank');
		
		BookDisplay._dialogObj.dialog('open');


		// pokazujem / skrivam slider
		if(BookDisplay._scrollerLocationsObj.height()  < totalHeight( BookDisplay._scrollerLocationsObj.find('.content_scroller') ) )
		{
			BookDisplay._dialogObj.find('#book_display_locations .slider').show();
		}
		else
		{
			BookDisplay._dialogObj.find('#book_display_locations .slider').hide();
		}
		
		if(BookDisplay._scrollerInfoObj.height() < totalHeight(BookDisplay._scrollerInfoObj.find('.content_scroller')) )
		{
			BookDisplay._dialogObj.find('#book_display_info .slider').show();
		}
		else
		{
			BookDisplay._dialogObj.find('#book_display_info .slider').hide();
		}
		
		if(BookDisplay._scrollerTwitterObj.height()  < totalHeight(BookDisplay._scrollerTwitterObj.find('.content_scroller') ) )
		{
			BookDisplay._dialogObj.find('#book_display_twitter .slider').show();
		}
		else
		{
			BookDisplay._dialogObj.find('#book_display_twitter .slider').hide();
		}
		
		//////////////
		

		BookDisplay.submitGetTweets(bookId, bookName);
	},
	
	_onCloseAction: function(event, ui)
	{
		BookDisplay._clearBookData();
		BookNewLocation.close();
	},
	
	_clearBookData: function()
	{
		BookDisplay._isbn='';
		BookDisplay._title='';
		BookDisplay._thumbUrl='';
		BookDisplay._description='';
		BookDisplay._bookId=0;
		
		// resetiram slidere
		if(BookDisplay._scrollerInfoObj)
			BookDisplay._scrollerInfoObj.attr({ scrollTop: 0 });
		
		if(BookDisplay._scrollerLocationsObj)
			BookDisplay._scrollerLocationsObj.attr({ scrollTop: 0 });
			
		if(BookDisplay._scrollerTwitterObj)
			BookDisplay._scrollerTwitterObj.attr({ scrollTop: 0 });
		
		BookDisplay._dialogObj.find('#book_display_locations .slider').slider('option', 'value', 0);
		BookDisplay._dialogObj.find('#book_display_info .slider').slider('option', 'value', 0);
		BookDisplay._dialogObj.find('#book_display_twitter .slider').slider('option', 'value', 0);
	},
	
	
	appendNewLocation: function(id, cosmox_book_id,  address,  description, mapLat,  mapLng, bookName, bookIsbn, bookAuthor, bookThumbUrl, html)
	{
		var ulObj=BookDisplay._dialogObj.find('ul.book_list');

		if(ulObj.length)
		{
			ulObj.append(html);
		}
		
		// ubaci na kartu (ako vec nije)
		var arr=new Array;
		arr[ id ] =	{
						id: id,
						type: 'location',
						cosmox_book_id: cosmox_book_id,
						address: address,
						description: description,
						map_lat: mapLat,
						map_lng: mapLng,
						smart_position: Boolean(1),
						book_name: bookName,
						book_isbn: bookIsbn,
						book_author: bookAuthor,
						book_thumb_url: bookThumbUrl
					};
		CosmoxGMap.checkAndInsertItems(arr);
		
		BookDisplay.gotoLocation(cosmox_book_id, id, true);
	},
	
	submitGetTweets: function(bookId, bookName)
	{
		if(bookName != '')
		{
			fwajax.phpExecute(
							{url:'/xbook/get-tweets'},
							bookId,
							bookName
						  );
		}
	},
	
	callbackGetTweets: function(bookId, html)
	{
		if(bookId>0)
		{
			var obj=BookDisplay._dialogObj.find('#holder_tweets_'+bookId);

			obj.html( html );
			
			obj.find('a').attr('target', '_blank');
			
			
			// pokazi sakri slider, -10 margin
			if(BookDisplay._scrollerTwitterObj.height() < totalHeight(BookDisplay._scrollerTwitterObj.find('.content_scroller') ) )
			{
				BookDisplay._dialogObj.find('#book_display_twitter .slider').show();
			}
			else
			{
				BookDisplay._dialogObj.find('#book_display_twitter .slider').hide();
			}
		}
		
	},
	
	
	gotoLocation: function(bookId, locationId, dontCenter)
	{
		if(typeof(dontCenter) == 'undefined')
			dontCenter=false;
		
		//locationId=BookDisplay._dialogObj.find('#form_book_display_dialog_' + bookId + ' select option:selected').val();
		BookDisplay._dialogObj.find('ul.book_list li').removeClass('selected');
		BookDisplay._dialogObj.find('ul.book_list li#location_'+locationId).addClass('selected');
		CosmoxGMap.setMapItem(locationId, false, true, dontCenter); //nezum, otvori info box
		
		return false;
	},
	
	openNewLocationDialog: function()
	{
		var obj=BookDisplay._dialogObj.find('#book_display_info');
		
		var bookId=obj.find('.book_id').text();
		var bookName=obj.find('.title').text();
		var bookIsbn=obj.find('.isbn').text();
		var bookAuthor=obj.find('.author').text();
		var bookDescription=obj.find('.description').text();
		var bookImageUrl=obj.find('img').attr('src');
		
//		alert('('+bookId+')('+bookName+')('+bookIsbn+')('+bookAuthor+')('+bookDescription+')('+bookImageUrl+')');
		
		BookNewLocation.open(bookId, bookName, bookIsbn, bookAuthor, bookDescription, bookImageUrl);
		return false;
	},
	
	
	
	
	_handleLocationsChange: function(e, ui)
	{
		BookDisplay._handleGeneralChange(e, ui, BookDisplay._scrollerLocationsObj);
	},

	_handleLocationsSlide:function(e, ui)
	{
		BookDisplay._handleGeneralSlide(e, ui, BookDisplay._scrollerLocationsObj);
	},
	
	_handleInfoChange: function(e, ui)
	{
		BookDisplay._handleGeneralChange(e, ui, BookDisplay._scrollerInfoObj);
	},

	_handleInfoSlide:function(e, ui)
	{
		BookDisplay._handleGeneralSlide(e, ui, BookDisplay._scrollerInfoObj);
	},
	
	_handleTwitterChange: function(e, ui)
	{
		BookDisplay._handleGeneralChange(e, ui, BookDisplay._scrollerTwitterObj);
	},

	_handleTwitterSlide:function(e, ui)
	{
		BookDisplay._handleGeneralSlide(e, ui, BookDisplay._scrollerTwitterObj);
	},
	
	_handleGeneralChange: function(e, ui, obj)
	{
		var maxScroll = obj.attr("scrollHeight") -  obj.height();
		
		obj.animate(
							   { scrollTop: -ui.value *	 (maxScroll / 100) },
							   1000
							  );
	},
	_handleGeneralSlide:function(e, ui, obj)
	{
		var maxScroll = obj.attr("scrollHeight") -  obj.height();
		obj.attr(
							{ scrollTop: -ui.value * (maxScroll / 100) }
						);
	},
	
	
	_onDragStopAction: function(event, ui)
	{
		BookDisplay._pos[0]=ui.position.left;
		BookDisplay._pos[1]=ui.position.top;
		
		Position.setCookie('book_display', BookDisplay._pos, BookDisplay._width, BookDisplay._height);
	},
	
	pos: function()
	{
		return BookDisplay._pos;
	}
};
// end: BookDisplay


var BookNewLocation=
{
	_dialogObj: null,
	
	_pos: [0, 0],
	_width: 332,
	_height: 364, //339,
	
	init: function()
	{
		BookNewLocation._dialogObj = $('#book_add_new_location_dialog');
		
		BookNewLocation._dialogObj.dialog({
					
					resizable: false,
					autoOpen: false,
					title: 'Locatie toevoegen',
					width:332,
					
					dragStop:BookNewLocation._onDragStopAction,
					close: BookNewLocation._onCloseAction
				});
		
		BookNewLocation._dialogObj.find('input[name=location_edit]').click( BookNewLocation._locationEditOnChange );
	},
	
	open: function(bookId, bookName, bookIsbn, bookAuthor, bookDescription, bookImageUrl)
	{
		// prvo zatvoriti??
		BookNewLocation._clean();
		
		BookNewLocation._dialogObj.find('.book_detail .title').html(bookName);
		BookNewLocation._dialogObj.find('.book_detail .author').html(bookAuthor);
		BookNewLocation._dialogObj.find('.book_detail .description').html(bookDescription);
		
		BookNewLocation._dialogObj.find('.book_detail .image').html('<img src="'+bookImageUrl+'" width="51" alt="'+bookName+'" />');
		
		BookNewLocation._dialogObj.find('input[name=cosmox_book_id]').val( bookId );
		BookNewLocation._dialogObj.find('input[name=book_name]').val( bookName );
		BookNewLocation._dialogObj.find('input[name=book_isbn]').val( bookIsbn );
		
		BookNewLocation._dialogObj.find('input[name=book_author]').val( bookAuthor );
		BookNewLocation._dialogObj.find('input[name=book_thumb_url]').val( bookImageUrl );

		
		BookNewLocation._pos = Position.getCookie('book_new_location', 3, BookNewLocation._width, BookNewLocation._height, BookDisplay);
		BookNewLocation._dialogObj.dialog('option', 'position', BookNewLocation._pos);

		
		BookNewLocation._dialogObj.dialog('open');
		
		/*if(!BookNewLocation._width || !BookNewLocation._height)
		{
			BookNewLocation._width = BookNewLocation._dialogObj.width();
			BookNewLocation._height = BookNewLocation._dialogObj.height();
			
			tmp=Position.checkCoordinates(BookNewLocation._pos, BookNewLocation._width, BookNewLocation._height);
			if(BookNewLocation._pos[0] != tmp[0] || BookNewLocation._pos[1] != tmp[1])
			{
				BookNewLocation._pos = tmp;
				BookNewLocation._dialogObj.dialog('option', 'position', BookNewLocation._pos);
			}
		}
		*/
		
		
		CosmoxUserGMap.setEnableMarkerCreation(true, BookNewLocation.setMarker_callback);
	},
	
	setMarker_callback: function(lat, lng, address, addressObj)
	{
		BookNewLocation._dialogObj.find('input[name=map_lat]').val(lat);
		BookNewLocation._dialogObj.find('input[name=map_lng]').val(lng);
		
		BookNewLocation._dialogObj.find('span.display_location').html( '(' + (Math.round(lat*100)/100) + ', ' + (Math.round(lng*100)/100) + ')' );

		var addressShort='';
		addressShort += addressObj.city;
		if(addressShort != '' && addressObj.state != '')
			addressShort += ', ';
		addressShort += addressObj.state;
		
		if(addressShort=='')
			addressShort = address;
		
		//BookNewLocation._dialogObj.find('input[type=hidden][name=address_state]').val(addressObj.state);
		//BookNewLocation._dialogObj.find('input[type=hidden][name=address_city]').val(addressObj.city);
		//BookNewLocation._dialogObj.find('input[type=hidden][name=address_street]').val(addressObj.street);
		//BookNewLocation._dialogObj.find('input[type=hidden][name=address_postal_number]').val(addressObj.postal_number);
		
		BookNewLocation._dialogObj.find('input[type=hidden][name=address_short]').val(addressShort);
		BookNewLocation._dialogObj.find('input[type=hidden][name=address_long]').val(address);
		
		BookNewLocation._dialogObj.find('input[name=address]').val(addressShort).attr('readonly', true).addClass('readonly');
		
		BookNewLocation._dialogObj.find('input[name=location_edit]').attr('checked', false);
	},
	
	
	_locationEditOnChange: function()
	{
		if(BookNewLocation._dialogObj.find('input[name=location_edit]:checked').length)
		{
			var addressLong=BookNewLocation._dialogObj.find('input[type=hidden][name=address_long]').val();
			BookNewLocation._dialogObj.find('input[name=address]').val(addressLong).attr('readonly', false).removeClass('readonly');
		}
		else
		{
			var addressShort=BookNewLocation._dialogObj.find('input[type=hidden][name=address_short]').val();
			BookNewLocation._dialogObj.find('input[name=address]').val(addressShort).attr('readonly', true).addClass('readonly');	
		}
		return true;
	},
	
	save: function()
	{
		var mapLat=BookNewLocation._dialogObj.find('input[name=map_lat]').val();
		var mapLng=BookNewLocation._dialogObj.find('input[name=map_lng]').val();
		var address=BookNewLocation._dialogObj.find('input[name=address]').val();
		var description=BookNewLocation._dialogObj.find('textarea[name=description]').val();
		var cosmox_book_id=BookNewLocation._dialogObj.find('input[name=cosmox_book_id]').val();
		
		var book_name=BookNewLocation._dialogObj.find('input[name=book_name]').val();
		var book_isbn=BookNewLocation._dialogObj.find('input[name=book_isbn]').val();
		
		var book_author=BookNewLocation._dialogObj.find('input[name=book_author]').val();
		var book_thumb_url=BookNewLocation._dialogObj.find('input[name=book_thumb_url]').val();
		
		
		//alert('('+mapLat+')('+mapLng+')('+address+')('+description+')('+cosmox_book_id+')('+book_name+')('+book_isbn+')');
		if( mapLat == '' || mapLng == '')
		{
			alert('Klik op de kaart en selecteer de boeklocatie');
			return false;
		}
		
		if( address == '' || cosmox_book_id == '' || book_name == '' || book_isbn =='')
		{
			alert('fill all fields!');
			return false;
		}
		
		CosmoxUserGMap.resetMarkerCreation();
		
		BookNewLocation.close();

		fwajax.phpExecute( {url:'/xbook/add-location'},
						  cosmox_book_id,
						  address,
						  description,
						  mapLat,
						  mapLng,
						  book_name,
						  book_isbn,
						  book_author,
						  book_thumb_url
						  );
		
		return false;
	},
	
	_callbackSave: function(id, cosmox_book_id,  address,  description, mapLat,  mapLng, bookName, bookIsbn, bookAuthor, bookThumbUrl, html)
	{
		//alert('('+id+')('+cosmox_book_id+')('+address+')('+description+')('+mapLat+')('+mapLng+')('+bookName+')('+bookIsbn+')');
		BookDisplay.appendNewLocation(id, cosmox_book_id,  address,  description, mapLat,  mapLng, bookName, bookIsbn, bookAuthor, bookThumbUrl, html);
	},
	
	isOpen: function()
	{
		return BookNewLocation._dialogObj.dialog('isOpen');
	},
	
	close: function()
	{
		if(!BookNewLocation._dialogObj.dialog('isOpen'))
			return;
		
		BookNewLocation._dialogObj.dialog('close');
	},
	
	_onCloseAction: function()
	{
		BookNewLocation._clean();
		CosmoxUserGMap.resetMarkerCreation();
	},
	
	_clean: function()
	{
		BookNewLocation._dialogObj.find('input').val('');
		BookNewLocation._dialogObj.find('textarea').val('');
		
		BookNewLocation._dialogObj.find('input[name=address]').attr('readonly', true).addClass('readonly');
		
		BookNewLocation._dialogObj.find('input[name=location_edit]').attr('checked', false);
		
		BookNewLocation._dialogObj.find('span.display_location').html(' ');
	},

	_onDragStopAction: function(event, ui)
	{
		BookNewLocation._pos[0]=ui.position.left;
		BookNewLocation._pos[1]=ui.position.top;
		
		Position.setCookie('book_new_location', BookNewLocation._pos, BookNewLocation._width, BookNewLocation._height);
	},
	
	pos: function()
	{
		return BookNewLocation._pos;
	}
};
  




// start: InfoWork
var InfoWork=
{
	_dialogObj:null,
	_scrollerObj:null,
	
	_pos: [0,0],
	_width: 332,
	_height: 365, //303
	
	init: function()
	{
		InfoWork._dialogObj = $('#info_work_dialog');
		
		InfoWork._dialogObj.dialog({
					
					resizable: false,
					autoOpen: false,
					title: 'Hoe werkt het?',
					width:332,
					
					dragStop:InfoWork._onDragStopAction,
					close: InfoWork._onCloseAction
				});
		

		$('a#link2').click( function() {InfoWork.open(); return false;} );
		
		InfoWork._scrollerObj=InfoWork._dialogObj.find('.scroller');
		InfoWork._dialogObj.find('.slider').slider(
											{
												orientation: 'vertical',
												change: InfoWork._handleChange,
												slide: InfoWork._handleSlide,
												min: -100,
												max: 0
											});
		
		InfoWork._dialogObj.find('.slider').show();
	},
	
	open: function()
	{
		// reset scrollbara
		InfoWork._dialogObj.find('.slider').slider('option', 'value', 0);
		InfoWork._scrollerObj.attr({ scrollTop: 0 });
		
		InfoWork._pos = Position.getCookie('info_work', 4, InfoWork._width, InfoWork._height, null);
		InfoWork._dialogObj.dialog('option', 'position', InfoWork._pos);
		InfoWork._dialogObj.dialog('open');
		
		
		
		// pokazi sakri slider
		if(InfoWork._scrollerObj.height() < totalHeight(InfoWork._scrollerObj.find('.content_scroller')) )
		{
			InfoWork._dialogObj.find('.slider').show();
		}
		else
		{
			InfoWork._dialogObj.find('.slider').hide();
		}
	},
	
	isOpen: function()
	{
		return InfoWork._dialogObj.dialog('isOpen');
	},
	
	close: function()
	{
		if(!InfoWork._dialogObj.dialog('isOpen'))
			return;
		
		InfoWork._dialogObj.dialog('close');
	},
	

	_onCloseAction: function()
	{
		//alert('adio');
	},
	
	
	_handleChange: function(e, ui)
	{
		var maxScroll = InfoWork._scrollerObj.attr("scrollHeight") -  InfoWork._scrollerObj.height();
		
		InfoWork._scrollerObj.animate(
							   { scrollTop: -ui.value *	 (maxScroll / 100) },
							   1000
							  );

	},

	_handleSlide:function(e, ui)
	{
		var maxScroll = InfoWork._scrollerObj.attr("scrollHeight") -  InfoWork._scrollerObj.height();
		InfoWork._scrollerObj.attr(
							{ scrollTop: -ui.value * (maxScroll / 100) }
						);
	},
	
	_onDragStopAction: function(event, ui)
	{
		InfoWork._pos[0]=ui.position.left;
		InfoWork._pos[1]=ui.position.top;
		
		Position.setCookie('info_work', InfoWork._pos, InfoWork._width, InfoWork._height);
	},
	
	pos: function()
	{
		return InfoWork._pos;
	}
};
// end: InfoWork







// start: EmbedInfo
var EmbedInfo =
{
	_dialogObj:null,
	_scrollerObj:null,
	
	_pos: [0,0],
	_width: 332,
	_height: 365, //303
	
	init: function()
	{
		EmbedInfo._dialogObj = $('#embed_info_dialog');
		
		EmbedInfo._dialogObj.dialog({
					
					resizable: false,
					autoOpen: false,
					title: 'Deze kaart op je site embedden',
					width:332,
					
					dragStop:EmbedInfo._onDragStopAction,
					close: EmbedInfo._onCloseAction
				});
		

		$('a#link3').click( function() {EmbedInfo.open(); return false;} );
		$('a#embed_share').click( function() {EmbedInfo.open(); return false;} );
		
		$('a#link3b').click( function() { EmbedInfo._adjustEmbedLink(); return false; } );
		
		EmbedInfo._scrollerObj=EmbedInfo._dialogObj.find('.scroller');
		EmbedInfo._dialogObj.find('.slider').slider(
											{
												orientation: 'vertical',
												change: EmbedInfo._handleChange,
												slide: EmbedInfo._handleSlide,
												min: -100,
												max: 0
											});
		
		EmbedInfo._dialogObj.find('.slider').show();
	},
	
	open: function()
	{
		// reset scrollbara
		EmbedInfo._dialogObj.find('.slider').slider('option', 'value', 0);
		EmbedInfo._scrollerObj.attr({ scrollTop: 0 });
		
		EmbedInfo._pos = Position.getCookie('embed_info', 5, EmbedInfo._width, EmbedInfo._height, null);
		EmbedInfo._dialogObj.dialog('option', 'position', EmbedInfo._pos);
		EmbedInfo._dialogObj.dialog('open');
		
		
		
		// pokazi sakri slider
		if(EmbedInfo._scrollerObj.height() < totalHeight(EmbedInfo._scrollerObj.find('.content_scroller')) )
		{
			EmbedInfo._dialogObj.find('.slider').show();
		}
		else
		{
			EmbedInfo._dialogObj.find('.slider').hide();
		}
		
		EmbedInfo._adjustEmbedLink();
	},
	
	_adjustEmbedLink: function()
	{
		if(cookieDomain)
			server=cookieDomain;
		else
			server="www.boekopdekaart.nl";
			
		var link='http://'+server+'/?embed=1';
		
		link += EmbedControl._createActionLinkFragment();
		
		var str='<iframe src="' + link + '" width="455" height="455">\n' +
				'<p>Your browser does not support iframes. Please visit <a href=http://"'+server+'/">Boek op de kaart</a>.</p>\n'+
				'</iframe>';

		$('#embed_code_fragment').val( str );
	},
	
	isOpen: function()
	{
		return EmbedInfo._dialogObj.dialog('isOpen');
	},
	
	close: function()
	{
		if(!EmbedInfo._dialogObj.dialog('isOpen'))
			return;
		
		EmbedInfo._dialogObj.dialog('close');
	},
	

	_onCloseAction: function()
	{
		//alert('adio');
	},
	
	
	_handleChange: function(e, ui)
	{
		var maxScroll = EmbedInfo._scrollerObj.attr("scrollHeight") -  EmbedInfo._scrollerObj.height();
		
		EmbedInfo._scrollerObj.animate(
							   { scrollTop: -ui.value *	 (maxScroll / 100) },
							   1000
							  );

	},

	_handleSlide:function(e, ui)
	{
		var maxScroll = EmbedInfo._scrollerObj.attr("scrollHeight") -  EmbedInfo._scrollerObj.height();
		EmbedInfo._scrollerObj.attr(
							{ scrollTop: -ui.value * (maxScroll / 100) }
						);
	},
	
	_onDragStopAction: function(event, ui)
	{
		EmbedInfo._pos[0]=ui.position.left;
		EmbedInfo._pos[1]=ui.position.top;
		
		Position.setCookie('embed_info', EmbedInfo._pos, EmbedInfo._width, EmbedInfo._height);
	},
	
	pos: function()
	{
		return EmbedInfo._pos;
	}
};
// end: EmbedInfo









// ----------------------------------------

function resizeMe()
{
	var newH=$(window).height();
	
	if(embedFlag)
		newH -= 35;
	else
		newH -= 78;

	$('#google_map').height(  newH + 'px' );
	$('#content_primary').css( 'min-height',  newH + 'px' );
	$('#content_primary').height(  newH + 'px' );
}

/*
function goToTwitter(aDOM, id, book_name, address)
{
	var t  = document.title + ' ' + book_name + ': ' + address;
	var u    = 'http://www.boekopdekaart.nl/#L'+id;
	
	var maxLength = 140 - (u.length + 1);
	if (t.length > maxLength) {
		t = t.substr(0, (maxLength - 3))+'...';
	}
	window.open('http://twitter.com/home?status='+encodeURIComponent(t + ' ' + u),'TwitterSharer','toolbar=0,status=0,width=760,height=436');
	
	return false;
}
*/


function fixThumbUrl(imgDOM)
{
	imgDOM.src='/images/noimg_60_85.gif';
	imgDOM.width=51;
	imgDOM.height=72;
}

function totalHeight(obj)
{
	var total= obj.height() + parseInt(obj.css('margin-top')) + parseInt(obj.css('margin-bottom'))  + parseInt(obj.css('padding-top')) + parseInt(obj.css('padding-bottom'));
	return total;
}



function submit_abuseReport(locationId)
{
	Loader.show();
	fwajax.phpExecute(
						  {url:'/xbook/abuse-report'},
						  locationId
					);
	
	return false;
}

function callback_abuseReport(msg)
{
	Loader.hide();
	if(msg != '')
		alert(msg);
}

var ShareControl=
{
	_server:'www.boekopdekaart.nl',
	
	init: function()
	{
		if(cookieDomain)
			EmbedControl._server=cookieDomain;
			
		$('a#mail_share').click( function() { return ShareControl.email( this ); } );
		$('a#facebook_share').click( function() { return ShareControl.fb( this ); } );
		$('a#tweeter_share').click( function() { return ShareControl.twitter( this ); } );
		
		
		//$('a#mail_share_dialog').click( function() { return ShareControl.email( this ); } );
		//$('a#facebook_share_dialog').click( function() { return ShareControl.fb( this ); } );
		//$('a#tweeter_share_dialog').click( function() { return ShareControl.twitter( this ); } );
	},
	

	email:function(anchorDom)
	{
		var link=ShareControl._createShareLink();
		anchorDom.href='mailto:?Subject=Boek%20op%20de%20kaart&Body=Boek%20op%20de%20kaart' + escape(ShareControl._appendBookName())+ escape(' ' + link);
		return true;
	},
	
	fb:function(anchorDom)
	{
		var u=ShareControl._createShareLink();
		t=document.title + ShareControl._appendBookName();
		var myw=window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'FacebookSharer','toolbar=0,status=0,width=626,height=436');
		myw.focus();
		return false;
	},
	
	twitter:function(anchorDom)
	{
		
		var t  = document.title + ShareControl._appendBookName();
		var u    = ShareControl._createShareLink(false);
		
		var maxLength = 140 - (u.length + 1);
		if (t.length > maxLength)
		{
			t = t.substr(0, (maxLength - 3))+'...';
		}

		var myw=window.open('http://twitter.com/home?status='+encodeURIComponent(t + ' ' + u),'TwitterSharer','toolbar=0,status=0,width=760,height=436');
		myw.focus();
		return false;
	},
	
	infoTweeter:function(anchorDOM, id, book_name, address)
	{
		var t=document.title + ' ' + book_name + ' ' + address;

		var u    = ShareControl._createShareLink(false);
		
		var maxLength = 140 - (u.length + 1);
		if (t.length > maxLength)
		{
			t = t.substr(0, (maxLength - 3))+'...';
		}
		var myw=window.open('http://twitter.com/home?status='+encodeURIComponent(t + ' ' + u),'TwitterSharer','toolbar=0,status=0,width=760,height=436');
		myw.focus();
		return false;
	},
	
	_createShareLink: function(forceLatLng)
	{
		if(typeof(forceLatLng)=='undefined')
		{
			forceLatLng=true;
		}
		
		var link='http://' + ShareControl._server + '/?zoom=' + CosmoxGMap.g_map.getZoom();
		
		var isbn=BookDisplay._isbn;
		if(isbn)
		{
			link += '&isbn=' + isbn;
		}
		
		var googleBalloon=CosmoxGMap.open_info_window_item_id;
		
		if(!googleBalloon || forceLatLng)
		{
			var cnt=CosmoxGMap.g_map.getCenter();
			link += '&lat=' + cnt.lat();
			link += '&lng=' + cnt.lng();
		}
		
		if(googleBalloon)
		{
			link += '#L' + googleBalloon;
		}
		
		
		return link;
	},
	
	_appendBookName: function()
	{
		var googleBalloonItem=CosmoxGMap.getCurrentItem();
		
		var t='';
		
		if(googleBalloonItem)
		{
			if(googleBalloonItem.book_name)
				t += ' - ' + googleBalloonItem.book_name;
				
			if(googleBalloonItem.address)
				t += ' - ' + googleBalloonItem.address;
		}
		
		if(t=='')
		{
			var isbn=BookDisplay._isbn;
			var title=BookDisplay._title;
			if(isbn && title)
			{
				t += ' - ' + title;
			}
		}
		
		return t;
	}
};

var EmbedControl=
{
	_server:'www.boekopdekaart.nl',
	
	init: function()
	{
		if(cookieDomain)
			EmbedControl._server=cookieDomain;
			
		$('a#link1').click( function() { return EmbedControl.link1Click( this ); } );
		$('a#link2').click( function() { return EmbedControl.link2Click( this ); } );
	},
	
	// search: Boek teovoegen+ zoeken
	link1Click: function(anchorDOM)
	{
		// sastavim link
		var link='http://'+EmbedControl._server+'/?action=zoeken';
		link += EmbedControl._createActionLinkFragment();
		
		anchorDOM.href=link;
		anchorDOM.target='_blank';
		
		return true;
	},
	
	// search: Boek teovoegen+ zoeken
	link2Click: function(anchorDOM)
	{
		// sastavim link
		var link='http://'+EmbedControl._server+'/?action=hoe_werkt_het';
		link += EmbedControl._createActionLinkFragment();
		
		anchorDOM.href=link;
		anchorDOM.target='_blank';
		
		return true;
	},
	
	// click na knjigu u gugl balonu
	isbnClick: function(anchorDOM, isbn, locid)
	{
		var link='http://'+EmbedControl._server+'/?isbn=' + isbn;
		link += EmbedControl._createActionLinkFragment();
		link += '#L' + locid;

		anchorDOM.href=link;
		anchorDOM.target='_blank';
		return true;
	},
	
	_createActionLinkFragment: function()
	{
		var link='';
		
		var cnt=CosmoxGMap.g_map.getCenter();
		
		link += '&lat=' + cnt.lat();
		link += '&lng=' + cnt.lng();

		link += '&zoom=' + CosmoxGMap.g_map.getZoom();
		
		return link;
	}
};
  
// ----------------------------------------------------------------- ready
$(document).ready(function() {
	$('a.ext').attr('target', '_blank');
	
	/*
	$("#tweeter_share").click (function() {
		var t  = document.title;
		var u    = 'http://www.boekopdekaart.nl';
		
		var maxLength = 140 - (u.length + 1);
		if (t.length > maxLength) {
			t = t.substr(0, (maxLength - 3))+'...';
		}
		window.open('http://twitter.com/home?status='+encodeURIComponent(t + ' ' + u),'TwitterSharer','toolbar=0,status=0,width=760,height=436');
		return false;
		
	});	
	
	$("#facebook_share").click (function() {
		u='http://www.boekopdekaart.nl';
		t=document.title;
		window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'FacebookSharer','toolbar=0,status=0,width=626,height=436');
		return false;
	});
	*/
	

    $(window).bind('resize', resizeMe );

	$(".text_input").click(
      function () {
        $(this).addClass("active");
      }
    );	
	$(".text_input").blur(
      function () {
        $(this).removeClass("active");
      }
    );	

	Loader.init('load', 15, 15);
	
	Position.init();
	
	if(!embedFlag)
	{
		//BookSearch.init();
		//BookDisplay.init();
		//BookNewLocation.init();
		//InfoWork.init();
		//BookSearch.open();
	}
	else
	{
		EmbedControl.init();
	}
});
