//AJAX Functions BEGIN
var ajaxObjects = new Array();

function parseXMLresponse(index) {
	if (window.ActiveXObject) {
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.loadXML(ajaxObjects[index].response);
		return xmlDoc;
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
		var parser = new DOMParser();
		var xmlDoc = parser.parseFromString(ajaxObjects[index].response,"text/xml");
		return xmlDoc;
	}
	else {
		alert('Din browser understøtter ikke denne funktion.\n\nOpdater din browser til en nyere version.');
	}
}
//AJAX Functions END


function BuildDate(objHolder) {
	var lngDay = objHolder.all.DayNumber.value;
	var lngMonth = objHolder.all.MonthNumber.value;
	var lngYear = objHolder.all.YearNumber.value;
	
	if ((lngDay == "") || (lngMonth == "") || (lngYear == "")) {
		return "";
	} else {
		return lngDay + "-" + lngMonth + "-" + lngYear;
	}
}

function BuildDateTime(objHolder) {
	var lngDay = objHolder.all.DayNumber.value;
	var lngMonth = objHolder.all.MonthNumber.value;
	var lngYear = objHolder.all.YearNumber.value;
	var lngHour = objHolder.all.HourNumber.value;
	var lngMinute = objHolder.all.MinuteNumber.value;
	var strTime;
	
	if ((lngDay == "") || (lngMonth == "") || (lngYear == "")) {
		return "";
	} else {
		if (lngHour == "") {
			strTime = "";
		} else {
			if (lngMinute == "") lngMinute = "0";
			strTime = " " + lngHour + ":" + lngMinute;
		}
		return lngDay + "-" + lngMonth + "-" + lngYear + strTime;
	}
}

// DeliveryPrice calc
function CalculateDeliveryPrice(postalcode) {
	if (postalcode.length > 0) {
		var ajaxIndex = ajaxObjects.length;
		ajaxObjects[ajaxIndex] = new sack();
		var url = "/ajax/getdeliveryprice.asp?postalcode=" + postalcode;
		ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
		ajaxObjects[ajaxIndex].onLoading = function() { } ;
		ajaxObjects[ajaxIndex].onCompletion = function() { SetDeliveryPriceResult(ajaxIndex); } ;	
		ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function
	} else {
		document.getElementById("deliveryPriceContainer").style.display = "none";	
	}
}

function SetDeliveryPriceResult(index) {
	var xml = parseXMLresponse(index);
	var deliveryData = xml.getElementsByTagName("deliverydata");
	price = deliveryData[0].getElementsByTagName("price")[0].childNodes[0].nodeValue;
	discountPrice = deliveryData[0].getElementsByTagName("discountPrice")[0].childNodes[0].nodeValue;
	if (price != "0,00") {
		document.getElementById("deliveryPriceErrContainer").style.display = "none";
		document.getElementById("deliveryPriceContainer").style.display = "";		
		document.getElementById("deliveryPriceResult").innerHTML = price;
		document.getElementById("deliveryDiscountPriceResult").innerHTML = discountPrice;
	} else {
		document.getElementById("deliveryPriceErrContainer").style.display = "";
		document.getElementById("deliveryPriceContainer").style.display = "none";		
	}
}
// DeliveryPrice calc


function removeCartItem(itemId) {
	document.all.universal.action='cart.asp?mode=remove&itemid='+itemId;
	document.all.universal.submit();
}

function popPage(pageURL) {
	popup(pageURL, "popup", 450, 300, 1)	
}

function popImage(imageId) {
	popup("/popupimage.asp?id="+imageId, "popup", 50, 50, 0)
}

function moveOptions(oSource, oTarget) {
	var oSourceItem, oTargetItem
	var aRemove = Array() // Array of item-indexes to be removed
	var iCount = 0 // Item-count
	var iNewIndex
	for (i=0; i < oSource.length; i++) {
		if (oSource.item(i).selected) {
			iCount++
			aRemove[iCount] = i
			oSourceItem = oSource.item(i)
			oTargetItem = document.createElement("OPTION")
			oTargetItem.text = oSourceItem.text
			oTargetItem.value = oSourceItem.value
			iNewIndex = oTarget.length
			
			// Find correct target position (sort)
			for (j=0; j < oTarget.length; j++) {
				if (oSource.item(i).text < oTarget.item(j).text) {
					iNewIndex = j
					break
				}
			}
			oTarget.add(oTargetItem, iNewIndex)
		}
	}
	
	// Remove selected items
	for (i=1; i <= iCount; i++) {
		oSource.remove(aRemove[i]-(i-1))
	}
}

function selectAllOptions(oSelect) {
	for (i=0; i < oSelect.length; i++) {
		oSelect.item(i).selected = true
	}
}

function sure() {
	return confirm("Er du sikker?")
}

function alignMenuRight(oMenu) {
	var oDiv
}

