// Utility to calculate distance between to points
// Global variables g_Lat and g_Lng must be already set
function calcDist(id, coords) {
	if (coords == '|') return;
	
	var Rm = 3961; // mean radius of the earth (miles) at 39 degrees from the equator
	var lat = deg2rad(g_Lat);
	var lng = deg2rad(g_Lng);

	var addr = coords.split("|");
	var latX = deg2rad(addr[0]);
	var lngY = deg2rad(addr[1]);
	
	dlat = latX - lat;
	dlng = lngY - lng;
	var a  = Math.pow(Math.sin(dlat/2),2) + Math.cos(lat) * Math.cos(latX) * Math.pow(Math.sin(dlng/2),2);
	var c  = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); // great circle distance in radians
	var dm = c * Rm; // great circle distance in miles
	dm = Math.round(dm * 10) / 10;
	
	$("#" + id).html(dm + " miles away");
	$("#" + id).parent().parent().attr({value: dm});
}

// Convert degrees to radians
function deg2rad(deg) {
	rad = deg * Math.PI/180; // radians = degrees * pi/180
	return rad;
}

// Called from auto suggest links in geo search
function vp_LoadAutoGeoSearch(url, geo, radius) {
	$.cookie("findingmethod","Geo Search", { path: "/" });
	$.cookie('geo',geo, { path: "/" });
	$.cookie("radius",g_radius, { path: "/" });
	if (radius) {
		$.cookie("findingmethod","Geo Radius Search", { path: "/" });
		$.cookie("radius",radius, { path: "/" });
	}

	window.document.location = url;
}

/* 
 * Load a new page in the current window
 * @argument page The page name
 */ 
function vp_loadNewPage(page) {
	window.document.location = g_context + '/show/' + page;
}

/*
 * Loading Message
 * @argument msg The optional loading message - default is 'loading...'
 */
function vp_loader(msg) {
    var message = '<img src="/8/d/img/loader-geo.gif" /><h1 style="font-size:24px">loading</h1>';
	if (msg) {message = '<img src="/8/d/img/loader-geo.gif" /><h1 style="font-size:24px">' +msg+ '</h1>';}
		
	$.blockUI({
		message: message,
		css: { 
			border: 'none', 
			padding: '15px', 
			backgroundColor: '#000', 
			'-webkit-border-radius': '10px', 
			'-moz-border-radius': '10px',
			'border-radius': '10px', 
			opacity: .5, 
			color: '#fff' 
		}
	});
	
	$(window).unload(function() {
		$.unblockUI();
	});
}

/*
 * Restore buttons if ajax errors
 * @argument btn The button
 */
function vp_restoreBtn() {
    $(g_lastBtn).html(g_lastBtnText).removeClass('loading').attr({disabled:''});
}

/* 
 * Tooltips
 */
function vp_tooltip(obj, state, type) {
	if ($(obj).attr('title') != '') {
		g_content = $(obj).attr('title');
	}
	var tip = '<div class="tooltip-' +type+ '"><p class="e_highlight">' +g_content+ '</p></div>';
	
	if (state == 'on') {
		if (type == 1) {
			$(obj).parent().css({position:'relative'});
		}
		$(obj).parent().append(tip);
		$(obj).attr({title:''});
	}
	else {
		$(obj).next().remove();
		$(obj).attr('title', g_content);
	}
}
function vp_tooltip2(obj, state) {
	if ($(obj).attr('title') != '') {
		g_content = $(obj).attr('title');
	}
	var tip = '<div class="tooltip-3"><p class="e_highlight">' +g_content+ '</p></div>';
	
	if (state == 'on') {
		$(obj).parent().append(tip);
		$(obj).attr({title:''});
	}
	else {
		$(".tooltip-3").remove();
		$(obj).attr('title', g_content);
	}
}
/* 
 * One click member opt-in
 */
 function vp_oneClickOptIn(userid) {
	var ocoURL = document.location.protocol + '//' + document.location.host + g_context + '/svc/member/optInMember';
	
	$.ajax({
		url: ocoURL,
		dataType: "json",
		data: "userId=" + userid,
		cache: false,
		success: function(data) {
			// Swap button for message
    		$(".oco").hide();
			$(".optinMsg").fadeIn('slow');
			$(".ocm").css('margin-top','6px');
		}
	});
}


