var xHRObject = false;
if (window.ActiveXObject) {
	xHRObject = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest){
	xHRObject = new XMLHttpRequest();
}
var _var_hs_enquire_width = 500;
var _var_hs_enquire_height = 600;

	var response = false;
	var _no_item_selected = true;
	var _no_item_message = 'Please select an item for action';	

function _init_asc() {
	$$('.comparable_item').each(function(select){
		if (select.checked == true) {
			_no_item_selected = false;
		}
	});
	$$('.non_comparable_item').each(function(select){
		if (select.checked == true) {
			_no_item_selected = false;
		}
	});
	synchronize_comparison();
	synchronize_compare_button();
	_init_cookies();
}

function check_selected() {
	if (_no_item_selected == true) {
		alert(_no_item_message);
		return false;
	}
}
function check_selected_enquiry(el) {
	if (_no_item_selected == true) {
		alert(_no_item_message);
		return false;
	}
	else {
		return hs.htmlExpand(el, { objectType: 'iframe', width: _var_hs_enquire_width, height: _var_hs_enquire_height } );
	}
}
	
function _init_cookies() {
	var _dxx_fav = readCookie('dxx_fav'); 
	if (_dxx_fav != null) {
		eraseCookie('dxx_fav');
	}
}	

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function getData() {
	try {
	if (xHRObject.readyState == 4 && xHRObject.status == 200) {
		var serverResponse = xHRObject.responseXML;
		response = xHRObject.responseXML;
		if (serverResponse != null) {
			var itemsNode = serverResponse.getElementsByTagName('items');
			if (itemsNode.length > 0) {
				var attribute = itemsNode[0].attributes[0].value;
				if (attribute == 'removeSuccess') {
					var products_id_nodes = response.getElementsByTagName('products_id');
					var product_id_array = new Array();
					var product_id = 0;
					
					for(z=0;z<products_id_nodes.length;z++) {
						if (window.ActiveXObject) {
							product_id = products_id_nodes[z].text;
						}
						else if (window.XMLHttpRequest){
							product_id = products_id_nodes[z].textContent;
						}

						remove_product(product_id);
					}
					synchronize_comparison();
					fix_table_rows();
					synchronize_cartTotalsDisplay();
				}
				else if(attribute == 'toggleStatusOn') {
					$$('.comparable_item').each(function(select){
						if (select.checked == true) _no_item_selected = false;
					});
					$$('.non_comparable_item').each(function(select){
						if (select.checked == true) _no_item_selected = false;
					});
				}
				else if(attribute == 'toggleStatusOff') {
					 _no_item_selected = true;
					$$('.comparable_item').each(function(select){
						if (select.checked == true) _no_item_selected = false;
					});
					$$('.non_comparable_item').each(function(select){
						if (select.checked == true) _no_item_selected = false;
					});
				}
				else if(attribute == 'checkAll') {
					_no_item_selected = false;
				}
				else if(attribute == 'unCheckAll') {
					 _no_item_selected = true;
				}
			}
		}
	}
	}
	catch(e) {
	}
}	

function remove_product(product_id) {
	var tgt_checkbox = document.getElementById('cart_action_' + product_id);
	if (tgt_checkbox != null) {
		var tr = tgt_checkbox.parentNode.parentNode;
		tr.className += ' ASC_hide';
	}
	synchronize_compare_button();
	//alert(tr.nodeName + 'cart_action_' + product_id + ' className:' + tr.className);
}

//Fix the odd / even rows of cart table
function fix_table_rows() {
	var index = 0;
	var cart_rows = document.getElementsByTagName('tr');
	var classNames = new Array('rowOdd', 'rowEven');
	for(i=0;i<cart_rows.length;i++) {
		if (classNames.inArray(cart_rows[i].className.split(' ')[0]) && cart_rows[i].className.split(' ')[1] != 'ASC_hide') {
			if (index%2 ==0) {
				cart_rows[i].className = 'rowEven';
			}
			else {
				cart_rows[i].className = 'rowOdd';
			}
			index++;
		}
	}
}

