/* Language Preference --------------------------------------------------------------- */
var i18n = {
    language : 'en',
    en : {
        'Click to expand' : 'Click to expand',
        'Close' : 'Close',
        'Login' : 'Login',
        'Register' : "Register",
        'Save' : "Save",
        'Save to My CNW' : "Save to My CNW",
        'You must agree to the terms of service.': 'You must agree to the terms of service.',
        "Passwords don't match": "Passwords don't match",
        "Must be between 6 and 32 characters long": "Must be between 6 and 32 characters long",
        "This field is required":"This field is required",
        "Username already in use": "Username already in use",
        'Invalid username or password.' : 'Invalid username or password.',
        'Remove' : 'Remove',
        'Remove from My CNW' : "Remove from My CNW",
        'Saved Filter' : 'Saved Filter',
        'Your comment is awaiting moderation.' : 'Your comment is awaiting moderation.',
        'Comments are closed on this story' : 'Comments are closed on this story',
        'Sorry, something went wrong' : 'Sorry, something went wrong',
	'Portfolio Email' : 'Portfolio Email'
    },
    fr : {
        'Click to expand' : 'Cliquez pour agrandir',
        'Close' : 'Fermer',
        'Login' : 'Ouverture de session',
        'Register' : "S'inscrire",
        'Save' : 'Sauvegarder',
        'Save to My CNW' : "Sauvegarder dans Mon CNW",
        'You must agree to the terms of service.': 'Vous devez accepter les modalités d\'utilisation.',
        "Passwords don't match": "Les mots de passe ne correspondent pas",
        "Must be between 6 and 32 characters long": "Doit être compris entre 6 et 32 caractères",
        "This field is required": "Ce champ est obligatoire",
        "Username already in use": "Nom d'utilisateur déjà utilisé",
	'Invalid username or password.' : 'Nom d\'utilisateur ou mot de passe invalide.',
	'Remove' : 'Supprimer',
        'Remove from My CNW' : "Supprimer de Mon CNW",
	'Saved Filter' : 'Filtre enregistré',
	'Your comment is awaiting moderation.' : 'Votre commentaire est en processus de modération',
        'Comments are closed on this story' : 'Les commentaires sont fermés sur cet article',
        'Sorry, something went wrong' : 'Désolé, quelque chose s\'est mal',
	'Portfolio Email' : 'Sentinelle CNW'
    },
    init : function(lang) {
        i18n.language = lang;
    },
    localize : function(str) {
        if (i18n.hasOwnProperty(i18n.language)
            && i18n[i18n.language].hasOwnProperty(str)) {
            return i18n[i18n.language][str];
        } else {
            return str;
        }
    },
    url : function(str) {
        return '/' + i18n.language + '/' + str;
    },
    flipUrl: function(str) {
        if (i18n.language == 'en') {
            return str.replace("/en/", "/fr/")
        } else {
            return str.replace("/fr/", "/en/")
        }
    }
}

/* Main Nav -------------------------------------------------------------------------- */

var mainNav = {
	init : function() {
		$('primary_nav').getElements('li.top_level').addEvents({
			'mouseover': function() {
				$('primary_nav').getChildren().removeClass('active');
				$(this).addClass('active');
			},
			'mouseout': function() {
				$('primary_nav').getChildren().removeClass('active');
			}
		});
	}
}


/* Date options -------------------------------------------------------------------------- */

var dateOptions = {
	init : function(lang) {
 var dateOption = 	$('date-shortcut');
		if(dateOption) { dateOption.addEvents({
			'change': function() {
			 var selected = $('date-shortcut').getSelected();
			 if(selected[0].value=='yesterday') {
			   window.location='/'+lang+'/yesterday';
			 }
			 else if(selected[0].value=='today') {
			   window.location='/'+lang+'/today';
			 }		
			 else {
			   window.location='/'+lang+'/index';
			 }
			}
		}); }
	}
}

/* Releases Since Arrival --------------------------------------------------------------- */

var sinceArrival = {
    timestamp : 0,
    oldNewReleases : 0,

    init : function(ts) {
        sinceArrival.iterator = sinceArrival.ajaxQuery.periodical(120 * 1000); // two minutes
    },
    
    ajaxQuery: function(resetClock) {
        var ajaxSince = new Request.JSON({
            url : i18n.url('since'),
            onSuccess : function(jresponse) {
                if (jresponse.j_count > 0) {
                    $('since_counter').innerHTML = jresponse.j_message;
                    $('since_you_got_here').set('reveal',{duration: 500, mode: 'vertical'});
                    $('since_you_got_here').reveal();
                } else {
                    $('since_you_got_here').dissolve();
                }
            },
            noCache: true
        }).get({
            init: (resetClock ? 1 : 0)
        });
    }
}

/* Live Search -------------------------------------------------------------------------- */
var liveSearch = {
	searchTimer : null,
	minCharacters : 3,
	searchDelay : 200,
	searchOpen : false,
	searchURL : "/search/live", // this will be replaced in init(), though
	firstVal  : "",
	
	init : function(lang) {
        liveSearch.searchURL = i18n.url('search/live');
		$('input_searchbar').addEvent('keyup',function(e){
			if (this.value.length >= liveSearch.minCharacters) {
				//if there are search results open, detect arrow keys through results. 38 = up arrow, 40 = down arrow
				if(liveSearch.searchOpen && (e.code==40 || e.code==38)){
					liveSearch.firstVal == this.value;
					liveSearch.stepThroughResults(e.code);
				}else{
					//run the search
					var q = this.value;
					liveSearch.firstVal = q;
					clearTimeout(liveSearch.searchTimer);
					liveSearch.searchTimer = setTimeout(function(){liveSearch.doSearch(q)}, liveSearch.searchDelay);
				}
			}
			else {
				$('livesearch').setStyle('display', 'none');
				liveSearch.searchOpen = false;
			}
		});
		$('input_searchbar').addEvent('focus',function() {
			if (this.value.length >= 3) {
				liveSearch.doSearch(this.value);
			}
		});
		$('input_searchbar').addEvent('blur',function(){
			setTimeout("$('livesearch').setStyle('display', 'none')", 100);
		});
	},
	
	doSearch : function(q) {
		
		
		$('livesearch').set('load',{
			onSuccess: function(){
				Cufon.refresh();
			
				//enable .active hover states on search item li
				$('livesearch').getElements('li a').addEvents({
				    'mouseenter': function(){
						$('livesearch').getElements('li a').removeClass('active');
						this.getParent().addClass('active');
				    },
				    'mouseleave': function(){
				        this.getParent().removeClass('active');
				    }
				}); 
			}
		})
		var updateSearch = $('livesearch').load(liveSearch.searchURL + "?Ntt=" + q);

		$('livesearch').setStyle('display','block');
		
		
		liveSearch.searchOpen = true;
		
	},
	
	stepThroughResults: function(keyPressed){
		var next = null;
        
        // abandon step-through if there are no results at all
        if (!$('livesearch').getElement('li')) {
            return false;
        }
        
		//check if there is an already active result
		var currentlySelected = $('livesearch').getElement('li.active');
		if(currentlySelected){
			currentlySelected.removeClass('active');
			if(keyPressed==38){
				//if we are at the top and want to go up, start at the bottom
				//this dropdown has 2 sets of search results, so detect what one we are in and act accordingly
				switch(currentlySelected){
					case $('livesearch').getElement('ul.arrowed_list li:first-child'):
						next = $('livesearch').getElement('ul.result_list li:last-child');
						break;
					case $('livesearch').getElement('ul.result_list li:first-child'):
						$('input_searchbar').value = liveSearch.firstVal;
						break;
					default:
						next = currentlySelected.getPrevious();
						break;
				}
			}else{
				//if we are at the bottom and want to go down, start at the top
				switch(currentlySelected){
					case $('livesearch').getElement('ul.arrowed_list li:last-child'):
						next = $('livesearch').getElement('ul.result_list li:first-child');
						break;
					case $('livesearch').getElement('ul.result_list li:last-child'):
						next = $('livesearch').getElement('ul.arrowed_list li:first-child');
						break;
					default:
						next = currentlySelected.getNext();
						break;
				}
			}
			if(next){
                $('input_searchbar').value = next.getElement('a').title;
                next.addClass('active');
            }
		}else{
            var firstLi = $('livesearch').getElements('li')[0];
            if (firstLi) {
                firstLi.addClass('active');
    			$('input_searchbar').value = firstLi.getElement('a').title;
            }
		}
	}
}


