try {
  document.execCommand('BackgroundImageCache', false, true);
} catch(e) {}

function fakeTab() {
 if (window.event.keyCode == 13 && window.event.srcElement.getAttribute("accesskey") && (window.event.srcElement.tagName == "INPUT" || window.event.srcElement.tagName == "SELECT"))
 	return true;
 else if (window.event.keyCode == 13 && (window.event.srcElement.tagName == "INPUT" || window.event.srcElement.tagName == "SELECT"))
    window.event.keyCode = 9;
}

if (document.all) {
	document.onkeydown = fakeTab;
}

function setFocus() {
	if (document.forms[1]) {
		var x = document.forms[1].length;
		if (document.forms[1].id == 'login' || document.forms[1].id == 'register') { 
			for(i = 0; i < x; i++ ) {
				if ((document.forms[1].elements[i].type == 'text' || document.forms[1].elements[i].type == 'password') && !document.forms[1].elements[i].disabled && !document.forms[1].elements[i].readOnly) {
					if (document.forms[1].elements[i].value.length == 0) {
						document.forms[1].elements[i].focus();
						break;
					}
				}
			}
		}
	}
}

function isArray(a) {
    return isObject(a) && a.constructor == Array;
}

function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}

function isFunction(a) {
    return typeof a == 'function';
}

function getPageCoords() {
	var coords = {y: 0};
	if (self.pageYOffset) {
		coords.y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop) {
		coords.y = document.documentElement.scrollTop;
	}
	else if (document.body) {  
		coords.y = document.body.scrollTop;
	}
	return coords;
}

function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    	obj.addEventListener(evType, fn, useCapture);
    	return true;
  } else if (obj.attachEvent){
    	var r = obj.attachEvent("on"+evType, fn);
    	return r;
  }
}

function reCalcSum() {
	var str = '';
	var arrQuantity = document.getElementsByName('frmQuantity');
	var arrQuantityID = document.getElementsByName('frmQuantityID');
	var bValid = true;
	for(i = 0; i < arrQuantity.length;i++) {
		if (arrQuantity[i].value < 1 || isNaN(arrQuantity[i].value)) {
			alert('Antal måste vara ett eller högre'); arrQuantity[i].focus(); arrQuantity[i].select(); bValid = false;
		}
	}
	for(i = 0; i < arrQuantity.length;i++) {
		str = str + arrQuantityID[i].value + ':' + arrQuantity[i].value + '|'
	}
	if (bValid == true) {
		document.getElementById('frmUpdateQuantity').value = str;
		if (document.all) { document.articles.submit() } else { document.getElementById('articles').submit() }
	}
}

function resetForm() {
	if (confirm('Detta kommer att starta en ny inmatning')) {
		document.forms[1].reset();
		setFocus();
	}
}

function switchProduct(val) {
	document.location = 'default.asp?product=' + val;
}

function givefocus(field) {
	var objField = document.getElementById(field);
	objField.focus();
	if ((objField.type == "text" || objField.type == "password" || objField.type == "textarea") && (document.all)) { 
  		objField.blur();
  		objField.select();
	}
}

