//loadFirebugConsole();

// Intialize the DTM Loader
if(window.DTM_LOADER === undefined) {
	var DTM_LOADER = {};
	DTM_LOADER.widgets = {};
	DTM_LOADER.queue = [];
	// Define action to take once yui loader is present on the page
	DTM_LOADER.startup = function() {
		var startup = new YAHOO.util.YUILoader();
		startup.require(['event', 'dom']);
		startup.loadOptional = false;
		startup.insert({
			onSuccess:function() {
				DTM_LOADER.available = true;
//        YAHOO.util.Event.on(window, "load", DTM_LOADER.clearQueue);
        YAHOO.util.Event.onDOMReady(DTM_LOADER.clearQueue);
			}
		});
	}
	DTM_LOADER.addToQueue = function(widget) {
		DTM_LOADER.queue.push(widget);
	}
	DTM_LOADER.clearQueue = function() {
		if(DTM_LOADER.queue.length > 0) {
			var widget = DTM_LOADER.queue.shift();
			DTM_LOADER.load(widget);
			DTM_LOADER.clearQueue();
		}
	}
	DTM_LOADER.register = function(widget) {
		DTM_LOADER.addToQueue(widget);
		if(DTM_LOADER.available) {
			DTM_LOADER.clearQueue();
		}
	}
	DTM_LOADER.load = function(widget) {
		var module, requires = DTM_LOADER.widgets[widget].requires;
		DTM_LOADER.widgets[widget].loader = new YAHOO.util.YUILoader();
		for(var i=0; i<DTM_LOADER.widgets[widget].modules.length; i++) {
			module = DTM_LOADER.widgets[widget].modules[i];
			requires.push(module.name);
			DTM_LOADER.widgets[widget].loader.addModule(module);
		}
		DTM_LOADER.widgets[widget].loader.require(requires);
		DTM_LOADER.widgets[widget].loader.loadOptional = false;
		DTM_LOADER.widgets[widget].loader.data = DTM_LOADER.widgets[widget].launcher;
		DTM_LOADER.widgets[widget].loader.combine = true;
		DTM_LOADER.widgets[widget].loader.insert({
			onSuccess:function(launcher) {
				launcher.data();
			}
		});
	}
	DTM_LOADER.poll = function() {
		if(window.YAHOO !== undefined && YAHOO.util !== undefined && YAHOO.util.YUILoader !== undefined) {
			DTM_LOADER.startup();
		} else {
			window.setTimeout(DTM_LOADER.poll,10);
		}
	}
	// Add the Loader to the page if it is not defined
	if(window.YAHOO === undefined || YAHOO.util === undefined || YAHOO.util.YUILoader === undefined) {
		DTM_LOADER.yuiloader = function() {
			var s = document.createElement('script');
			s.setAttribute('type','text/javascript');
			//s.setAttribute('src','http://yui.yahooapis.com/2.5.2/build/yuiloader/yuiloader-beta-min.js');
			s.setAttribute('src','http://yui.yahooapis.com/2.8.1/build/yuiloader/yuiloader-min.js');
			document.getElementsByTagName('head')[0].appendChild(s);
		}();
	}
	DTM_LOADER.poll();
}

function generateFeedURL(options) {
	//console.log("returning sample feed..")
	if (options === null)
	   options = {};

	//return("/network_source/0.0.1/library/sad-tag/originals/core/j/sample_feed.js"); // For development

	var base_url = "http://adopt.dogtime.com/"; // prod
  //var base_url = "http://adopt.staging.dogtime.com/"; // staging
  //var base_url = "http://localhost.com:3000/"; // dev

	var species = options.species || DEFAULT_BREED;
	var url = base_url + "search/animals/"

  if (options.pap_shelter_id)
    url = url + "by_shelter/pap/" + options.pap_shelter_id + "/";

  url = url + species;

	if (options.breed)
		url += "/" + options.breed;

  // We will currently use the old style callback to stay backwards compatible (code in dtm-sad-tag.js lets this work)
	//url += "/widget.json?limit=20&callback=DTM.widget.sadTag.callback"
  url += "/widget.json?limit=20&callback=DTM.widget.sadBadge.callback"

	if (options.random)
	  url += '&random=' + options.random;

	return url;
}

