/*var website = "http://www.serendipity.dk/";*/
/*var website = "http://serendipity.dev.visionteam.dk/";*/
var website = 'http://' + window.location.hostname + '/';
var errorCode = 0;
var msie = navigator.userAgent.indexOf("MSIE") > 0 ? 1 : 0;
/*
var visma_lang = '45';
var visma_cur  = '999';
*/
var order_page_id = 28;
var receipt_page_id = 28;

function storeCountry(id, obj, lang, cHash) { 
	if(obj.selectedIndex > 0) {
		fm = obj.form;
		ctry = obj.value;
		fm.action = "index.php?id=" + id + "&ctry=" + ctry + "&L=" + lang + "&cHash=" + cHash;
		fm.submit();
	}
}

function soundOnOff(mode) {
}

function setFocusOnFirstCell() {
	var cell = document.getElementsByTagName("select");
	if(cell.length == 0) {
		return false;
	}
	else {
	   for(var i = 0; i < cell.length; i++) {
	   	  if(cell[i].type == "select-one") {
	         cell[i].focus();
	         return true;
	      }
	   }
	   return true;
	}
}

function init() {
	if(window.location.href.indexOf('#') == 0) {
		if(setFocusOnFirstCell() == false) {
			setTimeout('setFocusOnFirstCell()', 50);
		}
	}
}

init();


function addZeroes ( strValue ) {
/*********************************************
DESCRIPTION: Adds zero'es to the end of string

PARAMETERS: strValue - source string containing 

RETURNS: String modified with zeroes

*/

	if(!/\./.test(strValue)) {
		strValue += ".00";
	}
	else if (!/\.\d/.test(strValue)) {
		strValue += "00";
	}
	
	else if (!/\.\d\d/.test(strValue)) {
		strValue += "0";
	}
	return strValue;
}

function addCommas( strValue ) {
/************************************************
DESCRIPTION: Inserts commas into numeric string.

PARAMETERS:
  strValue - source string containing commas.

RETURNS: String modified with comma grouping if
  source was all numeric, otherwise source is
  returned.

REMARKS: Used with integers or numbers with
  2 or less decimal places.
*************************************************/
  var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');
    //check for match to search criteria
    while(objRegExp.test(strValue)) {
       //replace original string with first group match,
       //a comma, then second group match
       strValue = strValue.replace(objRegExp, '$1,$2');
    }
  return strValue;
}


function addCurrency( strValue, d1, d2 ) {
/************************************************
DESCRIPTION: Formats a number as currency.

PARAMETERS:
  strValue - Source string to be formatted

REMARKS: Assumes number passed is a valid
  numeric value in the rounded to 2 decimal
  places.  If not, returns original value.
*************************************************/
  var objRegExp = new RegExp(/-?[0-9]+\.[0-9]{2}$/);

    strValue = addZeroes ( strValue );

    if( objRegExp.test(strValue)) {
      objRegExp.compile('^-');
      strValue = addCommas(strValue);
      if (objRegExp.test(strValue)){
        strValue = '(' + strValue.replace(objRegExp,'') + ')';
      }
      //return '�' + strValue;
      return strValue;
    }
    else
      return "0.00"; //strValue;
}
		

