www.gusucode.com > 200套html5精品模板1_50 > 200套html5精品模板1_50/023/preview/preview.js
/*! * jQuery Cookie Plugin * https://github.com/carhartl/jquery-cookie * * Copyright 2011, Klaus Hartl * Dual licensed under the MIT or GPL Version 2 licenses. * http://www.opensource.org/licenses/mit-license.php * http://www.opensource.org/licenses/GPL-2.0 */ (function($) { /*jslint undef: false, browser: true, devel: false, eqeqeq: false, bitwise: false, white: false, plusplus: false, regexp: false, nomen: false */ /*global jQuery,setTimeout,location,setInterval,YT,clearInterval,clearTimeout,pixelentity */ $.cookie = function(key, value, options) { // key and at least value given, set cookie... if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) { options = $.extend({}, options); if (value === null || value === undefined) { options.expires = -1; } if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } value = String(value); return (document.cookie = [ encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // key and possibly options given, get cookie... options = value || {}; var decode = options.raw ? function(s) { return s; } : decodeURIComponent; var pairs = document.cookie.split('; '); for (var i = 0, pair; (pair = pairs[i] && pairs[i].split('=')); i++) { if (decode(pair[0]) === key) { return decode(pair[1] || ''); } } return null; }; }(jQuery)); (function ($) { /*jslint undef: false, browser: true, devel: false, eqeqeq: false, bitwise: false, white: false, plusplus: false, regexp: false, nomen: false */ /*global jQuery,setTimeout,location,setInterval,YT,clearInterval,clearTimeout,pixelentity */ $.pixelentity = $.pixelentity || {version: '1.0.0'}; $.pixelentity.pePreviewOptions = { conf: { api: false } }; function PePreviewOptions(target, conf) { var overlay,w,style,timer,over = false; function animate(active) { overlay.stop().animate({"margin-left": active ? -10 : 0-w },300,"easeOutQuad"); } function hide() { animate(false); } function show(active) { if (active) { animate(true); } else { timer = setTimeout(hide,500); } } function evHandler(e) { clearTimeout(timer); if (e.type === "mouseenter") { over = true; show(true); } else { over = false; show(false); } } function setSkin(skin) { if (!skin) { return; } if (!style) { style = $('head link[href*="skin"]'); if (style.length === 0) { style=$('<link rel="stylesheet" type="text/css" />'); $("head").append(style); } } style.attr("href",skin); $.cookie("skin", skin, { expires: 7 }); } function chooseSkin(e) { setSkin(e.currentTarget.href); return false; } function makeActive() { if (!over) { show(false); } } function loaded(sidebar) { overlay = $(sidebar); target.prepend(overlay); overlay = overlay.filter(".pePreviewOptions").fadeTo(0,0); w = overlay.outerWidth(); w = 252; overlay.delegate("a","click",chooseSkin); if ($.cookie("shown")) { overlay.css("margin-left",0-w).fadeTo(200,1); } else { overlay.fadeTo(200,1); $.cookie("shown",1); } overlay.bind("mouseenter mouseleave",evHandler); //overlay.bind("click",evHandler); setTimeout(makeActive,1000); } // init function function start() { if ($.browser.msie && $.browser.version < 9) { return; } setSkin($.cookie("skin")); $.get("preview/sidebar.html", null, loaded); } $.extend(this, { // plublic API destroy: function() { target.data("pePreviewOptions", null); target = undefined; } }); // initialize start(); } // jQuery plugin implementation $.fn.pePreviewOptions = function(conf) { // return existing instance var api = this.data("pePreviewOptions"); if (api) { return api; } conf = $.extend(true, {}, $.pixelentity.pePreviewOptions.conf, conf); // install the plugin for each entry in jQuery object this.each(function() { var el = $(this); api = new PePreviewOptions(el, conf); el.data("pePreviewOptions", api); }); return conf.api ? api: this; }; }(jQuery)); jQuery(document).ready(function($) { $("body").pePreviewOptions(); });