$(document).ready(function() {
	
	if ($('#contextio-overlay').length) {
		// show overlay about Context.IO being live
		var ckValue = 	$.cookie('ContextIO_overvay');
		var ovl = $('#contextio-overlay');
		if (ckValue == 'hidden') {
			ovl.hide();
		} else {
			function shiftDown(elm, increment) {
				var top = parseInt(elm.css('top'), 10);
				if (top >= 0) {
					clearInterval(timer);
				} else {
					elm.css('top',(top+increment)+'px');
				}
			};
			var timer = window.setInterval(function () {
				shiftDown(ovl,10)
			}, 20);
		}
		
	}

	if ($('#callout .api').length) {
		$('#formCtnr').dialog({
			autoOpen: false, 
			modal: true, 
			width: 450,
			minHeight: 100,
			autoResize: true,
			open: function (evt, ui) {
				// reset form content
				$('#apiFormFeedback').removeClass('error success loading');
				$('#apiFormCloseBtn').closest('.buttons').hide();
				$('#apiAccessForm').resetForm().show();
			},
			dialogClass: 'dd'
		});
		
		$('#actBtn').click(function (evt) {
			$('#formCtnr').dialog('open');
		});
		
		$('#apiFormCloseBtn').click(function (evt) {
			$('#formCtnr').dialog('close');
		});
		
		$('#submitBtn').click(function (evt) {
		
			$('#apiAccessForm').ajaxSubmit({
				dataType: 'json',
				beforeSubmit: function(formData, jqForm, options) {
					try {
						// make sure a name and email address are given
						var formDataHash = extractData(formData);
						var formElm = jqForm[0];
	
						var feedbackObj = $('#apiFormFeedback');
						feedbackObj.removeClass('error success loading');
						if (!formDataHash.email)  {
							formElm.email.focus();
							feedbackObj.text("Please enter your email address.").addClass('error');
							return false; 
						}             
						feedbackObj.addClass('loading').text('sending information ...');
					} catch(e) {
						console.dir(e);
					}
				},
				success: function(response, statusText) {
					var feedbackObj = $('#apiFormFeedback');
					feedbackObj.removeClass('loading error success');
					if ('success' in response && response.success == 1) {
						feedbackObj.addClass('success').text("Thanks for contacting us! We'll get in touch soon");
						$('#apiAccessForm').fadeOut();
						$('#apiFormCloseBtn').closest('.buttons').show();
					}
					else {
						feedbackObj.addClass('error').text("Error submitting your information, please try again.");
					}
				}
			});
		});
	}
	
	if ($('#pageHeadline.chrome').length) {
		$('#actBtn').click(function (evt) {
			// place shadow above the page with pointer to approve the extension
			window.setTimeout(function () {
				$('#acceptExtension').slideDown('slow');
			}, 1000);
			window.setTimeout(function () {
				$('#acceptExtension').fadeOut('slow');
			}, 15*1000);
			window.location.href = "/chrome/dokdok.crx";
		});
	}

	if ($('#callout .googleapps').length) {
		$('.capture .zoomable').fancyZoom({
			closeOnClick: false,
			scaleImg: false,
			directory: '/js/jquery/fancyzoom/images'
		});
		$('.zoomable').append($('<div/>',{
			'class': 'enlargeImageBtn',
			'text': 'click to enlarge'
		}));

		var installFormFeedback = $('#installDlg form .feedback');

		$('#actBtn').click(function (evt) {
			$('#installDlg').dialog('open');
		});
		
		$('#installDlg').dialog({
			autoOpen: false, 
			modal: true, 
			width: 720,
			minHeight: 300,
			autoResize: true,
			open: function (evt, ui) {
				// reset form content
				installFormFeedback.removeClass('error success loading');
				$(evt.target).find('.inputs').show();
				$(evt.target).find('a').blur();
			},
			dialogClass: 'dd'
		});
		
		$('#installDlg .altClientChk span').click(function (evt) {
			$(this).siblings('input[type=checkbox]').click();
		});
		$('#installDlg .altClientChk.other input[type=text]').focus(function (evt) {
			var chkBoxElm = $(this).siblings('input[type=checkbox]').get(0);
			if (!chkBoxElm.checked) chkBoxElm.checked = true;
		});
		
		$('#installDlg #submitBtn').click(function (evt) {
			$('#installDlg form').ajaxSubmit({
				dataType: 'json',
				beforeSubmit: function(formData, jqForm, options) {
					try {
						// make sure an email address and at least one email client has been picked
						var formDataHash = extractData(formData);
						var formElm = jqForm[0];
	
						installFormFeedback.removeClass('error success loading');
						if (!formDataHash.email)  {
							formElm.email.focus();
							installFormFeedback.text("Please enter your email address.").addClass('error');
							return false; 
						}
						if (!formDataHash.altClient)  {
							installFormFeedback.text("Please pick at least one email client.").addClass('error');
							return false; 
						}
						installFormFeedback.addClass('loading').text('sending information ...');
					} catch(e) {
						console.dir(e);
					}
				},
				success: function(response, statusText) {
					installFormFeedback.removeClass('loading error success');
					if ('success' in response && response.success == 1) {
						installFormFeedback.addClass('success').html("Thanks! We'll send an email to <b>"+ $('#installDlg input[name=email]').fieldValue() +"</b> when DokDok is available for your email client.");
						$('#installDlg .inputs').hide();
					}
					else {
						installFormFeedback.addClass('error').text("An error occured saving your information. Please try again.");
					}
				}
			});
		});

	}
	
	if ($('#msgCounter').length) {
		var ctnr = $('#messageCountCtnr');
		var initCount = parseInt(ctnr.attr('data-count'), 10);
		var initTime = parseInt(ctnr.attr('data-time'), 10);
		var msToIncrement = Math.round((1 / parseFloat(ctnr.attr('data-delta'))) * 1000);
		var increment = 1;
		/*while (msToIncrement <= 250) {
			increment += 1;
			msToIncrement = msToIncrement * 2;
		}*/
		var now = Math.round((new Date()).getTime() / 1000);
		var countAdjust = Math.floor((now - initTime) * 1000 / msToIncrement) * increment;
		
		initCount += countAdjust;
		
		$('#msgCounter').jOdometer({
			increment: increment,
			delayTime: msToIncrement,
			counterStart: initCount,
			numbersImage: 'images/odometer-numbers.png',
			heightNumber: 40,
			widthNumber: 25,
			speed: 200,
			thousandSeparatorsWidth: 5
		});
	}

	if ($('.blogPostsCtnr').length) {
		var feed = new google.feeds.Feed("http://blog.dokdok.com/feed/");
		feed.setNumEntries(3);
		feed.load(function(result) {
			if (!result.error) {
				var ctnr = $('.blogPostsCtnr');
				ctnr.empty();
				jQuery.each(result.feed.entries, function(i, entry){
					var postElm = $(document.createElement('div')).addClass('blogPost');
					postElm.append($(document.createElement('span')).addClass('date').text(dateToLocaleFormat(new Date(entry.publishedDate), '%b %e')));
					postElm.append($(document.createElement('a')).addClass('title').attr({href:entry.link, target:'_blank'}).html(entry.title));
					ctnr.append(postElm);
				});
			}
		});
	}

	if ($('.tweetsCtnr').length) {
		var feed = new google.feeds.Feed("http://twitter.com/statuses/user_timeline/32489151.rss");
		feed.setNumEntries(4);
		feed.load(function(result) {
			if (!result.error) {
				var ctnr = $('.tweetsCtnr');
				ctnr.empty();
				jQuery.each(result.feed.entries, function(i, entry){
					var postElm = $(document.createElement('div')).addClass('tweet');
					
					var date = new Date(entry.publishedDate);
					var refDate = new Date();
					var dateStr = '';
					if (refDate.getMonth() == date.getMonth() && refDate.getDate() == date.getDate() && refDate.getFullYear() == date.getFullYear()) {
						dateStr = 'today';
					}
					else {
						refDate.setDate(refDate.getDate() - 1);
						if (refDate.getMonth() == date.getMonth() && refDate.getDate() == date.getDate() && refDate.getFullYear() == date.getFullYear()) {
							dateStr = 'yesterday';
						}
						else {
							dateStr = dateToLocaleFormat(date, '%b %e');
						}
					}
					postElm.append($(document.createElement('span')).addClass('date').text(dateStr));
					
					postElm.append($(document.createElement('span')).addClass('title').html(entry.title.replace(/^dokdokinc: /gi,'').replace(/(http:\/\/[^ ]*)/gi,"<a href=\"$1\" target=\"_blank\">$1</a>")));
					ctnr.append(postElm);
				});
			}
		});
	}

});

function extractData(formData) {
	var formDataHash = {};
	for (var i = 0; i < formData.length; ++i) {
		var fieldName = formData[i].name;
		if (fieldName.search(/_[0-9]*$/) != -1) fieldName = fieldName.match(/([^_]*)/).pop();
		if (fieldName in formDataHash) {
			if (typeof formDataHash[fieldName] != 'object') {
				formDataHash[fieldName] = [formDataHash[fieldName]];
			}
			formDataHash[fieldName].push(formData[i].value);
		}
		else {
			formDataHash[fieldName] = formData[i].value;
		}
	}
	return formDataHash;
};

function hideCtxioOverlay () {
	$('#contextio-overlay').fadeOut();
	$.cookie('ContextIO_overvay', 'hidden', { expires: 10 });
};

