Η μοναδική εκδοτική σειρά «Ηγέτες» της ΚΑΘΗΜΕΡΙΝΗΣ διατίθεται τώρα σε επιλεγμένα βιβλιοπωλεία.
Τα βιβλία με πλούσια εικονογράφηση, σύγχρονες φωτογραφίες, πίνακες, γκραβούρες, εκθέματα μουσείων, χαρακτικά, γλυπτά, φωτογραφίες εποχής, πρωτοσέλιδα εφημερίδων, εμπλουτίζουν το κείμενο και «ταξιδεύουν» τον αναγνώστη στην εποχή που περιγράφει κάθε τόμος.
Στην πλειονότητά τους τα κείμενα είναι πρωτότυπα και γράφτηκαν από γνωστούς καθηγητές και ερευνητές πανεπιστημίων ή ιδρυμάτων της Ελλάδας και του εξωτερικού. Υπεύθυνος της σειράς είναι ο Θάνος Βερέμης, ομότιμος καθηγητής του Πανεπιστημίου.
Στα επιλεγμένα σημεία θα βρείτε την ολοκληρωμένη σειρά, τους μεμονωμένους τόμους και το ειδικά σχεδιασμένο κουτί.
ΑΘΗΝΑ
BOOKLOFT Πατριάρχου Ιωακείμ 44 Αθήνα
ΛΕΜΟΝΙ Ηρακλειδών 22 Αθήνα
ΕΠΙ ΛΕΞΕΙ ΑΚΑΔΗΜΙΑΣ 32 ΑΘΗΝΑ
ΠΛΕΙΑΔΕΣ Σπύρου Μερκούρη 62 Αθήνα
ΚΑΘΗΜΕΡΙΝΗ Πανεπιστημίου 47-49 (Στοά Αρσακείου)
READ POINT http://www.readpoint.com/
ΘΕΣΣΑΛΟΝΙΚΗ
ΚΑΘΗΜΕΡΙΝΗ Τσιμισκή 99
"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:w(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},q.csstransforms=function(){return!!F("transform")},q.csstransitions=function(){return F("transition")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x
",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e
var event = jQuery.event,
//helper that finds handlers by type and calls back a function, this is basically handle
// events - the events object
// types - an array of event types to look for
// callback(type, handlerFunc, selector) - a callback
// selector - an optional selector to filter with, if there, matches by selector
// if null, matches anything, otherwise, matches with no selector
findHelper = function( events, types, callback, selector ) {
var t, type, typeHandlers, all, h, handle,
namespaces, namespace,
match;
for ( t = 0; t 0;
}
};
$.fn.triggerHandled = function( event, data ) {
event = (typeof event == "string" ? $.Event(event) : event);
this.trigger(event, data);
return event.handled;
};
/**
* Only attaches one event handler for all types ...
* @param {Array} types llist of types that will delegate here
* @param {Object} startingEvent the first event to start listening to
* @param {Object} onFirst a function to call
*/
event.setupHelper = function( types, startingEvent, onFirst ) {
if (!onFirst ) {
onFirst = startingEvent;
startingEvent = null;
}
var add = function( handleObj ) {
var bySelector, selector = handleObj.selector || "";
if ( selector ) {
bySelector = event.find(this, types, selector);
if (!bySelector.length ) {
$(this).delegate(selector, startingEvent, onFirst);
}
}
else {
//var bySelector = event.find(this, types, selector);
if (!event.find(this, types, selector).length ) {
event.add(this, startingEvent, onFirst, {
selector: selector,
delegate: this
});
}
}
},
remove = function( handleObj ) {
var bySelector, selector = handleObj.selector || "";
if ( selector ) {
bySelector = event.find(this, types, selector);
if (!bySelector.length ) {
$(this).undelegate(selector, startingEvent, onFirst);
}
}
else {
if (!event.find(this, types, selector).length ) {
event.remove(this, startingEvent, onFirst, {
selector: selector,
delegate: this
});
}
}
};
$.each(types, function() {
event.special[this] = {
add: add,
remove: remove,
setup: function() {},
teardown: function() {}
};
});
};
})(jQuery);
(function($){
var isPhantom = /Phantom/.test(navigator.userAgent),
supportTouch = !isPhantom && "ontouchend" in document,
scrollEvent = "touchmove scroll",
// Use touch events or map it to mouse events
touchStartEvent = supportTouch ? "touchstart" : "mousedown",
touchStopEvent = supportTouch ? "touchend" : "mouseup",
touchMoveEvent = supportTouch ? "touchmove" : "mousemove",
data = function(event){
var d = event.originalEvent.touches ?
event.originalEvent.touches[ 0 ] :
event;
return {
time: (new Date).getTime(),
coords: [ d.pageX, d.pageY ],
origin: $( event.target )
};
};
/**
* @add jQuery.event.swipe
*/
var swipe = $.event.swipe = {
/**
* @attribute delay
* Delay is the upper limit of time the swipe motion can take in milliseconds. This defaults to 500.
*
* A user must perform the swipe motion in this much time.
*/
delay : 500,
/**
* @attribute max
* The maximum distance the pointer must travel in pixels. The default is 75 pixels.
*/
max : 75,
/**
* @attribute min
* The minimum distance the pointer must travel in pixels. The default is 30 pixels.
*/
min : 30
};
$.event.setupHelper( [
/**
* @hide
* @attribute swipe
*/
"swipe",
/**
* @hide
* @attribute swipeleft
*/
'swipeleft',
/**
* @hide
* @attribute swiperight
*/
'swiperight',
/**
* @hide
* @attribute swipeup
*/
'swipeup',
/**
* @hide
* @attribute swipedown
*/
'swipedown'], touchStartEvent, function(ev){
var
// update with data when the event was started
start = data(ev),
stop,
delegate = ev.delegateTarget || ev.currentTarget,
selector = ev.handleObj.selector,
entered = this;
function moveHandler(event){
if ( !start ) {
return;
}
// update stop with the data from the current event
stop = data(event);
// prevent scrolling
if ( Math.abs( start.coords[0] - stop.coords[0] ) > 10 ) {
event.preventDefault();
}
};
// Attach to the touch move events
$(document.documentElement).bind(touchMoveEvent, moveHandler)
.one(touchStopEvent, function(event){
$(this).unbind( touchMoveEvent, moveHandler);
// if start and stop contain data figure out if we have a swipe event
if ( start && stop ) {
// calculate the distance between start and stop data
var deltaX = Math.abs(start.coords[0] - stop.coords[0]),
deltaY = Math.abs(start.coords[1] - stop.coords[1]),
distance = Math.sqrt(deltaX*deltaX+deltaY*deltaY);
// check if the delay and distance are matched
if ( stop.time - start.time = swipe.min ) {
var events = ['swipe'];
// check if we moved horizontally
if( deltaX >= swipe.min && deltaY stop.coords[0] ? "swipeleft" : "swiperight" );
} else
// check if we moved vertically
if(deltaY >= swipe.min && deltaX
' );
// check if we applied a transition to the
-
this.hasTransition = false;
// add transition for the
-
this.hasTransitionTimeout = setTimeout( function() {
self._addTransition();
}, 100 );
// preload the images
this.$el.imagesLoaded( function() {
self.$el.show();
self._layout();
self._configure();
if( self.hasTransition ) {
// slide to current's position
self._removeTransition();
self._slideToItem( self.current );
self.$el.on( self.transEndEventName, function() {
self.$el.off( self.transEndEventName );
self._setWrapperSize();
// add transition for the
-
self._addTransition();
self._initEvents();
} );
}
else {
clearTimeout( self.hasTransitionTimeout );
self._setWrapperSize();
self._initEvents();
// slide to current's position
self._slideToItem( self.current );
setTimeout( function() { self._addTransition(); }, 25 );
}
self.options.onReady();
} );
},
_validate : function() {
if( this.options.speed this.itemsCount ) {
this.options.minItems = 1;
}
if( this.options.start this.itemsCount - 1 ) {
this.options.start = 0;
}
if( this.options.orientation != 'horizontal' && this.options.orientation != 'vertical' ) {
this.options.orientation = 'horizontal';
}
},
_layout : function() {
this.$el.wrap( '
' );
this.$carousel = this.$el.parent();
this.$wrapper = this.$carousel.parent().removeClass( 'elastislide-loading' );
// save original image sizes
var $img = this.$items.find( 'img:first' );
this.imgSize = { width : $img.outerWidth( true ), height : $img.outerHeight( true ) };
this._setItemsSize();
this.options.orientation === 'horizontal' ? this.$el.css( 'max-height', this.imgSize.height ) : this.$el.css( 'height', this.options.minItems * this.imgSize.height );
// add the controls
this._addControls();
},
_addTransition : function() {
if( this.support ) {
this.$el.css( 'transition', 'all ' + this.options.speed + 'ms ' + this.options.easing );
}
this.hasTransition = true;
},
_removeTransition : function() {
if( this.support ) {
this.$el.css( 'transition', 'all 0s' );
}
this.hasTransition = false;
},
_addControls : function() {
var self = this;
// add navigation elements
this.$navigation = $( '
' )
.appendTo( this.$wrapper );
this.$navPrev = this.$navigation.find( 'span.elastislide-prev' ).on( 'mousedown.elastislide', function( event ) {
self._slide( 'prev' );
return false;
} );
this.$navNext = this.$navigation.find( 'span.elastislide-next' ).on( 'mousedown.elastislide', function( event ) {
self._slide( 'next' );
return false;
} );
},
_setItemsSize : function() {
// width for the items (%)
var w = this.options.orientation === 'horizontal' ? ( Math.floor( this.$carousel.width() / this.options.minItems ) * 100 ) / this.$carousel.width() : 100;
this.$items.css( {
'width' : w + '%',
'max-width' : this.imgSize.width,
'max-height' : this.imgSize.height
} );
if( this.options.orientation === 'vertical' ) {
this.$wrapper.css( 'max-width', this.imgSize.width + parseInt( this.$wrapper.css( 'padding-left' ) ) + parseInt( this.$wrapper.css( 'padding-right' ) ) );
}
},
_setWrapperSize : function() {
if( this.options.orientation === 'vertical' ) {
this.$wrapper.css( {
'height' : this.options.minItems * this.imgSize.height + parseInt( this.$wrapper.css( 'padding-top' ) ) + parseInt( this.$wrapper.css( 'padding-bottom' ) )
} );
}
},
_configure : function() {
// check how many items fit in the carousel (visible area -> this.$carousel.width() )
this.fitCount = this.options.orientation === 'horizontal' ?
this.$carousel.width() )
itemSpace = this.options.orientation === 'horizontal' ? this.$items.outerWidth( true ) : this.$items.outerHeight( true ),
// total width/height of the
-
totalSpace = this.itemsCount * itemSpace,
// visible width/height
visibleSpace = this.options.orientation === 'horizontal' ? this.$carousel.width() : this.$carousel.height();
if( tvalue === undefined ) {
var amount = this.fitCount * itemSpace;
if( amount 0 ? this._toggleControls( 'prev', true ) : this._toggleControls( 'prev', false );
ftv 0 ? this._toggleControls( 'prev', true ) : this._toggleControls( 'prev', false );
Math.max( totalSpace, visibleSpace ) - visibleSpace > amount ? this._toggleControls( 'next', true ) : this._toggleControls( 'next', false );
}
this.translation = tvalue;
if( translation === tvalue ) {
this._onEndTransition();
return false;
}
if( this.support ) {
this.options.orientation === 'horizontal' ? this.$el.css( 'transform', 'translateX(' + tvalue + 'px)' ) : this.$el.css( 'transform', 'translateY(' + tvalue + 'px)' );
}
else {
$.fn.applyStyle = this.hasTransition ? $.fn.animate : $.fn.css;
var styleCSS = this.options.orientation === 'horizontal' ? { left : tvalue } : { top : tvalue };
this.$el.stop().applyStyle( styleCSS, $.extend( true, [], { duration : this.options.speed, complete : function() {
self._onEndTransition();
} } ) );
}
if( !this.hasTransition ) {
this._onEndTransition();
}
},
_onEndTransition : function() {
this.isSliding = false;
this.options.onAfterSlide();
},
_slideTo : function( pos ) {
var pos = pos || this.current,
translation = Math.abs( this.translation ) || 0,
itemSpace = this.options.orientation === 'horizontal' ? this.$items.outerWidth( true ) : this.$items.outerHeight( true ),
posR = translation + this.$carousel.width(),
ftv = Math.abs( pos * itemSpace );
');
// call the add method:
es.add();
*/
add : function( callback ) {
var self = this,
oldcurrent = this.current,
$currentItem = this.$items.eq( this.current );
// adds new items to the carousel
this.$items = this.$el.children( 'li' );
this.itemsCount = this.$items.length;
this.current = $currentItem.index();
this._setItemsSize();
this._configure();
this._removeTransition();
oldcurrent
$( '#carousel' ).elastislide();
// Centers vertical captions
centerCaption = function(){
$('.center-caption').each(function() {
var figureHeight=$(this).height();
var captionHeight=$(this).children("figcaption").height();
var newTop = (figureHeight*0.5) - (captionHeight*0.5);
$(this).children("figcaption").css('top',newTop);
});
}
// Sets titles size
setTitlesSize = function(){
$("#title").fitText(0.5, { minFontSize: '20px', maxFontSize: '60px' }); //EDIT: resizes titles
$("#subtitle").fitText(1, { minFontSize: '16px', maxFontSize: '26px' }); //EDIT: resizes titles
if ($(window).width() = 1024) {
var owl = $(".slides").data('owlCarousel');
owl.jumpTo(1) // Go to x slide without slide animation
}
});
$(window).resize(function() {
setTitlesSize();
centerCaption();
if ($(window).width() >= 1024) {
var owl = $(".slides").data('owlCarousel');
owl.jumpTo(1) // Go to x slide without slide animation
}
});
// Lazy load
$(".lazy").lazyload({
effect : "fadeIn",
threshold : 1000
});
// PAGE PRELOADER
$(window).load(function() { // makes sure the whole site is loaded
$('#status').fadeOut(); // will first fade out the loading animation
$('#preloader').delay(350).fadeOut('slow'); // will fade out the white DIV that covers the website.
$('body').delay(350).css({'overflow':'visible'});
})