function check_all() {
	var all_inputs = document.getElementsByTagName('input');
	for (var i=0; i < all_inputs.length; i++) {
		if (all_inputs[i].name == 'cart_action[]') {
			all_inputs[i].checked = '1';
		}
	}
	
	xHRObject.abort();
	if (window.ActiveXObject) {
		xHRObject.open("GET","AJAX_servers/ASC_server.php?action=checkAll&id=" + Number(new Date), true);	
		xHRObject.onreadystatechange = getData;
	}
	else if (window.XMLHttpRequest){
		xHRObject.onreadystatechange = getData;
		xHRObject.open("GET","AJAX_servers/ASC_server.php?action=checkAll&id=" + Number(new Date), true);	
	}
	xHRObject.send(null);		
	
	_no_item_selected = false;
	synchronize_comparison();
}

function uncheck_all() {
	var all_inputs = document.getElementsByTagName('input');
	for (var i=0; i < all_inputs.length; i++) {
		if (all_inputs[i].name == 'cart_action[]') {
			all_inputs[i].checked = '';
		}
	}
	
	xHRObject.abort();
	if (window.ActiveXObject) {
		xHRObject.open("GET","AJAX_servers/ASC_server.php?action=uncheckAll&id=" + Number(new Date), true);	
		xHRObject.onreadystatechange = getData;
	}
	else if (window.XMLHttpRequest){
		xHRObject.onreadystatechange = getData;
		xHRObject.open("GET","AJAX_servers/ASC_server.php?action=uncheckAll&id=" + Number(new Date), true);	
	}
	xHRObject.send(null);			
	
	_no_item_selected = true;
	synchronize_comparison();
}

function synchronize_compare_button() {
	if ($('cartContentsDisplay')) {
		var compare_button1 = document.getElementById('compare_button_image1');
//		var compare_button2 = document.getElementById('compare_button_image2');
		if (asc_contain_comparable_product() == true) {
			compare_button1.className = '';
//			compare_button2.className = '';
		}
		else {
			compare_button1.className = 'ASC_hide';
//			compare_button2.className = 'ASC_hide';
		}
	}
}

function synchronize_comparison() {
	if ($('cartContentsDisplay')) {
		var index = 1;
		//var test = 0;
		var inputs = document.getElementsByTagName('input');
		
		var compare_table = document.getElementById('compare_table');
		var no_comparable_text = document.getElementById('no_comparable_text');
		if (asc_no_comparable_selected() == true) {
			compare_table.className = 'ASC_hide';
			no_comparable_text.className = '';
		}
		else {
			compare_table.className = '';
			no_comparable_text.className = 'ASC_hide';
		}
		
		for(i=0;i<inputs.length;i++) {
			if (inputs[i].className.indexOf('comparable_item') != -1 && !(inputs[i].className.indexOf('non_comparable_item') != -1)) {
				var compare_table_body = document.getElementById('compare_table_body');
				var input_parent_row = inputs[i].parentNode.parentNode;
				var counter = 0;
				for(j=0;j<compare_table_body.childNodes.length;j++) {
					var tr = compare_table_body.childNodes[j];
					if(tr.nodeName == 'TR') {
						
						//If row in cart table is hidden, make the compare hidden as well
						if (input_parent_row.className.split(' ')[1] == 'ASC_hide') {
							var td = tr.childNodes[index];
							if(td.nodeName == 'TD') {
								td.className = 'productListing-data ASC_hide';
							}
							else {
								index++;
								tr.childNodes[index].className = 'productListing-data ASC_hide';
							}
						}
						else {
							// If selected...
							if (inputs[i].checked == '1') {
								var td = tr.childNodes[index];
								if(typeof(td) != 'undefined' && td.nodeName == 'TD') {
									td.className = 'productListing-data';
								}
								else {
									index++
									if (typeof(tr.childNodes[index]) != 'undefined') {
										tr.childNodes[index].className = 'productListing-data';
									}
								}
							}
							else {
/*						for(x=0;x<tr.childNodes.length;x++) {
									if (test == 0) {alert(tr.childNodes[x].nodeName);}
								}
								test = 1;*/
								var td = tr.childNodes[index];
								if(typeof(td) != 'undefined' && td.nodeName == 'TD') {
									td.className = 'productListing-data ASC_hide';
								}
								else{
									index++;
									if (typeof(tr.childNodes[index]) != 'undefined') {
										tr.childNodes[index].className = 'productListing-data ASC_hide';
									}
								}
							}
						}
					}
					counter = j;
				}
				index++;
			}
		}
		//synchronize_subTotal();
		synchronize_cartTotalsDisplay();
	}
}