function removeCurrency( strValue ) {
/************************************************
DESCRIPTION: Removes currency formatting from
  source string.

PARAMETERS:
  strValue - Source string from which currency formatting
     will be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /\(/;
  var strMinus = '';

  //check if negative
  if(objRegExp.test(strValue)){
    strMinus = '-';
  }

  strValue = removeCommas( strValue );
  
  objRegExp = /\)|\(|[,]/g;
  strValue = strValue.replace(objRegExp,'');
  if(strValue.indexOf('�') >= 0){
    strValue = strValue.substring(1, strValue.length);
  }
  return strMinus + strValue;
}

function removeCommas( strValue ) {
/************************************************
DESCRIPTION: Removes commas from source string.

PARAMETERS:
  strValue - Source string from which commas will
    be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /,/g; //search for commas globally

  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}

var lastInputObject = null;

function isValueStock(obj, elemNo, e) {
	
	if(window.event) {
	    nxs_keynum = e.keyCode;
	}
	else if(e.which) {
	  	nxs_keynum = e.which;
	}
	
	else {
		return true;
	}

	keychar = String.fromCharCode(nxs_keynum); 
	if(nxs_keynum == 9 || nxs_keynum == 13 || 
  		(keychar >= '0' && keychar <='9')) {

  		if(document.getElementById("s"+obj.id.substr(0, obj.id.indexOf("-"))+"_"+elemNo)) {
			var elmValue = document.getElementById("s"+obj.id.substr(0, obj.id.indexOf("-"))+"_"+elemNo).innerHTML;
			
			if(eval(obj.value + keychar) > elmValue) {
				alert("Quantity is: " + eval(obj.value + keychar) + "    Items in stock is: " + elmValue + "\n\n" + msg_str[visma_lang][4]);
				obj.value = "";
				obj.focus();
				//obj.select();
				return false;
			}
			
  		}
  		
  		if(msie && nxs_keynum == 13) {
			if(e.keyCode) { e.keyCode = 9; }
		}
  		
  	}
  	return true;
}

function nxs_recalc(obj) {
	if(isNaN(obj.id.substr(0,1)) && (obj.id.substr(0,1).toLowerCase() != 'w')) {

		var mobj = obj.id.substr(obj.id.lastIndexOf("-")+1);	
	}
	else {

		var mobj = obj.id.substr(0, obj.id.lastIndexOf("-"));
		if(isNaN(obj.value)) {
		
			alert("Field must only contain numbers!");
			obj.select();
			obj.focus();
			return false;
		}
	}

   var mbody = document.getElementsByTagName("form")[0];
   var minp = mbody.getElementsByTagName("input");
   var msum = 0;
   
   for (var i = 0; i < minp.length; i++) {
      if(minp[i].id) {
		    if(minp[i].id.substr(0, minp[i].id.lastIndexOf("-")) == mobj) {
		       var mptag = minp[i].id.substr(minp[i].id.lastIndexOf("_"));
		       
		       /* Find label v�rdien fra selectboksen */
   		   	   var selObj = document.getElementById("nxs-serendipity-style-" + mobj);
   		   	   //var pid = selObj.options[selObj.selectedIndex].label;
   		   	   var pid = selObj.id.substr(selObj.id.lastIndexOf("-")+1);
   		   	   //alert(pid+"_pricevalue" + mptag);
   		   	   var mprice = document.getElementById(pid+"_pricevalue" + mptag).value;   		   	   
			   msum += minp[i].value * mprice;
		    }
		  }
   }
  
  if(isNaN(msum)) {
  	 //document.getElementById(mobj+"_subtotal").innerHTML = "Error";
  	 document.getElementById(mobj+"_subtotal").value = "Error";
  	 //document.getElementById("total_amount").innerHTML = "Error";
  	 document.getElementById("total_amount").value = "Error";
  	 errorCode = 100;
  }
  else { 
  	 if(msie == 1) {
  	 	//alert(document.getElementById("total_amount").innerHTML);
        document.getElementById(mobj+"_subtotal").innerHTML = addCurrency(msum, ".", ",");
        //document.getElementById(mobj+"_subtotal").value = addCurrency(msum, ".", ",");
        document.getElementById("total_amount").innerHTML = addCurrency(recalcTotal(obj));
  	 }
  	 else {
  	 	//console.log(mobj);
        document.getElementById(mobj+"_subtotal").value = addCurrency(msum, ".", ",");
        document.getElementById("total_amount").value = addCurrency(recalcTotal(obj));
  	 }
     errorCode = 0;
  }

  lastInputObject = obj;
}

function recalcTotal(obj) {
	var mbody = obj.form;
	
	var mtd = mbody.getElementsByTagName("input");
	if(msie) {
	   mtd = mbody.getElementsByTagName("span");
	}
	
	var msum = 0;
	for(var i = 0; i < mtd.length; i++) {
		if(mtd[i].id) {
			if(mtd[i].id.substr(mtd[i].id.lastIndexOf("_")+1) == "subtotal") {
				if(msie) {
			   		msum += parseFloat(removeCurrency(mtd[i].innerHTML));
				}
				else {
			   		msum += parseFloat(removeCurrency(mtd[i].value));
				}
			}
		}
	}
	
	return msum;
} 

