/*
  $Id: general.js,v 1.3 2003/02/10 22:30:55 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

function SetFocus(TargetFormName) {
  var target = 0;
  if (TargetFormName != "") {
    for (i=0; i<document.forms.length; i++) {
      if (document.forms[i].name == TargetFormName) {
        target = i;
        break;
      }
    }
  }

  var TargetForm = document.forms[target];
    
  for (i=0; i<TargetForm.length; i++) {
    if ( (TargetForm.elements[i].type != "image") && (TargetForm.elements[i].type != "hidden") && (TargetForm.elements[i].type != "reset") && (TargetForm.elements[i].type != "submit") ) {
      TargetForm.elements[i].focus();

      if ( (TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password") ) {
        TargetForm.elements[i].select();
      }

      break;
    }
  }
}

function RemoveFormatString(TargetElement, FormatString) {
  if (TargetElement.value == FormatString) {
    TargetElement.value = "";
  }

  TargetElement.select();
}

function CheckDateRange(from, to) {
  if (Date.parse(from.value) <= Date.parse(to.value)) {
    return true;
  } else {
    return false;
  }
}

function IsValidDate(DateToCheck, FormatString) {
  var strDateToCheck;
  var strDateToCheckArray;
  var strFormatArray;
  var strFormatString;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var intDateSeparatorIdx = -1;
  var intFormatSeparatorIdx = -1;
  var strSeparatorArray = new Array("-"," ","/",".");
  var strMonthArray = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
  var intDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  strDateToCheck = DateToCheck.toLowerCase();
  strFormatString = FormatString.toLowerCase();
  
  if (strDateToCheck.length != strFormatString.length) {
    return false;
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strFormatString.indexOf(strSeparatorArray[i]) != -1) {
      intFormatSeparatorIdx = i;
      break;
    }
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strDateToCheck.indexOf(strSeparatorArray[i]) != -1) {
      intDateSeparatorIdx = i;
      break;
    }
  }

  if (intDateSeparatorIdx != intFormatSeparatorIdx) {
    return false;
  }

  if (intDateSeparatorIdx != -1) {
    strFormatArray = strFormatString.split(strSeparatorArray[intFormatSeparatorIdx]);
    if (strFormatArray.length != 3) {
      return false;
    }

    strDateToCheckArray = strDateToCheck.split(strSeparatorArray[intDateSeparatorIdx]);
    if (strDateToCheckArray.length != 3) {
      return false;
    }

    for (i=0; i<strFormatArray.length; i++) {
      if (strFormatArray[i] == 'mm' || strFormatArray[i] == 'mmm') {
        strMonth = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'dd') {
        strDay = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'yyyy') {
        strYear = strDateToCheckArray[i];
      }
    }
  } else {
    if (FormatString.length > 7) {
      if (strFormatString.indexOf('mmm') == -1) {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mm'), 2);
      } else {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mmm'), 3);
      }

      strDay = strDateToCheck.substring(strFormatString.indexOf('dd'), 2);
      strYear = strDateToCheck.substring(strFormatString.indexOf('yyyy'), 2);
    } else {
      return false;
    }
  }

  if (strYear.length != 4) {
    return false;
  }

  intday = parseInt(strDay, 10);
  if (isNaN(intday)) {
    return false;
  }
  if (intday < 1) {
    return false;
  }

  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth)) {
    for (i=0; i<strMonthArray.length; i++) {
      if (strMonth == strMonthArray[i]) {
        intMonth = i+1;
        break;
      }
    }
    if (isNaN(intMonth)) {
      return false;
    }
  }
  if (intMonth > 12 || intMonth < 1) {
    return false;
  }

  intYear = parseInt(strYear, 10);
  if (isNaN(intYear)) {
    return false;
  }
  if (IsLeapYear(intYear) == true) {
    intDaysArray[1] = 29;
  }

  if (intday > intDaysArray[intMonth - 1]) {
    return false;
  }
  
  return true;
}

function IsLeapYear(intYear) {
  if (intYear % 100 == 0) {
    if (intYear % 400 == 0) {
      return true;
    }
  } else {
    if ((intYear % 4) == 0) {
      return true;
    }
  }

  return false;
}

function ShowHideBox(boxId) {
	var Element = document.getElementById(boxId);
	if (Element.style.display=='none')
		Element.style.display='inline';
	else 
		Element.style.display='none';
}

function ajax(url,method,process_function){
	var XMLHttpRequestObject = false;

    if ( window.XMLHttpRequest ){
	    XMLHttpRequestObject = new XMLHttpRequest();
    }
    else if ( window.ActiveXObject ){
        XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
    }

	if( XMLHttpRequestObject ){
  	    var data_source = url + '&_t=' + Math.random();
   	    if (method=="POST") {
			XMLHttpRequestObject.open( "POST", data_source );
		} else {
			XMLHttpRequestObject.open( "GET", data_source );
		}
   	    XMLHttpRequestObject.onreadystatechange = function(){
			if ( XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200 ){
	
				var xmlDocument = XMLHttpRequestObject.responseXML;
				delete XMLHttpRequestObject;
				XMLHttpRequestObject = null;

				process_function(xmlDocument);
			}
	    }

    	XMLHttpRequestObject.send( null );
	}
}

var MyCartBoxLightMode = false;
var MyCartBoxContainer = null;
var MyCartInit = false;
var MyCartSubtotal = null;
var MyCartShipping = null;
var MyCartTotal = null;
var MyCartTotalBox = null;


function InitCart() {
	if (MyCartBoxLightMode) return false;
	if (document.getElementById('MyCartBox')!=null) {
		MyCartBoxContainer = document.getElementById('MyCartBoxContainer');
		MyCartSubtotal = document.getElementById('MyCartSubtotal');
		MyCartShipping = document.getElementById('MyCartShipping');
		MyCartTotal = document.getElementById('MyCartTotal');
		MyCartTotalBox = document.getElementById('MyCartTotalBox');
		MyCartInit = true;
		ShowCart();
	}
}

function ShowCart() {
	url = 'http://www.engroskompagniet.dk/xmlsrv.php?action=show_cart';
	var callback = function(xmlDocument) {
		var TmpCartBox = '';
	if (xmlDocument==null) {
			//err
		} else {
			var response = "";
			var shoppingcart = xmlDocument.getElementsByTagName('shoppingcart')[0];
			var shoppingcartItems = shoppingcart.getAttribute('items');
			var shoppingcartShipping = shoppingcart.getAttribute('shipping');
			var shoppingcartTotal = shoppingcart.getAttribute('total');
			//process response
			TmpCartBox = '';
			if (shoppingcartItems==0) {
				var Items = shoppingcart.getElementsByTagName('item');
					for (i=0;i<Items.length;i++) {
						TmpCartBox+= '<tr><td align="center">'+Items[i].firstChild.nodeValue+'</td></tr>';
					}
					MyCartTotalBox.style.display = 'none';
			} else {
				var Items = shoppingcart.getElementsByTagName('item');
				for (i=0;i<Items.length;i++) {
					/*
					ItemId = Items[i].getElementsByTagName('id')[0].firstChild.nodeValue;
					ItemName = Items[i].getElementsByTagName('name')[0].firstChild.nodeValue;
					ItemImage = Items[i].getElementsByTagName('image')[0].firstChild.nodeValue;
					ItemPrice = Items[i].getElementsByTagName('price')[0].firstChild.nodeValue;
					ItemQuantity = Items[i].getElementsByTagName('quantity')[0].firstChild.nodeValue;
					ItemFinal_price = Items[i].getElementsByTagName('final_price')[0].firstChild.nodeValue;
					ItemTax_class_id = Items[i].getElementsByTagName('tax_class_id')[0].firstChild.nodeValue;
					*/
					ItemHtml = Items[i].getElementsByTagName('html')[0].firstChild.nodeValue;
					TmpCartBox+= ItemHtml;
				}
				MyCartTotalBox.style.display = 'inline';
			}
			TmpCartBox = '<table id="MyCartBox" border="0" width="100%" cellspacing="0" cellpadding="0">'+TmpCartBox+'</table>';

			if (MyCartBoxContainer!=null) MyCartBoxContainer.innerHTML = TmpCartBox;
			if (MyCartShipping!=null) MyCartShipping.innerHTML = shoppingcartShipping;
			if (MyCartTotal!=null) MyCartTotal.innerHTML = shoppingcartTotal;
		}
	}
	ajax(url,'GET',callback);	
}