function asc_find_child_by_className(element, className) {
	for (i=0;i<element.childNodes.length;i++) {
		if (element.childNodes[i].className == className) {
			return element.childNodes[i];
		}
	}
	return false;
}

function synchronize_subTotal() {
	var total_price = calculateTotalPrice();
	var total_price_str = '$' + addCommas(total_price);
	var total_display = document.getElementById('cartSubTotalNumber');
	total_display.innerHTML = total_price_str;
}

function synchronize_cartTotalsDisplay() {
	var total_price = calculateTotalPrice(false);
	var total_price_str = '$' + addCommas(total_price);
	var total_price_selected = calculateTotalPrice(true);
	var total_price_selected_str = '$' + addCommas(total_price_selected);
	var total_qty = calculateTotalQty(false, false);
	var total_qty_selected = calculateTotalQty(true, false);
	var total_display = document.getElementById('cartTotalsDisplay');
	total_display.innerHTML = 'Total items: ' + total_qty_selected + ' / ' + total_qty + ' Amount: ' + total_price_selected_str + ' / ' + total_price_str;
	
	var header_cart = document.getElementById('header_cart_link');
	if (header_cart != null) {
		var item_all = document.getElementById('asc_item_all');
		item_all.innerHTML = total_qty;
		var item_selected = document.getElementById('asc_item_sel');
		item_selected.innerHTML = total_qty_selected;
		var total = document.getElementById('asc_total');
		total.innerHTML = total_price_selected_str;
		
//		header_cart.innerHTML = total_qty_selected + ' / ' + total_qty + ' Item(s) - Shopping Tray - ' + total_price_selected_str;
	}
}

function calculateTotalQty(only_selected, only_item_variant) {
	if (only_selected == null) {
		only_selected = true;
	}
	if (only_item_variant == null) {
		only_item_variant = true;
	}
	//var tds = document.getElementsByTagName('td');
	var inputs = document.getElementsByTagName('input');
	var total_qty = 0;
	
	var index_used = new Array();
	var index = 0;
	var index2 = 0;
	for(i=0;i<inputs.length;i++) {
		if (inputs[i].name=='cart_action[]' && inputs[i].id != '') {
			var input_row = inputs[i].parentNode.parentNode;
			
			var input_items = document.getElementsByTagName('td');
			var price_text = '';
			for (j=0;j<input_items.length;j++) {
				if (input_items[j].className == 'cartTotalDisplay' && input_items[j].parentNode == input_row) {
					if (window.ActiveXObject) {
						price_text = input_items[j].innerHTML;
					}
					else if (window.XMLHttpRequest){
						price_text = input_items[j].textContent;
					}
				}
			}
			
			if(input_row.className.indexOf('ASC_hide')==-1 && input_row.className != '' && typeof(price_text) != 'undefined' && !isNaN(parseFloat(price_text.replace(',','').substring(1))) && inputs[i].className.indexOf('hiddenField') == -1) {
				if (only_selected == true) {
					if (inputs[i].checked == '1') {
						index_used[index] = index2;
						index++;
					}
					
				}
				else {
					//alert(inputs[i].id + ' ' + parseFloat(price_text.replace(',','').substring(1)));
					index_used[index] = index2;
					index++;
				}
			}
			index2++;
		}
	}
	
	index = 0;
	for(i=0;i<inputs.length;i++) {
		if (inputs[i].name=='cart_action[]') {
		//	alert(inputs[i].name + ' type: ' + inputs[i].type + ' value: ' + inputs[i].value);
			if (index_used.inArray(index)) {
				total_qty++;
			}
			index++;
		}
	}
	return total_qty;
}