function formReset(obj) {
	var form = obj.form;
	/*  mangler at nulstille pris: */
	for(var i = 0; i < form.length; i++) {
		if(form[i].type == "text") {
		   	if(form[i].disabled) {
		     		form[i].value = "0.00";
		  	}
		  	else {
		   	   form[i].value = "";
		   	}
		}
		if(form[i].type == "select-one") {
			form[i].options[0].selected = true;
		}
		if(form[i].type == "hidden" && form[i].id.substr(0,6) == "style-") {
			form[i].value = "noitem";
		}
		
		
		if(form[i].type == "hidden" && form[i].id.substr(form[i].id.indexOf("_")+1,10) == "pricevalue") {
			//-noitem
			form[i].id = form[i].id.substr(0, form[i].id.indexOf("-")) + "-noitem" + form[i].id.substr(form[i].id.indexOf("_"));
			form[i].value = "0.00";
		}
	}
	
	
	/*
	var mtd = form.getElementsByTagName("td");
	for(var i = 0; i < mtd.length; i++) {
		if(mtd[i].id) {
			if(mtd[i].id.substr(mtd[i].id.lastIndexOf("_")+1) == "subtotal" ||
			   mtd[i].id.substr(mtd[i].id.indexOf("-"), 11) == "-price-text") {
			   //mtd[i].value = addCurrency("0.00", ".", ",")
			}
		}
	}
	
	//document.getElementById("total_amount").value = addCurrency("0.00", ".", ","); 
	*/
	lastInputObject = null;
	setFocusOnFirstCell();
}


function resetSalesLine(obj, stocks) {

   var mobj = obj.id.substr(obj.id.lastIndexOf("-")+1);
   var mbody = document.getElementsByTagName("form")[0];
   var minp = mbody.getElementsByTagName("input");
   var m = n = 0;
   var stock = stocks[m].getElementsByTagName("stockQty");

   for (var i = 0; i < minp.length; i++) {

      if(minp[i].id) {
		    if(minp[i].id.substr(0, minp[i].id.lastIndexOf("-")) == mobj) {
		    	
		    	if(!stock[n]) { 
		    		n = 0; 
		    		m++; 
		    		stock = stocks[m].getElementsByTagName("stockQty");
		    	}
		    	//alert(stock[n].firstChild.nodeValue);
		    	if((stock[n].firstChild.nodeValue > 0) || (boolStock == 0 && obj.selectedIndex > 0)) { 
		    		minp[i].disabled = "";
		    		minp[i].style.backgroundColor = "#fff";
		    	}
		    	else {
		    		minp[i].disabled = "disabled";
		    		minp[i].style.backgroundColor = "#AAA";
		    	}
		    	minp[i].value = "";
		    	n++;
		    }
		  }
   }
   
}

/*  AJAX Get Style Information depending on colour  */


function getStyleInfoResponseHandler(xml, obj) {
	
	//var styleInfo = obj.options[obj.selectedIndex].label;
	
	/* Opdater stylefarve og pris for denne style */
	
	var styleIndex = obj.id.substr(obj.id.indexOf('style'));
	idx = obj.id.substr(obj.id.lastIndexOf('-')+1);
	
	var prices = new Array();
	prices[0] = xml.getElementsByTagName("index"); 
	prices[1] = xml.getElementsByTagName("amount"); 
	prices[2] = xml.getElementsByTagName("stockInfo");
	
	var step = 0;
	for(var i = 0; i < prices[0].length; i++) {
		
		var index = prices[0][i].firstChild.nodeValue;
		var price = prices[1][i].firstChild.nodeValue;
		
		
		if(document.getElementById(idx+"_pricevalue_"+index)) {
			document.getElementById(idx+"_pricevalue_"+index).value = price;
			if(msie == 1) {
			 	document.getElementById(idx+'-price-text_'+index).innerHTML = price;	
			}
			else {
				document.getElementById(idx+'-price-text_'+index).value = price;
			}
		}
	
		var stocks = prices[2][i].getElementsByTagName("stockQty");
		var qty;
		
		for (var j = 0; j < stocks.length; j++) {
			
			qty = stocks[j].firstChild.nodeValue;
			
			//var step = (j+1) + (i * stocks.length);
			step++;
			if(document.getElementById("s"+idx+"_"+step)) {
				
				document.getElementById("s"+idx+"_"+step).innerHTML = qty;
			}

		}
		
	
		
	}
	
	resetSalesLine(obj, prices[2]);
	
	//document.getElementById(styleIndex).value = styleInfo.substr(styleInfo.indexOf("-")+1);
	
	
	/* Recalc subtotaler og toal */
	
	if(lastInputObject != null) {
		nxs_recalc(lastInputObject);
	}
}

