if (document.getElementsByTagName) {
	toggle = function(a) {
		var img = a.getElementsByTagName('img')[0];
		var src = img['src'];
		if (src.indexOf('_hi') > -1) 
			img["src"] = src.replace("_hi", ""); 
		else 
			img["src"] = src.replace(".gif", "_hi.gif"); 
	};
}
else {	
	toggle = function() { return; };
}

var oetker;
if (!oetker) { oetker = {} }

$.extend(oetker, {
	initSBT: function(sbtsrc) {
		// get elements from json
		$.getJSON(oe_SBTDataPath+'sbt-data.js', function(data) {
			$.each($(sbtsrc), function(sbtindex,sbt) {
				var sbt = $(sbt)
				,	sbtarea = '.sbt-box'
				,	sbtclasses = sbt.parent()[0].className
				,	isPlacedRight = sbtclasses.indexOf('sbt-align-br') > -1 || sbtclasses.indexOf('sbt-align-tr') > -1
				
				// language fallback (=> en => de )
				if (!(oe_SBTLanguage in data)) {
					oe_SBTLanguage = ('en' in data) ? 'en' : 'de'
				}
				$.each(data[oe_SBTLanguage].items, function(k,v){
					// bookmarks or likes, generating layers
					var layerstring = '<div class="sbt-layer sbt-layer-'+k+'">'+
										'<div class="sbt-layer-top"></div>'+
										'<div class="sbt-text">'+
											'<h4>'+v.headline+'</h4>'+
											'<p>'+v.disclaimer+'</p>'+
										'</div>'+
										'</div>'
					,	layerclose = $('<a class="sbt-close" href="#">'+v.close+'</a>')
					,	txtcontent =  $(layerstring).find('.sbt-text')
					,	sbtlayer = txtcontent.prepend(layerclose).end()
					,	isBM = (k=='bookmarks')
					,	layerbak = {'Facebook':sbtlayer.clone(true),'Google':sbtlayer.clone(true)}

					// close layer through close icon or cancel button
					$(sbtarea+' .sbt-layer-'+k+' a.sbt-close, '+sbtarea+' .sbt-layer-'+k+' .sbt-cancel').live('click',function(e) {
						e.preventDefault()

						var name = $(this).attr('class').substr(4)
						,	prop = 19
						,	type = 'service'
						,	called = $(this).closest('.sbt-layer').data('called') || ''
						,	count

						if (called=='fb-like') {
							// fb like
							prop = 20
							type = 'button-like'
						} else if (called=='google-plus1') {
							// google +1
							prop = 21
							type = 'button-plus'
						}
						
						// set close button values
						if (name=='close' && k=='likes' && (called=='fb-like' || called=='google-plus1')) {
							count = (!$(this).parent('.sbt-text').next('.sbt-actions').find('iframe').length) ? '01' : '02'
						}

						// call tracking
						oetker.sbtTrack(prop, type, name, count)
						
						$('.sbt-layer').hide()
						//decolorize toolbar
						$('.sbt .sbt-active').removeClass('sbt-active')
					})
					
					/* menu hover closes sbt */
					$('#menuMain').mouseenter(function(){
						$('.sbt-layer').hide()
						$('.sbt .sbt-active').removeClass('sbt-active')
					})
					
					if (isBM) {
						// bookmarks
						var bmlist = $('<ul class="clearfix" />')
						bmlist.insertAfter(txtcontent)
					} else {
						// likes
						var actionbox = $('<div class="sbt-actions clearfix"><a href="#" class="sbt-cancel">'+v.canceltext+'</a><a href="#" class="sbt-next">'+v.continuetext+'</a></div>')
						,	actionboxbak = actionbox.clone()
						
						// close layer through cancelling
						sbtlayer.append(actionbox)
					}
					
					// attach layer to DOM
					sbtlayer.insertAfter(sbt)

					// generate lis for toolbar & layer
					$.each(v.services, function(key,val){
					
						var listitem = $('<li />')
						,	titlekey = (val.title) ? val.title : key
						,	svc = $('<a>'+titlekey+'</a>')
						,	currenttxt = txtcontent.children()
						,	map = {
								'fb':'facebook',
								'twitter':'twitter',
								'delicious':'delicious',
								'wong':'misterwong',
								'digg':'digg',
								'yigg':'yigg',
								'google':'google',
								'fb-like':'like',
								'google-plus1':'plus'
							}
						
						svc.attr({
							'href': '#',
							'class': 'sbt-icon sbt-svc-'+val.css,
							'title': titlekey
						})
						.click(function(e){
							e.preventDefault()
							
							// call tracking
							oetker.sbtTrack(18,'icon',map[val.css])

							// activate bm item
							if (isBM) {
								sbtlayer.find('.sbt-selected').removeClass('sbt-selected')
								sbtlayer.find('.sbt-svc-'+val.css).addClass('sbt-selected')
							} else {
								// like
								sbtlayer.data('called', val.css);
								// just styling
								currenttxt.filter('h4')[(key=='Google') ? 'addClass' : 'removeClass']('sbt-google')
								currenttxt.find('.oe-current-service').text(key)
								txtcontent.empty().append(currenttxt)
								
								actionbox.removeClass('sbt-loaded')
								// fill in service name
								if (actionbox.find('iframe').length) {
									actionbox.html(actionboxbak.children())
									actionboxbak = actionbox.clone()
								} else {
									actionbox.html(actionboxbak.clone().children())
								}
								layerbak[key] = sbtlayer
								
								sbtlayer.filter('.sbt-layer-'+k).html(sbtlayer.children())
							}
							
							// hide open layer, position and show new layer
							$('.sbt-layer').hide()
							
							// check for layer alignment
							var sbtwidth = sbtlayer.width()
							,	layerpos = (isPlacedRight) 
								? svc.position().left - sbtwidth + 20 + svc.outerWidth()/2
								: svc.position().left - 14 + svc.outerWidth()/2;

							sbtlayer.css('left',layerpos+'px').show()
							
							// colorizing toolbar
							$('.sbt .sbt-active').removeClass('sbt-active')
							listitem.addClass('sbt-active')
							sbt.addClass('sbt-active')

							// loading 'real' like buttons into layer on clicking next button
							$('.sbt-next').one('click',function(e) {
								e.preventDefault()
								
								var campaign = '?cmpid=sb-'+oe_SBTCampaignSiteName+'-'+map[val.css]
								,	fbcode = '<div id="fb-root"></div><fb:like href="'+oe_SBTPageurl+campaign+'" send="false" width="150" show_faces="false"></fb:like>'
								,	googlecode = '<div id="plusone-div"></div>'
								,	prompt = $('<p>'+v.prompt+'</p>').find('.oe-current-service').text(titlekey).end()
								,	sbtlayer = $(sbtarea+' .sbt-layer-'+k)
								,	called = sbtlayer.data('called')
								,	prop = (called=='fb-like') ? 20 : 21

								
								// call tracking
								oetker.sbtTrack(prop, sbtlayer.data('called'), 'next')
								
								sbtlayer.find('p').replaceWith(prompt)
								sbtlayer.find('.sbt-actions')
									.html((key=='Google') ? googlecode : fbcode)
									.addClass('sbt-loaded')									
								
								// parse facebook like button when fb is initialized, add callback function for tracking
								if (key!='Google' && typeof window.fbAsyncInit != 'function') {
									var fbscript = document.createElement( 'script' );
									fbscript.type = 'text/javascript';
									fbscript.text  = 'window.fbAsyncInit = function() {FB.Event.subscribe("edge.create", function(response) { oetker.sbtTrack(20,"button-like","submit") });};(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) {return;}js = d.createElement(s); js.id = id;js.async="true";js.src = "//connect.facebook.net/'+data[oe_SBTLanguage].locale+'/all.js#xfbml=1";fjs.parentNode.insertBefore(js, fjs);}(document, "script", "facebook-jssdk"));';
									
									document.body.appendChild(fbscript);
								} else if (key!='Google') {
									// re-render when layer opens again
									FB.XFBML.parse();
								} else if (key=='Google') {
									window.___gcfg = {lang: data[oe_SBTLanguage].lang}
									
									// append callback function for tracking
									var gscript = document.createElement("script");
									gscript.type = "text/javascript";
									gscript.text = "function plusone_vote(obj) {if (obj.state=='on') {oetker.sbtTrack(21, 'button-plus', 'submit')}}";
									document.body.appendChild(gscript);
									
									// parse google +1 button
									function plusoneready(){
										gapi.plusone.render('plusone-div',{
											"callback": "plusone_vote",
											"href": oe_SBTPageurl+campaign
										});
									}
									
									// append google +1 script
									(function() {
										var po = document.createElement("script");
										po.type = "text/javascript";
										po.async = true;
										po.src = "//apis.google.com/js/plusone.js";

										po.onload = plusoneready;
										// Only for IE 6 and 7
										po.onreadystatechange = function() {
											if( this.readyState == 'complete' ) { plusoneready(); }
										}

										document.body.appendChild(po);
									})();
								}

								layerbak[key] = sbtlayer
							})
						})
						
						// add span for Facebook text -> sliding doors
						if (k=='likes' && key=='Facebook'){
							svc.wrapInner('<span></span>')
						}

						// fill layers
						if (isBM) {
							// bookmarks
							var textvalue;
							if (key=='Twitter') {
								// crop
								var cuttitle = 140 - oe_SBTPageurl.length
								,	cutdesc = cuttitle - oe_SBTTitle.length
								
								if (cutdesc > 1) {
									var shortdesc = (oe_SBTPageDescription.length < cutdesc) ? oe_SBTPageDescription : oe_SBTPageDescription.substr(0,cutdesc-6)+'...'
									// -6 is: '...' and spaces in next line
									textvalue = oe_SBTTitle+'. '+shortdesc+' '+oe_SBTPageurl
								} else {
									textvalue = oe_SBTTitle.substr(0,cuttitle-1)+' '+oe_SBTPageurl
								}
							} else {
								textvalue = oe_SBTTitle;
							}

							var urlparam = (val.urlparam!='') ? val.urlparam+'='+oe_SBTPageurl : ''
							,	init = (urlparam=='') ? '' : '&'
							,	textparam = (val.textparam!='') ? init+val.textparam+'='+textvalue : ''
							,	extraparams = (val.extraparams!='') ? '&'+val.extraparams : ''
							,	campaignparam = '&cmpid=sb-oetkerDE-'+val.css
							,	svclink = encodeURI(val.url+'?'+urlparam+textparam+extraparams+campaignparam)
							,	layersvc = svc.clone() // prevent links to be attached to toolbar, too
							,	layerlistitem = listitem.clone()

							layersvc.attr({
								'href': svclink,
								'target': '_blank'
							})
							.removeAttr('title')
							.prepend('<span>&nbsp;</span>')

							layerlistitem.append(layersvc).clone().appendTo(bmlist).click(function(e){
								// call tracking
								oetker.sbtTrack(19,'service',map[val.css])

								// close layer
								sbtlayer.hide()
								//decolorize toolbar
								$('.sbt .sbt-active').removeClass('sbt-active')
							})
						}
						// attach service to DOM
						listitem.append(svc).appendTo(sbt)
						
					})
					// end of each group (bookmarks/likes) adds an element for styling
					if (sbt.parent().hasClass('sbt-endpipe') && !isPlacedRight || !sbt.find('.sbt-group-end').length) {
						$('<li class="sbt-group-end"><span></span></li>').appendTo(sbt)
					}
				})
			})
			
			// fix abstand for ie
			if ($.browser.msie) {
				$('li.sbt-group-end:last-child span').addClass('lastchild')
				$('#rezepteContent .sbt li:first-child a, #rezepteContent .sbt li.sbt-group-end + li a').addClass('firstinline')
			}
		})
		// show sbt (with js)
		$('.sbt-jsvisible').removeClass('sbt-jsvisible')
	},
	sbtTrack: function(){
		// dummy to prevent bugs when tracking and/or definition of sbtTrack function after logging is missing
	}
})

$(document).ready(function () {
	oetker.initSBT('.sbt')
})