function getElementsByClassName(node, classname)
{
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

function menuToggle(obj){
   var ulNode = getFirstChildNodeByTagName(obj.parentNode,"UL");
   if (ulNode.style.display == "none" || ulNode.style.display == "") {
		var elements = getElementsByClassName(document.getElementById('menu'),'subcon');
		for (var i=0;i<elements.length;i++) {
			elements[i].parentNode.className = "collapsed";
			elements[i].style.display = "none";
		}
		
		ulNode.parentNode.className = "expanded";
   		ulNode.style.display = "block";
   }
   else {
		var elements = ulNode.getElementsByTagName("UL");
		for (var i=0;i<elements.length;i++) {
			elements[i].parentNode.className = "collapsed";
			elements[i].style.display = "none";
		}
   		ulNode.parentNode.className = "collapsed";
   		ulNode.style.display = "none";
   }
}

function getFirstChildNodeByTagName(parent,tagName){
   for (var i=0;i<parent.childNodes.length;i++)
      if (parent.childNodes[i].tagName == tagName) return parent.childNodes[i]; 
   	  return false;
}

function get_cookie(name) {
  var search = name + '=';
  var returnvalue = '';
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search);
    if (offset != -1) { 
      offset += search.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      returnvalue = unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}

function setMenu() {
	var ulNodes = '';
	var nodeList = document.getElementById('menu').getElementsByTagName('ul');
	for(i = 0; i < nodeList.length;i++) {
		element = nodeList[i];
		if (element.style.display == 'block') {
			ulNodes = ulNodes + ' ' + element.id;
		}
	}
	var coords = getPageCoords();
	document.cookie = top.document.location.host + '=' + ulNodes + '|' + coords.y;
}

function closeContext() {
	if (document.getElementById("contextmenu")) { document.getElementById("body").removeChild(document.getElementById("contextmenu")); }
}

function getMenu() {
	if (get_cookie(top.document.location.host) != '') {
		var sCookie = get_cookie(top.document.location.host);
		var arrValues = sCookie.split('|');
		var nodeList = arrValues[0].split(' ');
		var element;
		for (i = 0 ; i < nodeList.length; i++) {
			if (document.getElementById(nodeList[i])) {
				element = nodeList[i];
				document.getElementById(element).parentNode.className = "expanded";
				document.getElementById(element).style.display = 'block';
			}
		}
	}
	
	addKeyHandler(document.body);
	document.body.addKeyDown(76, function() {if (window.event.ctrlKey && window.event.altKey) document.location = 'default.asp?page=login';});
	addEvent(document.getElementById('logotype'),'click', goHome, false);
	addEvent(document.getElementById('body'),'click', closeContext, false);
	setFocus();
	if (window.scrollTo && isArray(arrValues)) { window.scrollTo(0,arrValues[1]); }
}

function checkLogin() {
	
	if (document.getElementById('frmUsername').value.length == 0) 
	{
		alert('Du måste ange e-postadress');
		givefocus('frmUsername');
		return false;
	}
	else if (document.getElementById('frmPassword').value.length == 0) 
	{
		alert('Du måste ange lösenord');
		givefocus('frmPassword');
		return false;
	}
}

function addProduct(product, row) {
	
	if (document.getElementById('frmQuantity' + row).value > 0) {
		document.getElementById('frmProductID').value = product;
		document.getElementById('frmProductQuantity').value = document.getElementById('frmQuantity' + row).value;
		if (document.all) { document.articles.submit() } else { document.getElementById('articles').submit() }
	}
	else {
		alert('Antal måste vara ett eller högre');
	}
}

function deleteShoppingcart(rowid) {
	document.getElementById('frmDeleteShoppingcart').value = rowid;
	if (document.all) { document.articles.submit() } else { document.getElementById('articles').submit() }
}

function deleteShoppingcartAll() {
	if (confirm('Är du säker på att alla varor ska raderas?')) {
		document.getElementById('frmDeleteShoppingcartAll').value = 1;
		if (document.all) { document.articles.submit() } else { document.getElementById('articles').submit() }
	}
}

function checkMember() {
	
	var nummer = '0123456789 ';
	var telefon = '-/0123456789 ';
	
	if (document.getElementById('frmEmail').value.length == 0) 
	{
		alert('Du måste ange e-postadress');
		givefocus('frmEmail');
		return false;
	}
	else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById('frmEmail').value)) {
  		alert('Du har fyllt i en ogiltig e-postadress');
		givefocus('frmEmail');
		return false;
  	}
	if (document.getElementById('frmFirstname').value.length == 0) 
	{
		alert('Du måste ange förnamn');
		givefocus('frmFirstname');
		return false;
	}
	if (document.getElementById('frmLastname').value.length == 0) 
	{
		alert('Du måste ange efternamn');
		givefocus('frmLastname');
		return false;
	}
	if (document.getElementById('frmAdressA').value.length == 0) 
	{
		alert('Du måste ange gatuadress');
		givefocus('frmAdressA');
		return false;
	}
	if (document.getElementById('frmPostNr').value.length == 0) 
	{
		alert('Du måste ange postnummer');
		givefocus('frmPostNr');
		return false;
	}
	for (var i=0;i < document.getElementById('frmPostNr').value.length;i++)
	{
		if (nummer.indexOf(document.getElementById('frmPostNr').value.substring(i,i+1))==-1)
		{
			alert('Postnummer är fel angivet (måste vara ett nummer)');
			givefocus('frmPostNr');
			return false;
		}
	}
	if (document.getElementById('frmCity').value.length == 0) 
	{
		alert('Du måste ange ort');
		givefocus('frmCity');
		return false;
	}
	if (document.getElementById('frmTelephone').value.length != 0) {
		for (var i=0;i < document.getElementById('frmTelephone').value.length;i++)
		{
			if (telefon.indexOf(document.getElementById('frmTelephone').value.substring(i,i+1))==-1)
			{
				alert('Telefonnummer innehåller otillåtna tecken');
				givefocus('frmTelephone');
				return false;
			}
		}
	}
	for (var i=0;i < document.getElementById('frmCellular').value.length;i++)
	{
		if (telefon.indexOf(document.getElementById('frmCellular').value.substring(i,i+1))==-1)
		{
			alert('Mobiltelefonnummer innehåller otillåtna tecken');
			givefocus('frmCellular');
			return false;
		}
	}
	for (var i=0;i < document.getElementById('frmFax').value.length;i++)
	{
		if (telefon.indexOf(document.getElementById('frmFax').value.substring(i,i+1))==-1)
		{
			alert('Faxnummer innehåller otillåtna tecken');
			givefocus('frmFax');
			return false;
		}
	}
}