function getPrices(obj, path, stock) {
	var form = obj.form;

	//var lobj = obj.options[obj.selectedIndex].label;
	var lobj = obj.options[obj.selectedIndex].id;
	var color = lobj.substr(lobj.indexOf("-")+1);

	if(stock == -1) { stock = 0; }
	//var url = path + 'js/ajax/prices.php?style=' + escape(obj.options[obj.selectedIndex].label) + '&cur=' + form.currency_code.value;
	//alert(obj.options[obj.selectedIndex].id);
	var url = path + 'js/ajax/prices.php?style=' + escape(obj.options[obj.selectedIndex].id) + '&cur=' + form.currency_code.value + '&stock=' + stock;

	if(lobj.substr(lobj.indexOf("-")+1) == "noitem") {
		// s�t alle pricer til 0.00
		//url = path + 'js/ajax/zeroprices.php?style=' + escape(obj.options[obj.selectedIndex].label);
		url = path + 'js/ajax/zeroprices.php?style=' + escape(obj.options[obj.selectedIndex].id);
	}
	
	lastInputObject = obj;
	
	getRequest(url, getStyleInfoResponseHandler, obj);
}

/***************************************************/

/******** Variables **************/

var newOrderLine = false;
var delOrderLine = false;

/******** Error messages ***************/
var msg_str = new Array (45,49);
msg_str[45] = new Array (
	"Select colour before submitting the order!",
	"Select colour before adding a new order line!",
	"One or more orderline(s) needs selection of a colour!\nThese lines will not be processed.\n\nContinue anyway?\n \n",
	"You are about to delete all order lines.\n\nContinue anyway?\n \n",
	"Quantity must not exceed items in stock\n",
	"Are you sure you want to submit the order?\n"
	);
msg_str[49] = new Array (
	"Vor Absenden der Bestellung bitte die gew�nschte Farbe w�hlen!",
    "Vor dem Hinzuf�gen einer neuen Bestellzeile bitte die gew�nschte Farbe w�hlen!",
    "F�r eine oder mehrere Bestellzeile muss eine Farbe ausgew�hlt werden!\nDiese Zeilen lassen sich nicht ausf�hren.\n \nDennoch fortsetzen?",
	"Sie sind im Begriff, alle Bestellzeilen zu l�schen.\n\nWollen Sie fortfahren?\n \n",
	"Die Menge der bestellten Artikel darf die Lagermenge nicht �berschreiten!",
	"Are you sure you want to submit the order?\n"
	);
	



/* Add and remove order lines */

function detectKey13(e) {
  var keynum;
  if(window.event) {
     keynum = e.keyCode;
  }
  else if(e.which) {
     keynum = e.which;
     //if(keynum == 1) {  }
  }
 
  if(keynum == 13) {
     return true;
  }
}


function gpn( ) // gpn stands for 'get parameter names'
{
	var params = new Array( );
	var regex = /[\?&]([^=]+=[^&]+)/g;
	while( ( results = regex.exec( window.location.href ) ) != null )
	//alert(results[1].substr(0, results[1].indexOf("=")) + "::" + results[1].substr(results[1].indexOf("=")+1))
		params.push (new Array([results[1].substr(0, results[1].indexOf("="))], results[1].substr(results[1].indexOf("=")+1)));//( results[1] );
	return params;
}

function getGpn(needle) {
	var prm = gpn();
	
	for(var n in prm) {
		if((prm[n][0] == needle) && (prm[n][1].length > 0)) {
			return "&" + prm[n][0] + "=" + prm[n][1];
		}
	}
	return '';
}

function addNewOrderLine(obj, maxRows) {
	
	newOrderLine = true;
	var fm = document.forms['nxs_serendipity_order_form'];
	var items = obj.id.lastIndexOf("_") - obj.id.indexOf("-") - 1;
	var style = obj.id.substr(obj.id.indexOf("-")+1, items);
	var next = parseInt(obj.id.substr(obj.id.indexOf("_")+1)) + 1;
	
	var id = obj.id.substring(obj.id.indexOf('-')+1, obj.id.lastIndexOf('-'));
	
	if(validateOrderForm(fm, id)) {
		
		document.getElementById('orderAction').value = "add";
		//document.getElementById('orderStyle').value = style;
		document.getElementById('orderStyle').value = id;
		document.getElementById('orderStyleMaxRows').value = maxRows;
		var now = new Date();
		//alert(now.getTime());
		fm.action = website + "index.php?id=" + order_page_id + getGpn('L') + getGpn('tx_nxsserendipity_pi1[se]') + "&no_cache=1&t=" + now.getTime();
		
		fm.submit();
	}
	
}