var stockSearch = {
	searchTimer : null,
	minCharacters : 3,
	searchDelay : 200,
	searchURL : "_search_dummy_stocks.html",
	
	init : function() {
		$('input_stocks').addEvent('keyup',function(){
			if (this.value.length >= stockSearch.minCharacters) {
				var q = this.value;
				clearTimeout(stockSearch.searchTimer);
				stockSearch.searchTimer = setTimeout(function(){stockSearch.doSearch(q)}, stockSearch.searchDelay);
			}
			else {
				$('stocksearch').setStyle('display', 'none');
			}
		});
		$('input_stocks').addEvent('focus',function() {
			if (this.value.length >= 3) {
				stockSearch.doSearch(this.value);
			}
		});
		$('input_stocks').addEvent('blur',function(){
			setTimeout("$('stocksearch').setStyle('display', 'none')", 100);
		});
	},
	
	doSearch : function(q) {
		$('stocksearch').load(stockSearch.searchURL);
		$('stocksearch').setStyle('display','block');
		Cufon.replace('.din', { fontFamily: 'Din Pro' });
	}
}

/* SIGN IN PANEL ----------------------------------------------------------------*/

var signIn = {
    loginExtras: new Array(),
    logoutExtras: new Array(),
    forceReturn: false,
	initUI : function() {
        $$('a.sign_in_link').removeEvents('click');
		$$('a.sign_in_link').addEvent('click', signIn.toggleLogin);

        $(document.body).getElements('a.forgotten_link').removeEvents('click');
        $(document.body).getElements('a.forgotten_link').addEvents({
            'click': signIn.showForgottenForm
        });

        $(document.body).getElements('a.register_link').set( 'href', i18n.url('user/register?url='+document.location.href) );

        $(document.body).getElements('a.sign_out_link').removeEvents('click');
		$(document.body).getElements('a.sign_out_link').addEvents({
			'click': signIn.attemptLogout
		});
        if($('flip')){

		var path_name = window.location.href;
		var e_match = /events/i.exec(path_name);
		var w_match = /webcasts/i.exec(path_name);

		if(e_match || w_match){
			if(e_match){
				$('flip').set('href', i18n.flipUrl(window.location.pathname + '?type=events'));
			}
			else if(w_match){
				$('flip').set('href', i18n.flipUrl(window.location.pathname + '?type=webcasts'));
			}
		}else{
			$('flip').set('href', i18n.flipUrl(window.location.pathname));
		}
	}
        },

	init: function() {
        var statusBar = new Request.HTML({
		    url: i18n.url('user/status'),
		    update: $$('ul#tertiary_nav')[0],
            onSuccess: signIn.initUI,
            noCache: true
	    });
	    statusBar.get();
	},
    
  toggleLogin: function() {
    if ($('overlay_wrapper').hasClass('active')) {
      $('overlay_wrapper').removeClass('active');
    } else {
      $('overlay_wrapper').addClass('active');
      var getLoginForm = new Request.HTML({
        url: i18n.url('user/form/login'),
        update: $('overlay_wrapper'),
        noCache: true,
        onSuccess: function() {
          Cufon.replace('.din_regular', { fontFamily: 'Din Regular' });
          $('overlay_wrapper').getElements('.btn_login').addEvents({
            'click': signIn.attemptLogin
          });

	  // For WEB-560
	  // Add Cuton.refresh() call to preserve din font styles for the login button
	  Cufon.refresh();

          // IE will not submit when you press enter - form started out hidden
          // so we add keydown events to the input elements
          $('login_form').getElements('input').addEvent('keyup', function(e){
              if (e.key == 'enter') { signIn.attemptLogin(); }
              return false;
          });

          signIn.init();
        }
      }).get();
    }
  },
  
  attemptLogin: function() {
	  var loginRequest = new Request.HTML({
	  	url: i18n.url('login'),
	    onSuccess: signIn.loginSucceeded,
	    onFailure: signIn.loginFailed,
	    useSpinner: true,
        spinnerTarget: $('login_form'),
        noCache: true
	  }).post($('login_form'));
  },
  
  loginSucceeded: function() {
    signIn.init();
    $('overlay_wrapper').removeClass('active');
    if ($('header-clip-link')) { $('header-clip-link').reveal(); }
    if ($('registration_block')) { panelSlider.init(); }
    if ($('filter_tabs')) {
        filterManager.addViews();
    }
    if ($$('div.release')) {
        savedReleases.init();
    }
    savedEvents.init();
    signIn.updateFlash();
    signIn.doLoginExtras();
  },
  
  updateFlash: function() {
    new Request.JSON({
      url: i18n.url('flash'),
      onSuccess: function(j){
        if (j.j_flash_message) {
            var flashbar = new Element('div', {
                'id':    'flash_message',
                'text':  j.j_flash_message,
                'class': 'flash_message'
            });
            if ($('flash_message')) {$('flash_message').destroy();}
            flashbar.inject($('overlay_wrapper'), 'before');
            flashbar.reveal();
        }
      },
      noCache: true
    }).post();
  },

  loginFailed: function() {
	$('login_error').set('html', i18n.localize('Invalid username or password.'));
	var redAlert = new Fx.Reveal('login_error', {
		onShow: function() {$('login_error').highlight('#f99', '#fff')},
		duration: 50
	});
	
	redAlert.reveal();

    $('username').removeEvents('focus');
    $('username').addEvent('focus', function(){
        $('login_error').dissolve();
    });
    
    $('password').removeEvents('focus');
    $('password').addEvent('focus', function(){
        $('login_error').dissolve();
    });
  },
  
  attemptLogout: function() {
  	var logoutRequest = new Request.HTML({
  	   url: i18n.url('logout'),
  	   onSuccess: function() {
           if (signIn.forceReturn) {
               window.location = i18n.url('index');
           } else {
               if ($('registration_block')) { panelSlider.initAnonymous(); }
               if ($('header-clip-link')) { $('header-clip-link').dissolve(); }
               signIn.init();
               signIn.doLogoutExtras();
               savedReleases.initAnonymous();
               savedEvents.initAnonymous();
               filterManager.removeViews();
               filterManager.initAnonymous();
               if ($('flash_message')) { $('flash_message').dissolve(); }
           }
       }
  	});
  	logoutRequest.post({});
  },
  
  showForgottenForm: function() {
    $('overlay_wrapper').addClass('active');
    var getLoginForm = new Request.HTML({
      url: i18n.url('user/form/forgotten_password'),
      update: $('overlay_wrapper'),
      onSuccess: function() {
        Cufon.replace('.din_regular', { fontFamily: 'Din Regular' });
        $('overlay_wrapper').getElements('.btn_forgot').addEvents({
          'click': signIn.attemptForgotPassword
        });
        $('forgotten_form').getElements('input').addEvent('keyup', function(e){
            if (e.key == 'enter') { signIn.attemptForgotPassword(); }
            return false;
        });
        signIn.init();
	// Refresh for din font style applied to submit button on forgotten password form
	Cufon.refresh();	
      }
    }).get();
  },
  
  attemptForgotPassword: function() {
    var forgotRequest = new Request.HTML({
        url: i18n.url('user/forgotten_password'),
        update: $('overlay_wrapper'),
        onSuccess: signIn.init,
        onFailure: signIn.failedForgotPassword,
        useSpinner: true,
        spinnerTarget: $('forgotten_form')
    }).post($('forgotten_form'));
  },
  
  failedForgotPassword: function(xhr) {
      $('overlay_wrapper').set('html', xhr.responseText);
      $$('a.close_overlay_link').addEvent('click', signIn.toggleLogin);
      Cufon.replace('.din_regular', { fontFamily: 'Din Regular' });
  },
  
  doLogoutExtras: function() {
    signIn.logoutExtras.each(function(le){le()});
  },
  
  doLoginExtras: function() {
    signIn.loginExtras.each(function(le){le()});
  }
	
}