function getCompanyInfo(sInput) {
	document.getElementById('frmGetCompany').value = 1;
	if (document.all) { 
		document.register.action = 'default.asp?page=' + sInput;
		document.register.submit();
		document.register.action = 'default.asp?page=confirm';
	}
	else {
		document.getElementById('register').action = 'default.asp?page=' + sInput; 
		document.getElementById('register').submit();
		document.getElementById('register').action = 'default.asp?page=confirm';  
	}
}

function checkCompany() {
	
	var nummer = '0123456789 ';
	var telefon = '-/0123456789 ';
	
	if (document.getElementById('frmOrgnr').value.length == 0) 
	{
		alert('Du måste ange organisationsnummer');
		givefocus('frmOrgnr');
		return false;
	}
	if (document.getElementById('frmCompany').value.length == 0) 
	{
		alert('Du måste ange företagsnamn');
		givefocus('frmCompany');
		return false;
	}
	if (document.getElementById('frmName').value.length == 0) 
	{
		alert('Du måste ange kontaktperson');
		givefocus('frmName');
		return false;
	}
	if (document.getElementById('frmEmail').value.length == 0) 
	{
		alert('Du måste ange e-postadress');
		givefocus('frmEmail');
		return false;
	}
	else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById('frmEmail').value)) {
  		alert('Du har fyllt i en ogiltig e-postadress');
		givefocus('frmEmail');
		return false;
  	}
	if (document.getElementById('frmTelephone').value.length == 0) 
	{
		alert('Du måste ange telefonnummer');
		givefocus('frmTelephone');
		return false;
	}
	if (document.getElementById('frmTelephone').value.length != 0) {
		for (var i=0;i < document.getElementById('frmTelephone').value.length;i++)
		{
			if (telefon.indexOf(document.getElementById('frmTelephone').value.substring(i,i+1))==-1)
			{
				alert('Telefonnummer innehåller otillåtna tecken');
				givefocus('frmTelephone');
				return false;
			}
		}
	}
	for (var i=0;i < document.getElementById('frmCellular').value.length;i++)
	{
		if (telefon.indexOf(document.getElementById('frmCellular').value.substring(i,i+1))==-1)
		{
			alert('Mobiltelefonnummer innehåller otillåtna tecken');
			givefocus('frmCellular');
			return false;
		}
	}
	for (var i=0;i < document.getElementById('frmFax').value.length;i++)
	{
		if (telefon.indexOf(document.getElementById('frmFax').value.substring(i,i+1))==-1)
		{
			alert('Faxnummer innehåller otillåtna tecken');
			givefocus('frmFax');
			return false;
		}
	}
	if (document.getElementById('frmAdressA').value.length == 0) 
	{
		alert('Du måste ange gatuadress');
		givefocus('frmAdressA');
		return false;
	}
	if (document.getElementById('frmPostNr').value.length == 0) 
	{
		alert('Du måste ange postnummer');
		givefocus('frmPostNr');
		return false;
	}
	for (var i=0;i < document.getElementById('frmPostNr').value.length;i++)
	{
		if (nummer.indexOf(document.getElementById('frmPostNr').value.substring(i,i+1))==-1)
		{
			alert('Postnummer är fel angivet (måste vara ett nummer)');
			givefocus('frmPostNr');
			return false;
		}
	}
	if (document.getElementById('frmCity').value.length == 0) 
	{
		alert('Du måste ange ort');
		givefocus('frmCity');
		return false;
	}
}