function showMenu(oMenu) {
	oMenu.className = "menuheaderhighlight"
	oMenu.all.menu.style.display = "";
}

function hideMenu(oMenu) {
	oMenu.all.menu.style.display = "none";
	oMenu.className = "menuheader"
}

function popup(mypage, myname, w, h, scroll) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
	win = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

function navigate(strUrl) {
	var strUrl;
	document.location = strUrl;
	return false;
}


function openCentered(strUrl, intWidth, intHeight)
{
	intLeft = Math.round((screen.availWidth - intWidth) / 2)
	intTop  = Math.round((screen.availHeight - intHeight) / 2)

	return open (strUrl, 'new_window'+Math.floor(Math.random()*1000), 'scrollbars=yes,status=no,menubar=no,locationbar=no,left=' + intLeft + ',top=' + intTop + ',width=' + intWidth + ',height=' + intHeight);
}


function dateAddExtention(p_Interval, p_Number){ 
 
 
   var thing = new String(); 
    
    
   //in the spirt of VB we'll make this function non-case sensitive 
   //and convert the charcters for the coder. 
   p_Interval = p_Interval.toLowerCase(); 
    
   if(isNaN(p_Number)){ 
    
      //Only accpets numbers  
      //throws an error so that the coder can see why he effed up    
      throw "The second parameter must be a number. \n You passed: " + p_Number; 
      return false; 
   } 
 
   p_Number = new Number(p_Number); 
   switch(p_Interval.toLowerCase()){ 
      case "yyyy": {// year 
         this.setFullYear(this.getFullYear() + p_Number); 
         break; 
      } 
      case "q": {      // quarter 
         this.setMonth(this.getMonth() + (p_Number*3)); 
         break; 
      } 
      case "m": {      // month 
         this.setMonth(this.getMonth() + p_Number); 
         break; 
      } 
      case "y":      // day of year 
      case "d":      // day 
      case "w": {      // weekday 
         this.setDate(this.getDate() + p_Number); 
         break; 
      } 
      case "ww": {   // week of year 
         this.setDate(this.getDate() + (p_Number*7)); 
         break; 
      } 
      case "h": {      // hour 
         this.setHours(this.getHours() + p_Number); 
         break; 
      } 
      case "n": {      // minute 
         this.setMinutes(this.getMinutes() + p_Number); 
         break; 
      } 
      case "s": {      // second 
         this.setSeconds(this.getSeconds() + p_Number); 
         break; 
      } 
      case "ms": {      // second 
         this.setMilliseconds(this.getMilliseconds() + p_Number); 
         break; 
      } 
      default: { 
       
         //throws an error so that the coder can see why he effed up and 
         //a list of elegible letters. 
         throw   "The first parameter must be a string from this list: \n" + 
               "yyyy, q, m, y, d, w, ww, h, n, s, or ms.  You passed: " + p_Interval; 
         return false; 
      } 
   } 
   return this; 
} 
Date.prototype.dateAdd = dateAddExtention;



//**********************************************************************
//* BEGIN ELEMENT APPERANCE FUNCTIONS
//**********************************************************************

function setElementDisplay(obj, state) {
	obj.style.display = state;
}

function setElementVisibility(obj, isVisible) {
	if (isVisible) {
		obj.style.visibility = "visible";
	} else {
		obj.style.visibility = "hidden";
	}	
}

function ToggleElementVisibility(obj){
    var elementVisible = (obj.style.visibility != "visible")
    setElementVisibility(obj, elementVisible);    
}

function ToggleElementDisplay(obj){
    var elementHidden = (obj.style.diaplay == "none")
    if (elementHidden) {
		setElementDisplay(obj, "");
    } else {
		setElementDisplay(obj, "none");
    }
}



/* BEGIN MOUSE HOWER FUNCTIONS */
function MO_BgColor(e, xBgColor) { e.style.backgroundColor = '#' + xBgColor; }
function MU_BgColor(e, xBgColor) { e.style.backgroundColor = '#' + xBgColor; }
function MO_ClassName(e, strClassName) { e.className = strClassName; }
function MU_ClassName(e, strClassName) { e.className = strClassName; }

function SetCSSClass(e, strClassName) { e.className = strClassName; }
function SetBackgroundColor(e, xBgColor) { e.style.backgroundColor = '#' + xBgColor; }
/* END MOUSE HOWER FUNCTIONS */

//**********************************************************************
//* END ELEMENT APPERANCE FUNCTIONS
//**********************************************************************

function ToggleGiftCardPaymentForm() {
	e = document.getElementById("GiftCardToggleLink");
	if (e.style.display == "") {
		setElementDisplay(e, "none");
		setElementDisplay(document.getElementById("GiftCards"), "");
	} else {
		setElementDisplay(e, "");
		setElementDisplay(document.getElementById("GiftCards"), "none");
	}
}