var DATE_MODIFIED = "12-18-2009";

var BASE_SHARE_URL = "http://discoverbing.com/giftguides";
var BASE_CDN_URL = "http://cdn.discoverbing.com/giftguides/";

var JSON_URLS = {
					
					"forhim":"shop-bing-him-products.json",
					"forher":"shop-bing-her-products.json",
					"forkids":"shop-bing-kids-products.json",
					"byprice":"shop-bing-price-products.json",
					"featured":"shop-bing-featured-products.json",
					"merchants":"shop-bing-merchants.json"	
				
				};


////////////////////
// You shouldn't need to edit below here


var COSMOS_SHARE_PARAMS = "";
var COSMOS_PARAMS = "";
var SPEED = 500;
var HALF_SPEED = 250;
var PER_PAGE = 8;

var JSON_DATA = {};
var currentData = {};

var currentFilters = [];

// navigation/deeplinking
var currentSection = "featured";


// slider page index
var currentPosition = 0;
var slideWidth = 880;
var numberOfSlides = 0;

// used to hack the addthis to close while pageing
var _atw = null;
var addthis_config = 	{
							ui_cobrand: "Bing Cashback",
							services_compact:'facebook,twitter,digg,live',
							ui_click : true
				
						};

var merchantTemplate = '<div class="#SIZE#"><div class="box-image"><a href="#URL#" target="_blank"><img src="#IMAGE#"  /></a></div><div class="b"><a href="#URL#" target="_blank">#TITLE#</a></div></div>';


// UP&nbsp;TO
var productTemplate = '<div class="box-product"><div class="t"><div class="cont"><div class="sub"><h3><a rel="#TITLE#" class="track-product" href="#URL#" target="_blank">#TITLE#</a></h3></div></div><div class="box-star"><p><span>#CASH#</span>cashback</p></div><div class="box-links"><a href="#" class="link-share" id="#ID#" rel="#TITLE#">Share with a Friend</a><a rel="#TITLE#" href="#URL#" target="_blank" class="link-shop-now track-product">SHOP NOW</a></div></div><a class="track-product" rel="#TITLE#" href="#URL#" target="_blank"><img src="#IMAGE#" width="186" height="125"/></div></a></div></div>';

var productTemplateLoader = '<div class="box-product"><div class="t"><div class="cont"><div class="sub"><h3><a rel="#TITLE#" class="track-product" href="#URL#" target="_blank">#TITLE#</a></h3></div></div><div class="box-star"><p><span>#CASH#</span>cashback</p></div><div class="box-links"><a href="#" class="link-share" id="#ID#" rel="#TITLE#">Share with a Friend</a><a rel="#TITLE#" href="#URL#" target="_blank" class="link-shop-now track-product">SHOP NOW</a></div></div><a class="track-product" rel="#TITLE#" href="#URL#" target="_blank"><div id="loader" href="#IMAGE#"></div></a></div></div>';



function trackProductShare( value ){


	//console.log("trackProductShare: " + value );
	
	var s=s_gi(s_account); 
	s.linkTrackVars="prop3,eVar3,events"; 
	s.linkTrackEvents='event8'; 
	s.prop3='btn:Share:' + value; 
	s.eVar3='btn:Share:' + value; 
	s.events='event8'; 
	
	s.pageName="Bing Giftguides Home";
	
	
	s.tl(this,'o','btn:Share:' + value ); 


	// clear out vars
	s.linkTrackVars=""; 
	s.linkTrackEvents=''; 
	s.prop3='';
	s.eVar3='';
	s.events=''; 
	s.pageName="";

	return false;

	
}


function trackFooterShare( value, thePage ){
	var s=s_gi(s_account); 
	s.linkTrackVars="prop3,eVar3,events"; 
	
	s.prop3='exitFT:' + value; 
	s.eVar3='exitFT:' + value; 
	
	switch( value ){
		
		case "twitter":
			s.events='event7'; 
			s.linkTrackEvents='event7'; 
		break;
		
		case "facebook":
			s.events='event9'; 
			s.linkTrackEvents='event9'; 
		break;
	}
	
	
	if( thePage == "home" ){
		s.pageName="Bing Giftguides Home";
	} else {
		s.pageName="Bing Giftguides CB Merchants";
	}
	
	//console.log( s.events + " --- footer share: " + value + " - " + thePage);
	
	s.tl(this,'e','exitFT:' + value ); 
	
	// clear vars
	s.linkTrackVars=''; 
	s.prop3=''; 
	s.eVar3=''; 
	s.events=''; 
	s.linkTrackEvents=''; 
	s.pageName="";
	
}