/* PANELS ----------------------------------------------------------------*/

var panelSlider = {
    webcastID: null,
	init : function(webcastID) {
        if (webcastID) {
            panelSlider.webcastID = webcastID;
        }
        panelSlider.renewBlock(true);
	},
    initAnonymous : function(webcastID) {
        if (webcastID) {
            panelSlider.webcastID = webcastID;
        }
        panelSlider.renewBlock(false);
    },
    renewBlock: function(userActive) {
        if (panelSlider.webcastID) {
            new Request.HTML({
                url:    i18n.url('webcast/registration_block/') + panelSlider.webcastID,
                noCache: true,
                update: $('registration_notice'),
                onSuccess: function() {
                    $(document.body).getElements('a.btn_green').removeEvents('click');
                    Cufon.replace('.btn_green', { fontFamily: 'Din Pro' });

                    if (userActive) {
                        $(document.body).getElements('a.btn_green').addEvents({
                            'click': function(){
                                new Request.HTML({
                                    url: '/en/user/save/' + panelSlider.webcastID,
                                    noCache: true,
                                    onSuccess: function() {
                                        panelSlider.renewBlock(true);
                                    }
                                }).post();
                            }
                        });
                    } else {
                        $(document.body).getElements('a.btn_green').addEvents({
                            'click': signIn.toggleLogin
                        });
                    }
                    signIn.init();
                }
            }).get();
        }
    }
}

/* SEE MORE ( THE WIRE )----------------------------------*/
var seeMore = {
	isGridView : false,
	
	init: function() {
		$$('a.btn_see_more', 'a.link_see_more').each(function (sMore){
			sMore.seeMoreDiv      = sMore.getParent();
			sMore.moreContentDiv  = sMore.seeMoreDiv.getPrevious();
                        $$('a.btn_see_all').hide();
            sMore.removeEvents('click');
			sMore.addEvents({
			    'click': function(){
					var url = sMore.get('rel');
					var httpRequest = new Request.HTML({
						sMore: sMore,
						url: url,
						append: sMore.moreContentDiv,
						onComplete: function(rt, re, rh, rjs) {
                            releaseHover.init();
                            savedReleases.currentInit();
                            seeMore.updateLink();
                            $$('a.btn_see_more').hide();
			    $$('a.btn_see_all').show();
                            Cufon.refresh();
				    	}
					});
				    httpRequest.get({});
				    sMore.pageToView++;				    
		    	}			
		  });
	})},
    
    updateLink : function() {
        var sMore = $$('a.btn_see_more').shift();
        if (!sMore) { return; } // there's no See More button on the All Today page

	if ($$('a.btn_see_all:visible')) {
            $$('a.btn_see_more').hide();
        }
 
        if ($$('span.finished').length) {
            $$('a.btn_see_more').dissolve();
        }
    }
}

/* SEE MORE ( THE WIRE )----------------------------------*/
var seeMoreEvents = {
	
	init: function(gridView) {
		if ($('event_select_city')) {
			$('event_select_city').addEvents({
				'change' : function(){
					var httpRequest = new Request.HTML({
						url: i18n.url('event/sidebar/' + $('event_select_city').get('value')),
						update: $('event_sidebar_wrapper')
					});
				    httpRequest.get();
				}
			});
		}
		
		
		if ($('more_events') && 0) {
			$('more_events').addEvents({
		    	'click': function(){
					$('more_content_events').set('load', { 
				    	            'onComplete': function(){ 
				                        $('more_content_events').reveal();
				                        $('more_content_action').hide();
				                } 
				    });
		    		$('more_content_events').load(i18n.url('more_events'));
		    	}
		});
		}
	}
}

var seeMoreContacts = {
    init: function() {
        if ($('more_contacts_btn')) {
            $('more_contacts_btn').addEvent('click', function(){
                $('more_contacts').reveal();
                $('more_contacts_btn').dissolve();
            });
        }
    }
}

/* SAVED RELEASES *************************************/

