/*
	Elastic CSS Framework
	Released under the MIT, BSD, and GPL Licenses.
	More information http://elasticss.com
	
	Elastic Engine

	@author     Fernando Trasviña (@azendal)
	@core team  Sergio de la Garza (@sgarza), Javier Ayala (@javi_ayala)
	@copyright  2009 Elastic CSS framework
	@version    2.0.2
*/ 
(function($)
    {
        var CStyle=function(element,pseudoElement){
            if(window.getComputedStyle){
                return window.getComputedStyle(element,pseudoElement)
            }
                else{
                    return element.currentStyle
                }
            };
            var width2 =0;
            var width=function(element){
                var width=CStyle(element).width;
                if(width=="auto"||width.indexOf("px")<0){
                    return $(element).width()
                }else{
                    if(parseFloat(width)<1024)
                        width2=1024;
                    else
                        width2=parseFloat(width);
                    
                         return parseFloat(width)
                 }
             };
             
             window.Elastic=function Elastic(context){
                 var r,ra,i,j,k,l,il,jl,kl,ll,econs,econ,econw,econclass,ecols,ecol,ecolclass,eg,egml,egcl,egnl,ecrw,ecw,escol,rp,ig,efcs,efcsw,eecs,eecsw,eecw,eecrw,ecs,ecsw,ec,ecclass,eecfw,ecolminw,ecolmaxw,egreg=/(^|\s+)on\-(\d+)(\s+|$)/,esreg=/(^|\s+)span\-(\d+)(\s+|$)/,eareg=/(^|\s+)adaptive\-(\d+)\-(\d+)(\s+|$)/;eg=[];egcl=egnl=0;
                 econs=$.find(".columns",context);
                 for(i=0,il=econs.length;i<il;i++){
                     econ=econs[i];
                     econclass=econ.className;

                     if(econclass.indexOf("on-")>-1&&egreg.test(econclass)){
                         egml=Number(RegExp.$2)}
                          else{
                            egml=$.find("> .column, > .container > .column",econ).length
                          }
                          econ=$.find("> .container",econ)[0]||econ;
                          econw=width(econ);
                          if(econclass.indexOf("ESTE")>-1&&econw<1024)
                          econw = 1024;

                          ecrw=econw/egml;
                          ecw=Math.round(ecrw)
                          ;if(econclass.indexOf("adaptive-")>-1&&eareg.test(econclass)){
                              ecolminw=Number(RegExp.$2);
                              ecolmaxw=Number(RegExp.$3);
                              if(ecw>ecolmaxw){
                                  while(ecw>ecolmaxw){
                                      egml=egml+1;
                                      ecrw=econw/egml;
                                      ecw=Math.round(ecrw)
                                  }
                              }else{
                                  if(ecw<ecolminw){
                                      while(ecw<ecolminw){
                                          egml=egml-1;
                                          ecrw=econw/egml;
                                          ecw=Math.round(ecrw)
                                      }
                                  }
                              }
                          }
                          ecols=$.find("> .column",econ);
                          for(j=0,jl=ecols.length;j<jl;j++){
                              efcs=[];
                              eecs=[];
                              ecs=[];
                              rp=ig=efcsw=ecsw=0;
                              ecol=ecols[j];
                              ecolclass=ecol.className;escol=1;
                              if(ecolclass.indexOf("span-")>-1&&esreg.test(ecolclass)){
                                  escol=Number(RegExp.$2)
                              }
                              ecol.escol=escol=((escol<=egml)?escol:egml);
                              egnl+=escol;
                              if(egnl==egml||j==(jl-1)||ecolclass.indexOf("final")>-1){
                                  eg.push(ecol);
                                  egcl=0;
                                  rp=1
                              }else{
                                  if(egnl<egml){
                                      eg.push(ecol);
                                      egcl=egnl
                                  }else{
                                      if(egnl>egml){
                                          egcl=escol;
                                          rp=1;
                                          ig=1}
                                  }
                              }if(rp){
                                  for(k=0,kl=eg.length;k<kl;k++){
                                      ec=eg[k];ecclass=ec.className;
                                      if(ecclass.indexOf("fixed")>-1){
                                          efcs.push(ec);
                                          efcsw+=width(ec)
                                      }else{
                                          if(ecclass.indexOf("elastic")>-1){
                                              eecs.push(ec)
                                          }else{
                                              ecs.push(ec);
                                              if(ec==eg[kl-1]){
                                                  ec.style.width=Math.round(ecrw*ec.escol)+"px"
                                              }
                                              else{
                                                  ec.style.width=Math.round(ecw*ec.escol)+"px"
                                              }
                                              ecsw=ecsw+width(ec)
                                          }
                                      }
                                  }
                                  ll=eecs.length;
                                  if(ll>0){
                                      eecfw=econw-(ecsw+efcsw);
                                      if(eecfw<=0){
                                          continue
                                      }
                                      eecrw=eecfw/ll;
                                      eecw=Math.round(eecrw);
                                      eecsw=eecw*ll;
                                      for(l=0;l<ll;l++){
                                          eecs[l].style.width=eecw+"px"
                                      }
                                      if(eecsw>eecfw){
                                          ra=eecsw-eecfw+1;
                                          for(r=1;r<ra;r++){
                                              eecs[eecs.length-r].style.width=(eecw-1)+"px"}
                                      }else{
                                          if(eecsw<eecfw){
                                              ra=eecfw-eecsw+1;
                                              for(r=1;r<ra;r++){
                                                  eecs[eecs.length-r].style.width=(eecw+1)+"px"
                                              }
                                          }
                                      }
                                      var tcw=0;
                                      for(var f=0;f<ll-1;f++){
                                          tcw+=Number(eecs[f].style.width.replace("px",""))}eecs[ll-1].style.width=(econw-(ecsw+efcsw+(tcw)))+"px"
                                  }else
                                  {
                                      if(ecol.escol==egml&&efcs.length===0){
                                          ecol.style.width=econw+"px"}
                                      else{
                                          if(ecs.length>0&&efcs.length===0&&egnl==egml){
                                              if(ecsw>econw){
                                                  ra=ecsw-econw+1;
                                                  for(r=1;r<ra;r++){
                                                      ecs[ecs.length-r].style.width=((ecw-1)*ecs[ecs.length-r].escol)+"px"}
                                              }else{
                                                  if(ecsw<econw){
                                                      ra=econw-ecsw+1;
                                                      for(r=1;r<ra;r++){
                                                          ecs[ecs.length-r].style.width=((ecw+1)*ecs[ecs.length-r].escol)+"px"
                                                      }
                                                  }
                                              }
                                              var tcw=0;
                                              for(var f=0;f<ecs.length-1;f++){
                                                  tcw+=Number(ecs[f].style.width.replace("px",""))}ec.style.width=(econw-(tcw))+"px"
                                              }else{
                                                  if(egnl<egml&&ecolclass.indexOf("final")>-1){ecol.style["margin"+((econclass.indexOf("inverted")>-1)?"Left":"Right")]=(econw-ecsw-efcsw)+"px"
                                                  }
                                              }
                                          }
                                      }eg=[];egnl=0}
                                  if(ig){
                                      eg=[ecol];
                                      egnl=escol
                                  }
                              }
                          }
                          for(i in Elastic.helpers){
                              if(Elastic.helpers.hasOwnProperty(i)){
                                  Elastic.helpers[i](context)
                              }
                          }
                      };
                      var Elastic=window.Elastic;Elastic.version="2.0.3";
                      Elastic.reset=function Elastic_reset(context){
                          var doc=$(document);doc.trigger("elastic:beforeReset");
                          var i,w,wl,h,hl,p,pl,m,ml;h=$.find(".same-height > *, .full-height, .elastic-height",context);
                          for(i=0,hl=h.length;i<hl;i++){
                              h[i].style.height=""
                          }
                          p=$.find(".vertical-center, .center, .bottom",context);
                          for(i=0,pl=p.length;i<pl;i++){
                              p[i].parentNode.style.paddingTop="";p[i].parentNode.style.height=""
                          }
                          w=$.find(".column:not(.fixed), .full-width",context);
                          for(i=0,wl=w.length;i<wl;i++){w[i].style.width=""}m=$.find(".column.final",context);for(i=0,ml=m.length;i<ml;i++){m[i].style.marginLeft="";m[i].style.marginRight=""}doc.trigger("elastic:reset")};Elastic.refresh=function Elastic_refresh(context){var doc=$(document);doc.trigger("elastic:beforeRefresh");Elastic.reset(context);Elastic(context);doc.trigger("elastic:refresh")};Elastic.configuration={refreshOnResize:true};Elastic.helpers={"full-width":function Elastic_helper_fullWidth(context){var i,$el;var els=$.find(".full-width",context);var elsl=els.length;for(i=0;i<elsl;i++){$el=$(els[i]);$el.width($el.parent().width()-($el.outerWidth(true)-$el.width()))}},"same-height":function Elastic_helper_sameHeight(context){$(".same-height",context).each(function(){var columns=$("> *",this);var maxHeight=0;columns.each(function(){var currentHeight=$(this).outerHeight(true);maxHeight=(maxHeight>currentHeight)?maxHeight:currentHeight}).each(function(){$(this).css("height",maxHeight)})})},"full-height":function Elastic_helper_fullHeight(context){$(".full-height",context).each(function(){var _this=$(this);_this.css("height",$(this.parentNode).height()-(_this.outerHeight(true)-_this.height()))})},"elastic-height":function Elastic_helper_elasticHeight(context){$(".elastic-height",context).each(function(){var _this=$(this);var h=0;$("> *:not(.elastic-height)",this.parentNode).each(function(){h+=$(this).outerHeight(true)});_this.css("height",Math.round(_this.parent().height()-h));Elastic.refresh(this)})},"center":function Elastic_helper_center(context){$(".vertical-center, .center",context).each(function(){var parentNode=$(this.parentNode);var paddingTop=Math.round((parentNode.height()-$(this).outerHeight(true))/2);parentNode.css({paddingTop:paddingTop+"px",height:(parentNode.css("height"))?(parentNode.outerHeight()-paddingTop):""})})},"bottom":function Elastic_helper_bottom(context){$(".bottom",context).each(function(){var parentNode=$(this.parentNode);var paddingTop=Math.round(parentNode.height()-$(this).outerHeight(true));parentNode.css({paddingTop:paddingTop+"px",height:(parentNode.css("height"))?(parentNode.outerHeight()-paddingTop):""})})}};$(document).bind("elastic:beforeInitialize",function(){var r=/(^|\s+)display\s+([\w\_\-\d]+)(\s+|$)/;$(".display").each(function Elastic_layout(){r.test(this.className);var c=".position-"+RegExp.$2;$(c).removeClass(c).appendTo(this)})})})(jQuery);jQuery(window).bind("load",function(){var doc=jQuery(document);var iw=document.body.clientWidth;doc.trigger("elastic:beforeInitialize");Elastic();if(iw!=document.body.clientWidth){ Elastic.refresh()}jQuery(window).bind("resize",function Elastic_resizeHandler(){if(Elastic.configuration.refreshOnResize){Elastic.refresh()}});doc.bind("elastic",Elastic.refresh);doc.trigger("elastic:initialize")});