function trackLearnMore( thePage ){
	//console.log("trackLearnMore");
	
var s=s_gi(s_account); 
	s.linkTrackVars="prop3,eVar3,events"; 
	s.linkTrackEvents='event2'; 
	s.prop3='btn:LearnMore'; 
	s.eVar3='btn:LearnMore'; 
	s.events='event2';
	
	if( thePage == "home" ){
		s.pageName="Bing Giftguides Home";
	} else {
		s.pageName="Bing Giftguides CB Merchants";
	}
	
	s.tl(this,'o','btn:LearnMore');
	
	// clear vars out
	s.linkTrackVars=""; 
	s.linkTrackEvents=''; 
	s.prop3=''; 
	s.eVar3=''; 
	s.events='';

	return false;
	

}
function trackProductShopNow( product ){

	
	//console.log("trackProductShopNow:" + product );

	var s=s_gi(s_account); 
	s.linkTrackVars="prop3,eVar3,events"; 
	s.linkTrackEvents='event5'; 
	s.prop3='btn:ShopNow:' + product; 
	s.eVar3='btn:ShopNow:'  + product; 
	s.events='event5'; 
	s.pageName="Bing Giftguides Home";
	s.tl(this,'o','btn:ShopNow:' + product);	
	
	// clear vars
	s.linkTrackVars=""; 
	s.linkTrackEvents=''; 
	s.prop3=''; 
	s.eVar3=''; 
	s.events=''; 
	s.pageName="";
	
}

function trackMerchantPage( ){
	
	//console.log("trackMerchantPage");
	var s=s_gi(s_account); 
	s.linkTrackVars="prop3,eVar3,events"; 
	s.linkTrackEvents='event3'; 
	s.prop3='btn:MerchantPage'; 
	s.eVar3='btn:MerchantPage'; 
	s.events='event3'; 
	s.pageName="Bing Giftguides CB Merchants";
	s.tl(this,'o','btn:MerchantPage');
	
	// clear out vars
	s.linkTrackVars=""; 
	s.linkTrackEvents=''; 
	s.prop3=''; 
	s.eVar3=''; 
	s.events=''; 
	s.pageName="";
	
	return false;
	

}



function createMerchant( item ){

	var m = merchantTemplate.replace(/#TITLE#/g, item.title );
	m = m.replace(/#CASH#/g, item.cashback + "%" );
	m = m.replace(/#IMAGE#/g, BASE_CDN_URL + item.image ); //+ "?t=" + new Date().getTime() 
	//m = m.replace(/#URL#/g, item.url + "&" + COSMOS_PARAMS );
	
	if( item.size == 'big' ){
		m = m.replace(/#SIZE#/g, "box-product-big");
	} else {
		m = m.replace(/#SIZE#/g, "box-product");
	}
	
	var qIndex = item.url.indexOf( "q=");
	var qVar = '';
	if( qIndex == -1 ){
		m = m.replace(/#URL#/g, item.url + "&" + COSMOS_PARAMS );
	} else {
		qVar = item.url.slice( qIndex+2, qIndex+10 );
		m = m.replace(/#URL#/g, item.url + "&" + COSMOS_PARAMS + qVar );
	}
	
	return m;
	
}

function createProduct( item ){

	var p = '';
	if( canSmartLoadImages() ){
		p = productTemplateLoader.replace(/#TITLE#/g, item.title );
	} else {
		p = productTemplate.replace(/#TITLE#/g, item.title );
	}
	
	p = p.replace(/#CASH#/g, item.cashback + "%" );
	p = p.replace(/#IMAGE#/g, BASE_CDN_URL + item.image );
	p = p.replace(/#ID#/g, item.id );	

	var qIndex = item.url.indexOf( "q=");
	var qVar = '';
	if( qIndex == -1 ){
		p = p.replace(/#URL#/g, item.url + "&" + COSMOS_PARAMS );
	} else {

		qVar = item.url.slice( qIndex+2, qIndex+10 );
		p = p.replace(/#URL#/g, item.url + "&" + COSMOS_PARAMS + qVar );
		
				//console.log("found q= " + qVar );
	}
		
	return p;
	
}



function canSmartLoadImages(){

	var isValid = false;

	// 11.25.2009 update for FF 3.0.3 bug in smart loading (jg)
	// $.browser.mozilla ||
	if( $.browser.safari ||  ($.browser.msie && $.browser.version >= 8 ) ){
		isValid = true;
	}
	
	return isValid;
}

function createLoadingImage( url, loader ){
	var img = new Image();
  
	// wrap our new image in jQuery, then:
	$(img)
		// once the image has loaded, execute this code
		.load(function () {
		// set the image hidden by default    
		$(this).hide();
		
		// with the holding div #loader, apply:
		loader
		// remove the loading class (so no background spinner), 
		.removeClass('loading')
		.addClass('loaded')
		// then insert our image
		.append(this);
		
		// fade our image in to create a nice effect
		$(this).fadeIn();
		})
		
		// if there was an error loading the image, react accordingly
		.error(function () {
			//alert("error loading image");
			// notify the user that the image could not be loaded
		})
		// *finally*, set the src attribute of the new image to our image
		.attr('src', url );
}


function loadJSONData( theURL, onSuccess ){
	$.ajax({
	
	   type: "GET",
	   url: theURL,
	   dataType: "text",
	   
	   success: onSuccess,
	   
	   dataFilter: function(data) {
	   		if(typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function'){
				return JSON.parse(data);
	   		} else {
				return eval('(' + data + ')');
	   		}
	   		
		},
		
		error: function (XMLHttpRequest, textStatus, errorThrown) {
		 	//console.log( "error: XMLHttpRequest: " + XMLHttpRequest + " textStatus: " + textStatus + " errorThrown:" + errorThrown );
		}
		
	 });
}

function shuffleArray( v ){
    for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
    return v;
}

Array.prototype.clean = function(deleteValue) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] == deleteValue) {         
      this.splice(i, 1);
      i--;
    }
  }
  return this;
};

