/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	
	
	
	easeOutElasticTwo: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-15*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	
	
	
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */
 
function log(obj) {
    if (window.console && window.console.log) window.console.log(obj);
};


/*
 * jQuery Form Field Default Value
 * Examples and documentation at: http://www.unwrongest.com/projects/defaultvalue/
 */
(function($){$.fn.extend({defaultValue:function(str){return this.each(function(){var defaultValue=str||$(this).attr('rel');var defaultType=$(this).attr('type')||null;var cloneId=null;var self=$(this);if(defaultType=='password'){createClone(this);$(this).blur(function(){if($(self).val().length<=0){$('#'+cloneId).show();$(self).hide();}});}
else{$(this).click(function(){if($(this).val()==defaultValue){$(this).val('');$(this).removeClass('empty');}}).keyup(function(){if($(this).val().length>0){setState(this);}}).blur(function(){setState(this);}).focus(function(){if($(this).val()==defaultValue){$(this).val('');$(this).removeClass('empty');}});$.trim($(this).val());setState(this);}
function setState(element){val=$.trim($(element).val());if(val.length<=0||val==defaultValue){$(element).val(defaultValue).addClass('empty');}
else{$(element).removeClass('empty');}}
function createClone(element){cloneId=$(element).attr('id')+'Clone';$("<input id='"+cloneId+"' type='text' />").attr('value',defaultValue).insertAfter(element).show().focus(function(){$(this).hide();$(self).show();setTimeout(function(){$(self).focus();},10);}).addClass($(element).attr('class')+' empty').attr('style',$(element).attr('style'));$(self).hide();}});}});})(jQuery);


//shared framework /AV
var mcf = new mcFramework('wrap', 'av_container');
mcf.mcSetSiteCode('sparks');
mcf.mcSetCallbackFunction(initPage);
mcf.mcSetAVTag(avtag);
mcf.mcSetAVFailTag(avfailtag)
mcf.mcSetCallbackFunction(initPage);
mcf.mcSetContentDisplay('block');


		
function avtag() {
	trackPage('pagename=Sparks AV: AV Home,channel=Sparks AV');
}

function avfailtag() {
	trackPage('pagename=Sparks AV: AV Fail,channel=Sparks AV');
}


//framework callback
function initPage() {

$(document).ready(function(){		
	$("#can-black").delay(500).animate({top: '165px' }, {queue:true, duration:1200, easing:'easeOutElasticTwo'});
	$("#can-red").delay(600).animate({top: '95px' }, {queue:true, duration:1200, easing:'easeOutElasticTwo'});
	$("#can-orange").delay(800).animate({top: '165px' }, {queue:true, duration:1300, easing:'easeOutElasticTwo'});
	$("#can-yellow").delay(1100).animate({top: '40px' }, {queue:true, duration:1500, easing:'easeOutElasticTwo'});
	$("#hd-the-lineup").delay(1100).animate({left: '200px'},  {queue:true, duration:500, easing:'easeOutSine'});
	$("#cta-the-wall").delay(1300).animate({left: '710px'},  {queue:true, duration:500, easing:'easeOutSine'});
	$("#cta-are-you-in").delay(1500).animate({top: '500px'},  {queue:true, duration:500, easing:'easeOutSine'});
	$("#slow-there-champ").delay(0).animate({left: '265px'},  {queue:true, duration:1000, easing:'easeOutBounce'});
	$("#already-downloaded-text").delay(500).animate({top: '380px'},  {queue:true, duration:400, easing:'easeOutSine'});
	$("#already-downloaded-back-to-home").delay(500).animate({top: '470px'},  {queue:true, duration:400, easing:'easeOutSine'});
	$("#one-free-tune").delay(0).animate({left: '220px'},  {queue:true, duration:500, easing:'easeOutSine'});
	$("#download-text").delay(100).animate({left: '200px' }, {queue:true, duration:500, easing:'easeOutSine'});
	$("#download-cans").delay(400).animate({top: '110px' }, {queue:true, duration:1200, easing:'easeOutElasticTwo'});
	$("#download-mp3").delay(0).animate({top: '480px' }, {queue:true, duration:700, easing:'easeOutCirc'});
	$("#download-fb-share").delay(100).animate({top: '480px' }, {queue:true, duration:700, easing:'easeOutCirc'});
	$("#playlist_container").delay(500).animate({top: '300px' }, {queue:true, duration:500, easing:'easeOutSine'});
	$("#get-free-tunes").delay(0).animate({left: '60px' }, {queue:true, duration:250, easing:'easeOutSine'});
	$("#horizontal-can").delay(500).animate({top: '20px' }, {queue:true, duration:400, easing:'easeOutBounce'});
	//trackPage('pagename=Sparks Home: Home,channel=Sparks Home');
	
});

}

