//if (typeof window.sparq != 'object') window.sparq = {};
if (typeof sparq.ui != 'object') sparq.ui = UI;
if (typeof sparq.ui.sifr != 'object') sparq.ui.sifr = SifrInjection;
if (typeof sparq.ui.modHover != 'object') sparq.ui.modHover = ModuleHover;
var DOMAIN;
var PATH = '/';
var cookVote = 'nikeos.userVote', cookPoll = 'nikeos.pollId'; 
var uniqueID = Math.round(Math.random()*(360*60));
var pollID = 0;
var date = new Date();
date.setTime(date.getTime() + (3 * 24 * 60 * 60 * 1000));

var addedHeight = (JQ.browser.msie && JQ.browser.version < 7) ? 0 : 8;

function checkPollCookies(){
	if (JQ.cookie(cookPoll) == pollID && JQ.cookie(cookVote) > 0) return false;
	return true;
}

function processResponse(response) {
	var self = this;
	var index = 0;
	var $pollInfo = JQ('.poll-text');
	this.setPollCookie = function(response) {
		try {
			tracking.click(track_site + '>blog>poll-vote');
			if (!window.helpers) {
		        JQ.cookie(cookVote, uniqueID, { path: PATH, domain: DOMAIN, expires: date });
		        JQ.cookie(cookPoll, pollID, { path: PATH, domain: DOMAIN, expires: date });
			} else {
				helpers.create_cookie(cookVote, uniqueID, false);
				helpers.create_cookie(cookPoll, pollID, false);
			}
			self.fadeOutPoll();
		} catch (e) {
	 		console.log('type error: ', e);
	 		alert("Something went wrong and there is no actual error.");
		}
	};
	this.fadeOutPoll = function() {
		JQ('#latest-poll').find('span.radio').css('visibility','hidden');
		JQ('#latest-poll').fadeOut('slow', self.showResults);
//		JQ('#latest-poll').fadeOut('fast', self.grow);
	};
	this.showResults = function() {
		JQ('#latest-poll-results').css({
			'display' : 'block'
		});
		var newHeight = (JQ('#latest-poll-results').position().top - JQ('#right_polls_top').position().top) + JQ('#latest-poll-results').height() + addedHeight;
		JQ('#latest-poll-results').parent().css({
			'height' : newHeight.toCSS()
		});
	    JQ('#latest-poll-results').fadeIn('fast',self.grow);

//	    JQ('#latest-poll-results').fadeIn('fast',self.fadeOutPoll);
	};
	self.grow = function() {
		var choice = JQ('input.poll-option:checked').attr('value').toInt();
		var total = JQ($pollInfo[0]).attr('class').match(/total-(\S*)/)[1].toInt() + 1;
		if (index == $pollInfo.length) {
			return false;
		} else {
			var pollBar = '<div class="poll-bar" style="width: 0;"></div>';
			var $update = JQ('#latest-poll-result-' + index);
			$update.find('div.poll-bar-wrap').append(pollBar);
		    var count = $update.find('div.poll-text').attr('class').match(/count-(\S*)/)[1].toInt();
		    if (choice == index) count++;
			perc = (count/total).toPercent();

			NIKEOS.log('count: %i, index: %i, perc: ', count,index,perc);
			$update.find('span.poll-percentage').html(perc + '%');
			$update.find('div.poll-bar').animate({
				width: perc + '%'
			}, 500, 'easeOutQuad',self.grow);
			index++;
		};
	};

	self.setPollCookie();	
}

