/* Attention: all functions within this file which start with the phrase "kriesi_" as are developed by Christian "Kriesi" Budschedl You are allowed to use them in non-commercial projects as well as in commercial projects. What you are not allowed to do is to redistribute the functions or part of them (eg in templates, plugins etc) Contact: office@kriesi.at or at http://www.kriesi.at/contact */ // jquery.jparallax.js // 0.9 // Stephen Band // // Dependencies: // jQuery 1.2.6 (jquery.com) // // Project and documentation site: // http://webdev.stephband.info/parallax.html // CLOSURE (function(jQuery) { // PRIVATE FUNCTIONS function stripFiletype(ref) { var x=ref.replace('.html', ''); return x.replace('#', ''); } function initOrigin(l) { if (l.xorigin=='left') {l.xorigin=0;} else if (l.xorigin=='middle' || l.xorigin=='centre' || l.xorigin=='center') {l.xorigin=0.5;} else if (l.xorigin=='right') {l.xorigin=1;} if (l.yorigin=='top') {l.yorigin=0;} else if (l.yorigin=='middle' || l.yorigin=='centre' || l.yorigin=='center') {l.yorigin=0.5;} else if (l.yorigin=='bottom') {l.yorigin=1;} } function positionMouse(mouseport, localmouse, virtualmouse) { var difference = {x: 0, y: 0, sum: 0}; // Set where the virtual mouse is, if not on target if (!mouseport.ontarget) { // Calculate difference difference.x = virtualmouse.x - localmouse.x; difference.y = virtualmouse.y - localmouse.y; difference.sum = Math.sqrt(difference.x*difference.x + difference.y*difference.y); // Reset virtualmouse virtualmouse.x = localmouse.x + difference.x * mouseport.takeoverFactor; virtualmouse.y = localmouse.y + difference.y * mouseport.takeoverFactor; // If mouse is inside the takeoverThresh set ontarget to true if (difference.sum < mouseport.takeoverThresh && difference.sum > mouseport.takeoverThresh*-1) { mouseport.ontarget=true; } } // Set where the layer is if on target else { virtualmouse.x = localmouse.x; virtualmouse.y = localmouse.y; } } function setupPorts(viewport, mouseport) { var offset = mouseport.element.offset(); jQuery.extend(viewport, { width: viewport.element.width(), height: viewport.element.height() }); jQuery.extend(mouseport, { width: mouseport.element.width(), height: mouseport.element.height(), top: offset.top, left: offset.left }); } function parseTravel(travel, origin, dimension) { var offset; var cssPos; if (typeof(travel) === 'string') { if (travel.search(/px/)) { travel = travel.replace('px', ''); travel = parseInt(travel, 10); // Set offset constant used in moveLayers() offset = origin * (dimension-travel); // Set origin now because it won't get altered in moveLayers() cssPos = origin * 100 + '%'; return {travel: travel, travelpx: true, offset: offset, cssPos: cssPos}; } else if (travel.search(/%/)) { travel.replace('%', ''); travel = parseInt(ytravel, 10) / 100; } else { travel=1; } } // Set offset constant used in moveLayers() offset = origin * (1 - travel); return {travel: travel, travelpx: false, offset: offset} } function setupLayer(layer, i, mouseport) { var xStuff; var yStuff; var cssObject = {}; layer[i]=jQuery.extend({}, { width: layer[i].element.width(), height: layer[i].element.height() }, layer[i]); xStuff = parseTravel(layer[i].xtravel, layer[i].xorigin, layer[i].width); yStuff = parseTravel(layer[i].ytravel, layer[i].yorigin, layer[i].height); jQuery.extend(layer[i], { // Used in triggerResponse diffxrat: mouseport.width / (layer[i].width - mouseport.width), diffyrat: mouseport.height / (layer[i].height - mouseport.height), // Used in moveLayers xtravel: xStuff.travel, ytravel: yStuff.travel, xtravelpx: xStuff.travelpx, ytravelpx: yStuff.travelpx, xoffset: xStuff.offset, yoffset: yStuff.offset }); // Set origin now if it won't be altered in moveLayers() if (xStuff.travelpx) {cssObject.left = xStuff.cssPos;} if (yStuff.travelpx) {cssObject.top = yStuff.cssPos;} if (xStuff.travelpx || yStuff.travelpx) {layer[i].element.css(cssObject);} } function setupLayerContents(layer, i, viewportOffset) { var contentOffset; // Give layer a content object jQuery.extend(layer[i], {content: []}); // Layer content: get positions, dimensions and calculate element offsets for centering children of layers for (var n=0; n= mouseport.left && mouse.pageX < mouseport.width+mouseport.left) ? true : false; mouseport.yinside = (mouse.pageY >= mouseport.top && mouse.pageY < mouseport.height+mouseport.top) ? true : false; // Then switch active on. if (mouseport.xinside && mouseport.yinside && !mouseport.active) { mouseport.ontarget = false; mouseport.active = true; } // If active is on give localmouse coordinates if (mouseport.active) { if (mouseport.xinside) { localmouse.x = (mouse.pageX - mouseport.left) / mouseport.width; } else { localmouse.x = (mouse.pageX < mouseport.left) ? 0 : 1; } if (mouseport.yinside) { localmouse.y = (mouse.pageY - mouseport.top) / mouseport.height; } else { localmouse.y = (mouse.pageY < mouseport.top) ? 0 : 1; } } // If mouse is inside, fire timer if (mouseport.xinside && mouseport.yinside) { if (!timer.running) timer.fire(localmouse.x, localmouse.y); } else if (mouseport.active) { mouseport.active = false; } }); } // Trigger Response if (settings.triggerResponse) { viewport.element.bind("jparallax", function(event, ref){ ref = stripFiletype(ref); matrixSearch(layer, ref, function(i, n) { localmouse.x = layer[i].content[n].posxrat * (layer[i].diffxrat + 1) - (0.5 * layer[i].diffxrat); localmouse.y = layer[i].content[n].posyrat * (layer[i].diffyrat + 1) - (0.5 * layer[i].diffyrat); if (!settings.triggerExposesEdges) { if (localmouse.x < 0) localmouse.x = 0; if (localmouse.x > 1) localmouse.x = 1; if (localmouse.y < 0) localmouse.y = 0; if (localmouse.y > 1) localmouse.y = 1; } mouseport.ontarget = false; if (!timer.running) timer.fire(localmouse.x, localmouse.y); }); }); } // Window Resize Response jQuery(window).resize(function() { setupPorts(viewport, mouseport); for (var i=0; i"+jQuery(this).html()+""); }else{ jQuery(".advanced_link:last").after(""+jQuery(this).html()+""); } } ); jQuery(container_to_hide).each( function(i){ jQuery(this).addClass("tablist list_"+i); if(i != 0){ jQuery(this).css({display: "none"}); } } ); jQuery(".advanced_link").each( function(i){ jQuery( this ).bind ("click",function(){ if(jQuery(this).hasClass('active')){return false} if(disable == false){disable = true; jQuery(".advanced_link").removeClass("active"); jQuery(this).addClass("active"); jQuery(container_to_hide+":visible").slideUp(400,function(){ jQuery(".list_"+i).slideDown(400, function(){disable=false; }); }); } return false; }); } ); } function kriesi_noscript(){ jQuery("#nav a").removeAttr('title'); jQuery(".featured_content").css({opacity:"0.85"}); jQuery(".rss_icon").css({display:"block"}); $content =jQuery(".widget_rss h3 a:eq(1)").html(); jQuery(".widget_rss h3 a").remove(); jQuery(".widget_rss h3").append($content); } function kriesi_jp(){ jQuery("#head h1 a").addClass("blogname"); jQuery('#parallax').jparallax({}, {ytravel: '0px'}, {ytravel: '0px'}, {ytravel: '0px'}, {ytravel: '0px'} ); } jQuery(document).ready(function(){ kriesi_noscript(); kriesi_mainmenu(); my_smothscroll(); kriesi_tab('.widget_block','.widgettitle','.widget'); kriesi_jp(); });