
//----------------- jQuery -----------------

$(document).ready(function() {
	
    $(".max-round").corner("8px");
	$(".std-round").corner("5px");
	$(".sm-round").corner("3px");
	$(".top-sm-round").corner("4px round tl tr");
	$(".std-bottom-round").corner("top 6px");
	$(".pill-ul > li").corner("5px");
	$(".hide-on-load").hide();
	
	//set timezone
	/*
	if ( $("#user_timezone").size() > 0 ){
		var today = new Date();
		var timezoneOffset = today.getTimezoneOffset();
		$("#user_timezone").val(timezoneOffset);
	}*/
	
/*******************
 *** Datepicker ****
 *******************/
	
	$(function(){
		
		var findSWF = function(movieName) 
		{
			if ($.browser == "Microsoft") {
				return window[movieName];
			} else {
				return document[movieName];
			}
		};
		
		/* ---------- date formatting functions -------------- */
		
		var visible_input = $("#visible_daterange");
		visible_input.click(function(){
			$("input[id^='datepicker']").click();
		});
		
		/* --- convert date to string format --- */
		
		var lastValidDates;
		
		setDate = function(hiddenInput){
			//parse out dates
			var dateTokens = hiddenInput.val().split(":");
			var startDate = dateTokens[ dateTokens.length - 2 ];
			var endDate = dateTokens[ dateTokens.length - 1 ];
			
			lastValidDates = hiddenInput.val();
			startDate = formatDate(startDate);
			endDate = formatDate(endDate);
			visible_input.val(startDate + " - " + endDate);
		};
		
		formatDate = function(date){
			var dateTokens = date.split("-"); 
			var month = getMonth(dateTokens[1]);
			var day = getDay(dateTokens[2]);
			var year = dateTokens[0].replace(/ /,"");
			var formattedDate = month + " " + day + ", " + year;
			return formattedDate;
		};
		
		getMonth = function(value){
			var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
			return months[value-1];
		};
		
		getDay = function(value){
			if (value.substr(0,1) == 0){
				value = value.substr(1,2);
			}
			value = value.replace(/ /, "");
			if (value == 1 || value == 21 || value == 31){
				return String(value) + "st";
			} else if (value == 2 || value == 22){
				return String(value) + "nd";
			} else if (value == 3 || value == 23){
				return String(value) + "rd";
			} else {
				return String(value) + "th";
			}
		};
		
		/* --- convert date back to technical format --- */
		
		extractDate = function(hiddenInput){
			var dateTokens = visible_input.val().split("-");
			
			var startDate = unformatDate(dateTokens[0].replace(/ /,""));
			var endDate = unformatDate(dateTokens[1].replace(/ /,""));
			
			var valid;
			if (startDate == false || endDate == false){
				var dateString = lastValidDates;
				valid = false;
			} else {
				var dateString = startDate + " : " + endDate;
				valid = true;
			}
			hiddenInput.val(dateString);
			return valid;
		};
		
		unformatDate = function(date){
			var dateTokens = date.split(",");
			var monthAndDay = dateTokens[0];
			
			//extract and pass month (3 char) and date (1-2 char int)
			var currentMonth = monthAndDay.substr(0,3);
			var currentDay = monthAndDay.substr(3,3);
			var month = extractMonth(currentMonth);
			var day = extractDay(parseInt(currentDay));
		
			if ( month == false || isNaN(day) ){
				return false;
			}
			
			var year = dateTokens[1].replace(/ /,"");
			
			//TODO: year validation
			
			var extractedDate = year + "-" + month + "-" + day;
			return extractedDate.replace(/ /,"");
		};
		
		extractMonth = function(month){
			month = month.replace(/ /,"");//.toLowerCase();
			var months = [ { "Jan" : 1, "Feb" : 2, "Mar" : 3, "Apr" : 4, 
							 "May" : 5, "Jun" : 6, "Jul" : 7, "Aug" : 8, 
							 "Sep" : 9, "Oct" : 10, "Nov" : 11, "Dec" : 12 } ];
			if (months[0][month]){
				return months[0][month];
			} else {
				return false;
			}
		};
		
		extractDay = function(day){
			if (day.length == 1){
				return "0" + parseInt(day);
			} else {
				return parseInt(day);
			}
		};
		
		/* --------------------------------------------------- */

		if( $("input[id^='datepicker']").length > 0 )
		{
			var datePicker = $("input[id^='datepicker']");
			var idTokens = datePicker.attr("id").split(":");
			var swfId = idTokens[idTokens.length - 2];
			var ajaxPages = [ "locations/summary", "videos/detail", "traffic/detail", "label/detail" ];
			
			//parse out dates
			var dateTokens = datePicker.val().split(":");
			var startDate = dateTokens[ dateTokens.length - 2 ];
			var endDate = dateTokens[ dateTokens.length - 1 ];
			
			//parse out dataUrl
			var dataUrl = idTokens[ idTokens.length - 1 ];
			var urlTokens = dataUrl.split("/");
			dataUrl = "";
			for ( var i = 0; i < urlTokens.length - 2; i++ ){
				dataUrl += urlTokens[i] + "/"; 
			}
			
			//to check if we've done an ajax update
			var ajaxUpdate = false;
			
			visible_input.keydown(function(e){
				clearTimeout();
				if (e.keyCode == 13){
					return false;
				}
			});
			
			visible_input.keyup(function(e){
				clearTimeout();
				if (e.keyCode >= 37 && e.keyCode <= 40){
					//arrow keys
					return false;
				}
				else if (e.keyCode == 13){
					//execute datepicker change event
					$(".ui-daterangepicker").find(".btnDone").click();
					return false;
				} else {
					//parse dates
					var isValid = extractDate(datePicker);
					var timeDelay;
					if (isValid == true){
						timeDelay = 15000;
					} else {
						timeDelay = 5000;
					}
					setTimeout( function(){ setDate(datePicker); }, 15000 );
					var dates = datePicker.val().split(":");
					var startDate = dates[0].replace(/ /,"");
					var endDate = dates[1].replace(/ /,"");
					
					//set them
					$(".range-start").datepicker('setDate',Date.parse(startDate));
					$(".range-end").datepicker('setDate',Date.parse(endDate));
				}
			});
			
			setDate(datePicker);
			datePicker.change(function(){
				setDate(datePicker);
			});
			
			datePicker.daterangepicker({
											arrows: false,
											nextLinkText: "Next Week", 
											prevLinkText: "Last Week",
											dateFormat: "yy-mm-dd",
											doneButtonText: "Apply",
											defaultToRange: true,
											rangeSplitter: ":",
											visibleRange: visible_input,
											posX: visible_input.offset().left, // x position
											posY: visible_input.offset().top + visible_input.outerHeight() + 7, // y position
											onClose: function( inputObject, executeCallback ){
												$(".toolbox").animate({marginBottom: "0px"});
												if (executeCallback == true){
													//loading animation
													var loader = $("#loading_anim");
													$("#"+swfId).parent().append(loader);
													
													//put this in a function and clean up splitter
													var tokens = inputObject.val().split(":");
													var firstDate = tokens[0].replace(/ /,"");
													var endDate = tokens[1].replace(/ /,"");
													
													var inputTokens = inputObject.attr("id").split("/");
													var publisherId = inputTokens[inputTokens.length - 3];
													if ($("input#current_params").length > 0){
														var ajaxTokens = $("input#current_params").val().split("/");
													}
													
													if (Date.parse(firstDate) > Date.parse(endDate) || Date.parse(endDate) > Date.parse("today"))
													{
														return;
													}
													
													var doAjax = false;
													for (var i = 0; i < ajaxPages.length; i++){
														if (window.location.href.search(ajaxPages[i]) != -1){
															doAjax = true;
															break;
														}
													}
													
													if ( doAjax == true ){ 
														//ajax :D
														
														var swf = findSWF(swfId);
														$.ajax({
															url: dataUrl + firstDate + "/" + endDate,
															type: "GET",
															beforeSend: function(){
																loader.show();
															},
															success: function(data){
																if (typeof ajaxReload == 'function') {
																	if (ajaxTokens[1] != undefined){
																		var locationParams = publisherId + "/" + ajaxTokens[0] + "/" + ajaxTokens[1];
																	} else if (ajaxTokens[0]  != undefined){
																		locationParams = publisherId + "/" + ajaxTokens[0];
																	} else {
																		locationParams = publisherId;
																	}
																	ajaxReload( locationParams, "true", "datepicker" );
																} else if (typeof videoAjaxReload == 'function'){
																	var videoName = $("span#video_title > span").html();
																	videoAjaxReload( ajaxTokens[ajaxTokens.length-3], videoName, "datepicker");
																} else if (typeof domainAjaxReload == 'function'){
																	var domainName = $("span#domain_title > span").html();
																	domainAjaxReload( ajaxTokens[ajaxTokens.length-4], domainName, "datepicker");
																} else if (typeof labelAjaxReload == 'function'){
																	var labelName = $("span#label_title > span").html();
																	labelAjaxReload( ajaxTokens[ajaxTokens.length-3], labelName, "datepicker");
																} else {
																	swf.load(data);
																}
																ajaxUpdate = true;
															},
															complete: function(){
																loader.hide();
															}
														});
														
													} else {
														//do a standard page refresh instead of ajax :(
														if ($("#current_location").length > 0 && $("#current_location").val().length > 0){
															var locationParams = $("#current_location").val();
															window.location.href = dataUrl + firstDate.replace(" ","") + "/" + endDate.replace(" ","") + locationParams;
														} else {
															window.location.href = dataUrl + firstDate.replace(" ","") + "/" + endDate.replace(" ","");
														}
													}
													reload = false;
													setDate(inputObject);
												}
											},
											onOpen: function( inputObject ){
												//parse out dates
												var dateTokens = datePicker.val().split(":");
												var startDate = dateTokens[ dateTokens.length - 2 ];
												var endDate = dateTokens[ dateTokens.length - 1 ];
												
												//set dates
												$(".ranges").find(".title-start").html("Start date: "+ formatDate(startDate));
												$(".ranges").find(".title-end").html("End date: "+ formatDate(endDate));
												
												//set calendar blocks to default dates
												$(".range-start").datepicker('setDate',Date.parse(startDate));
												$(".toolbox").animate({marginBottom: "273px"});
												
												//style up selection, remove weird ui default styles
												var selected = { border: "1px solid #79b7e7", background: "#f9fafb" , color: "#e47009" };
												
												if (ajaxUpdate == true){
													$(".range-start").find(".ui-datepicker-current-day > a").css(selected);
												} else {
													$(".range-start").find(".ui-datepicker-current-day > a").css(selected);
												}
												if ( $(".range-end").find(".ui-state-active").length > 0 ){
													$(".range-end").find(".ui-state-highlight").removeClass("ui-state-highlight");
												}
												else
												{
													$(".range-end").find(".ui-datepicker-today > a").css(selected);
												}
											},
											onChange: function(rangeInput){
												var tokens = rangeInput.val().split(":");
												var firstDate = tokens[0];
												var lastDate = tokens[1];
												if (Date.parse(firstDate) > Date.parse(lastDate) || Date.parse(lastDate) > Date.parse("today")){
													if($(".ranges").find(".ui-error-label").is(":visible")){
														$(".ranges").find(".ui-error-label").fadeOut( 200 ).fadeIn( 200 );
													} else {
														$(".ranges").find(".ui-error-label").fadeIn( 200 );
													}
												} else {
													$(".ranges").find(".ui-error-label").fadeOut( 200 );
												}
												
												//express new dates
												$(".ranges").find(".title-start").html("Start date: "+ formatDate(firstDate));
												$(".ranges").find(".title-end").html("End date: "+ formatDate(lastDate));
												setDate(rangeInput);
											}
										});
		}
	});
	
/************************
 ***** TABLES ***********
 ************************/
	
    $(function(){
    	
    	//-------------------------- parsers ------------------------------
    	
        // add parser through the tablesorter addParser method 
    	jQuery.tablesorter.addParser({
    		  id: "commaDigit",
    		  is: function(s, table) {
    		    var c = table.config;
    		    return jQuery.tablesorter.isDigit(s.replace(/,/g, ""), c);
    		  },
    		  format: function(s) {
    		    return jQuery.tablesorter.formatFloat(s.replace(/,/g, ""));
    		  },
    		  type: "numeric"
    		});
    	
    	jQuery.tablesorter.addParser({
	  		  id: "elapsedTime",
	  		  is: function(s) {
	  		    //var c = table.config;
	  		    //return jQuery.tablesorter.isDigit(s.replace(/:/, ""), c);
    			return false;
	  		  },
	  		  format: function(s) {
	  			  /*
	  		    var tokens = s.split(":");
	            var seconds = tokens[tokens.length - 1];
	            var minutes = tokens[tokens.length - 2];
	            
	            seconds = pad2(seconds);
	            minutes = pad2(minutes);
	            
	            s = "";
	            if ( tokens.length == 3 ){
		            for ( var i = 0; i < tokens.length - 2; i++ ){
		            	s += tokens[i];
		            }
	            }
	            s += minutes;
	            s += seconds;
	            return s;
	            
	            function pad2(number) {	            	   
	            	return (number < 10) ? '0' + number : number;
	            };
	            */
	  			  //return s.toLowerCase().replace(/:/,"").replace(/:/,"");
	  			  return s.toLowerCase().replace(/ hr /,"").replace(/ min /,"").replace(/ sec/, "");
	  		  },
	  		  type: "numeric"
	  		});
    	
    		//------------------------- plugin instances -----------------------
            
            $(function(){
	            try{
	            	//$("#dashboard_summary_datatable").tableTotals();
			    	$("#dashboard_summary_datatable").customColumns({ 	defaultHidden: [6,7],
			    														filterContainer: $("#dashboard_summary_filters")
			    													});
			    	
			    	/*.tablesorter(
			                {   widthFixed: true,
			                	sortList: [[1,1]],
			                    headers:  { 1: { sorter: 'commaDigit'},
			                				3: { sorter: 'commaDigit'},
			                				4: { sorter: 'commaDigit'},
			                				5: { sorter: 'commaDigit'}
			                			}
			                });*/
			                
			        $("#dashboard_video_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: 	[[0,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' },
			        						3: { sorter: 'commaDigit' },
			        						4: { sorter: 'commaDigit' }
			        					}
			        		});
			        
			        $("#dashboard_video_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
			        													filterContainer: $("#dashboard_video_filters")
			        											});
			        
			        $("#locations_countries_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' },
			        						3: { sorter: 'commaDigit' },
			        						4: { sorter: 'commaDigit' },
			        						5: { sorter: 'commaDigit' }
	                    		}
			        		})
			        .tablesorterPager({
			        					container: $("#pagination"),
			        					rowClickFunction: function(event){
			        										if (typeof ajaxReload == 'function'){
			        											ajaxReload( $(this).find("a").attr("id"), "true", $(this).find("a") );
			        										}
			        										return false;
			        										/*
			        										url = $(this).find("a").attr("href");
										        	    	if ( url )
										        	    		location.href = url;
										        	    	else
										        	    		return;
															}*/
			        					}
									});
			        
			        $("#locations_countries_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
																			filterContainer: $("#locations_countries_filters")
																	});
			        
			        $("#locations_videos_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' },
			        						3: { sorter: 'commaDigit' },
			        						4: { sorter: 'commaDigit' },
			        						5: { sorter: 'commaDigit' },
			        						6: { sorter: 'commaDigit' },
			        						7: { sorter: 'commaDigit' }
			                    		}
			        		})
			        .tablesorterPager({container: $("#pagination_videos")});
			        
			        $("#locations_videos_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
																		filterContainer: $("#locations_videos_filters")
																	});
			        
			        $("#traffic_sources_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' },
			        						3: { sorter: 'commaDigit' },
			        						4: { sorter: 'commaDigit' }
			                    	}
			        		})
			        .tablesorterPager({container: $("#pagination")});
			        
			        $("#traffic_sources_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
																		filterContainer: $("#traffic_sources_filters")
			        											});
			        
			        $("#visitors_content_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' }
			                    	}
			        		})
			        .tablesorterPager({container: $("#pagination")});
			        
			        $("#visitors_content_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
																	filterContainer: $("#visitors_content_filters")
			        											});
			        
			        $("#visitors_sources_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' }
			                    		}
			        		})
			        .tablesorterPager({container: $("#pagination_sources")});
			        
			        $("#visitors_sources_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
																		filterContainer: $("#visitors_sources_filters")
			        												});
			        
			        $("#visitors_traffic_sources_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' }
			                    		}
			        		})
			        .tablesorterPager({container: $("#pagination_traffic_sources")});
			        
			        $("#visitors_traffic_sources_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
																		filterContainer: $("#visitors_traffic_sources_filters")
			        												});
			        
			        //------------- callback for paging ---------------
			        var video_summary_callback = null;
			        if (typeof runLabelManager == 'function'){
			        	video_summary_callback = runLabelManager; 
			        }
			        
			        $("#videos_summary_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:	/*{
			        				1: { sorter: 'commaDigit' },
			        				2: { sorter: 'commaDigit' },
			        				3: { sorter: 'commaDigit' },
			        				4: { sorter: 'commaDigit' },
			        				5: { sorter: 'commaDigit' },
			        				7: { sorter: 'elapsedTime' },
			        				8: { sorter: 'commaDigit' },
			        				9: { sorter: 'commaDigit' },
			        				10: { sorter: 'commaDigit' },
			        				11: { sorter: 'commaDigit' },
			        				12: { sorter: 'commaDigit' },
									13: { sorter: 'commaDigit' },
									14: { sorter: 'commaDigit' },
									15: { sorter: 'commaDigit' },
									16: { sorter: 'commaDigit' },
									17: { sorter: 'commaDigit' },
									18: { sorter: 'commaDigit' }*/
									{
			        				1: { sorter: 'commaDigit' },
			        				2: { sorter: 'commaDigit' },
			        				3: { sorter: 'commaDigit' },
			        				4: { sorter: 'commaDigit' },
			        				6: { sorter: 'elapsedTime' },
			        				7: { sorter: 'commaDigit' },
			        				8: { sorter: 'commaDigit' },
			        				9: { sorter: 'commaDigit' },
			        				10: { sorter: 'commaDigit' },
			        				11: { sorter: 'commaDigit' },
									12: { sorter: 'commaDigit' },
									13: { sorter: 'commaDigit' },
									14: { sorter: 'commaDigit' },
									15: { sorter: 'commaDigit' },
									16: { sorter: 'commaDigit' },
									17: { sorter: 'commaDigit' }
									
			        			}
			        		})
			        .tablesorterPager({		container: $("#pagination"),
			        						pageChangeCallback: video_summary_callback
			        					});
			        
			        $("#videos_summary_datatable").customColumns({ 	defaultHidden: [6,8,9,10,11,12,13,14,15,16,17,18],
																	filterContainer: $("#videos_summary_customize")
																});
			        
			        $("#label_videos_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
								headers:	{
			        				1: { sorter: 'commaDigit' },
			        				2: { sorter: 'commaDigit' },
			        				3: { sorter: 'commaDigit' },
			        				4: { sorter: 'commaDigit' },
			        				6: { sorter: 'elapsedTime' },
			        				7: { sorter: 'commaDigit' },
			        				8: { sorter: 'commaDigit' },
			        				9: { sorter: 'commaDigit' },
			        				10: { sorter: 'commaDigit' },
			        				11: { sorter: 'commaDigit' },
									12: { sorter: 'commaDigit' },
									13: { sorter: 'commaDigit' },
									14: { sorter: 'commaDigit' },
									15: { sorter: 'commaDigit' },
									16: { sorter: 'commaDigit' },
									17: { sorter: 'commaDigit' }
									
			        			}
			        		})
			        .tablesorterPager({container: $("#pagination")});
			        
			        $("#label_videos_datatable").customColumns({ 	defaultHidden: [6,8,9,10,11,12,13,14,15,16,17,18],
																	filterContainer: $("#label_videos_customize")
																});
			        
			        $("#videos_details_datatable")
			        .tablesorter(
			        		{	widthFixed: false,
			        			sortList: [[1,1]],
			        			headers:  { 1: { sorter: 'commaDigit' },
			        						2: { sorter: 'commaDigit' },
			        						3: { sorter: 'commaDigit' },
			        						4: { sorter: 'elapsedTime'},
			        						5: { sorter: 'commaDigit' }
			        					}
			        		})
			        .tablesorterPager({container: $("#pagination")});
			        
			        $("#videos_details_datatable").customColumns({ 	defaultHidden: [7,8,9,10,11],
			        												filterContainer: $("#videos_summary_filters")
					});
			    	
	            } catch(err) {
	            	return false;
	            };
            });
            
    });
    
    //-----------------------------------------------------------------
    
    //$("#locations_countries_datatable").tableDriller();
    
    //call row drill down
    
    /*
	$("#locations_countries_datatable").find("tr").click( function(){
    	url = $(this).find("a").attr("href");
    	if ( url )
    		location.href = url;
    	else
    		return;
    });*/
    
    //-----------------------------------------------------------------
    
    $(function(){
    	var tag = "renderChart";
    	var tokens = [];
    	var splitOn = ":";
    	var swfId = "";
    	var loader = $("#loading_anim");
    	
    	$("a[id^='" + tag + "']").click( function(event){
    		event.preventDefault();
    		tokens = $(this).attr("id").split( splitOn );
    		swfId = tokens[tokens.length - 2];
    		renderAjax(tokens[tokens.length - 1]);
    		setState( $(this) );
    	});
    	
    	renderAjax = function(ajaxUrl){
    		$("#"+swfId).parent().append(loader);
    		$.ajax({
    			type: "GET",
                url: ajaxUrl,
                cache: false,
                beforeSend: function(){
					loader.show();
				},
                success: function(html){
    				findSWF(swfId).load(html);
    				loader.hide();
                }
              });
    	};
    	
    	setState = function( obj ){
    		obj.parent().parent().find("li").removeClass("selected");
    		obj.parent().addClass("selected");
    	};
    	
    });
    
    //--------------------------------------------------------
    // findSWf utility function
    
    var findSWF = function(movieName) 
	{
		if ($.browser == "Microsoft") {
			return window[movieName];
		} else {
			return document[movieName];
		}
	};
	
	//------------------- toggle filters ----------------------
	
	$(function(){
		$(".toggle_filters").find("li").click(function(){
			$(this).toggleClass("selected");
			$(this).parent().parent().next().find(".table-filter").slideToggle(300);
		});
	});
    
    //---------------------------------------------------------
    
    $(function(){
    	
    	$(".collapseNext").click( function(){
    		var delay = 300;
    		$(this).parent().parent().find(".collapsible").slideToggle( delay );
    		$(this).toggleClass("closed");
    	})
    });
    
    //---------------------- height setter -------------------
    
    $(function(){
    	var height = $(".maintainHeight").parent().outerHeight();
    	$(".maintainHeight").css("height", height);
    });
    
    //---------------------------------------------------------
    
    $(function(){
    	var defaultText = "View all";
    	
    	$(".view_all").click( function(){
    		if ($(this).html() == defaultText){
    			$(this).parent().parent().find(".totalrows").click();
    			$(this).html("View less");
    		} else {
    			$(this).parent().parent().find(".defaultPageSize").click();
    			$(this).html(defaultText);
    		}
    	});
    });
    
    /* ============================= yes/no interface ================================= */
    
    $(function(){
    	
    	$(".radio-block").click( function(){
			$(this).find( "input[type='radio']" ).attr( "checked", "checked" );
			$(this).parent().parent().find( "div.selected" ).removeClass("selected");
			$(this).addClass( "selected" );
		});
    	
    	$(".check-block").click( function(){
			//clear all checkboxes
			$(".check-block").find(".checkbox").removeClass( "checked" );
			
			//check the right box & hidden field
			$(this).find(".checkbox").addClass( "checked" );
			$("#hidden").val( $(this).attr("id") );
			
			//append validation classes for js validation
			if ( $(this).attr("id") == "yes" )
			{
				$("[name='email']").addClass("required");
				$("[name='email']").addClass("email");
			}
			else
			{
				$("[name='email']").removeClass("required");
				$("[name='email']").removeClass("email");
			}
			
			//toggle the sub-options
			if ( $(this).hasClass( "networks" ) && $(this).find(".checkbox").hasClass( "checked" ) ){
				$("#networks").slideDown( 200 );
			}
			else {
				$("#networks").slideUp( 200 );
			}
			
			//toggle the sub-options
			if ( $(this).hasClass( "have-player" ) && $(this).find(".checkbox").hasClass( "checked" ) ){
				$("#have-player").slideDown( 200 );
				$("#add-player-button").hide();
				$("#have-player-button").show();
			}
			else {
				$("#have-player").slideUp( 200 );
				$("#have-player-button").hide();
			}
			
			//toggle the sub-options
			if ( $(this).hasClass( "add-player" ) && $(this).find(".checkbox").hasClass( "checked" ) ){
				$("#add-player").slideDown( 200 );
				$("#have-player-button").hide();
				$("#add-player-button").show();
			}
			else {
				$("#add-player").slideUp( 200 );
				$("#add-player-button").hide();
			}
		})
    });
    
    /*======================== tabs =========================== */

	$(function(){
	
		var targetContainer=		$( "#product_info" );
		var navContainer=			$( "#product_nav" );
	
		navContainer.find( "a" ).click( function(){
			if ( navContainer.find( "li > a" ).hasClass( "selected" ) ) {
				navContainer.find( "li > a" ).removeClass( "selected" );
			}
			
			targetContainer.children( "div" ).hide();
			targetContainer.children( "div#" + $(this).attr("id") ).show();
			
			$(this).addClass( "selected" );
		});
	});
	
	$("a.close-button, a.close").click(function(){
		$(this).parent().fadeOut(200);
	});
	
	// ------------------------------ download player actions ------------------- //
	
	$("a#compile_player").click(function(){
		$("a#download").show();
		$(this).parent().parent().hide();
	});

});


//---------------- findSWF utility --------------------

var findSWF = function(movieName) 
{
	if ($.browser == "Microsoft") {
		return window[movieName];
	} else {
		return document[movieName];
	}
};