var ContactController =
{
  initialize:function()
  {
    //this.recordAnalaticsSource(); // we can't do this here, because google analytics hasn't run yet (so the cookie value will be old). we run on form submission now. to debug, you can run ContactController.recordAnalaticsSource() in the console to see the values which will be set to the hidden fields
  },
  
  recordAnalaticsSource:function()
  {
    var utmz = this.readCookie('__utmz');
    if (utmz == null)
      return;
    
    var data = this.parseAnalyticsCookie(utmz);
    
    $('analytics_campaign_field').setValue(data['utmccn']);
    $('analytics_source_field').setValue(data['utmcsr']);
    $('analytics_medium_field').setValue(data['utmcmd']);
    $('analytics_keyword_field').setValue(data['utmctr']);
  },
  
  parseAnalyticsCookie:function(cookieValue)
  {
    // trim number at the beginning (version number?)
    cookieValue = cookieValue.replace(/^[0-9\.]+/, '');
    
    // extract data from value
    var data = {};
    var keyValuePairs = cookieValue.split('|');
    $(keyValuePairs).each(function (keyValuePair) {
      keyValuePair = keyValuePair.split('=');
      data[unescape(keyValuePair[0])] = unescape(keyValuePair[1]);
    });
    
    return data;
  },
  
  createCookie:function(name,value,days)
  {
  	if (days) {
  		var date = new Date();
  		date.setTime(date.getTime()+(days*24*60*60*1000));
  		var expires = "; expires="+date.toGMTString();
  	}
  	else var expires = "";
  	document.cookie = name+"="+value+expires+"; path=/";
  },
  
  readCookie:function(name)
  {
  	var nameEQ = name + "=";
  	var ca = document.cookie.split(';');
  	for(var i=0;i < ca.length;i++) {
  		var c = ca[i];
  		while (c.charAt(0)==' ') c = c.substring(1,c.length);
  		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  	}
  	return null;
  },
  
  eraseCookie:function(name)
  {
  	this.createCookie(name,"",-1);
  }
}

ContactController.initialize();
