Files
AtomicOld/design/carheart/js/SortedTable3_2.js

1072 lines
34 KiB
JavaScript
Raw Permalink Normal View History

2026-02-15 18:29:53 +03:00
function addEvent(obj,type,fn) {
if (obj.addEventListener) obj.addEventListener(type,fn,false);
else if (obj.attachEvent) {
obj["e"+type+fn] = fn;
obj[type+fn] = function() {obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type, obj[type+fn]);
}
}
function removeEvent(obj,type,fn) {
if (obj.removeEventListener) obj.removeEventListener(type,fn,false);
else if (obj.detachEvent) {
obj.detachEvent("on"+type, obj[type+fn]);
obj[type+fn] = null;
obj["e"+type+fn] = null;
}
}
SortedTable = function(id) {
this.table = null;
if (!document.getElementById || !document.getElementsByTagName) return false;
if (id) this.init(document.getElementById(id));
else this.init(this.findTable());
this.prep();
if (!id && this.findTable()) new SortedTable();
}
// static
SortedTable.tables = new Array();
SortedTable.move = function(d,elm) {
var st = SortedTable.getSortedTable(elm);
if (st) st.move(d,elm);
}
SortedTable.moveSelected = function(d,elm) {
var st = SortedTable.getSortedTable(elm);
if (st) st.move(d);
}
SortedTable.findParent = function(elm,tag) {
while (elm && elm.tagName && elm.tagName.toLowerCase()!=tag) elm = elm.parentNode;
return elm;
}
SortedTable.getEventElement = function(e) {
if (!e) e = window.event;
return (e.target)? e.target : e.srcElement;
}
SortedTable.getSortedTable = function(elm) {
elm = SortedTable.findParent(elm,'table');
for (var i=0;i<SortedTable.tables.length;i++) {
var t = SortedTable.tables[i].table;
if (t==elm) return SortedTable.tables[i];
}
return null;
}
SortedTable.gecko = (navigator.product=="Gecko");
SortedTable.removeBeforeSort = SortedTable.gecko;
// dynamic
SortedTable.prototype = {
// before init finished
init:function(elm) {
if (!elm) return false;
// main DOM properties
this.table = elm;
this.head = elm.getElementsByTagName('thead')[0];
this.body = elm.getElementsByTagName('tbody')[0];
this.foot = elm.getElementsByTagName('tfoot')[0];
if (this.hasClass(this.table,'regroup')) this.regroup();
this.elements = this.body.getElementsByTagName('tr');
// other properties
this.allowMultiple = true; // set this to false to disallow multiple selection
this.allowDeselect = true; // set this to false to disallow deselection
// prepare the table
this.parseCols();
this.selectedElements = new Array();
},
findTable:function() {
var elms = document.getElementsByTagName('table');
for (var i=0;i<elms.length;i++) {
if (this.hasClass(elms[i],'sorted') && !SortedTable.getSortedTable(elms[i])) return elms[i];
}
return null;
},
parseCols:function() {
if (!this.table) return;
this.cols = new Array();
var ths = this.head.getElementsByTagName('th');
for (var i=0;i<ths.length;i++) {
this.cols[ths[i].id] = new Array();
}
for (var i=0;i<this.elements.length;i++) {
var tds = this.elements[i].getElementsByTagName('td');
for (var j=0;j<tds.length;j++) {
var headers = tds[j].headers.split(' ');
for (var k=0;k<headers.length;k++) {
if (this.cols[headers[k]]) this.cols[headers[k]].push(tds[j]);
}
}
}
},
prep:function() {
if (!this.table || SortedTable.getSortedTable(this.table)) return;
this.register();
this.prepBody();
this.prepHeader();
},
register:function() {
SortedTable.tables.push(this);
},
regroup:function() {
var tbs = this.table.getElementsByTagName('tbody');
for (var i=tbs.length-1;i>0;i--) {
var trs = tbs[i].getElementsByTagName('tr');
for (var j=trs.length-1;j>=0;j--) {
this.body.appendChild(trs[j]);
}
this.table.removeChild(tbs[i]);
}
},
// helpers
trim:function(str) {
while (str.substr(0,1)==' ') str = str.substr(1);
while (str.substr(str.length-1,1)==' ') str = str.substr(0,str.length-1);
return str;
},
hasClass:function(elm,findclass) {
if (!elm) return null;
return (' '+elm.className+' ').indexOf(' '+findclass+' ')+1;
},
changeClass:function(elm,oldclass,newclass) {
if (!elm) return null;
var c = elm.className.split(' ');
for (var i=0;i<c.length;i++) {
c[i] = this.trim(c[i]);
if (c[i]==oldclass || c[i]==newclass || c[i]=='') c.splice(i,1);
}
c.push(newclass);
elm.className = this.trim(c.join(' '));
},
elementIndex:function(elm) {
for (var i=0;i<this.elements.length;i++) {
if (this.elements[i]==elm) return i;
}
return -1;
},
findParent:SortedTable.findParent,
// events
callBodyHover:function(e) {
var elm = SortedTable.getEventElement(e);
var st = SortedTable.getSortedTable(elm);
if (!st) return false;
if (typeof(st.onbodyhover)=='function') st.onbodyhover(elm,e);
var elm = st.findParent(elm,'tr');
if (e.type=='mouseover') st.changeClass(elm,'','hover');
else if (e.type=='mouseout') st.changeClass(elm,'hover','');
return false;
},
callBodyClick:function(e) {
var elm = SortedTable.getEventElement(e);
var st = SortedTable.getSortedTable(elm);
if (!st) return false;
if (typeof(st.onbodyclick)=='function') st.onbodyclick(elm,e);
var elm = st.findParent(elm,'tr');
if (e.shiftKey && st.allowMultiple) st.selectRange(elm);
else {
if (st.selected(elm)) {
if (st.allowDeselect) st.deselect(elm);
} else {
if (!e.ctrlKey || !st.allowMultiple) st.cleanselect();
st.select(elm);
}
}
return false;
},
callBodyDblClick:function(e) {
var elm = SortedTable.getEventElement(e);
var st = SortedTable.getSortedTable(elm);
if (!st) return false;
if (typeof(st.onbodydblclick)=='function') st.onbodydblclick(elm,e);
return false;
},
callHeadHover:function(e) {
var elm = SortedTable.getEventElement(e);
var st = SortedTable.getSortedTable(elm);
if (!st) return false;
if (typeof(st.onheadhover)=='function') st.onheadhover(elm,e);
return false;
},
callHeadClick:function(e) {
var elm = SortedTable.getEventElement(e);
var st = SortedTable.getSortedTable(elm);
if (!st) return false;
if (typeof(st.onheadclick)=='function') st.onheadclick(elm,e);
var elm = st.findParent(elm,'th');
st.resort(elm);
return false;
},
callHeadDblClick:function(e) {
var elm = SortedTable.getEventElement(e);
var st = SortedTable.getSortedTable(elm);
if (!st) return false;
if (typeof(st.onheaddblclick)=='function') st.onheaddblclick(elm,e);
return false;
},
// inited
prepHeader:function() {
var ths = this.head.getElementsByTagName('th');
for (var i=0;i<ths.length;i++) {
if (this.hasClass(ths[i],'nosort')) continue;
ths[i].style.cursor = 'pointer';
addEvent(ths[i],'click',this.callHeadClick);
addEvent(ths[i],'dblclick',this.callHeadDblClick);
addEvent(ths[i],'mouseover',this.callHeadHover);
addEvent(ths[i],'mouseout',this.callHeadHover);
if (this.hasClass(ths[i],'sortedplus') || this.hasClass(ths[i],'sortedminus')) this.sort(ths[i]);
}
},
prepBody:function() {
var elm = this.body.lastChild;
var pelm;
while (elm) {
pelm = elm.previousSibling;
if (elm.nodeType!=1) this.body.removeChild(elm);
elm = pelm;
}
var trs = this.body.getElementsByTagName('tr');
for (var i=0;i<trs.length;i++) {
trs[i].style.cursor = '';
addEvent(trs[i],'click',this.callBodyClick);
addEvent(trs[i],'dblclick',this.callBodyDblClick);
addEvent(trs[i],'mouseover',this.callBodyHover);
addEvent(trs[i],'mouseout',this.callBodyHover);
}
},
// selecting
selected:function(elm) {
return this.hasClass(elm,'selrow');
},
select:function(elm) {
this.changeClass(elm,'','selrow');
this.selectedElements.push(elm);
if (typeof(this.onselect)=='function') this.onselect(elm);
},
deselect:function(elm) {
this.changeClass(elm,'selrow','');
for (var i=0;i<this.selectedElements.length;i++) {
if (this.selectedElements[i]==elm) this.selectedElements.splice(i,1);
}
if (typeof(this.ondeselect)=='function') this.ondeselect(elm);
},
selectRange:function(elm1) {
if (this.selectedElements.length==0) {
this.select(elm1);
return false;
}
var elm0 = this.selectedElements[this.selectedElements.length-1];
var d = (this.elementIndex(elm0) < this.elementIndex(elm1));
var elm = elm0;
if (this.selected(elm1)) {if (this.selected(elm0)) this.deselect(elm0);}
else {if (!this.selected(elm0)) this.select(elm0);}
do {
elm = (d)? elm.nextSibling : elm.previousSibling;
if (this.selected(elm)) this.deselect(elm);
else this.select(elm);
} while (elm!=elm1);
return true;
},
cleanselect:function() {
for (var i=0;i<this.elements.length;i++) {
if (this.selected(this.elements[i])) this.deselect(this.elements[i]);
}
this.selectedElements = new Array();
},
// sorting
compareSmart:function(v1,v2) {
v1 = (v1)? v1.split(' ') : [];
v2 = (v2)? v2.split(' ') : [];
l = Math.max(v1.length,v2.length);
var r = 0;
for (var i=0;i<l;i++) {
if (v1[i]==v2[i]) continue;
if (!v1[i]) v1[i] = "";
if (!v2[i]) v2[i] = "";
if (!isNaN(parseFloat(v1[i]))) v1[i] = parseFloat(v1[i]);
if (!isNaN(parseFloat(v2[i]))) v2[i] = parseFloat(v2[i]);
if (isNaN(v1[i])&&!isNaN(v2[i])) return 1;
else if (!isNaN(v1[i])&&isNaN(v2[i])) return -1;
else if (v1[i]>v2[i]) return 1;
else if (v1[i]<v2[i]) return -1;
}
return 0;
},
compare:function(v1,v2,st) {
var st = (!st)? SortedTable.getSortedTable(v1) : st;
if (v1==null || v2==null) return 0;
var axis = v1.axis.toLowerCase();
var v1s = (v1.title)? v1.title : (v1.innerHTML)? v1.innerHTML : '';
var v2s = (v2.title)? v2.title : (v2.innerHTML)? v2.innerHTML : '';
if (axis=='string') {
return st.compareSmart(v1s.toLowerCase(),v2s.toLowerCase());
} else if (axis=='sstring') {
return st.compareSmart(v1s,v2s);
} else if (axis=='number') {
v1 = parseFloat(v1s);
if (isNaN(v1)) v1 = Infinity;
v2 = parseFloat(v2s);
if (isNaN(v2)) v2 = Infinity;
} else {
v1 = (v1s!='')? v1s : v1;
v2 = (v2s!='')? v2s : v2;
}
if (v1==null || v2==null) return 0;
else if (v1>v2) return 1
else if (v1<v2) return -1;
return 0;
},
findSort:function() {
var ths = this.head.getElementsByTagName('th');
for (var i=0;i<ths.length;i++) {
if (this.hasClass(ths[i],'sortedminus') || this.hasClass(ths[i],'sortedplus')) return ths[i];
}
return null;
},
sort:function(elm,reverseonly) {
var st = this;
var comparator = function(v1,v2) {
return st.compare(v1,v2,st);
}
if (!elm) elm = this.findSort();
if (!elm) return false;
var col = this.cols[elm.id];
if (!reverseonly) col.sort(comparator);
if (this.hasClass(elm,'sortedminus') || reverseonly) col.reverse();
var b_sibling,b_parent;
if (SortedTable.removeBeforeSort) {
b_sibling = this.body.nextSibling;
b_parent = this.body.parentNode;
b_parent.removeChild(this.body);
}
for (var i=0;i<col.length;i++) {
this.body.appendChild(this.findParent(col[i],'tr'));
}
if (SortedTable.removeBeforeSort) {
b_parent.insertBefore(this.body,b_sibling);
}
if (typeof(this.onsort)=='function') this.onsort(elm);
},
resort:function(elm) {
if (!elm) return false;
this.cleansort(elm);
var reverseonly = false;
if (this.hasClass(elm,'sortedplus')) {
this.changeClass(elm,'sortedplus','sortedminus');
reverseonly = true;
} else if (this.hasClass(elm,'sortedminus')) {
this.changeClass(elm,'sortedminus','sortedplus');
reverseonly = true;
} else {
this.changeClass(elm,'sortedminus','sortedplus');
}
this.sort(elm,reverseonly);
},
cleansort:function(except) {
var ths = this.head.getElementsByTagName('th');
for (var i=0;i<ths.length;i++) {
if (ths[i]==except) continue;
if (this.hasClass(ths[i],'sortedminus')) this.changeClass(ths[i],'sortedminus','');
else if (this.hasClass(ths[i],'sortedplus')) this.changeClass(ths[i],'sortedplus','');
}
},
// movement
compareindex:function(v1,v2) {
var st = SortedTable.getSortedTable(v1);
if (!st) return 0;
v1 = st.elementIndex(v1);
v2 = st.elementIndex(v2);
if (v1==null || v2==null) return 0;
else if (v1<v2) return 1
else if (v2<v1) return -1;
return 0;
},
move:function(d,elm) {
if (elm) this.moverow(d,elm);
else {
var m = true;
for (var i=0;i<this.selectedElements.length;i++) {
if (!this.canMove(d,this.selectedElements[i])) m = false;
}
if (m) {
var moving = this.selectedElements.slice(0,this.selectedElements.length);
moving.sort(this.compareindex);
if (d>0) moving.reverse();
for (var i=0;i<moving.length;i++) {
this.moverow(d,moving[i]);
}
}
}
if (typeof(this.onmove)=='function') this.onmove(d,elm);
},
moverow:function(d,elm) {
this.cleansort();
var parent = elm.parentNode;
var sibling = this.canMove(d,elm);
if (!sibling) return false;
if (d>0) {
parent.removeChild(elm);
parent.insertBefore(elm,sibling);
} else {
parent.removeChild(elm);
if (sibling.nextSibling) parent.insertBefore(elm,sibling.nextSibling);
else parent.appendChild(elm);
}
},
canMove:function(d,elm) {
if (d>0) return elm.previousSibling;
else return elm.nextSibling;
}
};
/*
* FancyBox - simple jQuery plugin for fancy image zooming
* Examples and documentation at: http://fancy.klade.lv/
* Version: 1.0.0 (25/04/2008)
* Copyright (c) 2008 Janis Skarnelis
* Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
* Requires: jQuery v1.2.1 or later
*/
(function($) {
var opts = {},
imgPreloader = new Image, imgTypes = ['png', 'jpg', 'jpeg', 'gif'],
loadingTimer, loadingFrame = 1;
$.fn.fancybox = function(settings) {
opts.settings = $.extend({}, $.fn.fancybox.defaults, settings);
$.fn.fancybox.init();
return this.each(function() {
var $this = $(this);
var o = $.metadata ? $.extend({}, opts.settings, $this.metadata()) : opts.settings;
$this.unbind('click').click(function() {
$.fn.fancybox.start(this, o); return false;
});
});
};
$.fn.fancybox.start = function(el, o) {
if (opts.animating) return false;
if (o.overlayShow) {
$("#fancy_wrap").prepend('<div id="fancy_overlay"></div>');
$("#fancy_overlay").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': o.overlayOpacity});
if ($.browser.msie) {
$("#fancy_wrap").prepend('<iframe id="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');
$("#fancy_bigIframe").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': 0});
}
$("#fancy_overlay").click($.fn.fancybox.close);
}
opts.itemArray = [];
opts.itemNum = 0;
if (jQuery.isFunction(o.itemLoadCallback)) {
o.itemLoadCallback.apply(this, [opts]);
var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
var tmp = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
for (var i = 0; i < opts.itemArray.length; i++) {
opts.itemArray[i].o = $.extend({}, o, opts.itemArray[i].o);
if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
opts.itemArray[i].orig = tmp;
}
}
} else {
if (!el.rel || el.rel == '') {
var item = {url: el.href, title: el.title, o: o};
if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
}
opts.itemArray.push(item);
} else {
var arr = $("a[rel=" + el.rel + "]").get();
for (var i = 0; i < arr.length; i++) {
var tmp = $.metadata ? $.extend({}, o, $(arr[i]).metadata()) : o;
var item = {url: arr[i].href, title: arr[i].title, o: tmp};
if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
var c = $(arr[i]).children("img:first").length ? $(arr[i]).children("img:first") : $(el);
item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
}
if (arr[i].href == el.href) opts.itemNum = i;
opts.itemArray.push(item);
}
}
}
$.fn.fancybox.changeItem(opts.itemNum);
};
$.fn.fancybox.changeItem = function(n) {
$.fn.fancybox.showLoading();
opts.itemNum = n;
$("#fancy_nav").empty();
$("#fancy_outer").stop();
$("#fancy_title").hide();
$(document).unbind("keydown");
imgRegExp = imgTypes.join('|');
imgRegExp = new RegExp('\.' + imgRegExp + '$', 'i');
var url = opts.itemArray[n].url;
if (url.match(/#/)) {
var target = window.location.href.split('#')[0]; target = url.replace(target,'');
$.fn.fancybox.showItem('<div id="fancy_div">' + $(target).html() + '</div>');
$("#fancy_loading").hide();
} else if (url.match(imgRegExp)) {
$(imgPreloader).unbind('load').bind('load', function() {
$("#fancy_loading").hide();
opts.itemArray[n].o.frameWidth = imgPreloader.width;
opts.itemArray[n].o.frameHeight = imgPreloader.height;
$.fn.fancybox.showItem('<img id="fancy_img" src="' + imgPreloader.src + '" />');
}).attr('src', url + '?rand=' + Math.floor(Math.random() * 999999999) );
} else {
$.fn.fancybox.showItem('<iframe id="fancy_frame" onload="$.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + url + '"></iframe>');
}
};
$.fn.fancybox.showIframe = function() {
$("#fancy_loading").hide();
$("#fancy_frame").show();
};
$.fn.fancybox.showItem = function(val) {
$.fn.fancybox.preloadNeighborImages();
var viewportPos = $.fn.fancybox.getViewport();
var itemSize = $.fn.fancybox.getMaxSize(viewportPos[0] - 50, viewportPos[1] - 100, opts.itemArray[opts.itemNum].o.frameWidth, opts.itemArray[opts.itemNum].o.frameHeight);
var itemLeft = viewportPos[2] + Math.round((viewportPos[0] - itemSize[0]) / 2) - 20;
var itemTop = viewportPos[3] + Math.round((viewportPos[1] - itemSize[1]) / 2) - 40;
var itemOpts = {
'left': itemLeft,
'top': itemTop,
'width': itemSize[0] + 'px',
'height': itemSize[1] + 'px'
}
if (opts.active) {
$('#fancy_content').fadeOut("normal", function() {
$("#fancy_content").empty();
$("#fancy_outer").animate(itemOpts, "normal", function() {
$("#fancy_content").append($(val)).fadeIn("normal");
$.fn.fancybox.updateDetails();
});
});
} else {
opts.active = true;
$("#fancy_content").empty();
if ($("#fancy_content").is(":animated")) {
console.info('animated!');
}
if (opts.itemArray[opts.itemNum].o.zoomSpeedIn > 0) {
opts.animating = true;
itemOpts.opacity = "show";
$("#fancy_outer").css({
'top': opts.itemArray[opts.itemNum].orig.pos.top - 18,
'left': opts.itemArray[opts.itemNum].orig.pos.left - 18,
'height': opts.itemArray[opts.itemNum].orig.height,
'width': opts.itemArray[opts.itemNum].orig.width
});
$("#fancy_content").append($(val)).show();
$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedIn, function() {
opts.animating = false;
$.fn.fancybox.updateDetails();
});
} else {
$("#fancy_content").append($(val)).show();
$("#fancy_outer").css(itemOpts).show();
$.fn.fancybox.updateDetails();
}
}
};
$.fn.fancybox.updateDetails = function() {
$("#fancy_bg,#fancy_close").show();
if (opts.itemArray[opts.itemNum].title !== undefined && opts.itemArray[opts.itemNum].title !== '') {
$('#fancy_title div').html(opts.itemArray[opts.itemNum].title);
$('#fancy_title').show();
}
if (opts.itemArray[opts.itemNum].o.hideOnContentClick) {
$("#fancy_content").click($.fn.fancybox.close);
} else {
$("#fancy_content").unbind('click');
}
if (opts.itemNum != 0) {
$("#fancy_nav").append('<a id="fancy_left" href="javascript:;"></a>');
$('#fancy_left').click(function() {
$.fn.fancybox.changeItem(opts.itemNum - 1); return false;
});
}
if (opts.itemNum != (opts.itemArray.length - 1)) {
$("#fancy_nav").append('<a id="fancy_right" href="javascript:;"></a>');
$('#fancy_right').click(function(){
$.fn.fancybox.changeItem(opts.itemNum + 1); return false;
});
}
$(document).keydown(function(event) {
if (event.keyCode == 27) {
$.fn.fancybox.close();
} else if(event.keyCode == 37 && opts.itemNum != 0) {
$.fn.fancybox.changeItem(opts.itemNum - 1);
} else if(event.keyCode == 39 && opts.itemNum != (opts.itemArray.length - 1)) {
$.fn.fancybox.changeItem(opts.itemNum + 1);
}
});
};
$.fn.fancybox.preloadNeighborImages = function() {
if ((opts.itemArray.length - 1) > opts.itemNum) {
preloadNextImage = new Image();
preloadNextImage.src = opts.itemArray[opts.itemNum + 1].url;
}
if (opts.itemNum > 0) {
preloadPrevImage = new Image();
preloadPrevImage.src = opts.itemArray[opts.itemNum - 1].url;
}
};
$.fn.fancybox.close = function() {
if (opts.animating) return false;
$(imgPreloader).unbind('load');
$(document).unbind("keydown");
$("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();
$("#fancy_nav").empty();
opts.active = false;
if (opts.itemArray[opts.itemNum].o.zoomSpeedOut > 0) {
var itemOpts = {
'top': opts.itemArray[opts.itemNum].orig.pos.top - 18,
'left': opts.itemArray[opts.itemNum].orig.pos.left - 18,
'height': opts.itemArray[opts.itemNum].orig.height,
'width': opts.itemArray[opts.itemNum].orig.width,
'opacity': 'hide'
};
opts.animating = true;
$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedOut, function() {
$("#fancy_content").hide().empty();
$("#fancy_overlay,#fancy_bigIframe").remove();
opts.animating = false;
});
} else {
$("#fancy_outer").hide();
$("#fancy_content").hide().empty();
$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
}
};
$.fn.fancybox.showLoading = function() {
clearInterval(loadingTimer);
var pos = $.fn.fancybox.getViewport();
$("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
$("#fancy_loading").bind('click', $.fn.fancybox.close);
loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
};
$.fn.fancybox.animateLoading = function(el, o) {
if (!$("#fancy_loading").is(':visible')){
clearInterval(loadingTimer);
return;
}
$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');
loadingFrame = (loadingFrame + 1) % 12;
};
$.fn.fancybox.init = function() {
if (!$('#fancy_wrap').length) {
$('<div id="fancy_wrap"><div id="fancy_loading"><div></div></div><div id="fancy_outer"><div id="fancy_inner"><div id="fancy_nav"></div><div id="fancy_close"></div><div id="fancy_content"></div><div id="fancy_title"></div></div></div></div>').appendTo("body");
$('<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>').prependTo("#fancy_inner");
$('<table cellspacing="0" cellpadding="0" border="0"><tr><td id="fancy_title_left"></td><td id="fancy_title_main"><div></div></td><td id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');
}
if ($.browser.msie) {
$("#fancy_inner").prepend('<iframe id="fancy_freeIframe" scrolling="no" frameborder="0"></iframe>');
}
if (jQuery.fn.pngFix) $(document).pngFix();
$("#fancy_close").click($.fn.fancybox.close);
};
$.fn.fancybox.getPosition = function(el) {
var pos = el.offset();
pos.top += $.fn.fancybox.num(el, 'paddingTop');
pos.top += $.fn.fancybox.num(el, 'borderTopWidth');
pos.left += $.fn.fancybox.num(el, 'paddingLeft');
pos.left += $.fn.fancybox.num(el, 'borderLeftWidth');
return pos;
};
$.fn.fancybox.num = function (el, prop) {
return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
};
$.fn.fancybox.getPageScroll = function() {
var xScroll, yScroll;
if (self.pageYOffset) {
yScroll = self.pageYOffset;
xScroll = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollTop) {
yScroll = document.documentElement.scrollTop;
xScroll = document.documentElement.scrollLeft;
} else if (document.body) {
yScroll = document.body.scrollTop;
xScroll = document.body.scrollLeft;
}
return [xScroll, yScroll];
};
$.fn.fancybox.getViewport = function() {
var scroll = $.fn.fancybox.getPageScroll();
return [$(window).width(), $(window).height(), scroll[0], scroll[1]];
};
$.fn.fancybox.getMaxSize = function(maxWidth, maxHeight, imageWidth, imageHeight) {
var r = Math.min(Math.min(maxWidth, imageWidth) / imageWidth, Math.min(maxHeight, imageHeight) / imageHeight);
return [Math.round(r * imageWidth), Math.round(r * imageHeight)];
};
$.fn.fancybox.defaults = {
padding : 10,
imageScale : true,
zoomOpacity : false,
zoomSpeedIn : 0,
zoomSpeedOut : 0,
zoomSpeedChange : 300,
easingIn : 'swing',
easingOut : 'swing',
easingChange : 'swing',
frameWidth : 425,
frameHeight : 355,
overlayShow : true,
overlayOpacity : 0.3,
hideOnContentClick : true,
centerOnScroll : true,
itemArray : [],
callbackOnStart : null,
callbackOnShow : null,
callbackOnClose : null
};
})(jQuery);
$(document).ready(function() {
$("#gallery a.test").fancybox({
hideOnContentClick: true,
overlayShow: true,
overlayOpacity: 0.6,
zoomSpeedIn: 600,
zoomSpeedOut:400
});
// автоматическое появление картинки в fancybox
var gaspari = $('#filhit');
gaspari.fancybox({
hideOnContentClick: true,
overlayShow: true,
overlayOpacity: 0.5,
zoomSpeedIn: 600,
zoomSpeedOut:400
});
gaspari.click();
// \\ автоматическое появление картинки в fancybox
// оповещение о поступлении на склад
$('.mail_ico, .mail_ico2').toggle(function(){
var id = $(this).attr('id');
var form_inform = $(this).next();
//var name = $(this).attr('title');
var val_email = $('#email_inform').val();
if(!val_email) val_email = 'Введите свой E-mail';
var form_inform_print = "<fieldset>";
//if ($(this).attr('class') != 'mail_ico2') form_inform_print += "<legend>Оповестить, когда появится</legend>";
form_inform_print += "<form action='/includes/inform_ajax.php' method='GET'>" +
"<input class='email' type=\"text\" value='"+ val_email +"' onblur=\"if(this.value=='') this.value='Введите свой E-mail';\" onfocus=\"if(this.value=='Введите свой E-mail') this.value='';\" />" +
"<input class='go_inform' class=\"submit\" type=\"button\" value=\"Отправить\" />" +
"<input type='hidden' name='pid' value='"+ id +"' />" +
"<div class='status_message' style='padding-top:6px'></div>" +
"</form></fieldset>";
if(form_inform.html()) {
form_inform.fadeIn();
} else {
form_inform.hide().html(form_inform_print).fadeIn();
}
if ($(this).attr('class') != 'mail_ico2'){
$(this).fadeOut(250, function(){
$(this).css('background-position', '-47px -21px').attr('title', 'Закрыть форму');
}).fadeIn(250);
}
}, function(){
if ($(this).attr('class') != 'mail_ico2'){
$(this).fadeOut(250,function(){
$(this).css('background-position', '-47px -51px').attr('title', 'Оповестить по E-mail при поступлении на склад');
}).fadeIn(250);
}
var form_inform = $(this).next();
form_inform.fadeOut();
});
$('.go_inform').live('click', function(){
var input = $(this).parent().find("[name='pid']").val();
var email = $(this).parent().find("[type='text']").val();
var outPut = $(this).parent().find("[class='status_message']");
//alert(email);
//return false;
$.ajax({
type: 'GET',
url: '/includes/inform_ajax.php',
data: 'q=' + input + '&email=' + encodeURIComponent(email),
dataType: 'json',
beforeSend: function()
{
outPut.html('<img src="/img/loading.gif" />').fadeIn();
},
success: function(msg){
if(msg.error){
var out = '<div class="inform_err red2">'+ msg.error +'</div>';
} else {
var out = '<div class="inform_err green2">'+ msg.ok +'</div>'
}
outPut.html(out);
//outPut.html(msg);
}
}); // конец аякса
}); //\\ оповещение о поступлении на склад
// наши награды
var imageList = [
{url: "/img/awards/fbfr2.gif", title: "Чемпионат Москвы по бодибилдингу"},
{url: "/img/awards/fbfr3.gif", title: "Okfit - генеральный спонсор Чемпионата России по бодибилдингу"},
{url: "/img/awards/mioff.jpg", title: "Mioff"},
{url: "/img/awards/okfit.gif", title: "Okfit"},
{url: "/img/awards/muscl.gif", title: "Muscletech"},
{url: "/img/awards/prolab.gif", title: "Prolab"},
{url: "/img/awards/WC.gif", title: "World Class"}
];
function getGroupItems(opts) {
jQuery.each(imageList, function(i, val) {
opts.itemArray.push(val);
});
}
$(".awards_link").fancybox({
// itemLoadCallback: getGroupItems,
"zoomSpeedIn" : 1000,
"zoomSpeedOut" : 1000,
"frameWidth" : 1000,
"frameHeight" : 800,
"overlayOpacity" : 0.8,
"hideOnContentClick" :false
});
// \\наши награды
// сравнение товаров
$('.cmp_del_img').live('click', function(e){
e.preventDefault();
var pid2 = $(this).attr('href');
var cur_cmp_link = $(this);
$.ajax({
type: 'POST',
url: '/includes/compare/compare_ajax.php',
data: 'pid=' + pid2 + '&op=del',
dataType: 'json',
success: function(msg){
if(msg.error == 4) {
cur_cmp_link.fadeOut(400).remove();
//$('#cmp_' + pid2).attr('checked', '');
var cur_box = $('#cmp_' + pid2);
cur_box.removeAttr('checked');
cur_box.next('span').removeClass('checked'); // это span от idealForm
}
if(msg.error2 != 3) {
$('.button_none').hide();
}
}
}); // конец аякса
});
$('.hndl_submit_prds_cmp').fancybox({
zoomSpeedIn: 0,
zoomSpeedOut:0,
frameWidth: 1200,
frameHeight: 800
}).click(function (e) {
e.preventDefault();
$('#compare_mask, .window').hide();
});
$('.compare').click(function(){
var id = $('#compare_box');
var maskHeight = $(document).height();
var maskWidth = $(window).width();
var mask2 = $('#compare_mask');
mask2.css({'width':maskWidth,'height':maskHeight});
mask2.css('opacity', 0.6).show();
var winH = $(window).height();
var winW = $(window).width();
id.css('top', winH/2-id.height()/2 + id.offset().top + 'px');
id.css('left', winW/2-id.width()/2 + 'px');
id.fadeIn(1);
var pid = $(this).val();
var outPut = id.children('.modal_out');
var button_none = $('.button_none');
var button_none2 = $('#compare_box .button_none');
if($(this).is(':checked')) {
var item_checkbox = $(this); // чтобы было видно в ajax
$.ajax({
type: 'POST',
url: '/includes/compare/compare_ajax.php',
data: 'pid=' + pid + '&op=add',
dataType: 'json',
beforeSend: function()
{
button_none2.hide();
outPut.html('<img src="/img/loading.gif" />').fadeIn();
},
success: function(msg){
outPut.html(msg.msg + '<br />' + msg.error3);
if(msg.error == 1) item_checkbox.removeAttr('checked');
if(msg.error2 == 3) {
button_none.show();
} else {
button_none.hide();
}
}
}); // конец аякса
} else {
$.ajax({
type: 'POST',
url: '/includes/compare/compare_ajax.php',
data: 'pid=' + pid + '&op=del',
dataType: 'json',
beforeSend: function()
{
button_none2.hide();
outPut.html('<img src="/img/loading.gif" />').fadeIn();
},
success: function(msg){
outPut.html(msg.msg + '<br />' + msg.error3);
if(msg.error2 == 3) {
button_none.show();
} else {
button_none.hide();
}
}
}); // конец аякса
}
});
//\\ сравнение товаров конец
}); // конец ready