$(document).ready(function(){
	
	
	var isIE = !$.support.opacity;

	if (isIE) {
		$("span.popup img").each(function(){
			var src = $(this).attr("src").replace("png","gif");
			$(this).attr("src",src);
		});
	}	
	
	$("#fb-stream").click(function(){
	//	$("#overlay").css({display: "block"});
	//	$("#facebookbox").css({display: "block"});
		return false;
	});
	
	$("#facebookbox").click(function(){
	//	$("#overlay").css({display: "none"});
	//	$("#facebookbox").css({display: "none"});
		return false;
	});
	
	$("#find-zip").defaultValue("ZIP CODE");
	
	$("#find-go").click( function(){
		var zip = $("#find-zip").val();
		var url = $(this).attr("href");
		if (zip != "ZIP CODE") {
			window.location = url + "?zip=" + zip;
			trackPage('pagename=2010 Sparks Home: Locator Button,channel=2010 Sparks AV');
		}
	    return false;
	});
	$("#find-zip").keyup(function(e) {
		if(e.keyCode == 13) {
			var zip = $("#find-zip").val();
			var url = $("#find-go").attr("href");
			if (zip != "") {
				window.location = url + "?zip=" + zip;
				trackPage('pagename=2010 Sparks Home: Locator Button,channel=2010 Sparks AV');
			}
		}
	});
	
    $("span.can").each(initInteractivity);
	/*
	$("span.can").each(function(){
		var distance = 10;
	    var time = 500;
	    var hideDelay = 10;
	    var hideDelayTimer = null;
	    var beingShown = false;
	    var shown = false;
	    var trigger = $(this);
	    var info = $(this).next().css({opacity: 0});

	    $([trigger.get(0), info.get(0)]).mouseover(function () {
            //log( "xxxx" );
	        if (hideDelayTimer) clearTimeout(hideDelayTimer);
	        if (beingShown || shown) {
	            // don't trigger the animation again
                log( "xxxx" );
	            return;
	        } else {
	            // reset position of info box
	            beingShown = true;
	           	info.css({ display: 'block'})
				.animate({ bottom: '+=' + distance + 'px', opacity: 1}, time, 'swing',
					function() {
	                	beingShown = false;
	                	shown = true;
	            	});
				$(this).parent().animate({left: '+=3px'}, {queue:true, duration:50, easing:'easeOutElastic'}).animate({left: '-=3px'}, {queue:true, duration:50, easing:'easeOutElastic'}).animate({left: '+=3px'}, {queue:true, duration:50, easing:'easeOutElastic'}).animate({left: '-=3px'}, {queue:true, duration:50, easing:'easeOutElastic'});
				
	        }
	        return false;
	    }).mouseout(function () {
	        if (hideDelayTimer) clearTimeout(hideDelayTimer);
	        hideDelayTimer = setTimeout(function () {
	            hideDelayTimer = null;
	            info.animate({bottom: '-=' + distance + 'px', opacity: 0 }, time, 'swing', 
					function () {
	                	shown = false;
	                	info.css({display: 'none'});
					});
	        }, hideDelay);

	        return false;
	    });
	});
	*/
	
});

function initInteractivity( )
{
/*    var distance = 10;
    var time = 500;
    var hideDelay = 10;
    var hideDelayTimer = null;
    var beingShown = false;
    var shown = false;
    var trigger = $(this);
    var info = $(this).next().css({opacity: 0});
*/
    //$([trigger.get(0), info.get(0)]).mouseover(initMouseOverAnim).mouseout(initMouseOutAnim);
    //$(trigger.get(0)).mouseover(initMouseOverAnim).mouseout(initMouseOutAnim);
    $(this).parent().mouseover(initMouseOverAnim).mouseout(initMouseOutAnim);
//    log( $(this).parent() );
}


function initMouseOverAnim()
{
   // log( "mouseOver()" );
    $(this).css({ 'z-index':'10' });
    $(this).find(".popup").css({ display: 'block' }).animate({ bottom: '+' + 50 + 'px', opacity: 1}, { duration: 500, easing:'swing', queue:false });
    
   
    $(this).animate({left: '+=3px'}, {queue:true, duration:50, easing:'easeOutElastic'}).animate({left: '-=3px'}, {queue:true, duration:50, easing:'easeOutElastic'});
    
    
};

function initMouseOutAnim()
{
  //  log( "mouseOut()" );
    $(this).css({ 'z-index':'1' });
    $(this).find(".popup").css({ display: 'block' }).animate({ bottom: '-' + 10 + 'px', opacity: 0}, { duration: 500, easing:'swing', queue:false });

};

function mouseOutAnimComplete()
{
  //  log( $(this) + ".mouseOutAnimComplete()" );
    $(this).css({display: 'none'});
};


function fadeOut(iden)
{
    var obj=document.getElementById(iden); 
    obj.style.display='none';
}

function fadeIn(iden)
{
    var obj=document.getElementById(iden); 
    obj.style.display='block';
}

function refreshCaptcha (iden) {
    var randomnumber=Math.floor(Math.random()*1001); // generate a random number to add to image url to prevent caching
    document.images[iden].src = document.images[iden].src + '?rand=' + randomnumber;
}