$(document).ready(function(){ intro = $(".intro"); if (intro.length) { $.getJSON(pl ? "scripts/intro_pl.js" : "scripts/intro.php", function(json) { intro.addClass("intro-scripted"); // data loaded from JSON, now inject it to the HTML for (var i = 0; i < introItems; i++) { var item = intro.find("> .content:first").clone().insertBefore(intro.find("> .ruler")); item.find("> .photo img").attr("src", "../images/article_photos/" + json.items[i].file + "").attr("alt", json.items[i].info); item.find("> h2").html(json.items[i].title); var info = item.find("> .info"); info.find("> span").text(json.items[i].info_ex ? json.items[i].info_ex : json.items[i].info).data("info", json.items[i].info); if (json.items[i].visit) info.find("> a").attr("href", json.items[i].visit).text(pl ? "OdwiedΕΊ" : "Visit"); else info.find("> a").attr("href", json.items[i].work).text(pl ? "Zobacz" : "See project"); info.find("~ p").remove(); for (t in json.items[i].text) item.append("

" + json.items[i].text[t] + "

"); } intro.find("> .content:first").remove(); // content sliding introContentH = 0; introW = intro.find("> .content:first").addClass("current").outerWidth(); intro.find("> .content").each(function() { introContentH = Math.max($(this).outerHeight(), introContentH); }).not(":first").hide(); intro.height(introContentH + 30); intro.append("
"); intro.find("> .fade-left, > .fade-right").height(intro.find("> .content").outerHeight()); intro.find("> .ruler").css("padding-top", (introContentH + 10) + "px").find("a").css("left", (introPos * introRulerStep) + "px").bind("dragstart dragend", function() { $(this).stop(true).toggleClass("drag"); introStop(); }) .bind("drag", function(event) { var offset = $(this).parent().offset(); var max_x = (introItems - 1) * introRulerStep; var x = Math.min(max_x, Math.max(0, event.offsetX - offset.left - 34)); $(this).css("left", x + "px"); x = Math.round(x / introRulerStep); $(this).find("span").text(intro.find("> .content:eq(" + x + ") .info > span:first").data("info")); }) .bind("dragend", function(event) { var offset = $(this).parent().offset(); var max_x = (introItems - 1) * introRulerStep; var x = Math.round(Math.min(max_x, Math.max(0, event.offsetX - offset.left - 34)) / introRulerStep); introChangeTo(x); if (introAuto) setTimeout("introPlay()", introSlideInTime + 1000); }); introPlay(); if ($.browser.msie && $.browser.version < 7) intro.find("> .ruler > a").attr("href", "#").click(function() { return false; }); }); } }); var intro = null , introTimer = null , introAuto = true , introPos = 0 , introItems = 3, introSlideInTime = 2000 , introSlideOutTime = 1000 , introItemTime = 13000 , introRulerStep = Math.round(930 / introItems) , introNavH = 0 , introContentH = 0 , introW = 0 , pl = $("body").hasClass("pl") ; function introStop() { if (introTimer) { clearTimeout(introTimer); introTimer = null; } } function introPause(dir) { introStop(); introAuto = !introAuto; if (introAuto) introPlay(); } function introPlay() {introStop(); introTimer = setTimeout("introChange()", introItemTime); } function introChange(dir, manual) { if (!dir) dir = 1; if (manual) introStop(); var next = intro.find("> .content.current").stop(true).animate({ left: (-dir * introW) + "px" }, introSlideOutTime).removeClass("current"); next = (dir < 0) ? next.prev(".content") : next.next(".content"); if (!next.length) { next = (dir < 0) ? intro.find("> .content:last") : intro.find("> .content:first"); introPos = (dir < 0) ? introItems - 1 : 0; } else introPos += dir; var ruler = intro.find(".ruler > a"); ruler.stop(true).animate({ left: (introPos * introRulerStep) + "px"}, introSlideInTime); if (!next.is(":animated")) next.css("left", (dir * introW) + "px"); next.addClass("current").show().stop(true).animate({ left: "0px" }, introSlideInTime); ruler.find("span").text(next.find(".info > span:first").data("info")); if (introAuto) introPlay(); } function introChangeTo(item) { var current = intro.find("> .content.current"); dir = (item > introPos) ? 1 : -1; if (introPos != item) current.stop(true).animate({ left: (-dir * introW) + "px" }, introSlideOutTime).removeClass("current"); next = intro.find("> .content:eq(" + item + ")"); var ruler = intro.find("> .ruler > a"); ruler.stop(true).animate({ left: (item * introRulerStep) + "px"}, introSlideInTime); if (introPos != item) next.addClass("current").css("left", (dir * introW) + "px").show().stop(true).animate({ left: "0px" }, introSlideInTime); ruler.find("span").text(next.find(".info > span:first").data("info")); introPos = item; }