/* URLENCODE */
$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
  while(x<c.length){var m=r.exec(c.substr(x));
    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;}
});

/* load CSS */
function getCSS( url, media ){
      $(document.createElement('link') ).attr({
          href: url,
          media: media || 'screen',
          type: 'text/css',
          rel: 'stylesheet'
      }).appendTo($('head'));
}


/**
 *    SQUARE IMAGES FUNCTIONS
**/

/* Shift Visibility */
function shiftVisible(){
   
    var visibleElements = $('#squareImages div.wp-caption');
    var orderId = visibleElements.length -1;
    
    visibleElements.each(function(){
    // set continuos id
      $(this).attr('id', "squareImg-" + orderId);
      orderId --;
    });
  
    setTimeout ( function() {
     var randElem = '#squareImg-' + Math.floor(Math.random() * visibleElements.length);
     var newElem = $('#squareImagesCache div:first-child');
     
     if (! $(randElem).hasClass("hovering")){
       var oldElem = $(randElem).clone(true);
       $('#squareImagesCache').append(oldElem);
       //$(randElem).fadeTo(1000, 0.01, function(){
           $(randElem).replaceWith(newElem);
         //  $(randElem).fadeTo(1000,1);
       //});
       //randomizeElements($('#squareImagesCache'))
     }
     shiftVisible();
    }, 1000); /* optimal 2000 */
}

/* randomize array */
function randomizeElements(elements){
  var randomized = new Array();
  while (elements.length > 0){
     var rand = Math.floor(Math.random() * elements.length);
     var one = elements[rand];
     elements.splice(rand, 1);
     randomized.push(one);
  }
  return randomized;
}

/* visible/invisible elements */
function splitIt(elements, spliceAt){
  var returnIt = new Array();
  var counted = new Array();
  counted = elements.splice(0 , spliceAt);
  returnIt[0] = counted;
  returnIt[1] = elements;
  return returnIt;
}