

$.slgafi = $.slgafi || {};

$.slgafi.nav =  {
	init: function() {
		$("div#main-nav ul li").mouseover(function() {
				$(this).find('ul:first').show();
		});
		
		$("div#main-nav ul li").mouseleave(function() {
			$("div#main-nav ul li ul").hide();
		});
		
		$("div#main-nav ul li ul").mouseleave(function() {
			$("div#main-nav ul li ul").hide();
		});
	}
};

$.slgafi.utils = {
	media: function(id, src, width, height, attrs, params) {
		Sys.loadScripts(["/assets/scripts/jquery.media.js"], function() {
			$('#' + id).media({
				width: width,
				height: height,
				autoplay: true,
				src: src,
				attrs: attrs,  // object/embed attrs 
				params: params, // object params/embed attrs 
				caption: false // supress caption text 
			});
		});
	}
}

$.slgafi.news = {
	ticker: null,
	isPlaying: null,
	control: { label: $('#news-control-label'), icon: $('#news-control-icon') },

	init: function() {
		this.ticker = $("div.scrollable")
			.scrollable({ vertical: true, size: 3 })
			.circular()
			.autoscroll({ autoplay: true, api: true });
		this.isPlaying = true;
		this.control.label.text('PAUSE');
		this.control.icon.attr('src', '/assets/images/backgrounds/pause-normal-red-icon-16.png');
		$('#actions').click(function() { this.toggle(); });
	},

	toggle: function() { if (this.isPlaying) { this.pause(); } else { this.play(); } },

	play: function() {
		this.ticker.play();
		this.control.label.text('PAUSE');
		this.control.icon.attr('src', '/assets/images/backgrounds/play-normal-red-icon-16.png');
	},

	pause: function() {
		this.ticker.pause();
		this.control.label.text('PLAY');
		this.control.icon.attr('src', '/assets/images/backgrounds/pause-normal-red-icon-16.png');
	}
};

$.slgafi.widget = {};

$.slgafi.donation = {
	initForm: function() {
		Sys.loadScripts(["//ajax.microsoft.com/ajax/beta/0911/extended/ExtendedControls.js"], function() {
			Sys.require(Sys.components.maskedEdit, function() {
				Sys.create.maskedEdit.defaults = {
					OnFocusCssClass: "focus",
					OnInvalidCssClass: "invalid",
					OnFocusCssNegative: "negative",
					OnBlurCssNegative: "negative"
				}

				$("#Amount").maskedEdit({
					Mask: "9,999,999.99",
					MaskType: Sys.Extended.UI.MaskedEditType.Number
				});
			});
		});
	}
};

$.slgafi.tracking = {
	defaultOptions: {   
		account: document.location.href.indexOf('slgafi.org') > 1
						? 'UA-15637425-1'
						: 'UA-15637425-2',
		url: location.pathname,
		onbeforeload: null,
		transaction: null
	},
	
	tracker: null,
	
	transaction: null,
	transactionSubmitted: false,

	init: function(options) {
		var trackingOptions = options || this.defaultOptions;
		trackingOptions.links = this.defaultOptions.links;		
		var gaURL = (location.href.indexOf('https') == 0 ? 'https://ssl' : 'http://www');
		gaURL += '.google-analytics.com/ga.js?rnd=' + Math.floor(Math.random() * 11);

		try {
			$.getScript(gaURL, function() { $.slgafi.tracking.load(trackingOptions); });
		}
		catch (err) {
			document.write("<script src='" + gaURL + "' type='text/javascript'></script>");
			$.slgafi.tracking.load(trackingOptions);
		}
	},
	
	load: function(options) {
		var _tracker = new Tracker(options);
		var transaction = options.transaction;
		if (transaction != null && !this.transactionSubmitted) {
			_tracker.submitTransaction(transaction);
			this.transactionSumitted = true;
		}
		_tracker.trackPageView();
		this.tracker = _tracker;
	}
};

// --------------- [ Constants ] --------------
var Transaction = {
	Property: {
		OrderID: 'orderId',
		Fund: 'fund',
		FundCode: 'fundCode',
		ProductDescription: 'description',
		Category: 'category',
		Price: 'price',
		Tax: 'tax',
		Total: 'total',
		City: 'city',
		State: 'state',
		Country: 'country',
		Shipping: 'shipping',
		Quantity: 'quantity'
	}
};
var Event = {
	Category: { Link: 'link', Form: 'form' },
	Action: { Click: 'click', Fill: 'fill', Submit: 'submit' }
};