function removeOrderLine(obj, form) {

	delOrderLine = true;
	var fm = document.forms['nxs_serendipity_order_form'];
	
	var items = obj.id.lastIndexOf("-") - obj.id.indexOf("-") - 1;
	var style = obj.id.substr(obj.id.indexOf("-")+1, items);
	
	document.getElementById('orderAction').value = "rem";
	document.getElementById('orderStyle').value = style;
	//document.getElementById('orderStyleMaxRows').value = maxRows;
	
	var now = new Date();
	//fm.action = "http://www.serendipity.nexusweb.dk/index.php?id=" + order_page_id + "&no_cache&t=" + now.getTime();
	fm.action = website + "index.php?id=" + order_page_id + getGpn('L') + getGpn('tx_nxsserendipity_pi1[se]') + "&no_cache=1&t=" + now.getTime();
	fm.submit();
}

/******* Validate form *************/

function validateOrderForm(obj, id) {
	// Submit form

	if(id == null) {
		if(confirm(msg_str[visma_lang][5])) {
			var fm = document.forms['nxs_serendipity_order_form'];
			//var season = document.getElementById("orderSeason").value;
			//var lang = 1;
			fm.action = website + "index.php?id=" + receipt_page_id + getGpn('L') + "&no_cache=1";
			//fm.target = 'content';
			//alert(fm.action);
			document.getElementById('orderAction').value = "submit";
			//alert("Her " + document.getElementById('orderAction').value);
			for(var i = 0; i < obj.length; i++) {
				if(obj[i].type == "select-one" && obj[i].selectedIndex == 0) {
					if(confirm(msg_str[visma_lang][2])) {
						fm.submit();
						return true;
						
					}
					else {
						obj[i].focus();
						return false;
					}
				}
			}
	
			// No errors - submit
			
			fm.submit();	
		}

	}

	return true;
}

function emptyOrderForm() {
	var elems = document.getElementsByTagName('input');
	if(elems.length > 11) {
		if(confirm(msg_str[visma_lang][3])) {
			document.getElementById('orderAction').value = "emptyOrder";
			var season = document.getElementById("orderSeason").value;
			var fm = document.forms['nxs_serendipity_order_form'];	
			fm.action = website + "index.php?id=" + receipt_page_id + "&tx_mxsserendipty_pi1[se]=" + season + getGpn('L') + "&no_cache";
			fm.submit();
		}
	}
	else {
		document.getElementById('orderAction').value = "emptyOrder";
		var season = document.getElementById("orderSeason").value;
		var fm = document.forms['nxs_serendipity_order_form'];	
		fm.action = website + "index.php?id=" + receipt_page_id + "&tx_mxsserendipty_pi1[se]=" + season + getGpn('L') + "&no_cache";
		fm.submit();
	}
}

function evaluateKeyPress(e, obj) {
  var keynum;
  var keychar;
  var numcheck;

  if(window.event) {
     keynum = e.keyCode;
  }
  else if(e.which) {
     keynum = e.which;
  }
  else {
    return true;
  }
  
  keychar = String.fromCharCode(keynum);

  numcheck = /\d/;
  
  if(keynum == 13) { // return
     return addNewStyle(obj.id);

  }
  else if(keynum == 8 || keynum == 9  || keynum == 46 ||
          keynum == 35|| keynum == 36 || keynum == 37 ||
          keynum == 39) {
     return true;
  }
  else {
     return numcheck.test(keychar);
     //return true;
  }
}

function addNewStyle(id) {
	//alert(id);
	var style = document.getElementById('nxs_serendipity_add_style').value;
   	document.getElementById('orderAction').value = "add";
	document.getElementById('orderStyle').value = style.toLowerCase();
	//document.getElementById('orderStyleMaxRows').value = maxRows;
	var now = new Date();
		//alert(now.getTime());
		
	var fm = document.forms['nxs_serendipity_order_form'];
	//fm.action = "http://www.serendipity.nexusweb.dk/index.php?id="+order_page_id+"&no_cache&t=" + now.getTime() + "#nxs-serendipity-style-" + style + "_1";
	fm.action = website + "index.php?id=" + order_page_id + getGpn('L') + getGpn('tx_nxsserendipity_pi1[se]') + "&no_cache=1&t=" + now.getTime() + "#nxs-serendipity-style-" + style + "_1";
	fm.submit();
	
   	return false;
}



function showImage(obj, imgpath) {
	//obj.src = "images/" + obj.id.substr(0, obj.id.lastIndexOf("-")).toLowerCase() + "-thumbnail.jpg";
	obj.src = imgpath;
	obj.width = 50;
	obj.height = 50;
	obj.style.border = '1px solid #666';
	obj.style.zIndex = 100;
}

