// global.js for Priority Management
// site-wide functionality
// code by CN

/**********************************************************************
   Page initialization
 *********************************************************************/

function pageInit() {
  if (isDefined(document.getElementsByTagName)) {
    
    // links
    var links = document.getElementsByTagName('a');
    for (var linkIndex = links.length - 1; linkIndex >= 0; linkIndex--) {
      var linkElement = links[linkIndex];
      
      // external links
      if (linkElement.className.indexOf('external') > -1) {
        linkElement.onclick = function() {
          openExternalLink(this.href);
          return false;
        };
      }

      // global site links (from associate sites)
      if (linkElement.className.indexOf('global-site') > -1) {
        linkElement.onclick = function() {
          openGlobalLink(this.href);
          return false;
        };
      }
    }
		
		// language switcher
		var languageSwitcher = document.getElementById('language-switcher');
		if (languageSwitcher) {
			var languageLink = languageSwitcher.getElementsByTagName('a')[0];
			languageLnk.onclick = function() {
				document.cookie = 'lang= ' + this.className;
			};
		}
		
		// extra form validation
		var inputPhone = document.getElementById('input-phone');
		var radioContactPhone = document.getElementById('input-contact-by-telephone');
		if (radioContactPhone) {
			window.addEvent(radioContactPhone, 'click', function() {
				if (this.checked) {
					inputPhone.className = inputPhone.className.split(' ').concat('required').join(' ');
					inputPhone.parentNode.className = 'required';
				}
			});
		}
		var radioContactEmail = document.getElementById('input-contact-by-email');
		if (radioContactEmail) {
			window.addEvent(radioContactEmail, 'click', function() {
				if (this.checked) {
					inputPhone.className.replace(/ required/g, '');
					inputPhone.parentNode.className = '';
				}
			});
		}
		
		// video colorbox window
		if (typeof $ != 'undefined') {
			var colorboxLink = $('.colorbox-video');
			if (colorboxLink.length) {
				$('.colorbox-video').colorbox({ 
						innerHeight: '265',
						html: '<iframe src="http://player.vimeo.com/video/35517055?title=0&amp;byline=0&amp;portrait=0" width="400" height="225" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe><p><a href="http://vimeo.com/29984675">Priority Management Podcast</a> from <a href="http://vimeo.com/franchisedirect">Franchise Direct</a> on <a href="http://vimeo.com">Vimeo</a>.</p>',
						title: '',
						innerWidth: '420'
					}).bind('click', function() {
						if (typeof pageTracker != 'undefined' && typeof pageTracker._trackEvent == 'function') {
							pageTracker._trackEvent('video', 'play');
						}
					});
				if (getParameterByName('ap') == '1') {
					$('.colorbox-video').trigger('click');
					if (typeof pageTracker != 'undefined' && typeof pageTracker._trackEvent == 'function') {
						pageTracker._trackEvent('video', 'autoplay_view');
					}
				}
			}
		}
  }
}


/**********************************************************************
   Popups and New Windows
 *********************************************************************/

// openExternalLink(url) - use to open all off-site links
// ie: <a href="http://url.here" onclick="openExternalLink(this.href); return false;">
function openExternalLink(url) {
  return window.open(url, 'external', 'location,menubar,resizable,scrollbars,status,toolbar');
}

function openGlobalLink(url) {
  if (window.name == 'prioritymanagement') {
    window.name = 'associate';
  }
  return window.open(url, 'prioritymanagement', 'location,menubar,resizable,scrollbars,status,toolbar');
}

/**********************************************************************
   Basic Event Registration
   - has issues see http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html
 *********************************************************************/

function addEvent(object, eventName, functionRef) {
  if (isDefined(window.addEventListener)) {
    object.addEventListener(eventName, functionRef, false);
  }
  else if (isDefined(window.attachEvent)) {
    object.attachEvent('on' + eventName, functionRef);
  }
}

function removeEvent(object, eventName, functionRef){
  if (isDefined(window.addEventListener)) {
    object.removeEventListener(eventName, functionRef, false);
    return true;
  }
  else if (isDefined(window.attachEvent)) {
    var r = object.detachEvent('on' + eventName, functionRef);
    return r;
  }
}


/**********************************************************************
   Utilities
 *********************************************************************/

function getParameterByName(name, url) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( url || window.location.href );
  if( results == null )
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

function isDefined(property) {
  return (typeof property != 'undefined');
}


// call pageInit when document finishes loading
window.addEvent(window, 'load', pageInit);
