cicportfolio = {
	featureSliderOnImg:  'fileadmin/templates/images/position_on.png',
	featureSliderOffImg: 'fileadmin/templates/images/position_off.png',	
	smallSliderOnImg:    'fileadmin/templates/images/position_on_small.png',
	smallSliderOffImg:   'fileadmin/templates/images/position_off_small.png',	
	centerNav: true,
	navButtonWidth: 10,
	timing: 15000,
	started: {},
	sliderCallback : function(slider,index) {
		if(!cicportfolio.started[index]) {
			cicportfolio.getFlashMovie(
				$(slider.sliderItems[index])
					.find('embed, object').eq(0).attr('name')
				).sendToActionscript();
			cicportfolio.started[index] = 1;
		}
	},
	
	getFlashMovie: function(movieName) {
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
		return (isIE) ? window[movieName] : document[movieName];
	},

	init: function() {
		this.initSliders();
		// this.initSingle();
	},	
	
	// initSingle: function() {
	// 	if($('#cicportfolioSingle').length > 0) {
	// 		$("a[rel='pThumb']").colorbox({opacity: .8});
	// 	}
	// },
	
	initSliders: function() {
		var sliders = $('.pJsSlider');	
		sliders.each(function(index,slider) {
			slider = $(slider);
			slider.sliderItems = new Array(); 
			slider.sliderNavItems = new Array();
			slider.stopAutoAdvance = false;
			slider.fixedOffset = 0;
			slider.trackedOffset = 0;
			slider.increment = 0;
			slider.itemOffset = 0;
			slider.currentItem = 0;

			// setup the items array
			slider.find('.pItem').each(function(itemIndex,item) {
				slider.sliderItems[itemIndex] = item;
			})
			
			// setup pnav
			slider.find('.pNav .pNavItem:not(.inactive)').each(function(itemIndex,item) {
				slider.sliderNavItems[itemIndex] = item;
			})
			
			// setup prev and next button events
			slider.find('.pPrev:not(.inactive)').each(function(itemIndex,item) { $(item).click( function() { cicportfolio.sliderRewind(slider); }) })
			slider.find('.pNext:not(.inactive)').each(function(itemIndex,item) { $(item).click( function() { cicportfolio.sliderAdvance(slider,false); }) })
			
			// setup nav events
			$.each(slider.sliderNavItems, function(itemIndex, item) {
				$(item).click(function() {
					cicportfolio.sliderGoTo(slider,itemIndex,false);
				})
			})
			
			// start advancing
			if(slider.hasClass('pJsAutoAdvance')) {
				setTimeout(function() {cicportfolio.sliderAdvance(slider,true)},cicportfolio.timing);
			}
		});
		if(cicportfolio.centerNav) {
			var navItems = $('#pNav .pNavWrapper img');
			numItems = navItems.length;
			itemPadding = parseInt(navItems.first().css('padding-left')) + parseInt(navItems.first().css('padding-right'));
			navWidth = (numItems * (cicportfolio.navButtonWidth + + itemPadding));
			$('#pNav .pNavWrapper').css({
				'width'   : navWidth+'px',
				'display' : 'block'
			});
		}
	},

	setCurrent: function(slider,index) {
		$.each(slider.sliderNavItems, function(elIndex,el) {
			if(slider.hasClass('pSliderSmall')) {
				if(index == elIndex) {
					$(el).attr({'src':cicportfolio.smallSliderOnImg});
				} else {
					$(el).attr({'src':cicportfolio.smallSliderOffImg});
				}
			} else {
				if(index == elIndex) {
					$(el).attr({'src':cicportfolio.featureSliderOnImg});
				} else {
					$(el).attr({'src':cicportfolio.featureSliderOffImg});
				}
			}
		});
		slider.currentItem = index;
	},
	
	sliderGoTo: function(slider,index,isAutoAdvance) {
		// validate index
		if(isAutoAdvance == false) {
			slider.stopAutoAdvance = true;
		}
		var size = $(slider.sliderItems).length;
		var max = size - 1 - slider.itemOffset;

		if(index < 0) index = max;
		if(index > max) index = 0;

		// math
		var offset = $(slider.sliderItems[index]).position();
		var moveX = (offset.left * -1) + slider.trackedOffset;
		slider.trackedOffset = slider.trackedOffset - moveX;
		
		var pSliderInner = slider.find('.pSliderInner');
		pSliderInner.animate(
			{right: '-=' + moveX + 'px'},
			'slow'
		);
			
		cicportfolio.setCurrent(slider,index);
		cicportfolio.sliderCallback(slider,index);
	},

	sliderRewind: function(slider) {
		slider.stopAutoAdvance = true;
		cicportfolio.sliderGoTo(slider,slider.currentItem - 1);
	},

	sliderAdvance: function(slider,isAutoAdvance) {
		if(isAutoAdvance == false) {
			slider.stopAutoAdvance = true;
			cicportfolio.sliderGoTo(slider, slider.currentItem + 1, false);
		} else {
			if(slider.stopAutoAdvance == false) {
				setTimeout(function() {cicportfolio.sliderAdvance(slider, true)}, cicportfolio.timing);
				cicportfolio.sliderGoTo(slider, slider.currentItem + 1, true);
			}
		}
	}
}