function TrainingTemplate($) {
	var self = this;
	var resizer = NIKEOS.BASE[NIKEOS.site_mode] + '/nikeos/global/jsp/imageresize.jsp';
	var blankThumb = NIKEOS.BASE[NIKEOS.site_mode] + '/nikeos/global/image/blank.gif';
	var defaultThumb = NIKEOS.BASE[NIKEOS.site_mode] + '/nikeos/global/image/search_default_thumb.jpg';
	var thumbDims = '149x117';
	var typeSearch = 'obj';
	self.init = function() {
		
	};
	self.createTemplate = function(obj) {
		var brand = $.getURLParam('brand') || 'sparqtraining';
		var title = obj.title || 'NO TITLE';
		var desc = obj.description || 'NO DESCRIPTION';
		var href = obj.link || '#';
		var _thumb = obj.thumbnail == 'null' || obj.thumbnail.match(blankThumb) ? defaultThumb : obj.thumbnail;
		var thumb = _thumb; //resizer + '?url=' + encodeURIComponent(_thumb) + '&dimension=' + thumbDims;
		var type = self.getKeywordType(obj.keywords) || 'none';
		var query = self.createQuery(self.queries);
		
		if (brand != 'sparqtraining') {
			var arr = [href];
			if (href.indexOf('?') > -1) arr.push('&');
			else arr.push('?');
			arr.push('brand=' + brand);
			href = arr.join('');
		}
		
		var $main = self.createElement('div');
		var $left = self.createElement('div');
		var $right = self.createElement('div');
		var $borders = self.createBorders();
		var $a = self.createElement('a');
		var $thumb = self.createElement('img');
		var $span = self.createElement('span');
		var $spanType = self.createElement('span');
		var $type = self.createElement('span');
		var $h2 = self.createElement('h2');
		var $desc = self.createElement('p');
		$left.attr({ 'class': 'article-preview-left clearfloat' });
		$right.attr({ 'class': 'article-preview-right clearfloat' });

		$spanType.attr({ 'class': 'type-text' }).text(title.substring(0,10));
		$type.attr({ 'class': 'obj ' + type}).html('&nbsp;');
		$span.attr({ 'class': 'type-bar' }).append($spanType, $type);
		$thumb.attr({ alt: title, src: thumb });
		$a.attr({title: title, href: href + query }).append($thumb,$span);
		$borders.find('.thumb-mid').append($a);
		var $h2a = $a.clone().empty();
		
		if (window.sparq) {
			if (sparq.blog) {
				if (sparq.blog.titleToRemove) {
					title = title.replace(sparq.blog.titleToRemove,'');
				}
			}
		}
		
		$h2a.text(helpers.trim(title));
		$h2.append($h2a);
		$desc.text(self.createEllipsis(desc, 150));
		$left.append($borders);
		$right.append($h2,$desc);		
		$main.attr({
			'class': 'article-preview clearfloat'
		}).append($left, $right);
		return $main;
	};
	self.createBorders = function() {
		var top = ['div:tl corner float-l','div:horizontal float-l','div:tr corner float-l'];
		var mid = ['div:left sides float-l','div:thumb-mid float-l','div:right sides float-l'];
		var $thumbWrap = self.createElement('div');
		var $thumbTop = self.createElement('div');
		var $thumbMid = self.createElement('div');
		var borders = {};
		var middle = {};
		
		$.each(top, function(i,a) {
			var pieces = a.split(':');
			var type = self.createElement(pieces[0]);
			var name = pieces[1].match(/(^\w+\b)/gi);
			type.attr('class', pieces[1]);
			borders[name] = type;
		});
		$.each(mid, function(i,a) {
			var pieces = a.split(':');
			var type = self.createElement(pieces[0]);
			var name = pieces[1].match(/(^\w+\b)/gi);
			type.attr('class', pieces[1]);
			middle[name] = type;
		});
		$thumbTop.attr({'class': 'preview-thumb-top clearfloat'});
		for (var p in borders) $thumbTop.append(borders[p]);
		
		$thumbMid.attr({'class': 'preview-thumb-mid clearfloat ztc'});
		for (var p in middle) $thumbMid.append(middle[p]);
		
		var $thumbBot = $thumbTop.clone();
		$thumbBot.removeClass('preview-thumb-top').addClass('preview-thumb-bot');
		$thumbBot.find('.tl').removeClass('tl').addClass('bl');
		$thumbBot.find('.tr').removeClass('tr').addClass('br');
		
		$thumbWrap.attr({ 'class': 'thumb-wrap clearfloat' }).append($thumbTop, $thumbMid, $thumbBot);
		return $thumbWrap;
	};
	self.createEllipsis = function(str,len) {
		var tmp = '';
		if (str.length <= len) {
			tmp = str;
		} else {
			tmp = str.substring(0,len);
/*
			NIKEOS.log(tmp);
			if (tmp.search(/\w$/gi)) {
				console.log('yes, last char is \\w: ', tmp.match(/(\w|\W)$/gi));
			}
*/
			tmp += '...';
		}
		return tmp;
	};
	self.createQuery = function(obj) {
		var str = '?';
		for (var p in obj) str += p + '=' + obj[p] + '&';
		return str.substring(0,str.length-1);
	};
	self.getKeywordType = function(str) {
		if (!str) return false;
		var type = 'none';
		var strA = str.split(',');
		var rx = new RegExp('^' + typeSearch, 'i');
		$.each(strA, function(i,a) {
			var aa = helpers.trim(a);
			if (rx.test(aa)) {
				var aaa = aa.split(' ');
				type = helpers.trim(aaa[1]);
			}
		});
		NIKEOS.log('type: ', type);
		return type;
	};
	self.createElement = function(el){
		return $('<' + el + ' />');
	};
	self.init();
	return self;	
}