if(DTM_LOADER.widgets.sadTag === undefined) {
	DTM_LOADER.widgets.sadTag = {};
	DTM_LOADER.widgets.sadTag.params = {};
	DTM_LOADER.widgets.sadTag.params.domClass 	= "dtm-sad-tag-1419";

  /* STAMPER OVERRIDES */
  var DEFAULT_SPECIES = "dog";
  var DEFAULT_BREED = "";
  var DEFAULT_PAP_SHELTER_ID = "";
  var DEFAULT_RANDOM = "";
  var OVERRIDE_SPECIES = "";
  var OVERRIDE_BREED = "";
  var OVERRIDE_PAP_SHELTER_ID = "";
  var OVERRIDE_RANDOM = "";

  var _dtm_species = "dog";
  var _dtm_breed = null;
  var _dtm_pap_shelter_id = null;
  var _dtm_random = null;

  if (DEFAULT_SPECIES != "")
    _dtm_species = DEFAULT_SPECIES;
  if (DEFAULT_BREED != "")
    _dtm_breed = DEFAULT_BREED;
  if (DEFAULT_PAP_SHELTER_ID != "")
    _dtm_pap_shelter_id = DEFAULT_PAP_SHELTER_ID;
  if (DEFAULT_RANDOM != "")
    _dtm_random = DEFAULT_RANDOM;

  if (window.dtm_species !== undefined)
    _dtm_species = window.dtm_species;
  if (window.dtm_breed !== undefined)
    _dtm_breed = window.dtm_breed;
  if (window.dtm_pap_shelter_id !== undefined)
    _dtm_pap_shelter_id = window.dtm_pap_shelter_id;
  if (window.dtm_random !== undefined)
    _dtm_random = window.dtm_random;

  if (OVERRIDE_SPECIES != "")
    _dtm_species = OVERRIDE_SPECIES;
  if (OVERRIDE_BREED != "")
    _dtm_breed = OVERRIDE_BREED;
  if (OVERRIDE_PAP_SHELTER_ID != "")
    _dtm_pap_shelter_id = OVERRIDE_PAP_SHELTER_ID;
  if (OVERRIDE_RANDOM != "")
    _dtm_random = OVERRIDE_RANDOM;

	DTM_LOADER.widgets.sadTag.params.feedURL 	= generateFeedURL({'species':_dtm_species, 'breed':_dtm_breed, 'random':_dtm_random, 'pap_shelter_id':_dtm_pap_shelter_id});
	DTM_LOADER.widgets.sadTag.params.assetsURL 	= "http://partners.dogtime.com/network/0.0.1/assets/001/419/sad-tag/current/";
	DTM_LOADER.widgets.sadTag.params.coreURL 	= "http://partners.dogtime.com/network/0.0.1/core/sad-tag/";
  DTM_LOADER.widgets.sadTag.params.variation = "photo-160x160";
  DTM_LOADER.widgets.sadTag.params.variationName = "photo";
  DTM_LOADER.widgets.sadTag.params.variationDimensions = "160x160";
  DTM_LOADER.widgets.sadTag.params.variationFileExtension = "-photo-160x160";
	DTM_LOADER.widgets.sadTag.params.title 		= null;
	DTM_LOADER.widgets.sadTag.params.appURL 		= "http://apps.facebook.com/save-a-dog";
	DTM_LOADER.widgets.sadTag.modules 	= [
    { name : 'DTM.widget.sadTagRender', type : 'js', fullpath : (DTM_LOADER.widgets.sadTag.params.coreURL+'j/variations/'+DTM_LOADER.widgets.sadTag.params.variationDimensions+'/'+DTM_LOADER.widgets.sadTag.params.variationName+'.js?r=2') },
    { name : 'DTM.widget.sadTag', type : 'js', fullpath : (DTM_LOADER.widgets.sadTag.params.coreURL+'j/dtm-sad-tag.js?r=2') },
		{ name : 'DTM.widget.sadTagCSS', type : 'css', fullpath : (DTM_LOADER.widgets.sadTag.params.assetsURL + 'c/dtm-sad-tag.css?r=2') },
    { name : 'DTM.widget.sadTagVariationCSS', type : 'css', fullpath : (DTM_LOADER.widgets.sadTag.params.assetsURL+'c/dtm-sad-tag'+DTM_LOADER.widgets.sadTag.params.variationFileExtension+'.css?r=2') }
  ];
	DTM_LOADER.widgets.sadTag.requires 	= ['dom', 'element', 'event', 'json', 'animation', 'element', 'carousel'];
	DTM_LOADER.widgets.sadTag.launcher = function() {
    var data = {
      domClass : DTM_LOADER.widgets.sadTag.params.domClass,
      url : DTM_LOADER.widgets.sadTag.params.feedURL,
      coreURL : DTM_LOADER.widgets.sadTag.params.coreURL,
      assetsURL : DTM_LOADER.widgets.sadTag.params.assetsURL,
      title : DTM_LOADER.widgets.sadTag.params.title,
      appURL : DTM_LOADER.widgets.sadTag.params.appURL
    };
    DTM.widget.sadTagRender.init(data);
		DTM.widget.sadTag.init(data);
	};
	DTM_LOADER.register('sadTag');
}