var savedReleases = {
	loadMorePage: 2,
    
    initAnonymous : function() {
        $$('.btn_remove').removeEvents('click');
        $$('.btn_remove').addClass('btn_save');
        $$('.btn_remove').removeClass('btn_remove');

        $$('.btn_save').removeEvents('click');
        $$('.btn_save').addEvent('click', signIn.toggleLogin);
        
        savedReleases.currentInit = savedReleases.initAnonymous;
    },
	
	init : function(){
		//Enable Remove buttons
        $$('a.btn_remove').removeEvents('click');
		$$('a.btn_remove').addEvents({
			'click' : function(e){
				e.stop();
				var releaseID = $(this).get('rel');
				if ($$('.saved_releases').length > 0) {
					savedReleases.removeFromSavedPage($(this), releaseID);
				} else {
					savedReleases.removeRelease($(this), releaseID);
				}
			}
		});
        
        $$('a.btn_save').removeEvents('click');
		$$('a.btn_save').addEvents({
			'click' : function(e){
				e.stop();
				var releaseID = $(this).get('rel');
				savedReleases.addRelease($(this), releaseID);
			}
		});
		//Set up see more button
		if ($$('.see_more_saved')) {
			if (savedReleases.loadMorePage == 2) {
				$$('.see_more_saved').addEvents({
  			    	'click' : function(){
					    savedReleases.seeMore(this);
				    }
			    });
			}
	    }
        
        savedReleases.currentInit = savedReleases.init;
	},
    
	seeMore : function(el){
		// load in more saved releases
		var updatingDiv = el.getParent().getPrevious();
		
		var getMoreSavedReleases = new Request.HTML({
			url : i18n.url(el.rel + el.type + '/' + savedReleases.loadMorePage),
			onRequest: function(){
				//show updating
			},
			onSuccess: function(tree, elements, html){ 
				savedReleases.loadMorePage = savedReleases.loadMorePage + 1;

				//wrap the returned content in a div so we can animate it
				var newContent = new Element('div',{
				'styles': {
				        'display': 'block'
				    }
				});
				newContent.set('slide', {duration: 'short', onComplete: function(){
						//update release count (send true if removed)
				    }});
				newContent.innerHTML = html;
				updatingDiv.adopt(newContent);
			
				// show new content, otherwise destroy the "see more" link
				if (tree.length > 1) {
					newContent.slide('in');
					savedReleases.updateCount(el.type);
					savedReleases.currentInit();
					releaseHover.init();
					// refresh cufon text to preserve "save" and "remove" button fonts
					Cufon.refresh();
				} else {
					el.getParent().dissolve();
				}
			},
			onFailure: function(){
				alert(i18n.localize('Sorry, something went wrong'));
			}
		});
		getMoreSavedReleases.send();
	},
	
	removeFromSavedPage : function(aElem, releaseID){
		// find the <div class="release"> that contains this release
		var currentRelease = $(aElem).getParents()[1];

		var addRel = new Request.HTML({
			url: '/en/user/remove/' + releaseID,
            noCache: true,
			onSuccess: function() {
				//hide the removed release
				currentRelease.set('slide', {duration: 'short', onComplete: function(){
                                var parent_div = currentRelease.getParents()[1];
                                var re = new RegExp('more');
                                if ( re.test(parent_div.id) ) {
                                    parent_div = parent_div.getParent();
                                }
                                currentRelease.destroy();
                                //update release count (send true if removed)
                                savedReleases.updateCount(parent_div.id, true);
			    }});
   			    currentRelease.slide('out');
			}
		});
		addRel.get();
	},

	removeRelease: function(aElem, releaseID){
		var addRel = new Request.HTML({
			url: '/en/user/remove/' + releaseID,
            noCache: true,
			onSuccess: function() {
				// change "Remove" to "Save" on all save buttons for this story
                $$('a.btn_remove[rel=' + aElem.get('rel') + ']').each(function(rb){
                    rb.removeClass('btn_remove');
                    rb.addClass('btn_save');

                    // change event to addRelease() 
                    rb.removeEvents('click');
                    rb.addEvents({
                      'click' : function(e){
                        e.stop();
                        //grab the releases ID to send back to server
                        var releaseID = $(this).get('rel');
                        savedReleases.addRelease(aElem,releaseID);
                      }
                    });

                    if (!(rb.getParent('#event_details') && rb.getParent('#event_details').hasClass('event'))) {
                        rb.set('html', i18n.localize('Save'));
                        rb.set('title', i18n.localize('Save to My CNW'));
                    }
                });
                
                // get proper messaging if we're on an event page
                if (aElem.getParent('#event_details') && aElem.getParent('#event_details').hasClass('event')) {
                    var regStatus = new Request.JSON({
                        url: i18n.url('event/event_registration/' + releaseID),
                        noCache: true,
                        onSuccess: function(j){
                            aElem.set('html', j.j_r.message);
                        }
                    });
                    regStatus.get({});
                }
			
				Cufon.refresh();
			}
		});
		addRel.get();
	},
	
	addRelease: function(aElem, releaseID){
		var addRel = new Request.HTML({
			url: '/en/user/save/' + releaseID,
            noCache: true,
			onSuccess: function() {
                // change "Save" to "Remove" on all save buttons for this story
                $$('a.btn_save[rel=' + aElem.get('rel') + ']').each(function(rb){
                    rb.removeClass('btn_save');
                    rb.addClass('btn_remove');

                    // change event to removeRelease() 
                    rb.removeEvents('click');
                    rb.addEvents({
                      'click' : function(e){
                        e.stop();
                        //grab the releases ID to send back to server
                        var releaseID = $(this).get('rel');
                        savedReleases.removeRelease(aElem,releaseID);
                      }
                    });
                    
                    if (!(rb.getParent('#event_details') && rb.getParent('#event_details').hasClass('event'))) {
                        rb.set('html', i18n.localize('Remove'));
                        rb.set('title', i18n.localize('Remove from My CNW'));
                    }
                });

                // get proper messaging if we're on an event page
                if (aElem.getParent('#event_details') && aElem.getParent('#event_details').hasClass('event')) {
                    var regStatus = new Request.JSON({
                        url: i18n.url('event/event_registration/' + releaseID),
                        noCache: true,
                        onSuccess: function(j){
                            aElem.set('html', j.j_r.message);
                        }
                    });
                    regStatus.get({});
                }
			
				Cufon.refresh();
			}
		});
		addRel.get();
	},
	
	updateCount : function(type, hasBeenRemoved){
		// Expects hasBeenRemoved to have value of true if an element was removed
                var count_span = $(type+'_showing_count');
                if (!count_span) { return; }
		var count = $(type).getElements('.release').length;
		if(hasBeenRemoved){
			$('total_'+type).innerHTML -= 1;
                        count--;
		}
		count_span.innerHTML = count;
	},

    // replace "Save" with "Remove" on saved releases at first login
    restore: function() {
        var getSaved = new Request.JSON({
            url: '/en/user/saved',
            noCache: true,
            onSuccess: function(js) {
                js.j_saved.each(function(item){
                    $$('[rel=' + item + ']').removeClass('btn_save');
                    $$('[rel=' + item + ']').addClass('btn_remove');
                });
                savedReleases.init();
            }
        });
        getSaved.get();
    }
}
// set up initializer to default to non-logged-in version
savedReleases.currentInit = savedReleases.initAnonymous;

/* SAVED WEBCASTS AND ONSITES *************************/

/* SAVED RELEASES *************************************/

var savedEvents = {
    initAnonymous : function(){
        $$('.event a.btn_remove').addClass('btn_save');
        $$('.event a.btn_remove').removeClass('btn_remove');
        
        $$('.event a.btn_save').removeEvents('click');
        $$('.event a.btn_save').addEvent('click', signIn.toggleLogin);

        $$('.event a.btn_save').each(function(i){
            if (i.getParent('#event_details') && i.getParent('#event_details').hasClass('event')) {
                var regStatus = new Request.JSON({
                    url: i18n.url('event/event_registration/' + i.get('rel')),
                    noCache: true,
                    onSuccess: function(j){
                        i.set('html', j.j_r.message);
                    }
                });
                regStatus.get({});
            }
        });
    },

	init : function(){
		//Enable Remove buttons
        $$('.event a.btn_remove').removeEvents('click');
		$$('.event a.btn_remove').addEvent('click', savedEvents.removeRelease);

        $$('.event a.btn_save').each(function(i){
            i.removeEvents('click');
            i.addEvent('click', savedEvents.addRelease);
            
            if (i.getParent('#event_details') && i.getParent('#event_details').hasClass('event')) {
                var regStatus = new Request.JSON({
                    url: i18n.url('event/event_registration/' + i.get('rel')),
                    noCache: true,
                    onSuccess: function(j){
                        i.set('html', j.j_r.message);
                        if (j.j_r.registered) {
                            i.removeClass('btn_save');
                            i.addClass('btn_remove');

                            i.removeEvents('click');
                            i.addEvent('click', savedEvents.removeRelease);
                        } else {
                        }
                    }
                });
                regStatus.get({});
            }
        });
	},
	
	removeRelease: function(e){
       e.stop();
       savedReleases.removeRelease(e.target, e.target.get('rel'));
	},
	
	addRelease: function(e){
       e.stop();
       savedReleases.addRelease(e.target, e.target.get('rel'));
    }
}