function RelatedTraining ($) {
	var self = this;
	var typeSearch = 'obj';
	self.init = function() {
		self.template = new TrainingTemplate($);
	};
	self.getRelatedArticles = function(obj, cb) {
		/*
			@obj		OBJECT - contains informaiton to pass through to SPARQ
			@cb			CALLBACK - callback to execute upon completion
		*/
		var url = NIKEOS.BASE[NIKEOS.site_mode] + '/nikeos/p/sparqtraining/' + site_data.lang_locale + '/utilities/jsonpService?callback=?';
		var cb = cb || self.showRelatedArticles;
		var data = obj || {};
		$.getJSON(url, data, cb);
	};
	self.showRelatedArticles = function(data) {
		NIKEOS.log('showRelatedArticles: ', data);
		var hasRight = ($('#blog-body-right').length > 0) ? true : false;
		var $div = self.template.createElement('div');
		$div.attr({
			'class': '',
			id: 'related-articles-wrap'
		});
		if (data.channel) {
			if (!data.channel.item) {
				var $p = self.template.createElement('p');
				if (window.sparq) {
					if (sparq.text) {
						$p.text(sparq.text.no_related_articles || 'Sorry, no articles found');
					}
					$div.append($p);
				}
			} else {
				if (!helpers.is_array(data.channel.item)) {
					var tmpl = self.template.createTemplate(data.channel.item);
					$div.append(tmpl);
				} else {
					var post_count = 0;
					$.each(data.channel.item, function(i,a) {
						if (helpers.trim(a.title) != helpers.trim(sparq.currentPost) && post_count < 3) {
							var tmpl = self.template.createTemplate(a);
							$div.append(tmpl);
							post_count++;
						}
					});
				}
			}
		} else {
			var $p = self.template.createElement('p');
			if (window.sparq) {
				if (sparq.text) {
					$p.text(sparq.text.no_related_articles || 'Sorry, no articles found');
				}
				$div.append($p);
			}
		}
		if (hasRight) {
			var $h2 = self.template.createElement('h2');
			$h2.attr({
				'class': 'sifr-header-sub16px',
				id: 'related-header'
			}).text('Related Training Features'); // to do: TRANSLATION!
			$div.prepend($h2);
			$('#blog-body-right').addClass('related-articles').prepend($div);
			self.runSifr($h2);
		}
	};
	self.runSifr = function(obj, cl, size) {
		var cl = cl || 'sifr-header-sub16px';
		var size = size || 16;
		var $a = JQ(obj);
		var id = $a.attr('id') || 'sifr-' + (Math.round(Math.random()*1000));
		var obj = {};
		obj[id] = {
			el: '.' + cl,
			fontFam: 'din',
			font: 'med',
			hoverColor: '#ffffff',
			css: {
				'.sIFR-root': {
					'color': '#ffffff',
					'background-color': 'transparent',
					'font-size': size + 'px',
					'cursor': 'default',
					'text-transform': 'uppercase'
				}
			},
			flash: {
				ratios: sparq.ui.sifr.fonts.din.ratios,
				fitExactly: false,
				forceWidth: true,
				selectable: false,
				selector: '.' + cl,
				wmode: 'transparent'
			}
		};
		sparq.ui.sifr.runSifr(id, obj);
	};
	self.init();
	return self;
}


