function clearText(thefield){
	if (thefield.defaultValue==thefield.value)
		thefield.value = "";
} 

$(document).ready(function() {
	$('.mainsearch').keypress(function(event) {
		if (event.which == 13) {
			Search();
		}
	});
});

function Search() {
	var term = $('.mainsearch').val();
	
	if (term != '' && term != null && term != undefined) {
		//location.href = '/search/?q=' + term;
		location.href = '/shop/?q=' + term;
	}
}

$(function () {
  var tabContainers = $('div.tabs > div');
  tabContainers.hide().filter(':first').show();
  $('div.tabs ul.tabNavigation a').click(function () {
	tabContainers.hide();
	tabContainers.filter(this.hash).show();
	$('div.tabs ul.tabNavigation a').removeClass('selected');
	$(this).addClass('selected');
	return false;
  }).filter(':first').click();
});

$(document).ready(function($) {
  $('a[rel*=facebox]').facebox();  
  addLoadEvent(activateTabs);
})

function addLoadEvent(func){
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
	window.onload = func;
  }
  else {
	window.onload = function(){
	  oldonload();
	  func();
	}
  }
}

var Tags = {
  tagContainer: '#tags',
  hiddenTags: '#ctl00_ContentPlaceHolder1_Tags',
  listOfTags: '#listOfTags',
  selectedTags: '#selectedTags',

  init: function(){
	Tags.getAllTags();
	Tags.getCategoryTags();
	Tags.saveCategoryTags();
	Tags.deleteCategoryTag();
  },

  getAllTags: function(){
	$.ajax({
	  type: "POST",
	  url: "/services/shop.asmx/GetTags",
	  data: "{}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result) {
		if(result.length > 0){
		  var allTags = [];
		  for(var i=0; i<result.length; i++){
			allTags.push(result[i].Tag);
		  }

		  $(Tags.selectedTags).autocomplete(allTags, {
			width: 170,
			maxItemsToShow: 4,
			highlight: false,
			multiple: true,
			multipleSeparator: " ",
			scroll: true,
			scrollHeight: 150
		  });
		}
	  },
	  error: function(xhr, status, error) {
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },
	
  getCategoryTags: function(){
	var list = $(Tags.hiddenTags).val();
	if(list.length > 0){
	  list = list.split(';');
	  var lis = '';
	  for(var i=0; i<list.length; i++){
		lis = lis + Tags.buildTag(list[i]);
	  }
	  $(Tags.listOfTags).append(lis);
	}
  },

  saveCategoryTags: function(){
	$(Tags.selectedTag).keypress(function(event){
	  if(event.keyCode == 13){
		var newTag = $.trim($(Tags.selectedTags).val());
		$(Tags.listOfTags).append(Tags.buildTag(newTag));
		$(Tags.selectedTags).val('');
		Tags.updateHiddenTags();
		return false;
	  }
	})
  },

  updateHiddenTags: function(){
	$(Tags.hiddenTags).val('');
	$('li', Tags.listOfTags).each(function(){
	  $(Tags.hiddenTags).val($(Tags.hiddenTags).val() + $(this).text() + ';');
	})
  },

  deleteCategoryTag: function(){
	$(Tags.listOfTags).click(function(event){
	  var target = $(event.target);
	  if($(target).attr('nodeName').toLowerCase() == 'img'){
		var parent = $(target).parents('li');
		if(parent.length > 0){
		  $(parent).remove();
		  Tags.updateHiddenTags();
		}
	  }
	  return false;
	})
  },

  buildTag: function(title){
	return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
  }
}

var Subcategories = {
  hiddenCategories: '#ctl00_ContentPlaceHolder1_ProductTags',
	
  init: function(){
	var initialSubs = [];
	if($(Subcategories.hiddenCategories).val().length > 0){
	  initialSubs = $(Subcategories.hiddenCategories).val().split(';');
	}

	var val = $('#ctl00_ContentPlaceHolder1_Categorylist option:selected').attr('value');
			   
	Subcategories.getSubsByCategory(val, initialSubs);
	$('.Categorylist').change(function(){
	  var category = $(this).val();
	  Subcategories.getSubsByCategory(category);
	})
		
	Subcategories.saveSubcategories();
  },

  getSubsByCategory: function(category, initialSubs){
	$.ajax({
	  type: "POST",
	  url: "/services/shop.asmx/GetTagsByCategoryKey",
	  data: "{'categoryKey': " + category + "}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result) {
		//if(result.length > 0){
		Subcategories.createSubcategories(result, initialSubs);
	  //}
	  },
	  error: function(xhr, status, error) {
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },

  createSubcategories: function(subcategories, initialSubs){
	var html = '';
	for(var i=0; i<subcategories.length; i++){
	  var className = subcategories[i].Tag.replace(/'/, '-');
	  className = className.replace(/ /, '-');
	  html += '<li><input type="checkbox" class="' + className + '" value="' + subcategories[i].Tag + '" /> ' + subcategories[i].Tag + '</li>';
	}
	$('#subcategory').html('').append(html);

	if(initialSubs && initialSubs.length > 0){
	  for(var i=0; i<initialSubs.length; i++){
		var className = initialSubs[i].replace(/'/, '-');
		className = className.replace(/ /, '-');
		$('.' + className, '#subcategory').attr('checked', 'checked');
	  }
	}
  },

  saveSubcategories: function(){
	$('input:checkbox', '#subcategory').live('click', function(){
	  Subcategories.updateHiddenCategories();
	})
  },

  updateHiddenCategories: function(){
	$(Subcategories.hiddenCategories).val('')
	$('input:checkbox', '#subcategory').each(function(){
	  if($(this).attr('checked')){
		$(Subcategories.hiddenCategories).val($(Subcategories.hiddenCategories).val() + $(this).val() + ';');
	  }
	})
  }
}

var loginUtility = {
  name: '',
  partnumber: '',
  slug: '',
  qtyBox: '',
  price: '',
  
  init: function(){
	loginUtility.getStatus();
	loginUtility.getCart();
  },
	
  getCart: function(){
	$.ajax({
	  type: "POST",
	  url: "/services/members.asmx/GetCart",
	  data: "{}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  
	  success: function(result){                
			  loginUtility.populateCart(result);
	  },
	  error: function(xhr, status, error){
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },
	
  populateCart: function(cart){
	if (cart != 0) {
	  $('#cart').html('<a href="/cart/">Items in Cart: ' + cart + '</a>');
	}
  },
  
  addToCart: function() {
	var item = loginUtility.createItem();
	loginUtility.clearPanels();
	
	$.ajax({
	  type: "POST",
	  url: "/services/shop.asmx/AddToCart",
	  data: "{'item':" + item + "}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result){
		if (result) {
			loginUtility.getCart();
			loginUtility.showPanel('success', 'Item was added to your cart.<br /><a href="/cart/">View My Cart &gt;</a> or <a href="javascript:history.go(-1)">Continue Shopping &gt;</a>')
		} else {
			alert('failed');
		}        
	  },
	  error: function(xhr, status, error){
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },
  
   updateCartItem: function(slug,qty) {
		//alert(qty.value)
		$.ajax({
			type: "POST",
			url: "/services/shop.asmx/UpdateCartItem",
			data: "{'slug':'" + slug + "', 'qty':'" + qty.value + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			beforeSend: function() {
				$('#loader').removeClass('hidden');
			},
			success: function(result) {
				loginUtility.getCart();
				loginUtility.getCartItems();
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
  
  addPackageToCart: function() {
	var item = loginUtility.createPackagedItem();   
	//alert(item);
	
	
	loginUtility.clearPanels();
	
	$.ajax({
	  type: "POST",
	  url: "/services/shop.asmx/AddPackageToCart",
	  data: "{'item':" + item + "}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result){
		if (result) {
			loginUtility.getCart();
			loginUtility.showPanel('success', 'Item was added to your cart.<br /><a href="/cart/">View My Cart &gt;</a> or <a href="javascript:history.go(-1)">Continue Shopping &gt;</a>')
		} else {
			alert('failed');
		}        
	  },
	  error: function(xhr, status, error){
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },
  
  clearPanels: function() {
		$('.detailinformation li').remove();
		$('.detailerror li').remove();
		$('.detailinformation').addClass('hidden');
		$('.detailerror').addClass('hidden');
	},

	showPanel: function(type, message) {
		loginUtility.clearPanels();
		$('.' + type).append('<li>' + message + '</li>');
		$('.' + type).removeClass('hidden');
		$('.' + type).get(0).scrollIntoView(true);
	},
  
  clearCart: function() {
		$.ajax({
			type: "POST",
			url: "/services/shop.asmx/ClearCart",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			beforeSend: function() {
				$('#loader').removeClass('hidden');
			},
			success: function(result) {
				loginUtility.getCart();
				loginUtility.getCartItems();
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	getCartItems: function() {
		$.ajax({
			type: "POST",
			url: "/services/shop.asmx/GetCartItems",
			data: "{}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			beforeSend: function() {
				$('#loader').removeClass('hidden');
			},
			success: function(result) {
				loginUtility.populateCartTable(result);
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	deleteCartItem: function(slug) {
		$.ajax({
			type: "POST",
			url: "/services/shop.asmx/DeleteCartItem",
			data: "{'slug':'" + slug + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			beforeSend: function() {
				$('#loader').removeClass('hidden');
			},
			success: function(result) {
				loginUtility.getCart();
				loginUtility.getCartItems();
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	populateCartTable: function(items) {
		$('#cartItems tbody tr').remove();
		$('#cartItems tfoot tr').remove();
		
		var html = '';
		var htmlfoot = '';
		var subTotal = 0;
		var coreTotal = 0;
		var total = 0;
		var totalQuantity = 0;
		
		for(var i = 0; i < items.length; i++) {
			html += '<tr id="' + items[i].Slug + '">';
			html += '<td><strong>' + items[i].Name + '</strong><br />[' + items[i].PartNumber +']</td>';
			html += '<td>' + items[i].PointValue + '</td>';
			html += '<td><input type="text"  onchange="loginUtility.updateCartItem(\'' + items[i].Slug + '\',this); return false;" class="qty field50" value="' + items[i].Qty + '" /></td>';
			html += '<td id="labor">' + parseFloat(items[i].Labor) * parseInt(items[i].Qty) + '</td>';
			html += '<td id="price" class="alignRight">' + items[i].DisplayPrice + '</td>';
			html += '<td id="Coreprice" class="alignRight">' + items[i].CorePrice + '</td>';
			html += '<td id="extCorePrice" class="alignRight">' + items[i].DisplayExtCorePrice + '</td>';
			html += '<td id="extPrice" class="alignRight">' + items[i].DisplayExtPrice + '</td>';           
			html += '<td><a href="#" onclick="loginUtility.deleteCartItem(\'' + items[i].Slug + '\'); return false;"><img src="/webresources/images/icons/delete.gif" alt="" width="16" height="16" /></a></td>';
			html += '</tr>';
			subTotal = subTotal + parseFloat(utility.stripNonNumeric(items[i].DisplayExtPrice));
			coreTotal = coreTotal + parseFloat(utility.stripNonNumeric(items[i].DisplayExtCorePrice));
			totalQuantity += items[i].Qty;
			
			//add the Products in Package if they exists
			//alert(items[i].Labor);
			//alert(items[i].Name);            
			for (var j = 0; j < items[i].ProductsInPackage.length; j++) {
				
				html += '<tr id="' + items[i].ProductsInPackage[j].Slug + '">';
				html += '<td colspan="2">' + items[i].ProductsInPackage[j].Name + '-[' + items[i].ProductsInPackage[j].SKU +']</td>';               
				html += '<td>' + parseInt(items[i].ProductsInPackage[j].Qty) + '</td>';
				 html += '<td id="labor">' + parseFloat(items[i].ProductsInPackage[j].Hours) * parseInt(items[i].ProductsInPackage[j].Qty) + '</td>';
				html += '<td id="price" class="alignRight">(' + utility.formatCurrency(items[i].ProductsInPackage[j].Price) + ')</td>';
				html += '<td id="Coreprice" class="alignRight">(' + utility.formatCurrency(items[i].ProductsInPackage[j].CorePrice) + ')</td>';
				html += '<td>(' + utility.formatCurrency(items[i].ProductsInPackage[j].Qty * items[i].ProductsInPackage[j].CorePrice) + ')</td>';
				html += '<td id="extPrice" class="alignRight">(' + utility.formatCurrency(items[i].ProductsInPackage[j].Qty * items[i].ProductsInPackage[j].Price) + ')</td>';           
				html += '<td></td>';
				html += '</tr>';
				//alert(items[i].ProductsInPackage[j].Qty);
			
			}
			
						
		}
		
		htmlfoot += '   <tr>';
		htmlfoot += '       <td colspan="7" class="alignRight">Total Items:</td>';
		//htmlfoot += '       <td class="alignRight"><strong>' + items.length + '</strong></td>';
		htmlfoot += '       <td class="alignRight"><strong>' + totalQuantity + '</strong></td>';
		htmlfoot += '       <td></td>';
		htmlfoot += '   </tr>';
		htmlfoot += '   <tr>';
		htmlfoot += '       <td colspan="7" class="alignRight">Sub Total:</td>';
		htmlfoot += '       <td class="alignRight"><strong>' + utility.formatCurrency(subTotal) + '</strong></td>';
		htmlfoot += '       <td></td>';
		htmlfoot += '   </tr>';
		htmlfoot += '   <tr>';
		htmlfoot += '       <td colspan="7" class="alignRight">Total Core:</td>';
		htmlfoot += '       <td class="alignRight"><strong>'+ utility.formatCurrency(coreTotal) +'</strong></td>';
		htmlfoot += '       <td></td>';
		htmlfoot += '   </tr>';
		
		
		$('#cartItems tbody').html(html);
		$('#cartItems tfoot').html(htmlfoot);
	},
  
  createItem: function() { 
	var item = new Object();
	
	item.Name = loginUtility.name;
	item.Slug = loginUtility.slug;
	item.PartNumber = loginUtility.partnumber;
	item.Qty = parseFloat($('#' + loginUtility.qtyBox).val());
	
	
	return JSON.stringify(item);
  },
	
  createPackagedItem: function() { 
	var item = new Object();
	
	item.Name = loginUtility.name;
	item.Slug = loginUtility.slug;
	item.PartNumber = loginUtility.partnumber;
	item.Qty = parseFloat($('#' + loginUtility.qtyBox).val());
	item.PackageId = loginUtility.packageId;
	item.PackageProducts = loginUtility.packageProducts;
	//item.Price = loginUtility.price;
	
	//add logic to insert productids for package products
	return JSON.stringify(item);
  },
  
  
  getStatus: function(){
	$.ajax({
	  type: "POST",
	  url: "/services/members.asmx/GetLoginStatus",
	  data: "{}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result){
		loginUtility.populateLogin(result);
	  },
	  error: function(xhr, status, error){
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },
	
  populateLogin: function(firstName){
	$('.utility li').remove();
		
	if (firstName.length != 0) {
	  $('.utility').append($('<li></li>').text('Welcome ' + firstName));
	  $('.utility').append($('<li></li>').html('<a href="/dashboard" title="My Account">My Account</a>'));
	  $('.utility').append($('<li class="last"></li>').html('<a href="/signout.aspx" title="Logout">Logout</a>'));
	}
	else {
	  $('.utility').append($('<li></li>').html('<a href="/signin.aspx" title="Login">Login</a>'));
	  $('.utility').append($('<li></li>').html('<a href="/register.aspx" title="Register">Register</a>'));
	}
	
	$('.utility').append($('<li id="cart"></li>'));
  }
}

var frontPageBanners = {
  banners: [],
	
  init: function(){
	frontPageBanners.getBanners();
  },
	
  getBanners: function(){
	$.ajax({
	  type: "POST",
	  url: "/services/autos.asmx/GetBanners",
	  data: "{}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result){
		frontPageBanners.populateBanners(result);
	  },
	  error: function(xhr, status, error){
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },
	
  populateBanners: function(banners){
	if (banners.length > 0)
	{
	  var links = '';
	  var images = '';

	  for(var i = 0; i < banners.length; i++)
	  {
		var banner = {};
		banner.title = banners[i].Title;
		banner.caption = banners[i].Caption;
		banner.url = banners[i].URL;
		banner.path = banners[i].BannerPath;
		frontPageBanners.banners.push(banner);
		links += '<li><a href="#banner_' + i +'">' + i + '</a></li>';
		images += '<div id="banner_' + i + '"><img src="'+ banners[i].BannerPath + '" alt="" /></div>';
	  }
	  $('#banner').append('<ul>' + links + '</ul>');
	  $('#banner').append(images);
	  $('#banner').tabs({
		show: function(){
		  var current = $('#banner').tabs('option', 'selected');
		  $('#banner_' + current +  ' img').fadeIn('slow', function(){
			$('#banner h1, #banner h2').remove();
		  
			var title;
			var caption;
			if(frontPageBanners.banners[current].url == null){
			  title = '<h1>' + frontPageBanners.banners[current].title + '</h1>';
			  caption = '<h2>' + frontPageBanners.banners[current].caption + '</h2>';
			}
			else{
			  title = '<h1><a href="'+ frontPageBanners.banners[current].url +'">' +  frontPageBanners.banners[current].title + '</a></h1>';
			  caption = '<h2><a href="'+ frontPageBanners.banners[current].url +'">' + frontPageBanners.banners[current].caption + '</a></h2>';
			}
			$('#banner').append(title).append(caption);
		  });

		},
		load: function(){
		  var current = $('#banner').tabs('option', 'selected');
		  $('#banner_' + current +  ' img').fadeIn('slow');
		}
	  }
	  ).tabs('rotate', 10000);
	}
  }
}

var modelYears = {
  hiddenOptions: '#ctl00_ContentPlaceHolder1_YearTags',
	
  init: function(){
	var initialOpts = [];
	if($(modelYears.hiddenOptions).val().length > 0){
	  initialOpts = $(modelYears.hiddenOptions).val().split(';');
	}

	modelYears.chooseOptions(initialOpts);
	modelYears.saveOptions();
  },

  chooseOptions: function(initialOpts){
	if(initialOpts && initialOpts.length > 0){
	  for(var i=0; i<initialOpts.length; i++){
		$('input:checkbox[value="' + initialOpts[i] +'"]').attr('checked', 'checked');
	  }
	}
  },

  saveOptions: function(){
	$('input:checkbox').live('click', function(){
	  modelYears.updateHiddenOptions();
	})
  },

  updateHiddenOptions: function(){
	var div = $('.opt:visible').attr('id');
	$(modelYears.hiddenOptions).val('')
	$('input:checkbox', '#' + div).each(function(){
	  if($(this).attr('checked')){
		$(modelYears.hiddenOptions).val($(modelYears.hiddenOptions).val() + $(this).val() + ';');
	  }
	})
  }
}

var modelTypes = {
  typeContainer: '#types',
  hiddenTypes: '#ctl00_ContentPlaceHolder1_TypeTags',
  listOfTypes: '#listOfTypes',
  selectedTypes: '#selectedTypes',

  init: function(){
	modelTypes.getAllTypes();
	modelTypes.getTypeTags();
	modelTypes.saveTypeTags();
	modelTypes.deleteTypeTag();
  },

  getAllTypes: function(){
	$.ajax({
	  type: "POST",
	  url: "/services/shop.asmx/GetTypes",
	  data: "{}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result) {
		if(result.length > 0){
		  var allTags = [];
		  for(var i=0; i<result.length; i++){
			allTags.push(result[i].Name);
		  }
					
		  $(modelTypes.selectedTypes).autocomplete(allTags, {
			width: 170,
			maxItemsToShow: 4,
			highlight: false,
			multiple: true,
			multipleSeparator: " ",
			scroll: true,
			scrollHeight: 150
		  });
		}
	  },
	  error: function(xhr, status, error) {
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },

	
  getTypeTags: function(){
	var list = $(modelTypes.hiddenTypes).val();
	if(list.length > 0){
	  list = list.split(';');
	  var lis = '';
	  for(var i=0; i<list.length; i++){
		lis = lis + modelTypes.buildTypeTag(list[i]);
	  }
	  $(modelTypes.listOfTypes).append(lis);
	}
  },

  saveTypeTags: function(){
	$(modelTypes.selectedTag).keypress(function(event){
	  if(event.keyCode == 13){
		var newTag = $.trim($(modelTypes.selectedTypes).val());
		$(modelTypes.listOfTypes).append(modelTypes.buildTypeTag(newTag));
		$(modelTypes.selectedTypes).val('');
		modelTypes.updatehiddenTypes();
		return false;
	  }
	})
  },

  updatehiddenTypes: function(){
	$(modelTypes.hiddenTypes).val('');
	$('li', modelTypes.listOfTypes).each(function(){
	  $(modelTypes.hiddenTypes).val($(modelTypes.hiddenTypes).val() + $(this).text() + ';');
	})
  },

  deleteTypeTag: function(){
	$(modelTypes.listOfTypes).click(function(event){
	  var target = $(event.target);
	  if($(target).attr('nodeName').toLowerCase() == 'img'){
		var parent = $(target).parents('li');
		if(parent.length > 0){
		  $(parent).remove();
		  modelTypes.updatehiddenTypes();
		}
	  }
	  return false;
	})
  },

  buildTypeTag: function(title){
	return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
  }
}

var productModels = {
  modelContainer: '#models',
  hiddenModels: '#ctl00_ContentPlaceHolder1_ModelTags',
  listOfModels: '#listOfModels',
  selectedModels: '#selectedModels',

  init: function(){
	productModels.getAllTypes();
	productModels.getTypeModels();
	productModels.saveTypeModels();
	productModels.deleteTypeTag();
  },

  getAllTypes: function(){
	$.ajax({
	  type: "POST",
	  url: "/services/shop.asmx/GetModels",
	  data: "{}",
	  contentType: "application/json; charset=utf-8",
	  dataType: "json",
	  success: function(result) {
		if(result.length > 0){
		  var allModels = [];
		  for(var i=0; i<result.length; i++){
			allModels.push(result[i].Name + ' (' + result[i].Chassis + ') ' + result[i].MyTypes + ' ' + result[i].MyYears);
		  }

		  $(productModels.selectedModels).autocomplete(allModels, {
			width: 170,
			maxItemsToShow: 4,
			highlight: false,
			multiple: true,
			multipleSeparator: " ",
			scroll: true,
			scrollHeight: 150
		  });
		}
	  },
	  error: function(xhr, status, error) {
		var err = eval("(" + xhr.responseText + ")");
		alert(err.Message)
	  }
	});
  },

	
  getTypeModels: function(){
	var list = $(productModels.hiddenModels).val();
	if(list.length > 0){
	  list = list.split(';');
	  var lis = '';
	  for(var i=0; i<list.length; i++){
		lis = lis + productModels.buildModelTag(list[i]);
	  }
	  $(productModels.listOfModels).append(lis);
	}
  },

  saveTypeModels: function(){
	$(productModels.selectedTag).keypress(function(event){
	  if(event.keyCode == 13){
		var newTag = $.trim($(productModels.selectedModels).val());
		$(productModels.listOfModels).append(productModels.buildModelTag(newTag));
		$(productModels.selectedModels).val('');
		productModels.updateHiddenModels();
		return false;
	  }
	})
  },

  updateHiddenModels: function(){
	$(productModels.hiddenModels).val('');
	$('li', productModels.listOfModels).each(function(){
	  $(productModels.hiddenModels).val($(productModels.hiddenModels).val() + $(this).text() + ';');
	})
  },

  deleteTypeTag: function(){
	$(productModels.listOfModels).click(function(event){
	  var target = $(event.target);
	  if($(target).attr('nodeName').toLowerCase() == 'img'){
		var parent = $(target).parents('li');
		if(parent.length > 0){
		  $(parent).remove();
		  productModels.updateHiddenModels();
		}
	  }
	  return false;
	})
  },

  buildModelTag: function(title){
	return '<li>'+ title + '<a href="#" class="delete"><img src="/webresources/images/icons/close.gif" alt="" /></a></li>';
  }
}

function activateTabs(){
  $("#section_tab a, .inner a, .multipleInner a").click(function(){
	var parent = $(this).parents('ul').attr('id');
	var clicked = $(this).attr('id');
	if(clicked == "viewall"){
	  var sections = ["section_general", "section_documents", "section_statusupdates", "section_closeorder", "section_printSettings"];
	  for (var j = 0; j <sections.length; j++) {
		var div = $(sections[j]);
		if (div.length > 0) {
		  $(div).addClass('shown');
		}
	  }
	}
	else{
	  if(parent == "section_tab"){
		var shown_array = $('.shown','#content');
		var hidden_array = $('.hidden','#content');
		var inner_shown_array = $('.shown', '#inner');
	  }
	  else{
		var shown_array = $('.shown','#inner');
		var hidden_array = $('.hidden','#inner');
	  }
	  var section_array = new Array();
	  $.each(shown_array, function(i, val){
		section_array.push(val);
	  })
	  $.each(hidden_array, function(i, val){
		section_array.push(val);
	  })
	  for (var k = 0; k <section_array.length; k++) {
		if (section_array[k].id.split("_")[1] != clicked) {
		  $(section_array[k]).attr('class','hidden');
		}
		else {
		  $(section_array[k]).attr('class','shown');
		}
	  }//end of hiding
	  if(parent == "section_tab"){
		if(inner_shown_array.length > 0){
		  $.each(inner_shown_array, function(i, val){
			$(this).attr('class', 'shown');
		  })
		}
	  }
	}
	setTabHighlight(clicked, parent);
	return false;
  })
}


function clearFocus(original){
  for (var i = 0; i < original.length; i++) {
	var classes = original[i].className.split(" ");
	var classname = "";
	for (var j = 0; j < classes.length; j++) {
	  if (classes[j] != "focus") {
		classname = classes[j] + classname;
	  }
	}
  }
}

function setTabHighlight(tab, parent){
  if((parent == "inactive_section_tab") || (parent == "inner_tab")){
	if($('.inner').length == 0){
	  var section_tab = $('.multipleInner a');
	}
	else{
	  var section_tab = $('.inner a');
	}
		
  }
  else{
	var section_tab = $('#section_tab a');
  }
  for (var i = 0; i < section_tab.length; i++) {
	if ($(section_tab[i]).attr('id') == tab) {
	  $(section_tab[i]).attr('class', 'on');
	}
	else {
	  $(section_tab[i]).attr('class', '');
	}
  }
}

function setActiveTab(tab){
  var section_tab = getId("section_tab");
  var section_tabs = getTag("a", section_tab);
  var shown = getClasses('shown','div');
  for(var i=0; i<shown.length; i++){
	shown[i].className = "hidden";
  }
  document.getElementById('section_' + tab).className = "shown";
	
  for (var i = 0; i < section_tabs.length; i++) {
	if (section_tabs[i].id == tab) {
	  section_tabs[i].className = "on";
			
			
	}
	else {
	  section_tabs[i].className = null;
	}
  }
}


var map = null;
var Map = {
	mapContainer: '#map',
	map: '',
	geocoder: null,
	gdir: '',
	i: 0,

	init: function() {
		Map.setDialog();       
		$('#mapSubmit').click(function() {
			//Map.showMap($('#mapFrom').val(), $('#mapTo').val());  //Use it with Google Maps 
			if (!$('#mapFrom').val() == '') {
				$('#directions').html('<img src="/webresources/images/loader.gif" alt="" /><p align="center">Calculating route...</p>');
				Map.showBingMap($('#mapFrom').val(), $('#mapTo').val());
			} //Use it with Bing Maps
			else alert('Please enter From location.')
			return false;
		});

		
		$('#mapPrint').click(function() {
			//alert(Map.page);
			//window.open('http://maps.google.com/maps?f=d&t=h&z=13&layer=c&pw=2&source=s_d&saddr=' + $('#mapFrom').val() + '&daddr=' + $('#mapTo').val())//Use it with Google Maps
			 if (!$('#mapFrom').val() == '') 
			 {
				var windowUrl = 'printBing.aspx?s=' + $('#mapFrom').val() + '&d=' + $('#mapTo').val() + '&dealerPhone=' + $('#dealerInfo').attr('phone') + '&dealerName=' + $('#dealerInfo').attr('dealerName');
				if (Map.page == 'contactUs')
				{
					windowUrl = 'dealers/printBing.aspx?s=' + $('#mapFrom').val() + '&d=' + $('#mapTo').val() + '&dealerPhone=' + $('#dealerInfo').attr('phone') + '&dealerName=' + $('#dealerInfo').attr('dealerName');
				}
				//alert($('#dealerInfo').attr('dealerName'));
				//return;
				
				var uniqueName = new Date();
				var windowName = 'Print' + uniqueName.getTime();
				window.open(windowUrl, windowName, 'left=-2500,top=-2500,width=600,height=800');
			 }
				else alert('Please enter From location.')
			return false;
		});
	},

	setDialog: function() {
			$(Map.mapContainer).dialog({
			bgiframe: true,
			width: 850,
			height: 650,
			autoOpen: false,
			modal: true,
			title: 'Get Directions &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#" id="mapPrint"><img src="/webresources/images/icons/printer.gif" alt="" /> Print</a>',
			zIndex: 10,
			beforeclose: function() {                
				 
			}
		});
	},
	//    popupMap: function() {

	//        $('.map').click(function() {
	//            var to = $(this).attr('dest');
	//            $('#mapTo').val(to);

	//            var map = new GMap2(document.getElementById("mapHolder"), {
	//                size: new GSize(455, 400)
	//            });

	//            var latitude = parseFloat($(this).attr('lat'));
	//            var longitude = parseFloat($(this).attr('long'));
	//            map.setCenter(new GLatLng(latitude, longitude), 13);

	//            $('.required').trigger('blur');
	//            Map.onGDirectionsLoad();
	//            $('#mapFrom').val('');

	//            $(Map.mapContainer).dialog('open');
	//            $('#mapFrom').focus();
	//            return false;
	//        });
	//    },


	popupBingMap: function() {
		$('.map').click(function() {
			var to = $(this).attr('dest');
			var dealerName = $(this).attr('name');
			var phone = $(this).attr('phone');
			
			$('#dealerInfo').attr('phone',phone);
			$('#dealerInfo').attr('dealerName',dealerName);
			$('#dealerInfo').attr('dest',to);
			var info = '<strong>' + dealerName + '</strong><br />' + to + '<br />';
			
			if(phone != '' || phone != null || phone != 'undefined') {
				info += phone + '<br />';
			}
			
			$('#dealerInfo').html(info);
			$('#mapTo').val(to);
			$('#directions').html('')
			map = new VEMap('myMap');
			
			var latitude = parseFloat($(this).attr('lat'));
			var longitude = parseFloat($(this).attr('long'));
			$('.required').trigger('blur');
			$('#mapFrom').val('');
			
			Map.setDialog();
			$(Map.mapContainer).dialog('open');

			//$(".VEAPI_Pushpin").css({'z-index' : '10'});
			//alert($(".VEAPI_Pushpin").css('z-index'));
			
			map.LoadMap(new VELatLong(latitude, longitude), 12);
			var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(latitude, longitude));
			shape.SetTitle($(this).attr('name'));
			shape.SetDescription($(this).attr('dest'));
			map.AddShape(shape);

			$('#mapFrom').focus();
			return false;
		});

	},

	showBingMap: function(fromAddress, toAddress) {
		$('.required').trigger('blur');
		if ($('.issue', '#map').length == 0) {
			var options = new VERouteOptions();
			options.RouteCallback = Map.BingRoute;
			map.GetDirections([fromAddress, toAddress], options);
		}
	},

	BingRoute: function(route) {  
		// Unroll route           
		var legs = route.RouteLegs;
		var turns = "<ul>";
		turns += "<li>Total distance: " + route.Distance.toFixed(1) + " mi</li><br />";
		var numTurns = 0;
		var leg = null;

		// Get intermediate legs
		for (var i = 0; i < legs.length; i++) {
			// Get this leg so we don't have to derefernce multiple times
			leg = legs[i];  // Leg is a VERouteLeg object

			// Unroll each intermediate leg
			var turn = null;  // The itinerary leg

			for (var j = 0; j < leg.Itinerary.Items.length; j++) {
				turn = leg.Itinerary.Items[j];  // turn is a VERouteItineraryItem object
				numTurns++;
				turns += "<li>" + numTurns + ".&nbsp;&nbsp;" + turn.Text + " (" + turn.Distance.toFixed(1) + " mi)</li>";
			}
		}

		turns += "</ul>";
		$('#directions').html('');
		$('#directions').html(turns);
	}



//    showMap: function(fromAddress, toAddress) {
//        $('.required').trigger('blur');
//        if ($('.issue', '#map').length == 0) {
//            if (GBrowserIsCompatible()) {
//                var map = new GMap2(document.getElementById("mapHolder"));
//                Map.gdir = new GDirections(map, document.getElementById("directions"));
//                GEvent.addListener(Map.gdir, "load", Map.onGDirectionsLoad);
//                GEvent.addListener(Map.gdir, "error", Map.handleErrors);

//                Map.setDirections(fromAddress, toAddress, "en_US");
//                $('#mapPrint').css('visibility', 'visible');
//            }
//        }
//    },

//    setDirections: function(fromAddress, toAddress, locale) {
//        Map.gdir.load("from: " + fromAddress + " to: " + toAddress, {
//            "locale": locale
//        });
//    },

//    onGDirectionsLoad: function() {
//        $('#directions').text('');
//    },

//    handleErrors: function() {

//    }

}

//function onFeedLoad(feed)
//         {
//         }

var newsletter = {     
	newsletterSignupPopup: function(){
		$('#newsletterSignup').dialog({
		  title: 'Sign-up for the Dinan Newsletter',
		  width: 525,
		  height: 300,
		  bgiframe: true,
		  modal: true,
		  autoOpen: false,
		  closeOnEscape: true,
		  overlay: {
			backgroundColor: '#000000',
			opacity: 0.5
		  }
		});
	},

	showNewsletterSignupPopup: function(){
		$('#newsletterSignupPopup').click(function(){
			$('#newsletterSignup').dialog('open');   
			$('#saveNewsLetter').click(function() {
				newsletter.saveNewsLetter();
			});     
			// need to attach back to the form for the .net buttons to work
			$('#newsletterSignup').parent().appendTo($("form:first"));
		});
	},
	
	hideNewsletterSignupPopup: function(){
		$('#cancelNewsLetter').click(function(){
		  $('#newsletterSignup').dialog('close');
		});
	},
	
	saveNewsLetter: function() {
		var fullName = $('#newsLetterFullName').val();
		var email = $('#newsLetterEmail').val();
		
		$.ajax({
			type: "POST",
			url: "/services/members.asmx/Subscribe",
			data: "{'fullName':'" + fullName + "', 'email':'" + email + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			beforeSend: function() {
				$('#loader').removeClass('hidden');
			},
			success: function(result) {
				if(result.length == 'Success') {                    
					newsletter.showPanel('nsinformation', 'Thank you for signing up for our newsletter.')
				} else {                    
					newsletter.showPanel('nserror', result)
				}
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},
	
	saveNewsLetterOnHomePageSignUp: function() {
		
		var email = $('#newsLetterEmail1').val();
		var fullName = '';
				
		$.ajax({
			type: "POST",
			url: "/services/members.asmx/Subscribe",
			data: "{'fullName':'" + fullName + "', 'email':'" + email + "'}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			beforeSend: function() {
				//$('#loader').removeClass('hidden');
			},
			success: function(result) {
				
				if(result == 'Success') {
					newsletter.showPanel('nsinformation', 'Thank you for signing up for our newsletter.')
					newsletter.hideHomePageSignup();                   
					
				} else {
					alert(result);
					//newsletter.newsletterSignupPopup();
					//newsletter.showNewsletterSignupPopup();
					//newsletter.hideNewsletterSignupPopup();
					//newsletter.showPanel('nserror', result)
				}
			},
			error: function(xhr, status, error) {
				var err = eval("(" + xhr.responseText + ")");
				alert(err.Message)
			}
		});
	},

	hideHomePageSignup: function() {
		
		$('#newsLetterEmail1').val('');
		$('#newsletterdiv').hide();
	},
	
	clearPanels: function() {
		$('#nsinformation li').remove();
		$('#nserror li').remove();
		$('#nsinformation').addClass('hidden');
		$('#nserror').addClass('hidden');
	},

	showPanel: function(type, message) {
		newsletter.clearPanels();
		$('#' + type).append('<li>' + message + '</li>');
		$('#' + type).removeClass('hidden');
		$('#' + type).get(0).scrollIntoView(true);
		
		$(function() {
			// setTimeout() function will be fired after page is loaded
			// it will wait for 5 sec. and then will fire
			// $("#successMessage").hide() function
			setTimeout(function() {
				$("#nsinformation").hide("slow")
				$('#newsletterdiv').show();
			}, 5000);
		});

	}
}

var utility = {
	stripNonNumeric: function(str){
		str += '';
		var rgx = /^\d|\.|-$/;
		var out = '';
		for(var i = 0; i < str.length; i++){
			if(rgx.test(str.charAt(i))){
				if(!((str.charAt(i) == '.' && out.indexOf( '.' ) != -1) ||
					(str.charAt(i) == '-' && out.length != 0))){
					out += str.charAt(i);
				}
			}
		}
		return out;
	},
	
	formatCurrency: function(num){
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
		return (((sign)?'':'-') + '$' + num + '.' + cents);
	}
}

/*
var bingMap = {
  mapContainer: '#map',
  map: null,
  geocoder: null,
  gdir : '',

  init: function(){
	$(bingMap.mapContainer).dialog({
	  bgiframe: true,
	  width: 750,
	  autoOpen: false,
	  modal: true,
	  title: 'Get Directions &nbsp;&nbsp;&nbsp;<a href="#" id="mapPrint"><img src="/webresources/images/icons/printer.gif" alt="" /> Print</a>',
	  beforeclose: function(){
	  }
	});

	//bingMap.GetMap();
	bingMap.popupMap();
	
	$('#mapSubmit').click(function(){
	  bingMap.showMap($('#mapFrom').val(), $('#mapTo').val());
	  return false;
	});

	$('#mapPrint').click(function(){
	  window.open('http://maps.google.com/maps?f=d&t=h&z=13&layer=c&pw=2&source=s_d&saddr=' + $('#mapFrom').val() + '&daddr=' + $('#mapTo').val())
	  return false;
	});
  },
 
	 GetMap: function()
	 {
		bingMap.map = new VEMap('myMap');
		bingMap.map.LoadMap();
	 },
	 
  popupMap: function(){
	$('.map').click(function(){
	  var to = $(this).attr('dest');
	  $('#mapTo').val(to);
	  
	  var latitude = parseFloat($(this).attr('lat'));
	  var longitude = parseFloat($(this).attr('long'));
	  
	  $('#myMap').html(''); 
	  bingMap.map = new VEMap('myMap');
	  setTimeout(function(){bingMap.map.LoadMap(new VELatLong(latitude, longitude), 12);}, 100);         

	bingMap.map.Find('Dinan Installer', 
		 $('#mapTo').val(), 
		 null, 
		 null, 
		 null, 
		 1, 
		 true, 
		 true,
		 true, 
		 true,
		 bingMap.addPushPin);
		 
	  $('.required').trigger('blur');
	  
//      var options = new VERouteOptions();
//      options.RouteCallback = onGotRoute;
//      map.GetDirections(["Microsoft", "Everett WA", "Bellingham WA"], options);

	  bingMap.onGDirectionsLoad();
	  $('#mapFrom').val('');
	  
	  $(bingMap.mapContainer).dialog('open');
	  $('#mapFrom').focus();
	  return false;
	}); 
  },

	addPushPin: function(layer, results)
	{   
		var address = $('#mapTo').val();
		
		var pin = new VEShape(VEShapeType.Pushpin, bingMap.map.GetCenter()); //results[0].LatLong);          
		pin.SetTitle(address);
		bingMap.map.AddShape(pin);
	},

  showMap: function(fromAddress, toAddress){
	$('.required').trigger('blur');
	if($('.issue', '#map').length == 0){
		var map = new GMap2(document.getElementById("mapHolder"));
		Map.gdir = new GDirections(map, document.getElementById("directions"));
		GEvent.addListener(Map.gdir, "load", Map.onGDirectionsLoad);
		GEvent.addListener(Map.gdir, "error", Map.handleErrors);

		bingMap.setDirections(fromAddress, toAddress, "en_US");
		$('#mapPrint').css('visibility', 'visible');
	}  
  },

  setDirections: function(fromAddress, toAddress, locale){
	Map.gdir.load("from: " + fromAddress + " to: " + toAddress, {
	  "locale": locale
	});
  },

  onGDirectionsLoad: function(){
	$('#directions').text('');
  },
	
  handleErrors: function(){
		
  }

}*/