/* WEBCASTS *******************************************/

var webcasts = {
	init : function(){
		//Set up table hover actions
		webcasts.setHovers();
	},
	
	setHovers : function(){
		// add hover actions to TR's in the webcasts table
		$('event_list').getElements('tr').each(function(tr){
			tr.addEvents({
				'mouseover' : function(){
					$(this).addClass('hover');
				},
				'mouseout'	: function(){
					$(this).removeClass('hover');
				}
			});	
		});
	}, 
	
	seeMore : function(){
		$$('a.btn_see_more').addEvents({
			'click' : function(e){
				e.stop();
				var updateTable = $$('#event_list tbody');
				var moreWebcasts = new Request.HTML({
					url:'_more_webcasts.html',
					onRequest: function(){
						//show updating
					},
					onSuccess: function(tree, elements, html){ 
						currentHTML = updateTable.get('html');
						updateTable.set('html', currentHTML+html);
						//reset hover actions
						webcasts.setHovers();
						
					},
					onFailure: function(){
						alert('Sorry, something went wrong');
					}
				});
				moreWebcasts.send();
			}
		})
	}
};

var webcastMarkers = {
    markerList: new Array(),
    visible: true,

    init : function() {
        $('marker_icon').addEvent('click', webcastMarkers.toggle);
        $$('ul.markers').getChildren('li')[0].filter(function(i){return !i.hasClass('header')}).each(
            function(i){
                var seekParams = i.getChildren('span')[0].get('rel').split(';');
                i.addEvent('click', webcastMarkers.seek);
            }
        );
    },
    
    toggle: function() {
        webcastMarkers.visible = !webcastMarkers.visible;
        var markers = $$('ul.markers').getChildren('li')[0].filter(function(i){return !i.hasClass('header')});
    
        if (webcastMarkers.visible) {
            markers.each(function(i){i.reveal();});
            $('marker_icon').set('src', '/static/images/buttons/toggle_close.gif');
            $('marker_msg').set('text', "Hide markers");
        } else {
            markers.each(function(i){i.dissolve();});
            $('marker_icon').set('src', '/static/images/buttons/toggle_open.gif');
            $('marker_msg').set('text', "Show markers");
        }
    },
    
    seek: function() {
        var seekParams = this.getChildren('span')[0].get('rel').split(';');
    
        webcastPlayer.seek(parseInt(seekParams[0]));
        webcastSlides.currentSlide = seekParams[1];
        webcastSlides.updateSlide();
    }
};

var webcastPlayer = {
    ie: false,
    html5: false,

    init: function() {
        var mp = $('mediaPlayer');
        if (!mp) { return false; }
        if (mp.getAttribute('classid')) {
            webcastPlayer.ie = true;
        } else if (mp.get('tag') == 'audio') {
            webcastPlayer.html5 = true;
        }
    },
    
    seek: function(timestamp) {
        if (webcastPlayer.ie) {
            document.mediaPlayer.controls.currentPosition = timestamp;
        } else if (webcastPlayer.html5) {
            $('mediaPlayer').currentPosition = timestamp;
        }
    }
};


var webcastSlides = {
    storyID:      0,
    webcastID:    0,
    currentSlide: 1,
    maxSlides:    1,
    slideList:    new Array(),

    init : function(story_id, webcast_id) {
        webcastSlides.storyID   = story_id;
        webcastSlides.webcastID = webcast_id;
        var getSlidelist = new Request.JSON({
            url: '/en/webcast/play/' + story_id + '/' + webcast_id + '/slides',
            onSuccess: function(j) {
                webcastSlides.slideList = j.j_slides;
                if (j.j_slides.length) {
                    $('slide-left').addEvent('click', webcastSlides.previousSlide);
                    $('slide-right').addEvent('click', webcastSlides.nextSlide);
                }
            }
        }).get();
    },
    
    nextSlide : function() {
        if (webcastSlides.currentSlide < webcastSlides.slideList.length) {
            webcastSlides.currentSlide++;
            webcastSlides.updateSlide();
        }
    },
    
    previousSlide : function() {
        if (webcastSlides.currentSlide > 1) {
            webcastSlides.currentSlide--;
            webcastSlides.updateSlide();
        }
    },
    
    updateSlide : function() {
        // if we have no slides, then bail out
        if (webcastSlides.slideList.length == 0) { return false; }
    
        var thisSlide = webcastSlides.slideList[ webcastSlides.currentSlide - 1 ];
        var slideURL = '/en/webcast/play/' + webcastSlides.storyID + '/' + webcastSlides.webcastID + '/slide/' + thisSlide;
        
        var caption = new Request.HTML({
            url: slideURL + '/caption',
            update: $('slide-description'),
            onSuccess: function() {
                $('slide-image').set('src', slideURL);
                $('slide-number').set('text', webcastSlides.currentSlide);
            }
        }).get();
    }
}


/* SCROLLING SIDEBAR ***********************/

var scrollingSidebar = {
	//Make a sidebar box sticky and stay visible while the user scrolls
	
	init : function(stickyBox){
		var sidebar   = $(stickyBox),
		    $window    = $(window),
		    offset     = sidebar.getPosition(),
		    topPadding = 15;

		    $window.addEvent('scroll', function() {
		        if ($window.getScroll().y > offset.y) {
					var newHeight = $window.getScroll().y - offset.y + topPadding;
					sidebar.tween('margin-top', newHeight);

		        } else {
		            sidebar.tween('margin-top', 0);
		        }
		    });
	} 
}

/* SIDEBAR SEE MORE EVENTS **************************/

var sideBarMore = {
	releaseRequestCount : 3, // how many new releases to request

	init : function(){
/*		if ($('todays_events').getElement('div.see_more a')) {
		$('todays_events').getElement('div.see_more a').addEvent('click',function(e){
			e.stop();
			var updateDiv = $('todays_events').getElement('div.load_more');
			var moreEvents = new Request.HTML({
				data : '{return : '+sideBarMore.releaseRequestCount+'}', 
				url:'_more_events.html',
				onRequest: function(){
					//show updating
				},
				onSuccess: function(tree, elements, html){ 
					updateDiv.innerHTML += html;
				},
				onFailure: function(){
					alert('Sorry, something went wrong');
				}
			});
			moreEvents.send();
		});
		}
*/
	}
}


/*******************************************************************************************************
	
	THE WIRE FILTERS
	
********************************************************************************************************/