JQ(function($) {
	if (typeof sparq.training != 'object') sparq.training = {};
	sparq.ui.sifr.runSifr();
	$('.module').each(function(i,a) {
		var $a = JQ(a);
		var id = $a.attr('id');
		var obj = {};
		obj[id] = {
			el: '.module',
			modBar: '.module-bar',
			link: 'a',
			changeCss: '.module h3', // for sifr
			hoverClass: 'hover',
			hoverColor: helpers.fonts.colors.black,
			hoverColorOff: helpers.fonts.colors.green,
			sifr: {
				replacementString: 'sIFR_replacement_'
			},
			cufon: false
		};
		sparq.ui.modHover.changeBar(id, obj);
	});

	if ($('.sifr-header-major18px').length > 0) {
		sparq.ui.sifr.runSifr(['sifr-header-major18px'], {
			'sifr-header-major18px': {
				el: '.sifr-header-major18px',
				fontFam: 'din',
				font: 'med',
				hoverColor: '#ffffff',
				css: {
					'.sIFR-root': {
						'color': '#ffffff',
						'background-color': 'transparent',
						'font-size': '18px',
						'cursor': 'default',
						'text-transform': 'none'
					}
				},
				flash: {
					ratios: sparq.ui.sifr.fonts.din.ratios,
					fitExactly: false,
					forceWidth: true,
					selectable: false,
					selector: '.sifr-header-major18px',
					wmode: 'transparent'
				}
			}
		});
	}
	
	if ($('.sifr-12px').length > 0) {
		sparq.ui.sifr.runSifr(['sifr-12px', 'jive-sidebar-h4'], {
			'sifr-12px': {
				el: '.sifr-12px',
				fontFam: 'din',
				font: 'med',
				hoverColor: '#ffffff',
				css: {
					'.sIFR-root': {
						'color': '#ffffff',
						'background-color': 'transparent',
						'font-size': '12px',
						'cursor': 'default',
						'text-transform': 'uppercase'
					}
				},
				flash: {
					ratios: sparq.ui.sifr.fonts.din.ratios,
					fitExactly: false,
					forceWidth: true,
					selectable: false,
					selector: '.sifr-12px',
					wmode: 'transparent'
				}
			},
			'jive-sidebar-h4': {
				el: '.jive-sidebar h4',
				fontFam: 'din',
				font: 'med',
				hoverColor: '#ffffff',
				css: {
					'.sIFR-root': {
						'color': '#888888',
						'background-color': 'transparent',
						'font-size': '12px',
						'cursor': 'default',
						'text-transform': 'uppercase'
					}
				},
				flash: {
					ratios: sparq.ui.sifr.fonts.din.ratios,
					fitExactly: false,
					forceWidth: true,
					selectable: false,
					selector: '.jive-sidebar h4',
					wmode: 'transparent'
				}
			}
		});
	}
/*
	var clicker = new clickTrack();
	clicker.popup(['.pop_footer']);
	clicker.track(['.footer_link']);
*/
	pollID = JQ('#poll-poll-id').attr('value');
/*	
	JQ('.more-link').click(function() {
		tracking.click(track_site + '>blog>post>' + JQ(this).attr('title').replace(/^\s*(.*?)\s*$/, '$1'));
	});
	JQ('#featured_article h2 a, .recent-post h2 a').click(function() {
		tracking.click(track_site + '>blog>post>' + JQ(this).text().replace(/^\s*(.*?)\s*$/, '$1'));
	});
	JQ('#popular-tags-inner-wrap li a').click(function() {
		tracking.click(track_site + '>blog>tag>' + JQ(this).text().replace(/^\s*(.*?)\s*$/, '$1'));
	});
	JQ('#recent-posts-inner-wrap li a').click(function() {
		tracking.click(track_site + '>blog>recent-posts>' + JQ(this).text().replace(/^\s*(.*?)\s*$/, '$1'));
	});
*/
	/*
	JQ('a.more').add('a.less').click(function(){
		var $this = JQ(this);
		var $div = JQ('#lesstags');
		$div.toggle();
		
		if ($div.is(':visible')) $this.attr('title', text_less).attr('class', 'less').html(text_less + '&nbsp;<img src="' + img_less + '" />');
		else $this.attr('title', text_more).attr('class', 'more').html(text_more + '&nbsp;<img src="' + img_more + '" />');
			
		return false;
	});
	*/
	var $tags = $('#tags-container .more-tags');
	var $more_or_less = $('#tags-container .more, #tags-container .less').click(function(){
		$more_or_less.toggle();
		$tags.slideToggle(200);
		return false;
	});


	if(checkPollCookies()) {
		var clicked = false;
		JQ('div.poll-bar-wrap').empty();
		JQ('span.poll-percentage').empty();
		JQ('#button-vote').click(function() {
			NIKEOS.log('%a is the value of clicked', clicked);
			if (clicked) return false;
			if (JQ('input.poll-option:checked').length > 0) {
				clicked = true;
				var soapBody = new SOAPObject("addAnonymousVote");
				soapBody.ns = "http://jivesoftware.com/webservices";
	
				soapBody.appendChild(new SOAPObject('pollID')).val(pollID);
				soapBody.appendChild(new SOAPObject('index')).val(JQ('input.poll-option:checked').attr('value'));
				soapBody.appendChild(new SOAPObject('uniqueID')).val(uniqueID);
	
				var sr = new SOAPRequest('/rpc/soap/PollService', soapBody);

				SOAPClient.SOAPServer = '/rpc/soap/PollService';
//				JQ('#button-vote').fadeOut('fast');
				JQ('input.poll-option').disabled = true;
				SOAPClient.SendRequest(sr, processResponse); //Send request to server and assign callback function
				return false;
			} else {
				console.log('Please select an option before you vote');
				alert(poll_error);
				return false;
			}
		});
	} else {
        JQ('#latest-poll').css('display','none');
		JQ('#latest-poll-results').css({
			'display' : 'block'
		});
		var newHeight = (JQ('#latest-poll-results').position().top - JQ('#right_polls_top').position().top) + JQ('#latest-poll-results').height() + addedHeight;
		JQ('#latest-poll-results').parent().css({
			'height' : newHeight.toCSS()
		});
		NIKEOS.log('%a is the new height', newHeight);
	}
	
	if (typeof sparq.blog != 'object') sparq.blog = {};
	sparq.blog.showRelated = {
		'training': 'yes',
		'news': 'no'
	};
	
	if (window.location.href.match(/.*(\d{4})\/(\d{2})\/(\d{2})/gi)) {
		if (sparq.blog.showRelated[sparq.blog.name]) {
			if (sparq.blog.showRelated[sparq.blog.name] == 'yes') {
				sparq.training.related = new RelatedTraining($);
				var data = {
				    srch: $.getURLParam('srch') || sparq.tagSrch || 'training',
				    locale: $.getURLParam('locale') || site_data.platypus_region
				};
				sparq.training.related.queries = data;
				sparq.training.related.getRelatedArticles(data, sparq.training.related.showRelatedArticles);
			}
		}
		if ($('#blog-enablement').length > 0) {
			NIKEOS.insertSWF({
				element_id : 'blog-enablement',
				type : 'enablement',
				version : 'latest',
				width : 400,
				height : 300,
				vars : {
					configPath : (site_data.base_url || site_data.settings.base_url) + '/sparqtraining/us/' + site_data.lang_locale + '/xml/enablementConfig.xml',
					currentSubject : helpers.trim($('#blog_body h1').text()),
					id : 'blog-enablement',
					type : 'blog',
					stylePath : (site_data.base_url || site_data.settings.base_url) + '/sparqtraining/global/xml/style.xml'
				}
			});
		}
	}

});