function vp_setSelectedAddress(id, slugId, addressId) {
	var distance = $("#dist" + id).parent().parent().attr('value');
	var URL = g_context + '/svc/vpsession/setSelectedAddress';
	$.ajax({
		url: URL,
		dataType: "json",
		data: "slugId=" + slugId + "&addressId=" + addressId + "&distance=" + distance,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				$("#sAddr").val(addressId);
				// Update distance in UI
				$("#slugDist" + slugId).html(distance + ' miles away').addClass('nonorder');
				
				// Update reviews in UI
				if ($("#cl" +slugId)) {
					$("#slugRev" + slugId).html($("#rev" + id).html());
					// Init the review hovers
					$("#cl" +slugId+ " .rating-stars2 ul li a").hover(function() {
						rat_text = '<div class="r-layer"><p class="r_offer">Rate this Company:</p><p class="r_highlight">' +$(this).attr('alt')+ '</p></div>';
						$(this).parent().append(rat_text);
						$(this).parent().parent().css('z-index','1000');
					},
					function() {
						$(this).next().remove();
					});
					$("#cl" +slugId+ " span.rating a").hover(function() {
						rat_text = '<div class="s-layer">' +$(this).attr('alt')+ '</div>';
						$(this).parent().parent().append(rat_text);
					},
					function() {
						$(this).parent().parent().children('div.s-layer').remove();
					});
				}
			}
		}
	});
}

function vp_confirmSelectedAddress(id, slugId, addressId) {
	var distance = $("#dist" + id).parent().parent().attr('value');
	var URL = g_context + '/svc/vpsession/setSelectedAddress';
	$.ajax({
		url: URL,
		dataType: "json",
		data: "slugId=" + slugId + "&addressId=" + addressId + "&distance=" + distance,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			if (chkStatus == "ok") {
				$("#sAddr").val(addressId);
				vp_checkoutRedirect(); 
			}
		},
	error:function(xhr, status, error) {
	     alert(status +' '+ error +' '+xhr);
		} /* call disconnect function */
	});
}


/* 
 * Add a slug to the print list
 * @argument slugId The id of the slug to add
 * @argument zoneMapId The zone map Id for logging
 */
function vp_addToPrintList(slugId, zoneMapId) {
	var URL = g_context + '/svc/vpsession/addToPL';
	$.ajax({
		url: URL,
		dataType: "json",
		data: "slugId=" + slugId,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				// Update PL count div
				$(".jq-PL").html(content);
				$("#print-coupon").removeClass('disabled').attr({title: 'View your print list'});
				// Toggle link
				$("#printList" + slugId).html("View Print List").attr({href:"javascript:vp_showPrintList()"});
				
				vp_logPrintListAdd(g_omniPage, zoneMapId, slugId);
			}
		}
	});
	
	if (g_ajaxErrors) {
		g_ajaxErrors = false; // Reset for subsequent calls
		return false;
	}
}

function vp_removeFromPrintList(slugId, zoneMapId) {
	var URL = g_context + '/svc/vpsession/removeFromPL';
	
	$.ajax({
		url: URL,
		dataType: "json",
		data: "slugId=" + slugId,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				// Update PL count div
				$(".jq-PL").html(content);
				if (content == 0) {
					$("#print-coupon").addClass('disabled').attr({title: 'Your print list is empty'});
					$(".btn-print-coupons").addClass('ui-state-disabled, btn-print-coupons-off');
				}
				// Remove slug from DOM
				$("#pl" + slugId).remove();
				// Change header for print-count header link
				$(".couponholder h2").html(content + " Coupons in Print List");
				// Toggle link
				$("#printList" + slugId).html("Add to Print List").attr({href:"javascript:vp_addToPrintList(" + slugId + "," + zoneMapId + ")"});
				
				vp_omniLogClick("scRemove", "Remove", "'c;" + slugId + "'");
			}
		}
	});
}