function calculateTotalPrice(only_selected) {
	if (only_selected == null) {
		only_selected = true;
	}
	var tds = document.getElementsByTagName('td');
	var inputs = document.getElementsByTagName('input');
	var total_price = 0;
	
	var index_used = new Array();
	var index = 0;
	var index2 = 0;
	for(i=0;i<inputs.length;i++) {
		if (inputs[i].name=='cart_action[]' && inputs[i].id != '') {

			var input_row = inputs[i].parentNode.parentNode;
			var input_items = document.getElementsByTagName('td');
			var price_text = '';
			for (j=0;j<input_items.length;j++) {
				if (input_items[j].className == 'cartTotalDisplay' && input_items[j].parentNode == input_row) {
					if (window.ActiveXObject) {
						price_text = input_items[j].innerHTML;
					}
					else if (window.XMLHttpRequest){
						price_text = input_items[j].textContent;
					}
				}
			}
			
			if(input_row.className.indexOf('ASC_hide')==-1 && input_row.className != '' && typeof(price_text) != 'undefined' && !isNaN(parseFloat(price_text.replace(',','').substring(1))) && inputs[i].className.indexOf('hiddenField') == -1) {
				if (only_selected == true) {
					if (inputs[i].checked == '1') {
						index_used[index] = index2;
						index++;
					}
				}
				else {
					index_used[index] = index2;
					index++;
				}
			}
			index2++;
		}
	}
	
	index = 0;
	for(i=0;i<tds.length;i++) {
		if (tds[i].className=='cartTotalDisplay') {
			if (index_used.inArray(index)) {
				var price_str = tds[i].innerHTML;
				var price = parseFloat(price_str.replace(',','').substring(1));
				total_price += price;
				//alert(total_price);
			}			index++;

		}
	}
	total_price = total_price.toFixed(2);
	return total_price;
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

Array.prototype.inArray = function(search_term) {
  var i = this.length;
  if (i > 0) {
	 do {
		if (this[i] === search_term) {
		   return true;
		}
	 } while (i--);
  }
  return false;
}

function toggleStatus(products_id,el) {
	var checkbox = el;
	if (checkbox.checked == '1') {
		xHRObject.abort();
		if (window.ActiveXObject) {
			xHRObject.open("GET","AJAX_servers/ASC_server.php?action=toggleStatusOn" + "&products_id=" + products_id + "&id=" + Number(new Date), true);	
			xHRObject.onreadystatechange = getData;
		}
		else if (window.XMLHttpRequest){
			xHRObject.onreadystatechange = getData;
			xHRObject.open("GET","AJAX_servers/ASC_server.php?action=toggleStatusOn" + "&products_id=" + products_id + "&id=" + Number(new Date), true);	
		}
		xHRObject.send(null);		
	}
	else {
		xHRObject.abort();
		if (window.ActiveXObject) {
			xHRObject.open("GET","AJAX_servers/ASC_server.php?action=toggleStatusOff" + "&products_id=" + products_id + "&id=" + Number(new Date), true);	
			xHRObject.onreadystatechange = getData;
		}
		else if (window.XMLHttpRequest){
			xHRObject.onreadystatechange = getData;
			xHRObject.open("GET","AJAX_servers/ASC_server.php?action=toggleStatusOff" + "&products_id=" + products_id + "&id=" + Number(new Date), true);	
		}
		xHRObject.send(null);		
	}
}


function remove() {
	if(_no_item_selected == true) {
		alert(_no_item_message);
	}
	else {
		
		var products_ids_str = '';
		
		var inputs = document.getElementsByTagName('input');
		for(i=0;i<inputs.length;i++) {
			if (inputs[i].name = 'cart_action[]') {
				if (inputs[i].checked == '1') {
					var products_id = inputs[i].id.split('_')[2];
					products_ids_str += '_' + products_id;
				}
			}
		}
		
		xHRObject.abort();
		if (window.ActiveXObject) {
			xHRObject.open("GET","AJAX_servers/ASC_server.php?action=remove&products_ids_str=" + products_ids_str + "&id=" + Number(new Date), true);	
			xHRObject.onreadystatechange = getData;
		}
		else if (window.XMLHttpRequest){
			xHRObject.onreadystatechange = getData;
			xHRObject.open("GET","AJAX_servers/ASC_server.php?action=remove&products_ids_str=" + products_ids_str + "&id=" + Number(new Date), true);	
		}
		xHRObject.send(null);
	}
}

function compare() {
	if(_no_item_selected == true) {
		alert(_no_item_message);
	}
	else {
		document.getElementById('cartArea').style.display='none';
		document.getElementById('cartArea').style.position='absolute';
		document.getElementById('compareArea').style.display='block';
		document.getElementById('compareArea').style.position='static';	
		compare_button_toggle_back();
	}
}

function back_to_tray() {
	document.getElementById('compareArea').style.display='none';
	document.getElementById('compareArea').style.position='absolute';	
	document.getElementById('cartArea').style.display='block';
	document.getElementById('cartArea').style.position='static';
	compare_button_toggle_compare();
}

function compare_button_toggle_compare() {
	var compare_button = document.getElementById('compare_button1');
	var compare_button_img = document.getElementById('compare_button_image1');
	var imgSrc = compare_button_img.src;
	var imgSrc_array = imgSrc.split('_back');
	var new_imgSrc = imgSrc_array[0] + imgSrc_array[1];
	compare_button_img.src = new_imgSrc;
	compare_button_img.title = 'Compare selected items';
	compare_button_img.alt = 'Compare selected items';
	compare_button.href="javascript:compare();";
}

function compare_button_toggle_back() {
	var compare_button = document.getElementById('compare_button1');
	var compare_button_img = document.getElementById('compare_button_image1');	
	var imgSrc = compare_button_img.src;
	var dot_pos = imgSrc.lastIndexOf('.');
	var ext = imgSrc.substring(dot_pos,imgSrc.length);
	var new_imgSrc = imgSrc.substring(0,dot_pos) + '_back' + ext;
	compare_button_img.src = new_imgSrc;
	compare_button_img.title= 'Back to tray';
	compare_button_img.alt= 'Back to tray';
	compare_button.href="javascript:back_to_tray();";
}

function asc_contain_comparable_product() {
	var inputs = document.getElementsByTagName('input');
	var comparable_count = 0;
	for(i=0;i<inputs.length;i++) {
		if (inputs[i].className == 'comparable_item') {
			var input_row = inputs[i].parentNode.parentNode;
			if (input_row.className.indexOf('ASC_hide')==-1) {
				comparable_count++;
			}
		}
	}
	if (comparable_count == 0) {
		return false;
	}
	else {
		return true;
	}
}

function asc_no_comparable_selected() {
	var inputs = document.getElementsByTagName('input');
	var selected_count = 0;
	for(i=0;i<inputs.length;i++) {
		if (inputs[i].className == 'comparable_item') {
			if (inputs[i].checked=='1') {
				selected_count++;
			}
		}
	}
	if (selected_count == 0) {
		return true;
	}
	else {
		return false;
	}
}