function valRegForm() {
	$(document).ready(function() {
		$('#whitepaper').submit(function() {
			var reqFields = {
				'#first_name':'First name',
				'#last_name':'Last name',
				'#phone':'Phone',
				'#email':'Business email',
				'#userTitle':'Title',
				'#department':'Department',
				'#company':'Company',
				'#address':'Address',
				'#city':'City',
				'#state':'State or province',
				'#country':'Country',
				'#zip':'Zip or postal code',
				'#industry':'Business/Industry',
				'#employees':'Number of Employees',
				'#interest_level':'Level of Interest'
			};
			var isError = false;
			var error = 'The following fields are required:'+"\n";
			$.each(reqFields, function(id,label) {
				var field = $(id);
				if(field.val() == false) {
					isError = true;
					error = error + label + "\n";
				}
			})
			if(isError == true) {
				alert(error);
				return false;
			} else {
				return true;
			}
		});
	});
}

var homePageSliders = {
	init: function() {
		cicportfolio.init();
		$('#partner-slider .stage ul').jcarousel();
		this.partnerSlider.setupEvents();
	},
	partnerSlider: {
		setupEvents: function() {
			this.allImagesLoaded();
		},
		verticallyAlignImages: function() {
			this.sliderImages.each(function(index,item) {
				el = $(item);
				h = el.height();
				parentHeight = el.parent().first().height();
				topPadding = (parentHeight - h) / 2;
				el.css({
					'padding-top' : topPadding+'px'
				})
			});
		},
		allImagesLoaded: function() {
			this.sliderImages = $('#partner-slider .stage ul li p img');
			var callingContext = this;
			this.sliderImages.each(function(index,item) {
				//Act on the last image
				if(index == callingContext.sliderImages.length-1) {
					// Once it's loaded, so are other images and we can reliably act on these elements.
					$(item).load(function() {
						callingContext.doAfterAllImagesLoaded();
					});
				}
			});
		},
		doAfterAllImagesLoaded: function() {
			this.verticallyAlignImages();
		}
	}
}