// --------------- [ Tracking Class ] ---------------

function Tracker() {
	this._options = $.slgafi.tracking.defaultOptions;
	
	if (arguments.length > 0) { this.setOptions(arguments[0]); }

	if (this._options.url) this._url = this._options.url;
	else this._url = location.pathname;

	// default value for transactions	
	this._transVars = {
		orderId: '',
		fund: '',
		fundCode: '',
		description: '',
		category: '',
		price: 'unknown',
		tax: '0.00',
		total: '0.00',
		city: '',
		state: '',
		country: '',
		shipping: '0.00',
		quantity: '1'
	};
	var _root = this;

	this._fired = {};  
	this._pageTracker = _gat._getTracker(this._options.account);
	this.init();
}


Tracker.prototype = {
	// --- [ properties ] ---
	getOptions: function() { return this._options; },

	setOptions: function(options) {
		var settings = $.extend({}, options || $.slgafi.tracking.defaultOptions);
		settings.links = {
			external: '/external/',
			mailto: '/mailto/',
			downloads: '/downloads/',
			extensions: ['pdf', 'doc', 'xls', 'csv', 'jpg', 'gif', 'mp3', 'swf', 'txt', 'ppt', 'zip', 'gz', 'dmg', 'xml', 'js']
		};
		this._options = settings;
	},

	getPageTracker: function() { return this._pageTracker; },

	// --- [ methods ] ---
	setTransactionVar: function(name, value) {
		this._transVars[name] = value;
	},

	submitTransaction: function(arg) {
		var pageTracker = this._pageTracker;
		arg = arg || this._transVars;

		pageTracker._addTrans(
					arg.orderId, 					// order id
					arg.fund, 					// affiliate
					arg.total, 						// total
					arg.tax, 						// tax
					arg.shipping, 					// shipping
					arg.city, 						// city
					arg.state, 						// state
					arg.country							// country
				);

		pageTracker._addItem(
					arg.orderId, 					// order id
					arg.fundCode, 					// SKU/Code (product id)
					arg.description, 				// product name
					arg.category, 					// variation on product							
					arg.price, 						// price
					arg.quantity						// quantity
				);

		pageTracker._trackTrans();
	},

	// _trackEvent(category, action, optional_label, optional_value)
	trackEvent: function(args) {
		var len = arguments.length;
		var pageTracker = this._pageTracker;

		if (args.label && args.value) {
			pageTracker._trackEvent(args.category, args.action, args.label, args.value);
		} else if (args.label) {
			pageTracker._trackEvent(args.category, args.action, args.label);
		} else {
			pageTracker._trackEvent(args.category, args.action);
		}
		
		return this;
	},

	trackPageView: function(url) {
		url = url || this._url;
		var opts = this._options;
		if (opts.onbeforeload) {
			this.trackEvent(opts.onbeforeload);
		}
		
		this._pageTracker._trackPageview(url);
		this._fired[url] = true;
		if (window.ontrackingfired) {
			window.ontrackingfired();
		}
		
		return this;
	},

	init: function init() {
		var pageTracker = this._pageTracker;
		pageTracker._setAllowAnchor(true);
		pageTracker._setDomainName(document.domain);
		pageTracker._initData();

		// this.trackPageView(this._url);
		var opts = this._options;
		var exts = opts.links.extensions;
		var extLen = exts.length;
		
		var decorateLink = function(u) {
			var trackingURL = '';

			if (u.indexOf('://') == -1 && u.indexOf('mailto:') != 0) {
				// no protocol or mailto - internal link - check extension
				var ext = u.split('.')[u.split('.').length - 1];
				
				for (i = 0; i < extLen; i++) {
					if (ext == exts[i]) {
						trackingURL = opts.links.download + u;
						break;
					}
				}
			} else {
				if (u.indexOf('mailto:') == 0) {
					// mailto link - decorate
					trackingURL = opts.links.mailto + u.substring(7);
				} else {
					// complete URL - check domain
					var regex = /([^:\/]+)*(?::\/\/)*([^:\/]+)(:[0-9]+)*\/?/i;
					var linkparts = regex.exec(u);
					var urlparts = regex.exec(location.href);
					if (linkparts[2] != urlparts[2]) trackingURL = opts.links.external + u;
				}
			}

			return trackingURL;
		}

		/* --- track special links ---   */
		$('a').each(function() {
			var u = $(this).attr('href');

			if (typeof (u) != 'undefined') {
				var newLink = decorateLink(u);

				if (newLink.length) {
					$(this).click(function() {
						pageTracker._trackPageview(newLink);
					});
				}
			}
		});

		path = opts.url; //location.pathname;
		if (path.substr(path.length - 1) != '/') {
			path += '/';
		}

		$("input").bind('blur', function() {
			path += $(this).attr('name');
			pageTracker._trackEvent(Event.Category.Form, Event.Action.Fill, path);
		});

		$("select").bind('change', function() {
			path += $(this).attr('name');
			pageTracker._trackEvent(Event.Category.Form, Event.Action.Fill, path);
		});

		$("textarea").bind('blur', function() {
			path += $(this).attr('name');
			pageTracker._trackEvent(Event.Category.Form, Event.Action.Fill, path);
		});

		$("button").bind('click', function() {
			path += $(this).attr('name');
			pageTracker._trackEvent(Event.Category.Form, Event.Action.Click, path);
		});
	},}