function CleanCart() {
	MyCartBox.innerHTML = '';
}

function RefreshCart() {
	//CleanCart();
	ShowCart();
}

function DelFromCart(product_id) {
	url = 'http://www.engroskompagniet.dk/shopping_cart.php?action=del_from_cart&products_id='+product_id+'&redirect=false';
	var callback = function(xmlDocument) {
		RefreshCart();
	}
	ajax(url,'GET',callback);	
}

var DisplayCartMessage = true;

function AddToCart(product_id, qty, opts, vals) {
	var query = 'http://www.engroskompagniet.dk/shopping_cart.php?action=add_to_cart&products_id='+product_id+'&qty='+qty;
	if (opts != null && vals != null)
		for (var x = 0; x < opts.length; x++) {
			query += '&attr[' + opts[x] + ']=' + vals[x];
		}
	var callback = function(xmlDocument) {
		RefreshCart();
		if (DisplayCartMessage)
			ShowSuccessBox();
	}
	ajax(query, 'GET', callback);
}

function AddToCartForm(form) {
	var prod_id = form.products_id.value;
	var qty = form.quantity.value;
	var opts = new Array();
	var vals = new Array();
	for (var i = 0; i < form.length; i++) {
		var e = form.elements[i];
		if (e.name != null && e.name.substr(0, 3) == 'id[') {
			if (e.value == '-1') {
				return false;
			}
			opts.push(e.name.substr(3, e.name.length-4));
			vals.push(e.value);
		}
	}
	AddToCart(prod_id, qty, opts, vals);
	return true;
}
var isIE = document.all?true:false;
if (!isIE) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
	if (isIE) {
		try {
		tempX = event.clientX + document.body.scrollLeft;
		tempY = event.clientY + document.body.scrollTop;
		} catch (ex) {}
	}
	else {
		tempX = e.pageX;
		tempY = e.pageY;
	}  
	if (tempX < 0){tempX = 0;}
	if (tempY < 0){tempY = 0;}
	return true;
}
var isIE = document.all?true:false;
if (!isIE) {
	if (document.documentElement.addEventListener)
		document.documentElement.addEventListener('mousemove', getMouseXY, true);
	//document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = getMouseXY;

function HideSuccessBox() {
	opacity('successBox', 100, 0, 300);
}

function ShowSuccessBox() {
	var x = document.getElementById('successBox');
	x.style.left = (tempX + 2) + 'px';
	x.style.top = (tempY - 29) + 'px';
	opacity('successBox', 0, 100, 300);
	setTimeout('HideSuccessBox()', 1800);
}

//init cart
if (typeof window.onload != 'function') {
		window.onload = InitCart;
} else {
	window.onload = function() {
		InitCart();
	}
}