function vp_showPrintList() {
	var checkForZero = $(".jq-PL").html();
	if (checkForZero == 0) {
		return;
	}
	var URL = g_context + '/svc/vpsession/showPL';
	$.ajax({
		url: URL,
		dataType: "json",
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				// Update PL count div
				modal_print(content);
				if (checkForZero == 1) {
					$(".btn-print-coupons span.ui-button-text").html('Print Coupon');
				}
			}
		}
	});
}

function vp_printPrintList(pageName) {
	var plSize = $(".jq-PL").html();
	if (plSize < 1) return;
	var contentZoneId;
    
	contentZoneId = vp_getContentZoneId(pageName);
    
	var URL = g_context + '/svc/vpsession/printPL';
	g_ajaxErrors = false;
	
	$.ajax({
		url: URL,
		dataType: "json",
		async: false,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				// Update print div with print list HTML
				vp_print('Coupon', content);
			}
			else {
				g_ajaxErrors = true;
			}
		}
	});
	
	if (g_ajaxErrors) {
		g_ajaxErrors = false; // Reset for subsequent calls
		return false;
	}
	
	// Get and display print confirmation page
	var URL = g_context + '/svc/display/getPage';
	$.ajax({
		url: URL,
		dataType: "json",
		data: "page=printConf&plSize=" + plSize + "&contentZoneId=" + contentZoneId,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				// Display print confirmation page
				modal_message(content,620,true);
			}
		}
	});

}

function vp_printNow(slugId, zoneMapId, page, nextSlugId, partner) {
	if (!nextSlugId) nextSlugId = 0;
	
	if (!partner) {
		// Get print div
		var URL = g_context + '/svc/vpsession/getPrint';
		g_ajaxErrors = false;
		
		$.ajax({
			url: URL,
			dataType: "json",
			data: "slugId=" + slugId,
			async: false,
			cache: false,
			success: function(data) {
				var chkStatus = data.status;
				var content = data.content;
				
				if (chkStatus == "ok") {
					// Update print div with print list HTML
					vp_print('Coupon', content);
				}
				else {
					g_ajaxErrors = true;
				}
			}
		});
		
		if (g_ajaxErrors) {
			g_ajaxErrors = false; // Reset for subsequent calls
			return false;
		}
	}
	
	// Return the updated coupon slug (tailor for print limit)
	URL = g_context + '/svc/vpsession/printNow';
	$.ajax({
		url: URL,
		dataType: "json",
		data: "slugId=" + slugId + "&page=" + page + "&nextSlugId=" + nextSlugId,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				if (content != null) {
					if (page == "bpp") {
		                $("#bpp" + slugId).replaceWith(content); 
					}

					else {
						$("#cl" + slugId).replaceWith(content);
					}
					// Remove from print list (if in there)
					vp_removeFromPrintList(slugId);
				}
			}
		}
	});
	
	// Log content print
    vp_logContentPrint('N', page, zoneMapId, slugId);

}

function vp_printMailer() {
	// Update print div with print mailer HTML
	var printContent = $("#printAd").html();
	vp_print('Mailer', printContent);
	
	// Get and display print confirmation page
	var URL = g_context + '/svc/display/getPage';
	$.ajax({
		url: URL,
		dataType: "json",
		data: "page=printConf&mailer=true",
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			
			if (chkStatus == "ok") {
				// Display print confirmation page
				modal_message(content,620);
			}
		}
	});
}

/* 
 * Update the print div with the print HTML (callback function)
 * @argument type The print product type
 * @argument html (optional) The printable div HTML
 * @argument id (optional) The id of the printable content
 */
function vp_print(type, html, id) {
	// Setup print div and print
	if (html != null && html != '') {
		$("#print" +type).html(html);
	}
	else {
		$("#print" +type).html($('#' + id).html());
	}
	if (type == 'Deal') {
		// Adjust voucher for printing
		$("#printDeal .couponimage").addClass('dealerimg').removeClass('couponimage');
		$("#printDeal .vpdealsLogo").attr({src:'/8/d/img/valpakdeals-logo.png'});
		//force legal terms to expand
		$('#printDeal .voucher .fp_closed div.legtrm_txt').css('display','block');
	}
	
	// Set the print stylesheet
	$("#printCSS").attr({href: '/8/d/css/print' +type+ '.css'});
    
    // Print
	setTimeout(function() {
    	window.print();
	},500);
	
}