$(function() {
	$.slgafi.nav.init();
	
	var positions = [[150, 0], [150, 300], [150, 300], [150, 300], [150, 300], [150, 300], [150, 300], [150, 300]];
	$("div[rel*=video]").each(function(i) {
		$(this).overlay({
			oneInstance: true,
			closeOnClick: false,
			expose: 'white',
			effect: 'apple'
		});
	});

	var ticker = $("div.scrollable")
		.scrollable({
			vertical: true,
			size: 2,
			clickable: true,
			speed: 1000,
			easing: 'swing'
		})
		.circular()
		.autoscroll({ autoplay: true, api: true });


	$("#news-control-icon")
		.mouseover(function() { ticker.pause(); })
		.mouseout(function() { ticker.play(); });

	$("#download-trigger").tooltip({ position: "bottom", opacity: 1.0, tip: "#tip-donation-form-details" });
	$("#ccv-tooltip-trigger").tooltip({ position: "bottom", opacity: 1.0, tip: "#ccv-tooltip" });
	$("#graduation-tooltip-trigger").tooltip({ position: "bottom", opacity: 1.0, tip: "#graduation-tooltip" });

	$(".country-tooltip-trigger").each(function(i) {
		$(this).tooltip({
			position: "bottom",
			opacity: 1.0,
			tip: "#country-tooltip"
		})
	});

	$("img.panel-trigger[rel]").each(function(i) {
		var rel = $(this).attr("rel");
		$(this).click(function() {
			if ($(rel).is(":hidden")) {
				$(rel).slideDown("slow");
				src = "/assets/images/backgrounds/arrow_large_up.png";
			} else {
				$(rel).slideUp("slow");
				src = "/assets/images/backgrounds/arrow_large_down.png";
			}

			$(this).attr("src", src);
		});
	});

	$("a[href*=TOP]").each(function(i) {
		$(this).addClass("back-to-top");
	});

	//$.slgafi.utils.media('globe', '/assets/media/slgafi-globe.swf', 200, 208);	 
	//$.slgafi.utils.media('thermometer', '/assets/media/thermometer.swf', 200, 208);
	
	
	Sys.loadScripts(["/assets/scripts/jquery.media.js"], function() {
		$('#globe').media({
			width: 200,
			height: 208,
			autoplay: true,
			src: '/assets/media/slgafi-globe.swf', 
			caption: false
		});
	});
	
	// --- [ tracking ] ---
	if (window.track) {
		window.track();
	}
	
	// --- [ gallery ] ---// select the thumbnails and make them trigger our overlay
	var gallery = $("#gallery").size();
	if (gallery) {
		$(".gallery-trigger a").each(function() {
			$(this).overlay({
				target: '#gallery',
				expose: '#fff'
			}).gallery({
				speed: 1000
			});
		})
	}
});