// Kent Brewster 2009
// modified using http://kentbrewster.com/twitter-search-badge as template
( function() { 
	var trueName = '';
   for (var i = 0; i < 16; i++) { 
      trueName += String.fromCharCode(Math.floor(Math.random() * 26) + 97); 
   }
   window[trueName] = {};
   var $ = window[trueName]; 
	
   $.d = document;
   $.f = function() {
      return {      
         init : function(target) {
            var k = $.d.getElementsByTagName('SCRIPT');
            var n = k.length; 
            for (var i = 0; i < n; i++) {
               if (k[i].src.match(target)) {
                  $.a = {};
                  if (k[i].innerHTML) {
                     $.a = $.f.parseJson(k[i].innerHTML); 
                  }
                  $.f.houseKeep();
                  $.s = $.d.createElement('DIV');
                  $.f.buildStructure();
                  $.f.buildPresentation();
                  $.f.buildBehavior();
                  k[i].parentNode.insertBefore($.s, k[i]);
                  k[i].parentNode.removeChild(k[i]);
                  break;
               }
            }         
         },
         parseJson : function(json) {
         	this.parseJson.data = json;
         	if ( typeof json != 'string') {
               return {"err":"trying to parse a non-string JSON object"};
            }
            try {
               var f = Function(['var document,top,self,window,parent,Number,Date,Object,Function,',
                  'Array,String,Math,RegExp,Image,ActiveXObject;',
                  'return (' , json.replace(/<\!--.+-->/gim,'').replace(/\bfunction\b/g,'function­') , ');'].join(''));
               return f();
            } catch (e) {
               return {"err":"No project or fundraiser id(s) specified."};
            }
         },
         houseKeep : function() {
            var defaults = { 
               "width" : "180",
               "background" : "#fff",
               "border" : "1px solid #e19b2d",
               "headerBackground" : "#ffa", 
               "headerColor" : "#000",
               "evenBackground" : "#fff",
               "oddBackground" : "#eee",
               "linkColor" : "#DB8600",
               "linkColorVisited" : "#DB8600",
               "liHover" : "#F7F7F7",
               "padding" : 5,
               "includeSummary" : false,
               "env" : "p"
            };
            var envs = {
            	"p" : "www",
            	"t" : "columbine",
            	"d" : "local"
            }
            for (var d in defaults) { 
               if ($.a[d] === undefined) { 
                  $.a[d] = defaults[d]; 
               } 
            }
            $.a['sub'] = envs[$.a['env']];
            $.p = [];
         },
         buildBehavior : function() {
         	if ($.a.err) {
               $.f.displayError($.a.err);
            } else {
               if ($.a.projectids) {
                  $.s.q.value = $.a.projectids;
                  $.f.getProjects();
               }
				else if($.a.fundraiserId){
					//alert($.a.fundraiserId); 
					$.s.q.value = $.a.fundraiserId;
					$.f.getFundraiser();
				}
               //setInterval($.f.getProjects, 1000);
            }
         },
         buildPresentation : function () {
            var ns = $.d.createElement('style');
            ns.setAttribute('id','widget-style');
            $.d.getElementsByTagName('head')[0].appendChild(ns);
            if (!window.createPopup) {
               ns.appendChild($.d.createTextNode(''));
               ns.setAttribute("type", "text/css");               
            }
            var s = $.d.styleSheets[$.d.styleSheets.length - 1];
            var rules = {
               "*" : "{margin:0;padding:0;text-align:center;color:#DB8600;font:13px tahoma,verdana,arial,helvetica,clean,sans-serif;}",
               "" : "{zoom:1;width:" + ($.a.width) + "px;border:" + $.a.border + ";padding:0;-moz-border-radius:10px;-khtml-border-radius: 10px;-webkit-border-radius: 10px;border-radius:10px;text-align:center;}",
               "a" : "{text-decoration:none; color:" + $.a.linkColor + ";cursor:pointer;}",
               "a:visited" : "{color:" + $.a.linkColorVisited + ";}",
               "a:hover":"{text-decoration:none;}",
               "ul" : "{width:170px;background:" + $.a.background + ";list-style:none; margin:2px;overflow-x:hidden;overflow-y:auto;border:0px solid #ccc;}",
               "p" : "{font-size:13px;text-align:center;padding:" + $.a.padding + "px; margin:0;}",
               "p.left" : "{font-size:13px;text-align:left;padding:" + $.a.padding + "px; margin:0;}",
               "input":"{display:none;}",
               "date" : "{display:block;margin-top:" + $.a.padding + "px; text-align:right; font-family:georgia; font-style:italic; font-size:87%;}",
               "date:after" : "{clear:both; content:\".\"; display:block; height:0; visibility:hidden; }",
               "img" : "{margin:" + $.a.padding + "px " + $.a.padding + "px 0 0; border:0px;}",
               ".hidden" : "{display:none;}",
               "li" : "{list-style:none; margin:0;padding:" + $.a.padding + "px;text-align:center;}",
               "li.single" : "{list-style:none;border-bottom:0px;margin:0;}",
               "li:hover" : "{background-color:" + $.a.liHover + "}",
               ".poweredBy" : "{float:right;}",
               ".title" : "{color:#DB8600; font-size:13px; font-weight:bold; letter-spacing:0; margin:0 0 5px;text-align:center;}",
				".title a" : "{color:#DB8600; font-size:13px ; font-weight:bold; letter-spacing:0; margin:0 0 5px;text-align:center;}",
				".title a:visited" : "{color:#DB8600; font-size:13px; font-weight:bold; letter-spacing:0; margin:0 0 5px;text-align:center;}",
				".title a:hover" : "{color:#DB8600; font-size:13px; font-weight:bold; letter-spacing:0; margin:0 0 5px;text-align:center;}",
               ".giveNow" : "{display:block;text-align:center;margin:5px 0 0 0;}",
               ".smallProjectImg" : "{width:60px;height:40px;}",
               ".largeProjectImg" : "{width:166px;height:114px;}",
               ".center" : "{text-align:center;}"	
            };
            var ieRules = "";
            for (r in rules) {
               var selector = '.' + trueName + ' ' + r;
               var t = rules[r].replace(/;/g, '!important;');
               if (!window.createPopup) {
                  var theRule = $.d.createTextNode(selector + t);
                  ns.appendChild(theRule);
               } else {
                  ieRules += selector + t;
               }
            } 
            if (window.createPopup) { 
               s.cssText = ieRules; 
            }
         },
         buildStructure : function() { 
            $.s.className = trueName;
            $.s.setAttribute('id','widget-preview');
            $.s.q = $.d.createElement('INPUT');
            $.s.appendChild($.s.q);
            $.s.r = $.d.createElement('UL');
            $.s.r.className = 'hidden';
            $.s.appendChild($.s.r);
            
            var span = $.d.createElement('SPAN');
            span.setAttribute((document.all ? 'className' : 'class'), 'poweredBy');
            var a = $.d.createElement('A');
            a.href = "http://www.globalgiving.co.uk/?rf=ggWidget";
            a.innerHTML = "<img src=\"http://cloud.globalgiving.org/img/logos/powered_by_globalgiving.jpg\">";
            a.target = '_globalgiving';
            span.appendChild(a);
            $.s.appendChild(span);
            
            var div = $.d.createElement('DIV');
            div.setAttribute('style', 'clear:both;');
            $.s.appendChild(div);
            
            $.s.f = $.d.createElement('P');
            $.s.f.className = 'hidden';
            $.s.appendChild($.s.f);            
         },         
         getProjects : function() {
            if ($.s.q.value) {
               if ($.s.q.value !== $.lastQuery) {
                  $.lastQuery = $.s.q.value;
                  var n = $.p.length;
                  var id = trueName + '.p[' + n + ']';                  
                  $.p[n] = function(r) {
                  	delete($.p[n]);
                     $.f.removeScript(id);
                     $.f.renderProjects(r); 
                  };
                  var url = 'http://' + $.a['sub'] + '.globalgiving.co.uk/dy/v2/uk/widget/projects.html?projectIds=' + 
                  			 $.s.q.value + '&ggtid=' + $.a.ggtid +'&callback=' + id; 
				  if($.a['sub']=='local'){
					   url = 'http://' + $.a['sub'] + '.globalgiving.co.uk:8080/dy/v2/uk/widget/projects.html?projectIds=' + 
	                  			 $.s.q.value + '&ggtid=' + $.a.ggtid +'&callback=' + id;
				  }
                  /*if ($.a.preview) {
                	  url = 'http://local.globalgiving.org:' + $.a['port'] + '/dy/v2/widget/projects.html?projectIds=' + 
       			 			 $.s.q.value + '&ggtid=' + $.a.ggtid +'&callback=' + id;
                  } */
                  $.f.runScript(url, id);
               }
            } else {
               if ($.lastQuery) {
                  $.lastQuery = '';
                  $.s.r.innerHTML = '';
                  $.s.r.className = $.s.f.className = 'hidden';
               }
            }
         },
         getFundraiser : function() {
            if ($.s.q.value) {
               if ($.s.q.value !== $.lastQuery) {
                  $.lastQuery = $.s.q.value;   
					  
                  var n = 0;
                  var id = trueName + '.p[' + n + ']';                  
                  $.p[n] = function(r) {  
                  	delete($.p[n]);  
                    $.f.removeScript(id);
                    $.f.renderFundraiser(r); 
                  };
                  var url = 'http://' + $.a['sub'] + '.globalgiving.co.uk/dy/v2/uk/widget/fundraiser.html?fundraiserId='+$.a.fundraiserId+'&callback=' + id; 
				  if($.a['sub']=='local'){
					   url = 'http://' + $.a['sub'] + '.globalgiving.co.uk:8080/dy/v2/uk/widget/fundraiser.html?fundraiserId='+$.a.fundraiserId+'&callback=' + id;
				  }
                  $.f.runScript(url, id);
               }
            } else {
               if ($.lastQuery) {
                  $.lastQuery = '';
                  $.s.r.innerHTML = '';
                  $.s.r.className = $.s.f.className = 'hidden';
               }
            }
         },
         displayError: function(err) {
         	$.s.r.innerHTML = $.s.r.className = '';
         	var li = $.d.createElement('LI');
         	li.setAttribute((document.all ? 'className' : 'class'),'single');
         	li.innerHTML = err;
         	$.s.r.appendChild(li);
         },
         stuffQuery : function(v, p) {
            if (p) {
               $.s.q.value = p + v;
            } else {
               $.s.q.value = v;
            }
         },
         renderProjects : function(z) {
			$.s.r.innerHTML = $.s.r.className = '';
			if (z.error) {
				var li = $.d.createElement('LI');
				li.innerHTML = z.error;
				$.s.r.appendChild(li);
			} else {
				var r = z.projects;
				if (r.project) {
					var n = r.project.length;
					if (!n) {
						n = 1;
						r.project[0]=r.project;  // otherwise the for loop fails, DRY!
					}
					for (var i = 0; i < n; i++) {
						var li = $.d.createElement('LI');
						var title = $.d.createElement('p');
						title.setAttribute((document.all ? 'className' : 'class'),'title');
						var a = $.d.createElement('A');
						a.href = r.project[i].projectLink + '?rf=ggWidget';
						a.innerHTML = r.project[i].title;
						a.target = '_globalgiving';
						title.appendChild(a);
						li.appendChild(title);
						var a = $.d.createElement('A');
						a.href = r.project[i].projectLink + '?rf=ggWidget';
						a.title = r.project[i].title;
						a.target = '_globalgiving';
						if (!$.a.includeSummary) {
							var div = $.d.createElement('DIV');
							var img = $.d.createElement('IMG');
							img.setAttribute('alt', r.project[i].title);
							img.setAttribute((document.all ? 'className' : 'class'), 'largeProjectImg');
							div.setAttribute((document.all ? 'className' : 'class'), 'center');
							img.src = r.project[i].imageLink;  
							a.appendChild(img);
							div.appendChild(a);
							li.appendChild(div);
						} else {
							var img = $.d.createElement('IMG');
							img.setAttribute('alt', r.project[i].title);
							img.setAttribute((document.all ? 'className' : 'class'), 'smallProjectImg');
							img.align = 'left';
							img.src = r.project[i].imageLink;  
							a.appendChild(img);
							li.appendChild(a);
							var span = $.d.createElement('SPAN');
							span.innerHTML = r.project[i].summary;
							li.appendChild(span);
							li.appendChild($.d.createElement('BR'));
							var p = $.d.createElement('SPAN');
							p.setAttribute("class", "left");
							p.innerHTML = "Country: <a target=\"_globalgiving\" href=\"http://www.globalgiving.org/dy/v2/content/countries.html?country=" + 
							r.project[i].country + "&rf=ggWidget\">" + r.project[i].country + "</a>, Topic: <a target=\"_globalgiving\" href=\"http://www.globalgiving.org/dy/v2/content/themes.html?themeName=" +
							r.project[i].themeName + "&rf=ggWidget\">" + r.project[i].themeName + "</a>";
							li.appendChild(p);
						}
						var span = $.d.createElement('SPAN');
						span.setAttribute((document.all ? 'className' : 'class'),'giveNow');
						var a = $.d.createElement('A');
						a.innerHTML = "<img src=\"http://cloud.globalgiving.org/img/buttons/give_now.gif\" alt=\"Give Now\" >";
						a.href = r.project[i].projectLink + '?rf=ggWidget';
						a.target = '_globalgiving';
						span.appendChild(a);
						li.appendChild(span);
						$.s.r.appendChild(li);	                  
					}
				} else {
					var li = $.d.createElement('LI');
					li.innerHTML = 'Got nothing, sorry!';
					$.s.r.appendChild(li);
				} 
			}          
			$.s.f.className = '';
         }, 
		renderFundraiser : function (z){  
			$.s.r.innerHTML = $.s.r.className = ''; 
			if (z.error) {
				var li = $.d.createElement('LI');
				li.innerHTML = z.error;
				$.s.r.appendChild(li);
			} else {
				var r = z.fundraisers;  
				if(r.fundraiser){ 
					var n = r.fundraiser.length;
					if (!n) {
						n = 1;
						r.fundraiser[0]=r.fundraiser;  // otherwise the for loop fails, DRY!
					}
					for (var i = 0; i < n; i++) {
						var newWindow = "_blank"; 
						if($.a.preview==true){
						   r.fundraiser[i].fundraiserLink = "/dy/fundraiser/sharefund/co.uk.html?regid="+$.a.fundraiserId;
						 	newWindow ="";
						}
						var li = $.d.createElement('LI');
						var title = $.d.createElement('p');
						title.setAttribute((document.all ? 'className' : 'class'),'title');
						var a = $.d.createElement('A');
						a.href = r.fundraiser[i].fundraiserLink;
						a.innerHTML = r.fundraiser[i].title;
						a.target = newWindow;
						title.appendChild(a);
						li.appendChild(title);
						var a = $.d.createElement('A');
						a.href = r.fundraiser[i].fundraiserLink;
						a.title = r.fundraiser[i].title;
						a.target = newWindow;
						var div = $.d.createElement('DIV');
						var img = $.d.createElement('IMG');
						img.setAttribute('alt', r.fundraiser[i].title);
						img.setAttribute((document.all ? 'className' : 'class'), 'largeProjectImg');
						div.setAttribute((document.all ? 'className' : 'class'), 'center');
						img.src = "http://www.globalgiving.org"+r.fundraiser[i].imageLink;  
						a.appendChild(img);
						div.appendChild(a); 
						var amountRaised = $.d.createElement('span'); 
						amountRaised.innerHTML = r.fundraiser[i].amountRaised;  
						div.appendChild(amountRaised);
						li.appendChild(div); 
						var span = $.d.createElement('SPAN');
						span.setAttribute((document.all ? 'className' : 'class'),'giveNow');
						var a = $.d.createElement('A'); 
						a.innerHTML = "<img src=\"http://cloud.globalgiving.org/img/buttons/give_now.gif\" alt=\"Give Now\" >";
						if($.a.preview==true){
							a.innerHTML ="<img src=\"http://cloud.globalgiving.org/img/buttons/share_with_a_friend.gif\"  alt=\"Share with a friend\" />";
						}
						a.href = r.fundraiser[i].fundraiserLink;
						a.target = newWindow;
						span.appendChild(a);
						li.appendChild(span);
						$.s.r.appendChild(li);
					} 
				} else {
					var li = $.d.createElement('LI');
					li.innerHTML = 'Got nothing, sorry!';
					$.s.r.appendChild(li);
				}
			}
			$.s.f.className = '';
		},
         runScript : function(url, id) {
            var s = $.d.createElement('script');
            s.id = id;
            s.type ='text/javascript';
            s.src = url;  
            $.d.getElementsByTagName('body')[0].appendChild(s);
         },
         removeScript : function(id) {
            if ($.d.getElementById(id)) {
               var s = $.d.getElementById(id);
               s.parentNode.removeChild(s);
            }
         }         
      };
   }(); 
   var where = location.href;
   //var thisScript = "http?:\/\/[^\/]*globalgiving.org\/javascript\/widget\/widget.js";
   var thisScript = /^http?:\/\/[^\/]*globalgiving.co.uk\/javascript\/widget\/widget.js$/; 
   if(where.indexOf('8080')!= -1){
		thisScript = /^http?:\/\/[^\/]*globalgiving.co.uk:8080\/javascript\/widget\/widget.js$/;
	}
   if(typeof window.addEventListener !== 'undefined') {
      window.addEventListener('load', function() { 
         $.f.init(thisScript); 
      }, false);
   } else if(typeof window.attachEvent !== 'undefined') {
      window.attachEvent('onload', function() { 
         $.f.init(thisScript); 
      });
   }
})();