var filterManager = {
	savedTabs : null,
	addFilterTimer : null,
	addFilterDelay : 500,
	currTab : $('all_releases'),
	tabCount : 0,
	isGridView : false,
	maxTabCount : 4,
	tabCharacterLength: 10,
    saveFilterAction: 'user/filter/set',
    oldViewName: null,
    
    initAnonymous : function(gridView) {
        if ($('add_filter_link')) {
            $('add_filter_link').removeEvents('click');
            $('add_filter_link').addEvent('click', signIn.toggleLogin);
        }
        if ($('save_view_link')) {
            $('save_view_link').removeEvents('click');
            $('save_view_link').addEvent('click', signIn.toggleLogin);
        }
        if ($('create_view_link')) {
            $('create_view_link').removeEvents('click');
            $('create_view_link').addEvent('click', signIn.toggleLogin);
        }
        if ($$('.remove_view_link')) {
            $$('.remove_view_link').removeEvents('click');
            $$('.remove_view_link').addEvent('click', signIn.toggleLogin);
        }

        if ($('since_update_link')) {
            $('since_update_link').removeEvents('click');
            $('since_update_link').addEvent('click', function(){
                filterManager.updateResults();
                sinceArrival.ajaxQuery(true);
            });
        }
    },
	
	init : function(gridView) {
		filterManager.isGridView = gridView;
        if ($$('.remove_view_link')) {
            $$('.remove_view_link').removeEvents('click');
            $$('.remove_view_link').addEvent('click', filterManager.deleteView);
        }
		
        if ($('save_view_link')) {
            $('save_view_link').removeEvents('click');
            $('save_view_link').addEvent('click', filterManager.focusViewSave);
        }
        
        if ($('create_view_link')) {
            $('create_view_link').removeEvents('click');
            $('create_view_link').addEvent('click', filterManager.focusViewCreate);
        }

        $$('li.view_tab').filter(
            function(i){return i.hasClass('active')}
        ).addEvent('click', filterManager.focusViewRename);
        
        if ($('add_filter_link')) {
            $('add_filter_link').removeEvents('click');
		    $('add_filter_link').addEvent('click', filterManager.addTab);
        }
       
        if ($('all_releases')) {
            $('all_releases').removeEvents('click');
    		$('all_releases').addEvent('click', filterManager.seeAll);
        }

        if ($('since_update_link')) {
            $('since_update_link').removeEvents('click');
            $('since_update_link').addEvent('click', function(){
                filterManager.updateResults();
                sinceArrival.ajaxQuery(true);
            });
        }
	},
	
	addTab : function(firstRun, tabName) {
		if (filterManager.tabCount < filterManager.maxTabCount) {
            var newTabID = 0;
            var getTabID = new Request.JSON({
                url: '/en/user/filter/init',
                onSuccess: function(js){
                  filterManager.addTabPerformUI(false, js.j_id);
                }
            }).post();
        }
    },
    
    loadSavedTabs : function() {
        var getTabs = new Request.JSON({
            url: '/en/user/filter/list',
            onSuccess: function(js) {
                js.j_tabs.each(function(i){
                    filterManager.addTabPerformUI(true, i.id, i.name);
                });
            }
        }).get();
    },
    
    removeTabsAtLogout: function() {
        $$('.filter_tab').each(function(i){
            filterManager.removeTabPerformUI(i);
        });
    },
    
    addViews: function() {
        var getViews = new Request.JSON({
            url: i18n.url('user/view/list'),
            onSuccess: function(j) {
                j.j_tabs.each(function(tj){
                    if (!tj.name) { tj.name = i18n.localize('Saved Filter'); }
                
                    var tab=new Element('li', {'class': 'view_tab'});
                    var tTitleA=new Element('a', {href: i18n.url('search/' + tj.id + '/view')});
                    var tTitleSpan=new Element('span', {'class': 'tab_inner', text: tj.name});
                    var tRemoveSpan=new Element('span', {'class': 'remove_view_link', rel: i18n.url('search/' + tj.id + '/delete')});

                    tTitleA.adopt(tTitleSpan);
                    tab.adopt(tTitleA);
                    tab.adopt(tRemoveSpan);
                    
                    tab.inject($('filter_tabs').getLast(), 'before');
                });
                filterManager.init();
            }
        });
        getViews.get();
    },
    
    removeViews: function() {
        // get rid of tabs at top of search page when the user logs out
        $$('.view_tab').destroy();
        
        if ($('filter_tabs')) {
            if (!$('filter_tabs').getLast().hasClass('active')) {
                $('filter_tabs').getLast().addClass('active');

                if ($$("form[name='refine_search']")[0]) {
                    if ($$("form[name='refine_search']")[0].getElement('input').getAttribute('value')) {
                        var saveA = new Element('a', {
                            id: 'save_view_link',
                            title: i18n.localize('Save'),
                            rel: i18n.url('search/save?Ntt='+$$("input[name='Ntt']")[1].getAttribute('value'))
                        });
                        var saveSpan = new Element('span', { text: i18n.localize('Save') });

                        saveA.adopt(saveSpan);
                        $('filter_tabs').getLast().getFirst().getFirst().adopt(saveA);
                    }
                }
            }
        }
        
        filterManager.initAnonymous();
    },
    
    focusViewRename: function(e) {
        var activeTab = $$('li.view_tab').filter(
            function(i){return i.hasClass('active')}
        )[0];

        var tabInput = new Element('input', {'class': 'rename_view'});
        filterManager.oldViewName = activeTab.getElement('span.view_name').get('text');
        
        tabInput.addEvents({
            'change': filterManager.updateViewName,
            'blur'  : filterManager.blurViewRename
        });
        
        tabInput.replaces(activeTab.getElement('span.view_name'));
        tabInput.setAttribute('value', filterManager.oldViewName);
        tabInput.focus();
    },

    // TODO: for some reason, Chrome throws a NOT_FOUND_ERR within MooTools
    // if we call this from updateViewName.
    blurViewRename: function() {
        var tabSpan = new Element('span', {'class': 'view_name'});
        var activeTab = $$('li.view_tab').filter(
            function(i){return i.hasClass('active')}
        )[0];

        tabSpan.set('text', filterManager.oldViewName);
        tabSpan.replaces(activeTab.getElement('input'));
    },
    
    focusViewSave: function(e) {
        e.stopPropagation();
        var activeTab = $$('li.view_tab').filter(
            function(i){return i.hasClass('active')}
        )[0];
        
        var activeTabId = activeTab.get('id').substring(5);
        var jSave = new Request.JSON({
            url: i18n.url('user/view/' + activeTabId + '/save'),
            onSuccess: filterManager.reloadTab
        });
        jSave.post(filterManager.endecaVars(this.get('rel')));
    },
    
    focusViewCreate: function(e) {
        e.stopPropagation();
        filterManager.focusAfterReload = true;
        var jSave = new Request.JSON({
            url: i18n.url('user/view/create'),
            onSuccess: filterManager.reloadTab
        });
        jSave.post(filterManager.endecaVars(this.get('rel')));
    },
    
    deleteView: function(e) {
        e.stopPropagation();
        var deletedTabId = e.target.getParent('li').get('id').substring(5);
        var currentTabId = $$('li.view_tab').filter(
           function(i){return i.hasClass('active')}
        )[0].get('id').substring(5);
        
        var jDel = new Request.JSON({
            url: i18n.url('user/view/' + deletedTabId + '/delete'),
            onSuccess: function(j){
                if (j.j_id == currentTabId) {
                    window.location = i18n.url('search');
                } else {
                    $('view_' + j.j_id).destroy();
                }
            }
        });
        jDel.post();
    },
    
    reloadTab: function(j) {
        window.location = i18n.url('search/' + j.j_id + '/view');
    },
    
    endecaVars: function(qstring) {
        var qvars = qstring.substring(1).parseQueryString();
        var endecaRelevant = "o|N|Ntt|Ntk|Ns|Nso|Nf".split('|');
        var evars = new Object;
        
        $each(qvars,function(v,k){
            if (endecaRelevant.some(function(i){return i == k})) {
                evars[k]=v;
            }
        });
        
        return evars;
    },
    
    updateViewName: function() {
        var activeTab = $$('li.view_tab').filter(
            function(i){return i.hasClass('active')}
        )[0];
        var newName = activeTab.getElements('input')[0].value;

        if (newName != filterManager.oldViewName) {
            var viewId = activeTab.id.substr(5);
            var renamer = new Request.JSON({
                url: '/en/user/view/' + viewId + '/rename',
                async: false,
                onSuccess: function() {
                    filterManager.oldViewName = newName;
                    filterManager.blurViewRename();
                }
            });
            renamer.post({
                name: newName
            });
        }
    },
	
	updateResults : function() {
document.location.reload( true );
		/*$('loading-container').addClass('loading');
		var filterurl = null;
		if(filterManager.isGridView){
			filterurl = i18n.url('grid/more/1')
		}else{
			filterurl = i18n.url('more')
		}
		var tabRequest = new Request.HTML({
			url: filterurl,
            update: $('releases'),
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				releaseHover.init();
                if ($('userActive')) {
                    savedReleases.init();
                } else {
                    savedReleases.initAnonymous();
                }
                seeMore.updateLink();
				Cufon.replace('.din', { fontFamily: 'Din Pro' });
				$('loading-container').removeClass('loading');
			}
		})
		
		tabRequest.get.delay(1000, tabRequest, {
            'r_ts': new Date().getTime()
        });*/
	},
	
	seeAll : function() {
		filterManager.closeEditor();
		filterManager.switchTab($('all_releases'));
        $('edit_filters').setStyle('display', 'none');
	}
}