/* 
 * Print a data partner - for now just RedPlum
 * @argument slugId The id of the slug to print
 * @argument zoneMapId The zone map id for logging
 * @argument dataPartnerId The data partner id
 * @argument printLoc The print location
 * @argument partner4Url The RedPlum partner url
 * @argument partner6Url The Coupons.com partner url (constructed in the JSP)
 */
function vp_printDataPartner(slugId, zoneMapId, dataPartnerId, printLoc, partner4Url, partner6Url) {
    // Default to Coupons.com url
	var dpUrl = partner6Url;
    
    vp_printNow(slugId, zoneMapId, printLoc, '', true);
	
	// Set RedPlum url
	if (dataPartnerId == 4) {dpUrl = "/utility/redirectDataPartner.jsp?url=" + partner4Url;}
	
	// Log content print
	//vp_logContentPrint('N', printLoc, zoneMapId, slugId); - TODO
	
	// Load data partner url
	if (dataPartnerId == 4) {
		vp_openWindow(dpUrl, 'dpWin', 780, 480);
	}
	else {
		window.document.location = dpUrl;
	}
}

$(function() {
	$("#tabs").tabs({});
	
	$("#location").click(function() {
		$("#tabs").tabs("select", 1);
	});
	
	$("#interest").click(function() {
		$("#tabs").tabs("select", 3);
	});
	
	$("#alert").click(function() {
		$("#tabs").tabs("select", 4);
	});
});

$(document).ready(function() {	
// Global wide Ajax error handling
$.ajaxSetup({
	error: function(x, e) {
		if (x.status==0) {
			if ($.browser.mozilla) {
				console.log("Ajax error with a status of 0 occured");
			}
			//alert('You are offline \n Please Check Your Network');
		} else if (x.status==404) {
			if ($.browser.mozilla) {
				console.log('Requested URL not found');
			}
		} else if (x.status==500) {
			// Applications error
			var jsonObj = eval('(' + x.responseText + ')');
			var errPage = jsonObj.errorPage;
			if ((errPage !== null) && (errPage !== "")) {
				if (typeof errPage == 'string') {
					// Display the error page specified in the exception
					vp_loadNewPage(errPage);
				}
				else {
					// Unknown page specified go to generic error page
					vp_loadNewPage("genericError");
				}
			}
			else {
				if ($.browser.mozilla) {
					console.log('Internal Server Error: ' + jsonObj.message);
				}
			}
		} else if (x.status==510) {
			// Database Exception
			var jsonObj = eval('(' + x.responseText + ')');
			var errPage = jsonObj.errorPage;
			if ((errPage !== null) && (errPage !== "")) {
				if (typeof errPage == 'string') {
					// Display the error page specified in the exception
					vp_loadNewPage(errPage);
				}
				else {
					// Unknown page specified go to generic error page
					vp_loadNewPage("databaseError");
				}
			}
			else {
				if ($.browser.mozilla) {
					console.log('Database Error: ' + jsonObj.message);
				}
			}
		} else if (x.status==511) {
			// Session timeout
			var jsonObj = eval('(' + x.responseText + ')');
			//alert('Session Timeout: ' + jsonObj.message);
			var errPage = jsonObj.errorPage;
			if ((errPage !== null) && (errPage !== "")) {
				if (typeof errPage == 'string') {
					// Display the error page specified in the exception
					vp_loadNewPage(errPage);
				}
				else {
					// Unknown page specified go to generic error page
					vp_loadNewPage("sessionTimeout");
				}
			}
			else {
				if ($.browser.mozilla) {
					console.log('Session Timeout Error: ' + jsonObj.message);
				}
			}
		} else if (e=='parsererror') {
			if ($.browser.mozilla) {
				console.log('Error \n Parsing JSON Request failed');
			}
		} else if (e=='timeout') {
			if ($.browser.mozilla) {
				console.log('Request Timeout');
			}
		} else {
			if ($.browser.mozilla) {
				console.log('Unknown Error \n' + x.responseText);
			}
		}
		// Always set back to false in the calling function after evaluations
		g_ajaxErrors = true;
		
		// Restore button state
		vp_restoreBtn();
		
		// Hide overlay
		$(".ui-widget-overlay").hide();
	}
});

// Slugs init
//slugInit();

// Loader message
$(".geo").click(function() {
	vp_loader();
});

$('a:not([href*="javascript:"],[href*="mailto:"],[href*="#"],[target*="_blank"])').click(function() {
	vp_loader();
});

// Button loader
$(":submit").click(function() {
	vp_loaderBtn(this);
});

// Image preloader
var cache = [];
// Arguments are image paths relative to the current page
$.preLoadImages = function() {
	var args_len = arguments.length;
	for (var i = args_len; i--;) {
		var cacheImage = document.createElement('img');
		cacheImage.src = arguments[i];
		cache.push(cacheImage);
	}
}
// Images to preload
$.preLoadImages("/8/d/img/loader-geo.gif", "/8/d/img/loader-geo.gif");

// Init hover intents
$("li.allcoupons").hoverIntent(config2);
$(".locselect").hoverIntent(config3);

// Selectbox init
$("select").selectBox();

// Input styler
$("input:text, textarea, .selectBox-label").focus(function() {
	$(this).css({color:'#042742', fontStyle:'normal'});
});
$("input:text, textarea, .selectBox-label").blur(function() {
	$(this).css({color:'#596773', fontStyle:'italic'});
});

// Init exit survey
$(document).mouseleave(function(e) {
	if (e.pageY <= 5 && $('.blockUI').length == 0 && $('#contestcontent').length == 0 && !g_isCanada) {
		var survey = $.cookie('survey');
		if (!survey) {
			modal_survey('http://s-3a282f-i.sgizmo.com/s3/i-833048-230066/');
		}
	}
});

});