function hideImage(obj, imgpath) {
	obj.width = 17;
	obj.height = 17;
	//obj.src = "images/photoapp.gif";
	obj.src = imgpath;
	obj.style.border = '0px solid #666';
	obj.style.zIndex = 10;
}

function scaleFabric (obj) {
	//obj.width = 100;
	//obj.height = 100;
	//obj.style.left = parseInt(getCurrentStyle(obj, 'left')) - 70 + 'px';
	//obj.style.left = parseInt(getCurrentStyle(obj, 'top')) - 70 + 'px';
	obj.style.zIndex = 1000;
	
}

function rescaleFabric (obj) {
	obj.width = 30;
	obj.height = 30;
	obj.style.zIndex = 10;
	//hideShowFabric (null,0,0,'hidden');
	var elem = document.getElementById("fabricView");
	elem.style.visibility = 'hidden';
}


function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left");
}
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top");
}

function getAbsPos(elt,which) {
  iPos = 0;
  while (elt != null) {
    iPos += elt["offset" + which];
    elt = elt.offsetParent;
   }
  return iPos;
}

/*
function detectPosition(obj) {
	

	clickX = tempX; //xMousePos;
	clickY = tempY; //yMousePos;
	
	dX0 = getAbsX(obj); //obj.offsetLeft;
	dY0 = getAbsY(obj); //obj.offsetTop;
	dX30 = dX0 + 30;
	dY30 = dY0 + 30;

	if((clickX - dX0 > 0 && clickY - dY0 > 0) &&
	   (clickX < dX30 && clickY < dY30) &&
	    obj.width < 60) {
		scaleFabric(obj);
		hideShowFabric(obj, dX0 - 101, dY0 - 101,'visible')
	}
	
	else if ((clickX - dX30 > 0 || clickY - dY30 > 0) ||
			 (clickX - dX0 < 0 || clickY - dY0 < 0) &&
			  obj.width > 30) {
		rescaleFabric(obj);
		
	}

}
*/
/********** Get Fabric image *********/
var handle;
var img;

function detectPosition(obj, dir) {
	dX0 = getAbsX(obj); //obj.offsetLeft;
	dY0 = getAbsY(obj); //obj.offsetTop;
	
	if(window.event) {
		dX0 = parseInt(obj.offsetLeft);
		dY0 = parseInt(obj.offsetTop);
	}
	
	img = document.getElementById("fabricImage");
	img.src = obj.src.replace('30x30','100x100');
	var elem = document.getElementById("fabricView");
	
	if(dir == 0) {
		elem.style.top = dY0 - 102;
		elem.style.left = dX0 - 102;
	}
	else {
		elem.style.top = dY0 + 30 ;
		elem.style.left = dX0 - 102
	}
	
	//alert(dX0 + "::" + dY0 + "::" + elem.left);
	elem.style.visibility = 'visible';
}

function isImageLoaded(x, y, mode) {
	if (img.complete) {
		
	   	var elem = document.getElementById("fabricView");
		elem.style.top = y;
		elem.style.left = x
		elem.style.visibility = mode;
		
		clearTimeout(handle);
	}
}

function showFabricImage (obj, x, y, mode) {
	img = document.getElementById("fabricImage");
	img.src = obj.src;
	handle = setTimeout('isImageLoaded('+x+','+y+',"' +mode+'")', 10);
}

function hideShowFabric(obj, x, y, mode) {
	if(mode == 'visible') {
		showFabricImage(obj, x, y, mode);
	}
	else {
		var elem = document.getElementById("fabricView");
		elem.style.visibility = mode;
		//img.src = "x";

	}
}

/**************************************/


function getCurrentStyle( el, prop ) {
    if ( window.getComputedStyle ) {
      // Mozilla et al
      return window.getComputedStyle(el, '').getPropertyValue(prop);
    } // IE5+
      else if ( el.currentStyle ) {
      return el.currentStyle[prop];
    } // IE4
      else if ( el.style ) {
      return el.style[prop];
    }
} 


var IE = document.all?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var tempX = 0
var tempY = 0

// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  //document.Show.MouseX.value = tempX
  //document.Show.MouseY.value = tempY
  return true
}


/********** Music control *************/
function startStopMusic() {
  	top.frames[0].callf();

  	if(top.frames[0].flag == false) {
  		img1.src="fileadmin/templates/images/speaker-off.gif"
  	}
  	else {
  		img1.src="fileadmin/templates/images/speaker.gif"
  	}
  }
