/**
 * jQuery VGrid v0.1.6 - variable grid layout plugin
 *
 * Terms of Use - jQuery VGrid
 * under the MIT (http://www.opensource.org/licenses/mit-license.php) License.
 *
 * Copyright 2009-2010 xlune.com All rights reserved.
 * (http://blog.xlune.com/2009/09/jqueryvgrid.html)
 */
(function(h){
function p(a)	{
var b=a.data("_vgchild"),e=[[0,a.width(),0]],i=0,c,m,n;
b.each(function(){
c=h(this);
var f=c.width(),d=c.height();
f+=Number(c.css("margin-left").replace("px",""))+Number(c.css("padding-left").replace("px",""))+Number(c.get(0).style.borderLeftWidth.replace("px",""))+Number(c.css("margin-right").replace("px",""))+Number(c.css("padding-right").replace("px",""))+Number(c.get(0).style.borderRightWidth.replace("px",""));
d+=Number(c.css("margin-top").replace("px",""))+Number(c.css("padding-top").replace("px",""))+Number(c.get(0).style.borderTopWidth.replace("px",""))+Number(c.css("margin-bottom").replace("px",""))+Number(c.css("padding-bottom").replace("px",""))+Number(c.get(0).style.borderBottomWidth.replace("px",""));
m=[f,d];
a:{f=m[0];d=e.concat().sort(t);
for(var g=d[d.length-1][2],j=0,k=d.length;
j<k;
j++){
if(d[j][2]>=g)break;
if(d[j][1]-d[j][0]>=f)	{
n=[d[j][0],d[j][2]];
break a					}
	}
n=[0,g]}d=n;f=e.concat().sort(t);
d=[d[0],d[0]+m[0],d[1]+m[1]];
g=0;for(j=f.length;g<j;
g++)if(d[0]<=f[g][0]&&f[g][1]<=d[1])delete f[g];
else{
k=f;
var q=g,l=f[g],o=d;
if(l[0]>=o[0]&&l[0]<o[1]||l[1]>=o[0]&&l[1]<o[1])
if(l[0]>=o[0]&&l[0]<o[1])l[0]=o[1];
else l[1]=o[0];k[q]=l
	}
f=f.concat([d]).sort(u);
d=[];g=0;for(j=f.length;
g<j;
g++)if(f[g])if(d.length>0&&d[d.length-1][1]==f[g][0]&&d[d.length-1][2]==f[g][2])d[d.length-1][1]=f[g][1];
else d.push(f[g]);
e=d;
i=Math.max(i,n[1]+m[1]);
c.data("_vgleft",n[0]);
c.data("_vgtop",n[1])});
a.data("_vgwrapheight",i);
v(a)			}
function t(a,b)	{
if(!a||!b)return 0;
return a[2]==b[2]&&a[0]>b[0]||a[2]>b[2]?1:-1
				}
function u(a,b)	{
if(!a||!b)return 0;
return a[0]>b[0]?1:-1
				}
function v(a)	{
var b=a.data("_vgchild").length*(a.data("_vgopt").delay||0)+a.data("_vgopt").time||500;
a.stop();
if(a.height()<a.data("_vgwrapheight"))h.browser.msie?a.height(a.data("_vgwrapheight")):a.animate({height:a.data("_vgwrapheight")+"px"},a.data("_vgopt").time||500,"easeOutQuart");
else{clearTimeout(a.data("_vgwraptimeout"));
a.data("_vgwraptimeout",setTimeout(function()	{
h.browser.msie?a.height(a.data("_vgwrapheight")):a.animate({height:a.data("_vgwrapheight")+"px"},a.data("_vgopt").time||500,"easeOutQuart")
												}
,b))}
				}
function w(a)	{
var b;
a.each(function(){
b=h(this);
b.css("left",~~b.data("_vgleft")+"px");
b.css("top",~~b.data("_vgtop")+"px")
				})
				}
function r(a,b,e,i){
var c=h(a).parent(),m=false,n=a.length,f,d,g;
for(f=0;f<n;f++){
d=h(a[f]);
g=d.position();
if(g.left!=d.data("_vgleft")&&g.top!=d.data("_vgtop"))m=true
				}
if(m){
typeof c.data("_vgopt").onStart=="function"&&c.data("_vgopt").onStart();
a.each(function(j)	{
var k=h(this),q={duration:e,easing:b};
if(a.size()-1==j)q.complete=c.data("_vgopt").onFinish||null;
clearTimeout(k.data("_vgtimeout"));
k.data("_vgtimeout",setTimeout(function()	{
k.animate({left:k.data("_vgleft")+"px",top:k.data("_vgtop")+"px"},q)
											}
,j*i))				})
	}
				}
function s(a){
clearTimeout(a.data("_vgtimeout"));
p(a);
a.data("_vgtimeout",setTimeout(function()	{
r(a.data("_vgchild"),a.data("_vgopt").easeing||"linear",a.data("_vgopt").time||500,a.data("_vgopt").delay||0)
											},500))
			}
function x(a,b){
var e=h("<span />").text(" ").attr("id","_vgridspan").hide().appendTo("body");
e.data("size",e.css("font-size"));
e.data("timer",setInterval(function()	{
if(e.css("font-size")!=e.data("size"))	{
e.data("size",e.css("font-size"));b(a)
										}
										}
,1E3))
				}
function y(a,b)	{
a.bind("vgrid-added",function()	{
a.find("img").bind("load",function(){
b(a)
									})
								});
a.trigger("vgrid-added");
var e=a.append,i=a.prepend;
a.append=function() {
e.apply(a,arguments);a.trigger("vgrid-added")
					};
a.prepend=function(){
i.apply(a,arguments);a.trigger("vgrid-added")
					}
				}
h.fn.extend(	{
vgrid:function(a){
var b=h(this);a=a||{};
b.data("_vgopt",a);
b.data("_vgchild",b.find("> *"));
b.data("_vgdefchild",b.data("_vgchild"));
b.css({position:"relative",width:"auto"});
b.data("_vgchild").css("position","absolute");
p(b);w(b.data("_vgchild"));
if(b.data("_vgopt").fadeIn)	{
var e=typeof b.data("_vgopt").fadeIn=="object"?b.data("_vgopt").fadeIn:{time:b.data("_vgopt").fadeIn};b.data("_vgchild").each(function(i)	{
var c=h(this);c.css("display","none");
setTimeout(function()	{
c.fadeIn(e.time||250)
						}
,i*(e.delay||0))																															})
							}
h(window).resize(function(){s(b)});
a.useLoadImageEvent&&y(b,s);
a.useFontSizeListener&&x(b,s);
return b},vgrefresh:function(a,b,e,i){
var c=h(this);
if(c.data("_vgchild"))	{
c.data("_vgchild",c.find("> *"));
c.data("_vgchild").css("position","absolute");
p(c);
b=typeof b=="number"?b:c.data("_vgopt").time||500;
e=typeof e=="number"?e:c.data("_vgopt").delay||0;
r(c.data("_vgchild"),a||c.data("_vgopt").easeing||"linear",b,e);
typeof i=="function"&&setTimeout(i,c.data("_vgchild").length*e+b)
						}
return c
									}
,vgsort:function(a,b,e,i){
var c=h(this);
if(c.data("_vgchild"))	{
c.data("_vgchild",c.data("_vgchild").sort(a));
c.data("_vgchild").each(function()	{
h(this).appendTo(c)					});
p(c);
r(c.data("_vgchild"),b||c.data("_vgopt").easeing||"linear",typeof e=="number"?e:c.data("_vgopt").time||500,typeof i=="number"?i:c.data("_vgopt").delay||0)
						}
return c}					
			})
			})(jQuery);