/* Release Hover */

var releaseHover = {
	init: function() {
		$(document.body).getElements('div.release').addEvents({
		    'mouseenter': function(){

		        this.addClass('active');

		        if(this.getParent().hasClass('grid')) {
		       		var titleHeight = this.getElement('h2').getStyle('height');
		       		this.getElement('div.deets_inner').set('tween', {duration: 100});
		       		this.getElement('div.deets_inner').tween('height', 200 - titleHeight.toFloat());
		        }

		    },
		    'mouseleave': function(){
		        this.removeClass('active');
		        
		        if(this.getParent().hasClass('grid')) {
		       		this.getElement('div.deets_inner').tween('height', 0);
		        }
		    }
		});
	}
}

var eventHover = {
	init: function() {
		$(document.body).getElements('div.event').addEvents({
		    'mouseenter': function(){
		        this.addClass('active');
		    },
		    'mouseleave': function(){
		        this.removeClass('active');
		    }
		});
                $(document.body).getElements('div.webcast').addEvents({
                    'mouseenter': function(){
                        this.addClass('active');
                    },
                    'mouseleave': function(){
                        this.removeClass('active');
                    }
                });
        }
}

/* Filter Search Results */

var searchFilter = {
	init: function() {
		$(document.body).getElements('a.filter_results_link').addEvents({
		    'click': function(){
		        if ($('filter_search_results').hasClass('active')) {

					$('filter_search_results').dissolve();
					
					$('filter_search_results').removeClass('active');
					
					return false;
				}
					
				$('filter_search_results').reveal();
				
				$('filter_search_results').addClass('active');
		    }
		}),
		//add active class to already applied fitlers
		$(document.body).getElements('.filter_options input:checked').getParent().getParent().addClass('active');
		
		$(document.body).getElements('.filter_options input').addEvents({
			'click': function(e) {
                                e.stop();
				this.getParent().getParent().toggleClass('active');				
			}
		});
	}
}

var seeMoreOrgs = {
	init: function() {
		if ($('expand_org_hidden_results')) {
			$('expand_org_hidden_results').addEvents({
				'click': function(){
					$$('.org_hidden_result').reveal();
					$('expand_org_hidden_results').dissolve();
				}
			})
		}
	}
}

/* Register Company Guess */

var companyGuess = {
	init: function() {
		$(document.body).getElement('#email_input').addEvents({
			'blur': function() {
				var companyValue = $('email_input').get('value');
				
				$('company_input').set('value', 'Canada Newswire');
			}
		});
	}
}

 

// RELEASE OVERVIEW ******************************************************************************

function releaseNav() {
	
	if (!sectionCount) {
		sectionCount = $$('.jump_nav_section').length;
	}
	
	var windowScroll = window.getSize().scroll.y + $('release_overview').getPosition().y;
	//var contactPosition = $('contact_information').getPosition().y;
	
	// loop through each passenger to see if we've scrolled to that position
	for(i = 1; i <= sectionCount; i++) {		
		var sectionPosition = $('section_' + i).getPosition().y;	
		var nextSectionPosition = (i < sectionCount) ? $('section_' + (i + 1)).getPosition().y : 1000000000000;
		
		if (windowScroll >= sectionPosition && windowScroll < nextSectionPosition) {
			$('release_overview').getElements('li').removeClass('active');
			$('side_section_' + i).addClass('active');
			break;
		}
		/*
		else if (windowScroll >= contactPosition) {
			$('jump_to').getElements('li').removeClass('active');
			$('side_contact_info').addClass('active');
			break;
		}*/
	
	}
}

// MAP CONTROLLER -----------------------------------------------------------------------------------------
// NOTE: map pins are rendered with proper letters using the Google Chart API. For more info visit: 
// http://groups.google.com/group/google-chart-api/web/chart-types-for-map-pins?pli=1