function checkSchool() {
	
	var nummer = '0123456789 ';
	var telefon = '-/0123456789 ';
	
	if (document.getElementById('frmEmail').value.length == 0) 
	{
		alert('Du måste ange e-postadress');
		givefocus('frmEmail');
		return false;
	}
	if (document.getElementById('frmCompany').value.length == 0) 
	{
		alert('Du måste ange skola');
		givefocus('frmCompany');
		return false;
	}
	if (document.getElementById('frmName').value.length == 0) 
	{
		alert('Du måste ange kontaktperson');
		givefocus('frmName');
		return false;
	}
	else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById('frmEmail').value)) {
  		alert('Du har fyllt i en ogiltig e-postadress');
		givefocus('frmEmail');
		return false;
  	}
	if (document.getElementById('frmTelephone').value.length == 0) 
	{
		alert('Du måste ange telefonnummer');
		givefocus('frmTelephone');
		return false;
	}
	if (document.getElementById('frmTelephone').value.length != 0) {
		for (var i=0;i < document.getElementById('frmTelephone').value.length;i++)
		{
			if (telefon.indexOf(document.getElementById('frmTelephone').value.substring(i,i+1))==-1)
			{
				alert('Telefonnummer innehåller otillåtna tecken');
				givefocus('frmTelephone');
				return false;
			}
		}
	}
	for (var i=0;i < document.getElementById('frmCellular').value.length;i++)
	{
		if (telefon.indexOf(document.getElementById('frmCellular').value.substring(i,i+1))==-1)
		{
			alert('Mobiltelefonnummer innehåller otillåtna tecken');
			givefocus('frmCellular');
			return false;
		}
	}
	for (var i=0;i < document.getElementById('frmFax').value.length;i++)
	{
		if (telefon.indexOf(document.getElementById('frmFax').value.substring(i,i+1))==-1)
		{
			alert('Faxnummer innehåller otillåtna tecken');
			givefocus('frmFax');
			return false;
		}
	}
	if (document.getElementById('frmAdressA').value.length == 0) 
	{
		alert('Du måste ange gatuadress');
		givefocus('frmAdressA');
		return false;
	}
	if (document.getElementById('frmPostNr').value.length == 0) 
	{
		alert('Du måste ange postnummer');
		givefocus('frmPostNr');
		return false;
	}
	for (var i=0;i < document.getElementById('frmPostNr').value.length;i++)
	{
		if (nummer.indexOf(document.getElementById('frmPostNr').value.substring(i,i+1))==-1)
		{
			alert('Postnummer är fel angivet (måste vara ett nummer)');
			givefocus('frmPostNr');
			return false;
		}
	}
	if (document.getElementById('frmCity').value.length == 0) 
	{
		alert('Du måste ange ort');
		givefocus('frmCity');
		return false;
	}
}

function goHome() {
	window.location = 'default.asp';
}

function addKeyHandler(element) {

	element._keyObject = new Array();
	element._keyObject["keydown"] = new Array();
	element._keyObject["keyup"] = new Array();
	element._keyObject["keypress"] = new Array();
	
	element.addKeyDown = function (keyCode, action) {
		element._keyObject["keydown"][keyCode] = action;
	}
	
	element.removeKeyDown = function (keyCode) {
		element._keyObject["keydown"][keyCode] = null;
	}

	element.addKeyUp = function (keyCode, action) {
		element._keyObject["keyup"][keyCode] = action;
	}
	
	element.removeKeyUp = function (keyCode) {
		element._keyObject["keyup"][keyCode] = null;
	}
	
	element.addKeyPress = function (keyCode, action) {
		element._keyObject["keypress"][keyCode] = action;
	}
	
	element.removeKeyPress = function (keyCode) {
		element._keyObject["keypress"][keyCode] = null;
	}
	
	function handleEvent() {
		var type = window.event.type;
		var code = window.event.keyCode;
		
		if (element._keyObject[type][code] != null) 
			element._keyObject[type][code]();
	}
	
	element.onkeypress = handleEvent;
	element.onkeydown = handleEvent;
	element.onkeyup = handleEvent;
} 

addEvent(window,'load', getMenu, false);
addEvent(window,'unload', setMenu, false);

