var dreamstime = {}; // Namespace
dreamstime.settings = {
  serviceUri: '/lib/dt'
};
dreamstime.search = function(query, funky, shuffled, num) {
    $.ajaxSetup({
        xhr: function()
            {
            if ($.browser.msie)
                {
                return new ActiveXObject("Microsoft.XMLHTTP");
                }
            else
                {
                return new XMLHttpRequest();
                }
            }
    });

    $.ajax({
      url: dreamstime.settings.serviceUri,
      data: { action: 'search', q: query, shuffle: shuffled, ipp: num },
      dataType: 'json',
		type: 'get',
      success: funky
    });

};
dreamstime.get = function(obj, num, page, query, shuffle) {
  if (page == undefined) { page == 1; }
  if (query == undefined) { query = ''; }
  if (shuffle == undefined) { shuffle=false; }
  if (num == undefined) { num=40; }

  var uri = dreamstime.settings.serviceUri;
  var out = '';
  out += "<ul>";
  for (var i=0; i<num; i++) {
    out += '<li><a href="#"><img src="'+uri+'/img/ajax-loader.gif" class="shadow"></a></li>';
  }
  out += '</ul>';
  $(obj).html(out);
  dreamstime.populate(obj, num, page, query, shuffle);
}

dreamstime.populate = function(obj, num, page, query, shuffle) {
  //console.log("populate called");
  dreamstime.search(query, function(data) {
    var counter = 0;
    $('li', obj).each(function(index, col) {
      var image = $('img', col);
      var link = $('a', col);
      $(image).fadeOut('fast');
      image.attr('src', data[index].mediumThumb);
      link.attr('href', data[index].imageURL);
      $(image).fadeIn('slow');
      //console.log("dt image: "+index);
    });
  }, shuffle, num);

    if (shuffle == true) {
      setTimeout(function() {
        dreamstime.populate(obj, num, page, query, shuffle)
      }, 15*1000);
    }

}

$.fn.dreamstime = function (parameters) {
  if (parameters == undefined) { // Defaults
    dreamstime.get(this, 5, 1, null, true);
  } else {
    switch (parameters.type) {
      case 'get':
        dreamstime.get(this, parameters.num, parameters.page, parameters.query, parameters.shuffle);
      break;

      default:
        alert("Unknown type '"+parameters.type+"'");
      break;
    }
  }
}