// Slug init functions (call in a doc ready)
function slugInit(listing) {
	if (listing) {var obj = '#' +listing+ ' ';}
	
	// Init hover intents
	$(obj + ".blue").hoverIntent(config);
	$(obj + ".green").hoverIntent(config1);
	
	$(obj + ".bluehover").hover(function() {
		$(this).children(".print-opt").show();
		$(this).children("a:first").addClass("printhover");
		$(this).css({"z-index":"1000"});
	},
	function() {
		$(this).children(".print-opt").hide();
		$(this).children("a:first").removeClass("printhover");
		$(this).css({"z-index":""});
	})
	
	$(obj + ".greenhover").hover(function() {
		$(this).children(".deal-opt").show();
		$(this).children("a:first").addClass("dealhover");
		$(this).parent().parent().css({"z-index":"1000"});
	},
	function() {
		$(this).children(".deal-opt").hide();
		$(this).children("a:first").removeClass("dealhover");
		$(this).parent().parent().css({"z-index":""});
	})
	
	// Commented out until functionality is built in phase 2
	/*$(obj + "div.social_share ul li:nth-child(4)").hover(function() {
		$(this).children(".plusoptions").show()
		$(this).addClass("pover");
		$(this).parent().parent().parent().css({"z-index":"100000"});
	},
	function() {
		$(this).children(".plusoptions").hide();
		$(this).removeClass("pover");
		$(this).parent().parent().parent().css({"z-index":""});
	})
	
	$(obj + "div.social_share ul li:nth-child(4)").hover(function() {
		$(this).children(".plusoptions2").show()
		$(this).addClass("pover2");
		$(this).parent().parent().parent().css({"z-index":"100000"});
	},
	function() {
		$(this).children(".plusoptions2").hide();
		$(this).removeClass("pover2");
		$(this).parent().parent().parent().css({"z-index":""});
	})*/
	
	$(obj + 'a[rel^="tooltip3"]').hover(function() {
		vp_tooltip2(this,'on');
	},
	function() {
		vp_tooltip2(this,'off');
	});
	
	$(obj + ".rating-stars2 ul li a").hover(function() {
		rat_text = '<div class="r-layer"><p class="r_offer">Rate this Company:</p><p class="r_highlight">' +$(this).attr('alt')+ '</p></div>';
		$(this).parent().append(rat_text);
		$(this).parent().parent().css('z-index','1000');
	},
	function() {
		$(this).next().remove();
	});
	
	$(obj + "span.rating a").hover(function() {
		rat_text = '<div class="s-layer">' +$(this).attr('alt')+ '</div>';
		$(this).parent().parent().append(rat_text);
	},
	function() {
		$(this).parent().parent().children('div.s-layer').remove();
	});
	
	$(obj + ", " +obj+ ".savingblock .content").hover(function() {
		$(this).addClass('dover');
	},
	function() {
		$(this).removeClass('dover');
	});
	
	$(obj + "ul li.deallist").hover(function() {
		$(this).addClass('cover');
	},
	function() {
		$(this).removeClass('cover');
	});
	
	// Reset location radios
	$(obj + ".selDistRow").find('input:radio').attr({checked:'checked'});
	$(obj + ".calcDistRow").find('input:radio').attr({checked:''});
}

