Object.prototype.Extend = function(destination, source) {
  for (property in source) {
    destination[property] = source[property];
  }
  return destination;
}

function Reload()  {
	window.open(document.URL, '_self');
}

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

function getCookieValue(aName) {
//	var val = "";
	aName += "=";
	if (document.cookie) {
		var valStart = document.cookie.indexOf(aName) + aName.length;
		var valSlice = document.cookie.slice(valStart);
		var valEnde = valSlice.indexOf(";");
    		if (valEnde == -1) {
			return valSlice;
		} else {
			return valSlice.substring(0, valEnde);
		}
	}
	return "";
}

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}


/*function doResetOfferForm(aForm) {
	aForm.reset();
	doVolDefChange(aForm);
}*/



function checkEmail(argEMail) {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(argEMail)){
return (true)
}
return (false)
}

function caret(node) {
 //node.focus(); 
 /* without node.focus() IE will returns -1 when focus is not on node */
	 if(node.selectionStart) return node.selectionStart;
	 else if(!document.selection) return 0;
	 var c		= "\001";
	 var sel	= document.selection.createRange();
	 var dul	= sel.duplicate();
	 var len	= 0;
	 dul.moveToElementText(node);
	 sel.text	= c;
	 len		= (dul.text.indexOf(c));
	 sel.moveStart('character',-1);
	 sel.text	= "";
	 return len;
}

var base64		= {
 charmap		: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 encode			: function(str) {
  var ret		= "";
  var c, i, acc		= 0;
  var div		= 1;
  for(i=0,c=0;i<str.length;i++,c++) {
   acc			= acc*256 + str.charCodeAt(i);
   div			= div*4;
   ret			= ret + base64.charmap.charAt(parseInt(acc/div));
   acc			= acc % div;
   if(div==64) ret	= ret + base64.charmap.charAt(parseInt(acc)), acc = 0, div = 1,c++;
   if(c>=75) c=-1, ret	= ret + "\n";
  } if(i%3) {
   ret			= ret + base64.charmap.charAt(parseInt(acc*((i%3==1)?16:4)));
   ret			= ret + ((i%3)==1?"==":"=");
  } return ret;
 },
 decode			: function(str) {
  var ret		= "";
  var i, acc		= 0;
  var div		= 1;
  for(i=0;i<str.length;i++) {
   if(str.charAt(i)=="=" || str.charAt(i)=='\n') break;
   acc			= acc*64 + base64.charmap.indexOf(str.charAt(i));
   div			= (div==1?64:div/4);
   if(div!=64) {
    ret			= ret + String.fromCharCode(parseInt(acc/div));
    acc			= acc % div;
   }
  } return ret;
 }
}

function AResize() {
	resizeMap() ;
}

function AddOtLiam(AStr) {
	return 'mailto:'+AStr;
}
function AddCOM(AStr) {
	return AStr+'.com';
}
function AddDE(AStr) {
	return AStr+'.de';
}
function AddEU(AStr) {
	return AStr+'.eu';
}
function AddINFO(AStr) {
	return AStr+'.info';
}
function AddAt(AStr1, AStr2) {
	return AStr1+'@'+AStr2;
}

function RevString(AStr) {
	var S='';
	var i=AStr.length;
	i=i-1;
	for (var x = i; x >=0; x--) {
		S=S + AStr.charAt(x);
	}
	return S;
}

function OpenMocLiam(a, b) {
	window.location.href = AddOtLiam(AddCOM(AddAt(RevString(a), RevString(b)))); 
	return false;
}
function OpenOfniLiam(a, b) {
	window.location.href = AddOtLiam(AddINFO(AddAt(RevString(a), RevString(b)))); 
	return false;
}

