function ArchiFlickr () {
	this.gSlideShow = null;
	this.urlHomePage = 'http://w.arhimir.ru/js/flickr/index.html';
};

function Fotki () {
	this.gSlideShow = null;
	this.urlHomePage = 'http://w.arhimir.ru/js/fotki/index.html';
};

function Arhimir () {
	this.setup ();
};

/**
 * Basic setup.
 * @private
 */
Arhimir.prototype.setup = function(){

  // Browser fun.
  if (window.ActiveXObject) {
    this.ie = this[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
  } else if (window.opera) {
    this.opera = true;
  } else if (document.childNodes && !document.all && !navigator.taintEnabled) {
    this.safari = true;
    if (navigator.userAgent.indexOf('iPhone') > 0) {
      this.iphone = true;
    }
  } else if (document.getBoxObjectFor != null) {
    this.gecko = true;
  }
}

if (!window['arhimir']) {
	window['arhimir'] = new Arhimir ();
};

arhimir.startFlickr = function (settings) {
	arhimir.slideshow = new ArchiFlickr ();
	arhimir.slideshow.settings = {};
	if (!settings.user) settings.user='40942884@N07';
	if (!settings.album) settings.album='72157623639025848';
	if (!settings.size) settings.size='m';
	if (!settings.bgcolor) settings.bgcolor='#000000';
	if (typeof settings.container != "string" || !settings.container) settings.container='slideShow';
	arhimir.slideshow.settings = settings;
	arhimir.initApi ();
}

arhimir.startFotki = function (settings) {
	arhimir.slideshow = new Fotki ();
	arhimir.slideshow.settings = {};
	if (!settings.user) settings.user='arhimir';
	if (!settings.album) settings.album='131810';
	if (!settings.size) settings.size='m';
	if (!settings.bgcolor) settings.bgcolor='#000000';
	if (typeof settings.container != "string" || !settings.container) settings.container='slideShow';
	arhimir.slideshow.settings = settings;
	arhimir.initApi ();
}

arhimir.gloader = function () {
	google.load ("feeds", "1", {"callback" : arhimir.loadSlideShowScript});
}

arhimir.initApi = function  () {
	arhimir.loadStyle ();
	if (window.google && google.load) arhimir.gloader ();
	else arhimir.loadScript ("http://www.google.com/jsapi", arhimir.gloader);
};

arhimir.loadStyle = function () {
	var settings = arhimir.slideshow.settings;
	var container = document.getElementById(settings.container);
	container.style.backgroundColor = '#000000';
	container.style.color = '#888888';
	container.style.padding = '10px';
	var sizes = {s:'160px',m:'240px',l:'320px',xl:'480px'};
	if (settings.size) container.style.width = container.style.height = sizes[settings.size];
	if (settings.bgcolor && typeof settings.bgcolor == "string")
		container.style.backgroundColor = settings.bgcolor;
}

arhimir.loadScript = function (js_url, callback) {
	var script = document.createElement("script");
	script.src = js_url;
	script.onreadystatechange= function () {
    	if (this.readyState == 'complete' || this.readyState == 'loaded') callback();
	}
	script.onload = callback;
	script.type = "text/javascript";
	document.getElementsByTagName("head")[0].appendChild(script);
//	arhimir.gscript = script;
}

arhimir.onSlideShowInit = function () {
	arhimir.startSlideshow (arhimir.slideshow.settings);
}

arhimir.loadSlideShowScript = function () {
	if (window.GFslideShow) arhimir.onSlideShowInit ();
	else arhimir.loadScript ("http://www.google.com/uds/solutions/slideshow/gfslideshow.js", arhimir.onSlideShowInit);
};

Fotki.prototype.getImgSizedUrl = function (entry, imgSize) {
//	alert ('arhimir.safari: ' + arhimir.safari);
	var imgElements = arhimir.ie ? entry.xmlNode.getElementsByTagName ("f:img") : entry.xmlNode.getElementsByTagNameNS ("yandex:fotki", "img");
	var len = imgElements.length;
	for (var i = 0; i<len; i++) if (imgElements[i].getAttribute('size') == imgSize) return imgElements[i].getAttribute('href');
};

Fotki.prototype.entryHandler = function  (entry) {
	return Fotki.prototype.getImgSizedUrl (entry, 'M');
};

Fotki.prototype.getFeedUrl = function  () {
	return "http://api-fotki.yandex.ru/api/users/" + this.settings.user + "/album/" + this.settings.album + "/photos/";
};

ArchiFlickr.prototype.getImgSizedUrl = function (entry, imgSize) {
//	var imgElements = arhimir.ie ? entry.xmlNode.getElementsByTagName ("img") : entry.xmlNode.getElementsByTagNameNS ("yandex:fotki", "img");
	var imgElements = arhimir.ie ? 	entry.xmlNode.getElementsByTagName ("media:thumbnail") : 
									entry.xmlNode.getElementsByTagNameNS ("http://search.yahoo.com/mrss/", "thumbnail");
	return imgElements[0].getAttribute('url').replace('_s.','_m.');
};

ArchiFlickr.prototype.entryHandler = function  (entry) {
	return ArchiFlickr.prototype.getImgSizedUrl (entry, 'M');
};

ArchiFlickr.prototype.getFeedUrl = function  () {
	return "http://api.flickr.com/services/feeds/photoset.gne?set=" + 
		this.settings.album + "&nsid=" + this.settings.user + "&lang=en-us&format=rss_200";
};

arhimir.startSlideshow = function (settings) {
	var feed  = arhimir.slideshow.getFeedUrl();
    var options = {
		displayTime: 4000,
		numResults: 40,
		fullControlPanel: true,
		fullControlPanelSmallIcons: true,
		thumbnailUrlResolver: arhimir.slideshow.entryHandler,
		transitionCallback : arhimir.transitionHandler,
		thumbnailSize: GFslideShow.THUMBNAILS_MEDIUM,
		scaleImages: true,
		transistionTime: 1000
		};
	if (arhimir.slideshow.settings.size) {
		var size = arhimir.slideshow.settings.size;
		if (size == 'l' ||  size == 'xl') options.fullControlPanelSmallIcons = false;
	}
	arhimir.initGFslideShow ();
    arhimir.slideshow.gSlideShow = new GFslideShow(feed, arhimir.slideshow.settings.container, options);
};

arhimir.initGFslideShow = function () {
	var imgPathBase = 'http://w.arhimir.ru/js/img';
	GFslideShow.FC_PAUSE_PNG = {
	  small : imgPathBase + "/pause_small.png",
	  big   : imgPathBase + "/pause.png"
	};
	GFslideShow.FC_PLAY_PNG = {
	  small : imgPathBase + "/play_small.png",
	  big   : imgPathBase + "/play.png"
	};
	GFslideShow.FC_PREV_PNG = {
	  small : imgPathBase + "/prev_small.png",
	  big   : imgPathBase + "/prev.png"
	};
	GFslideShow.FC_NEXT_PNG = {
	  small : imgPathBase + "/next_small.png",
	  big   : imgPathBase + "/next.png"
	};
	GFslideShow.FC_WIDGET_PNG = {
	  small : imgPathBase + "/widget_small.png",
	  big   : imgPathBase + "/widget.png"
	};
	GFslideShow.FC_OPEN_PNG = {
	  small : imgPathBase + "/open_small.png",
	  big   : imgPathBase + "/open.png"
	};
}

arhimir.createImgLinks = function () {
	var div = arhimir.slideshow.gSlideShow.fc.container;
	var linkOpen = document.createElement('a');
	linkOpen.href = '/';
	linkOpen.target = "_blank";
	linkOpen.style.display = 'inline';
	linkOpen.title = 'открыть изображение в новом окне';
	arhimir.slideshow.imgLink = linkOpen;

	var iconSize = arhimir.slideshow.gSlideShow.options.fullControlPanelSmallIcons?'small':'big';
	var handCursor = this.ie?'hand':'pointer';

	var open = document.createElement('img');
	open.style.marginLeft = '5px';
	open.style.display = 'inline';
	open.style.borderWidth = '0px';
	open.alt = 'открыть изображение в новом окне';
	open.style.cursor = handCursor;
	open.src = GFslideShow.FC_OPEN_PNG[iconSize];
  	linkOpen.appendChild (open);

	var linkWidget = document.createElement('a');
	linkWidget.href = arhimir.slideshow.urlHomePage;
	//'http://w.arhimir.ru/js/flickr/index.html';
	linkWidget.target = "_blank";
	linkWidget.style.display = 'inline';
	linkWidget.title = 'как установить слайдшоу своих фотографий на сайт?';

	var widget = document.createElement('img');
	widget.style.marginRight = '5px';
	widget.style.borderWidth = '0px';
	widget.style.display = 'inline';
	widget.alt = 'как установить слайдшоу своих фотографий на сайт?';
	widget.style.cursor = handCursor;
	widget.src = GFslideShow.FC_WIDGET_PNG[iconSize];
  	linkWidget.appendChild (widget);

	div.appendChild(linkOpen);
	div.insertBefore(linkWidget, arhimir.slideshow.gSlideShow.fc.prev);
}

arhimir.transitionHandler = function (entry, transitionTime) {
	if (arhimir.slideshow && arhimir.slideshow.gSlideShow) {
		if (!arhimir.slideshow.imgLink) {
			arhimir.createImgLinks ();
			arhimir.slideshow.imgLink.href = entry.link;
		} else {
			arhimir.slideshow.imgLink.href = entry.link;
		}
	}
};