var config = {
	over: showLayer,	// function = onMouseOver callback (REQUIRED)    
	timeout: 300,		// number = milliseconds delay before onMouseOut    
	out: hideLayer		// function = onMouseOut callback (REQUIRED)    
};

var config1 = {
	over: showLayer1,	// function = onMouseOver callback (REQUIRED)    
	timeout: 300,		// number = milliseconds delay before onMouseOut    
	out: hideLayer1		// function = onMouseOut callback (REQUIRED)    
};

var config2 = {
	interval: 300,  	// Decreased the delay for the overhover (was 500 from UC)
	over: showLayer2,	// function = onMouseOver callback (REQUIRED)    
	timeout: 500,		// number = milliseconds delay before onMouseOut    
	out: hideLayer2		// function = onMouseOut callback (REQUIRED)    
};

var config3 = {
     over: showLayer3,	// function = onMouseOver callback (REQUIRED)    
     timeout: 500,		// number = milliseconds delay before onMouseOut    
     out: hideLayer3	// function = onMouseOut callback (REQUIRED)    
};


function showLayer() {
	// Calculate distance for each address
	$.each($(this).parents("li").find("div.preview_pop .calcDist"), function() {
		eval($(this).attr("href"));
	});
	// Sort by distance
	$(this).parents("li").find("div.preview_pop .calcDistRow").qsort({digits: true});
	// Show address flyout
	$(this).parents("li").find("div.preview_pop").show();
	$(".allcoupons").addClass('noIndex');
}
function hideLayer() {
	$(this).parents("li").find("div.preview_pop").hide();
	$(".allcoupons").removeClass('noIndex');
}

function showLayer1() {
	// Calculate distance for each address
	$.each($(this).parents("li").find("div.preview_pop2 .calcDist"), function() {
		eval($(this).attr("href"));
	});
	// Sort by distance
	$(this).parents("li").find("div.preview_pop2 .calcDistRow").qsort({digits: true});
	// Show address flyout
	$(this).parents("li").find("div.preview_pop2").show();
	$(".allcoupons").addClass('noIndex');
}
function hideLayer1() {
	$(this).parents("li").find("div.preview_pop2").hide();
	$(".allcoupons").removeClass('noIndex');
}

function showLayer2() {
	$(this).children("div:first").show();
	$(this).children("a:first").addClass("mover");
}
function hideLayer2() {
	$(this).children("div:first").hide(); 
	$(this).children("a:first").removeClass("mover");
}

function showLayer3() {
	$(this).css({"width":$(this).children().children("span.loc").width()+10});
	$(this).children("div.locdropdown").show();
	$(this).addClass("locactive");
	$(this).css({"z-index":"1000"});
}
function hideLayer3() {
	$(this).css({"width":$(this).children().children("span.loc").width()+20});
	$(this).children("div.locdropdown").hide(); 
	$(this).removeClass("locactive");
	$(this).css({"z-index":""});
}