var sidebarCallouts = {
	init: function() {
		this.initialize();
	},
	initialize: function() {
		// Store our in objects in this object for quick access.
		this.expandables = $('#accordion li .expandable');
		this.bindClicks();
		// this.openFirstItem();
	},
	bindClicks: function() {
		if(this.expandables) {
			var callingContext = this;
			this.expandables.each(function(index, item){
				el = $(item);
				el.attr('id', 'kapCalloutScroller'+index);
				if(el.siblings('.scroll-pane').length >= 1) {
					el.click(function() {
						callingContext.openScroller(this);
						return false;
					})
				}
			});
		}
	},
	openScroller: function(el) {
		var el = $(el);
		var scroller = el.siblings('.scroll-pane');
		if(this.isAnotherSliderOpen(scroller)) {
			this.closeOpenSlider();
			this.toggleSlider(scroller);
		} else {
			this.toggleSlider(scroller);
		}
	},
	openFirstItem: function() {
		var el = this.expandables.first();
		var el = $(el).siblings('.scroll-pane');
		var callingContext = this;
		this.toggleSlider(el);
		// el.toggle('fast', function() {
		// 	el.jScrollPane({
		// 		showArrows: true
		// 	});
		// 	this.doAfterTogglingSlider();
		// });
		// this.addOpenClassToScrollerParent();
	},
	isAnotherSliderOpen: function(scroller) {
		var openSlider = $('.scroll-pane:visible');
		if(openSlider.length >= 1) {
			this.openSliderID = openSlider.siblings('.expandable').first().attr('id');
		}
		clickedID = scroller.siblings('.expandable').first().attr('id');
		if(clickedID === this.openSliderID || openSlider.length == 0) {
			return false;
		} else {
			return true;
		}
	},
	closeOpenSlider: function() {
		toClose = $('#'+this.openSliderID).siblings('.scroll-pane');
		this.toggleSlider(toClose);
	},
	addOpenClassToScrollerParent: function() {
		openLi = $('.scroll-pane:visible').parents('li').first();
		openLi.addClass('open');
	},
	toggleSlider: function(el) {
		var callingContext = this;
		if(el.is(':visible')) {
			el.parents('li').first().removeClass('open');
			el.hide();
		} else {
			el.parents('li').first().addClass('open');
			el.show();
			el.jScrollPane({
				showArrows: true
			});
		}
		// el.toggle(function() {
		// 	el.jScrollPane({
		// 		showArrows: true
		// 	});
		// 	callingContext.doAfterTogglingSlider(el);
		// });
	},
	doAfterTogglingSlider: function(el) {
		if(el.is(':visible')) {
			el.parents('li').first().addClass('open');
		} else {
			el.parents('li').first().removeClass('open');
		}
	}
}

function googleTrackDownloads(){
	$("a.trackLink").bind("click", function(e) {
		var pageViewed = $(this).attr("href");
		pageTracker._trackPageview(pageViewed);
		return true;
	});
}

var textFields = {
	/**
	 * This function grabs labels for text fields and places the label text in the field.
	 * When the field gains focus, the label text is removed. On blur, if the text field is empty,
	 * the label text is placed back in the field. When the lable text is inserted into the field, 
	 * the input is given the class 'hint'.
	 *
	 *  @param string hintClass The label class to use for hinting.
	 *  @param boolean useAll Determines wheter or not all lables will be used for hinting.
	 */
	init : function(hintClass, useAll) {
		if(hintClass) {
			labels = $('label.'+hintClass);
		} else if(useAll) {
			labels = $('label');
		}
		if(labels) {
			labels.each(function() {
				forInput = $(this).attr('for');
				var i = $('#'+forInput);
				var l = $(this).text();
				if(i.is('input:text')) {
					// hide the label
					$(this).hide();
					// put it in the field
					i.addClass('hint')
					i.attr('value', l);
					i.focus(function() {
						i.removeClass('hint')
						if(i.attr('value') == l) {
							i.attr('value', '');
						}
					}).blur(function() {
						if(i.attr('value') == '') {
							i.addClass('hint')
							i.attr('value', l);
						}
					});
				}
			});
		}
	}
}

var trackExternal = {
	init : function() {
		$('a[href="ecommerce/cw-e-commerce-redirect/"]').click(function() {
			pageTracker._trackEvent('Outgoing Links','E-Commerce Buy Now');
			if($(this).attr('target') != '_blank') setTimeout('document.location = "' + $(this).attr('href') + '"', 100)
			return true;
		});
	}
}

$(document).ready(function(){
	homePageSliders.init();
	$('ul.sf-menu').superfish({
		autoArrows: false,
		speed: 'fast'
	});
	sidebarCallouts.init();
	$(".tablesorter").tablesorter({
		widgets: ['zebra']
	});
	googleTrackDownloads();
	textFields.init('hintable', false);
	trackExternal.init();
});

// Start the first Flash animation (in the hero sliders) here.  For some reason, this doesn't work when the slider object is being set up:
// $(function() {
// 	try {
// 		function initFirstSwf() {
// 			swf = (navigator.appName.indexOf("Microsoft") != -1) ? window['compliance'] : document['compliance'];
// 			swf.sendToActionscript();
// 		}
// 		setTimeout(initFirstSwf,4000);
// 	} catch(e) {}
// });