var mapController = {
  markers : {},
	map	: null,
	
  /* Method : init
     Parameters:  latCoor - the latitude to center the map on
          longCoor - the longitude to center the map on
          zoomLevel - the initial zoom level (0 = furthest away)
		  containter - where the map will be placed.
  */
  init : function(latCoor, longCoor, zoomLevel, container) {
		var mySize = container.getSize();
		
		var myLatlng = new google.maps.LatLng(latCoor, longCoor);
		var myOptions = {
		  zoom: zoomLevel,
		  center: myLatlng,
		  fitBounds: mySize,
		  mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		
		mapController.map = new google.maps.Map(container, myOptions);

  },
  
  /* Method : placeMarker
     Parameters:  latCoor - the latitude to place the map marker on
          longCoor - the longitude to place the map marker on
          letter - the letter to apply to the map marker
          contentID - the id of the DOM node to use as content for the markers info window
  */
  placeMarker : function(latCoor, longCoor, letter, contentID) {
    
	iconImage = "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld="+ letter +"|ff776b|000000";
		shadowOrigin = new google.maps.Point(1,1);
	iconShadow =  new google.maps.MarkerImage(
		"http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
		new google.maps.Size(33	, 42),
		      new google.maps.Point(0,0),
		      new google.maps.Point(13, 35));

		
	//iconShadow = "http://chart.apis.google.com/chart?chst=d_map_pin_shadow";
    var point = new google.maps.LatLng(latCoor, longCoor);
	var marker = new google.maps.Marker({
	      position: point,
	      map: mapController.map,
	      icon: iconImage,
		  shadow: iconShadow
	  });

    
    // bind the info window content to the marker. Window will be displayed on click
    if (contentID) {
    	var infowindow = new google.maps.InfoWindow({
    		content: $(contentID)
    	});
    	google.maps.event.addListener(marker, 'click', function() {
    		infowindow.open(mapController.map, marker);
    	});
    }
    
    //mapController.map.addOverlay(marker);
    
    // store reference to the marker
    mapController.markers[letter] = marker;

  },
  
  openWindow : function(letter) {
    GEvent.trigger(mapController.markers[letter],'click') ;
  }
}


// Event Webcast page --------------------------------------------------------------------------------------------

window.onload= function(){
// get the current URL
 var url = window.location.toString();
 //get the parameters
 url.match(/\?(.+)$/);
 var params = RegExp.$1;
 // split up the query string and store in an
 // associative array
 var params = params.split("&");
 var queryStringList = {};

 for(var i=0;i<params.length;i++)
 {
     var tmp = params[i].split("=");
     queryStringList[tmp[0]] = unescape(tmp[1]);
 }

for(var i in queryStringList){
if(document.getElementById('view_event_webcast')){
	if( queryStringList[i].match(/events/)){
        //alert(i+" = "+queryStringList[i]+"<br/>");
        	filter_event_webcast('event_only');
		document.getElementById('view_event_webcast').value = "event_only"; 
        }
	else if( queryStringList[i].match(/webcasts/)){
        	filter_event_webcast('webcast_only');
		document.getElementById('view_event_webcast').value = "webcast_only";
        }
	else{
		filter_event_webcast('all_event_webcast');
		document.getElementById('view_event_webcast').value = "all_event_webcast";
	}
}}
}

function filter_event_webcast(chosen_asset){
	if (document.getElementById('event_map')){
		if(chosen_asset == 'all_event_webcast'){		
			$('event_map').show();
			$$('.event_weekly .events').show();
			$$('div.event').show();
			$$('.event_weekly .webcasts').show();
			$$('div.webcast').show();
		}	
	
		if(chosen_asset == 'event_only'){	
			$('event_map').show();
			$$('.event_weekly .events').show();
			$$('div.event').show();		
			$$('.event_weekly .webcasts').hide();
			$$('div.webcast').hide();

			$$('#events div.events').show();
			$$('#events div.webcasts').hide();
		}	
		
		if(chosen_asset == 'webcast_only'){
			$('event_map').hide();
			$$('.event_weekly .events').hide();
			$$('div.event').hide();
			$$('.event_weekly .webcasts').show();
			$$('div.webcast').show();

			$$('#events div.events').hide();
			$$('#events div.webcasts').show();
		}
	}
}

function reload_page(chosenAsset)
{
	var path_name = window.location.pathname;

	if(chosenAsset == 'all_event_webcast'){
	window.location.href = path_name;
	}
	else if(chosenAsset == 'event_only'){
        window.location.href = path_name + "?type=events";
        } 
	else{
        window.location.href = path_name + "?type=webcasts";
        }
}


// Organization Stock: Market Performance
var lastDiv = "";

function showDiv(divName) {
	
	var stockForm = document.getElementById("stockSelect");

	var selectStock = document.getElementById(divName);

	selectStock.className = "visibleDiv_stock";

	for (var i=0; i<stockForm.length; i++){

		if (stockForm.options[i].value != selectStock.id){
			document.getElementById(stockForm.options[i].value).className = "hiddenDiv_stock";
		}
	}
} 

var commentSystem = {
    init: function() {
        if ($('comment_form_submit')) {
            $('comment_form_submit').removeEvent('click');
            $('comment_form_submit').addEvent('click', function(){
                commentSystem.postComment();
                return false;
            });
        }
    },
    postComment: function() {
        var postComment = new Request.JSON({
            url:       $('comment_form').get('action'),
            onSuccess: commentSystem.postSuccess
        });
        postComment.post({
            'comment': $('comment_form').getElement('textarea').get('value'),
            '_token' : $('comment_form').getElement('input[@type=hidden]').get('value'),
            'submit' : 'Submit'
        });
    },
    postSuccess: function(j) {
        if (j.j_comment_id) {
            var successMsg = new Element('p', {
                'text': i18n.localize('Your comment is awaiting moderation.')
            });
            successMsg.replaces($('comment_form'));
        } else if (j.j_nocomment) {
            var failureMsg = new Element('p', {
                'text': i18n.localize('Comments are closed on this story.')
            });
            if ($('comment_form')) {
                failureMsg.replaces($('comment_form'));
            }
        }
    }
}


/* wide tables blowup */
var tableBlowup = {
    init: function () {
        var tables = new Array();
        tables = $$('#ReleaseContent table');
        for (i = 0, len = tables.length; i < len; i++) {
            if (tableBlowup.tooBig(tables[i])) {
                tableBlowup.addBlowup(tables[i]);
            }
        }
    },

    addBlowup: function(e) {
        e.setProperty('title', i18n.localize('Click to expand'));
        e.addEvent('click', function() {
            var targetDiv = $('overlay_wrapper');
            targetDiv.addClass('active');
            targetDiv.setProperty('html', '<div id="table_blowup"><a href="javascript:void(0);" title="Close" class="close_overlay_link"> </a><table>'+this.innerHTML+'</table></div>');
            // ie8 doesn't like this part, not sure why
            //var newTableSize = $$('#table_blowup table').getSize();
            //$('table_blowup').setStyle('width', newTableSize.x+'px');
            $$('a.close_overlay_link').removeEvents('click');
            $$('a.close_overlay_link').addEvent('click', signIn.toggleLogin);
        });
    },

    tooBig: function (e) {
        var sz = e.getSize();
        var maxSize = e.getParent().getSize();
        var maxWidth = maxSize.x - 30;
        if ( sz.x > maxWidth ) { //table is too wide
            var scaling = maxWidth / sz.x;
            var currentPts = parseInt(e.getStyle('font-size'));
            var newSize = Math.floor(scaling * currentPts - 0.5) + 'px';
            e.setStyle('font-size', newSize);
            return true;
        }
        return false;
    }
}

var vAlign = {
    init: function(elements) {
        elements.each(function(e){
            e.addEvent('load', function(){vAlign.recenter(e)});
            if (e.complete) {
                e.fireEvent('load');
            }
        });
    },

    recenter: function(e){
        var child = e.getSize();
        var parent = e.getParent().getSize();
        var topMargin = Math.floor((parent.y - child.y)/2)
        if(topMargin > 1 && topMargin < 110) {
            e.setStyle('margin-top', topMargin+'px');
        }
    }
}