function checkAll() {
	$('input:checkbox[name="checkboxtree_demo"]').each(function(index) { 
		$(this).attr({"checked":"checked"});
		$(this).next().addClass("checked");
	});
}

function checkNone(){
	$('input:checkbox[name="checkboxtree_demo"]').each(function(index) { 
		$(this).attr({"checked":""});
		$(this).next().removeClass("checked");
	});
}

function checkSavingType() {
	$('input:checkbox[name="saving_type"]').each(function(index) { 
		$(this).attr({"checked":"checked"});
		$(this).next().addClass("checked");
	});
}

function uncheckSavingType() {
	$('input:checkbox[name="saving_type"]').each(function(index) { 
		$(this).attr({"checked":""});
		$(this).next().removeClass("checked");
	});
}

/*function checkOptin() {
	$('input:checkbox[name="emailOptIn"], input:checkbox[name="mobileOptIn"]').each(function(index) { 
		$(this).attr({"checked":"checked"});
		$(this).next().addClass("checked");
	});
}

function uncheckOptin() {
	$('input:checkbox[name="emailOptIn"], input:checkbox[name="mobileOptIn"]').each(function(index) { 
		$(this).attr({"checked":""});
		$(this).next().removeClass("checked");
	});
}*/

// Function to set contest height
function setContestHeight() {
	var contestHeight = 0;
 	if ($(".contestleft").height() > $(".contestright").height()) {
 		contestHeight = $(".contestleft").height() + 10;
	}
	else {
		contestHeight = $(".contestright").height() + 10;
	}
    $("#contestcontent").css({height: contestHeight});
}

/*
CSS Browser Selector v0.4.0 (Nov 02, 2010)
Rafael Lima (http://rafael.adm.br)
http://rafael.adm.br/css_browser_selector
License: http://creativecommons.org/licenses/by/2.5/
Contributors: http://rafael.adm.br/css_browser_selector#contributors
*/
function css_browser_selector(u){var ua=u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1},g='gecko',w='webkit',s='safari',o='opera',m='mobile',h=document.documentElement,b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3.6')?g+' ff3 ff3_6':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('blackberry')?m+' blackberry':is('android')?m+' android':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?m+' j2me':is('iphone')?m+' iphone':is('ipod')?m+' ipod':is('ipad')?m+' ipad':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win'+(is('windows nt 6.0')?' vista':''):is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);

function vp_redeemPromo(promoCode, userId) {
	var kwUrl = '/coupons/svc/validate/promoCode';
	// clear all fields
	$('#promoCode').val("");
	$('#promoValue').val("");
	$('.promoDisc').html("");
	$('.promoError').html("");
	//update UI
	var orignTotal = $("#orginPurchaseTotal").val();
	$("span.totalprice").html("$" + orignTotal);
	//reset the hidden field id="purchaseTotal" to original value
	$('#purchaseTotal').val(orignTotal);
	
	$.ajax({
		url: kwUrl,
		dataType: "json",
		data: "promoCode=" + promoCode + "&userId=" + userId,
		async: false,
		cache: false,
		success: function(data) {
			var chkStatus = data.status;
			var content = data.content;
			if (chkStatus == "ok") {
				// set promo value
				var promoValue = data.content;
				//push discount value to DOM and update total
				var currentTotal = $("span.totalprice").html().replace('$','');
				currentTotal = parseInt(currentTotal);
				var discountedTotal = currentTotal - promoValue;
					$("span.totalprice").html("$" + discountedTotal);
				//update the hidden field id="purchaseTotal" value="${pageForm.purchaseTotal}" 
					$('#purchaseTotal').val(discountedTotal);
				//bind pageForm.promoCode to hidden field
					$('#promoCode').val(promoCode);
				//bind promoValue to hidden Field
					$('#promoValue').val(promoValue);
					computeTotal();
			}
			else {
				//status = error append content to error span
				$('.promoError').html(content);
				//need to replace total with original total!
			}
		}
	});
}
