function getObject(n) {
  if (document.all) return document.all(n);
  else return document.getElementById(n);
}

function getParent(n) {
  if (document.all) return document.all(n).parentElement;
  else return document.getElementById(n).parentNode;
}

// THIS FUNCTION DETECTS THE USER'S BROWSER
// VALUES RETURNED: "O","K","M","IE","NN4","NN6&7","?"

function getBrowser() { 
  var detectedBrowser = "";
  var userAgent = navigator.userAgent.toLowerCase();
  var appName = navigator.appName.toLowerCase();
  //alert(userAgent);
  //alert(appName);
  if (userAgent.indexOf("opera") +1) detectedBrowser = "O";
  else if (userAgent.indexOf("konqueror") +1) detectedBrowser = "K";
  else if (userAgent.indexOf("mac") +1) detectedBrowser = "M";
  else if (userAgent.indexOf("msie") +1) detectedBrowser = "IE";
  else if (appName.indexOf("netscape") +1) {
    if (userAgent.indexOf("gecko") +1) detectedBrowser = "NN6&7";
    else detectedBrowser = "NN4";
  }
  else detectedBrowser = "V";
  //alert(detectedBrowser);
  return detectedBrowser;
}

String.prototype.ltrim = function () { return this.replace(/^\s*/, "");}
String.prototype.rtrim = function () { return this.replace(/\s*$/, "");}
String.prototype.trim  = function () { return this.ltrim().rtrim(); }

var hexchars = '0123456789ABCDEF';
  
function fromHex(str) {
  var high = str.charAt(0); 
  var low = str.charAt(1);
  return (16 * hexchars.indexOf(high)) +
    hexchars.indexOf(low);
}
  
function toHex(num) {
  return hexchars.charAt(num >> 4) + hexchars.charAt(num & 0xF);
}

// THESE METHODS ENABLE TO TRANSFORM OnMouseOver INTO OnMouseEnter
// AND OnMouseOut INTO OnMouseLeave

function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  } while (containee != null);
  return isParent;
}

function checkMouseEnter(element,e) {
  if (!e) var e = window.event;
  if (element.contains && e.fromElement) {
    return !element.contains(e.fromElement);
  }
  else if (e.relatedTarget) {
    return !containsDOM(element, e.relatedTarget);
  }
}

function checkMouseLeave(element,e) {
  if (!e) var e = window.event;
  if (element.contains && e.toElement) {
    return !element.contains(e.toElement);
  }
  else if (e.relatedTarget) {
    return !containsDOM(element, e.relatedTarget);
  }
}

myDiv = "";

function infoPopUp(e) {
  if (!e) var e = window.event;
  if(myDiv == "") myDiv = document.createElement("DIV");
  myDiv.id = 'myDiv'; 
  myDiv.style.position = "absolute";
  myDiv.style.left = e.clientX + 15; 
  myDiv.style.top = e.clientY + 15 + document.body.scrollTop;  
  myDiv.innerHTML = "<H4 id='inside'>TEST</H4>";
  document.body.appendChild(myDiv);
}

function fileRed(e,message) {
  if (!e) var e = window.event;
  if(myDiv == "") myDiv = document.createElement("DIV");
  myDiv.id = 'myDiv'; 
  myDiv.style.position = "absolute";
  myDiv.style.left = e.clientX + 15; 
  myDiv.style.top = e.clientY + 15 + document.body.scrollTop;   
  myDiv.style.backgroundColor = "black";
  myDiv.style.padding = "1px 2px 1px 2px;";
  myDiv.style.borderColor = "FF0000";
  myDiv.style.borderStyle = "solid";
  myDiv.style.borderWidth = "1px 1px 1px 1px";
  myDiv.innerHTML = "<H3 id='inside' CLASS='red'>"+message+"</H3>";
  document.body.appendChild(myDiv);
}

function fileYellow(e,message) {
  if (!e) var e = window.event;
  if(myDiv == "") myDiv = document.createElement("DIV");
  myDiv.id = 'myDiv'; 
  myDiv.style.position = "absolute";
  myDiv.style.left = e.clientX + 15; 
  myDiv.style.top = e.clientY + 15 + document.body.scrollTop;  
  myDiv.style.backgroundColor = "black";
  myDiv.style.padding = "1px 2px 1px 2px;";
  myDiv.style.borderColor = "FFFF00";
  myDiv.style.borderStyle = "solid";
  myDiv.style.borderWidth = "1px 1px 1px 1px";
  myDiv.innerHTML = "<H3 id='inside' CLASS='yellow'>"+message+"</H3>";
  document.body.appendChild(myDiv);
}

function fileBlue(e,message) {
  if (!e) var e = window.event;
  if(myDiv == "") myDiv = document.createElement("DIV");
  myDiv.id = 'myDiv'; 
  myDiv.style.position = "absolute";
  myDiv.style.left = e.clientX + 15; 
  myDiv.style.top = e.clientY + 15 + document.body.scrollTop; 
  myDiv.style.backgroundColor = "black";
  myDiv.style.padding = "1px 2px 1px 2px;";
  myDiv.style.borderColor = "0033FF";
  myDiv.style.borderStyle = "solid";
  myDiv.style.borderWidth = "1px 1px 1px 1px";
  myDiv.innerHTML = "<H3 id='inside' CLASS='blue'>"+message+"</H3>";
  document.body.appendChild(myDiv);
}

function closePopUp() {
  if(myDiv != "") document.body.removeChild(myDiv);
  myDiv = "";
}

function makeMainBigger(element,width,height) {
  photoWidth= width/5;
  photoHeight= height/5;
  element.style.zIndex = "1";
  element.style.position = 'absolute';
  element.style.width = width+"px";
  element.style.height = height+"px";
  element.style.marginLeft = -((width-photoWidth)/2)+'px';
  element.style.marginTop = -((height-photoHeight)/2)+'px';
}
    
function makeMainSmaller(element) {
  element.style.zIndex = "0";
  element.style.position = 'relative';
  element.style.marginLeft = '0px';
  element.style.marginTop = '0px';
  element.style.width = photoWidth+'px';
  element.style.height = photoHeight+'px';
}

function showBigPhoto(bigPhoto,adsTable,e) {
  if (!e) var e = window.event;
  if(document.all) {
	alert(document.all(bigPhoto).tagName);
    document.all(bigPhoto).style.top = "0px";
    document.all(bigPhoto).firstChild.src = e.srcElement.src;
    if(e.srcElement.parentNode.offsetTop > 75) {
    var top = e.srcElement.parentNode.offsetTop-75;
    if (top+150 > document.all(adsTable).offsetHeight && document.all(adsTable).offsetHeight>150)
      top = document.all(adsTable).offsetHeight-150;
      document.all(bigPhoto).style.top = top+"px";  
    }
    document.all(bigPhoto).style.visibility = "visible";
  }
  else {
    var targ = e.target;
    if (targ.nodeType == 3) // defeat Safari bug
      targ = targ.parentNode;
    document.getElementById(bigPhoto).childNodes[1].src = targ.src;
    var widgetsX = (screen.width - document.getElementById("pageTable").offsetWidth)/2 + document.getElementById("Widget3").offsetWidth;
    document.getElementById(bigPhoto).style.left = widgetsX + "px";
    var widgetsY = document.getElementById("Widget1").offsetHeight + document.getElementById("Widget4").offsetHeight + document.getElementById("Widget5").offsetHeight; 
    if(targ.parentNode.offsetTop > 75) {
      var top = targ.parentNode.offsetTop-75;
      if (top+150 > document.getElementById(adsTable).offsetHeight && document.getElementById(adsTable).offsetHeight>150)
        top = document.getElementById(adsTable).offsetHeight-150;
      document.getElementById(bigPhoto).style.top = top + widgetsY +"px";  
    }
    else document.getElementById(bigPhoto).style.top = widgetsY +"px"; 
    document.getElementById(bigPhoto).childNodes[1].style.visibility = "visible";
  }
}

function hideBigPhoto(bigPhoto) {
  if(document.all) document.all(bigPhoto).style.visibility = "hidden";
  else document.getElementById(bigPhoto).childNodes[1].style.visibility = "hidden";
}

function getDisplayTableRow() {
  if(document.all) return "inline";
  else return "table-row";
}

function getObjectFirstChild() {
  if(document.all) return "firstChild";
  else return "childNodes[1]";
}

frontWindow = false;
    
window.onfocus = function() {
  if(frontWindow) {
    if(windowRef) windowRef.close();
    frontWindow = false;
  }
}

function defineName() {
  name = 'mainWindow'; 
}

function getUrlLanguage(lang) {
  if(lang == "de") return 'inserate-';
  else if(lang == "en") return 'ads-';
  else if(lang == "fr") return 'petites-annonces-';
}

function addBookmark(CTRL_Dmessage) { 
  if(navigator.userAgent.indexOf("Opera") > -1) alert(CTRL_Dmessage);
  else if(window.sidebar) { 
    window.sidebar.addPanel("HappyAds.ch","http://www.happyads.ch",""); 
  }
  else if(document.all) { 
    window.external.AddFavorite("http://www.happyads.ch","HappyAds.ch"); 
  } 
  else alert(CTRL_Dmessage);
}

function openTermsWindow(lang) {
  var posX = (screen.availWidth - screen.availWidth*0.4)/2;
  var posY = (screen.availHeight - screen.availHeight*0.4)/2;
  windowRef = window.open("/legal/CGHappyAds_"+lang+".html", "newWindow", "left="+posX+",top="+posY+",screenX="+posX+",screenY="+posY+",width="+screen.availWidth*0.4+",height="+screen.availHeight*0.4+",resizable=0,scrollbars=1,menubar=0,status=0,location=0,toolbar=0");
  frontWindow = true;
}

function checkEmailForm(emailErrorMessage, telErrorMessage) {
  if(!document.sendEmail.adEmailName.value) {
    getObject("sendEmailDiv").style.borderColor = "FF0000";
	getObject("adEmailError").innerHTML = "&nbsp;"+emailErrorMessage;
	getObject("emailName").style.color = "FF0000";
	getObject("emailTel").style.color = "FFFFFF";
	return false;
  }
  if(!document.sendEmail.adEmailTel.value) {
    getObject("sendEmailDiv").style.borderColor = "FF0000";
	getObject("adEmailError").innerHTML = "&nbsp;"+telErrorMessage;
	getObject("emailTel").style.color = "FF0000";
	getObject("emailName").style.color = "FFFFFF";
	return false;
  }
  document.sendEmail.submit();
}

function MHAUnderline() {
  getObject("MHAMy").style.textDecoration = "underline";
  getObject("MHAHappy").style.textDecoration = "underline";
  getObject("MHAAds").style.textDecoration = "underline";
}
  
function MHANormal() {
  getObject("MHAMy").style.textDecoration = "none";
  getObject("MHAHappy").style.textDecoration = "none";
  getObject("MHAAds").style.textDecoration = "none";
}

function resetFormImmo_rs(formSize, max) {
  document.searchForm.immoType.value = "All"; 
  
  var elementF = emptyImmoRoomsElement(document.searchForm.roomsF);
  var elementT = emptyImmoRoomsElement(document.searchForm.roomsT);
  elementF[0] = new Option("0");
  elementF[0].value = 0;
  elementF[0].selected = true;  
  counter = 0;
  for (i = 1; i<10.5; i+=0.5) {
    counter++;
	var s = i.toString().replace('.5','½');
	elementF[counter] = new Option(s);
	elementF[counter].value = i;
  }
  elementT[0] = new Option(max);
  elementT[0].value = max;
  elementT[0].selected = true; 
  counter = 0;
  for (i = 1; i<10.5; i+=0.5) {
    counter++;
	var s = i.toString().replace('.5','½');
	elementT[counter] = new Option(s);
	elementT[counter].value = i;
  }
  
  document.searchForm.roomsF.value = "0";
  document.searchForm.roomsT.value = max;  
  document.searchForm.sizeF.value = "0";
  document.searchForm.sizeT.value = max;
  document.searchForm.chfF.value = "0";
  document.searchForm.chfT.value = max;
  if(formSize == "big") {
    document.searchForm.furnished.value = "All";
    document.searchForm.available.value = "All";
    document.searchForm.age.value = "All";
  }
}
      
function resetFormImmo_h(formSize, max) {    
  document.searchForm.immoType.value = "All"; 
  document.searchForm.sizeF.value = "1";
  document.searchForm.sizeT.value = max;
  document.searchForm.holsLocation.value = "All";
  document.searchForm.chfF.value = "0";
  document.searchForm.chfT.value = max;
  if(formSize == "big") {
    document.searchForm.country.value = "All";
    
    var elementF = emptyImmoRoomsElement(document.searchForm.roomsF);
    var elementT = emptyImmoRoomsElement(document.searchForm.roomsT);
    elementF[0] = new Option("0");
    elementF[0].value = 0;
    elementF[0].selected = true;  
    counter = 0;
    for (i = 1; i<10.5; i+=0.5) {
      counter++;
	  var s = i.toString().replace('.5','½');
	  elementF[counter] = new Option(s);
	  elementF[counter].value = i;
    }
    elementT[0] = new Option(max);
    elementT[0].value = max;
    elementT[0].selected = true; 
    counter = 0;
    for (i = 1; i<10.5; i+=0.5) {
      counter++;
	  var s = i.toString().replace('.5','½');
	  elementT[counter] = new Option(s);
	  elementT[counter].value = i;
    }
    
    document.searchForm.roomsF.value = "0";
    document.searchForm.roomsT.value = max;  
    document.searchForm.period.value = "All";    
    document.searchForm.age.value = "All";
  }
}

function emptyImmoRoomsElement(element) {
  for (i = element.length; i>=0; i--) {
    element[i] = null;
  }  
  return element;
}

function retrieveSelectedRoomsOnLoad(roomsF, roomsT) {
  var element = document.searchForm.roomsF;	
  for(i = 0; i<element.length; i++) {
    if(element[i].value == roomsF) element[i].selected = true;
  } 
  var element = document.searchForm.roomsT;	
  for (i = 0; i<element.length; i++) {
    if (element[i].value == roomsT) element[i].selected = true;
  } 
}

function fillImmoRoomsElement(immoType, roomsF, roomsT, max) {
  var elementF = emptyImmoRoomsElement(document.searchForm.roomsF);
  var elementT = emptyImmoRoomsElement(document.searchForm.roomsT);
  if(document.searchForm.immoType.value == "All") {
    elementF[0] = new Option("0");
	elementF[0].value = 0;
	elementF[0].selected = true;  
	counter = 0;
	for (i = 1; i<10.5; i+=0.5) {
      counter++;
	  var s = i.toString().replace('.5','½');
	  elementF[counter] = new Option(s);
	  elementF[counter].value = i;
	}
	elementT[0] = new Option(max);
	elementT[0].value = max;
	elementT[0].selected = true; 
	counter = 0;
	for (i = 1; i<10.5; i+=0.5) {
      counter++;
	  var s = i.toString().replace('.5','½');
	  elementT[counter] = new Option(s);
	  elementT[counter].value = i;
	}
  }
  if(document.searchForm.immoType.value == "" || 
    document.searchForm.immoType.value == "All_Housing" ||
    document.searchForm.immoType.value == "APA") {
    elementF[0] = new Option("Studio");
	elementF[0].value = 0.9;
	elementF[0].selected = true;  
	counter = 0;
	for (i = 1; i<10.5; i+=0.5) {
      counter++;
	  var s = i.toString().replace('.5','½');
	  elementF[counter] = new Option(s);
	  elementF[counter].value = i;
	}
	elementT[0] = new Option(max);
	elementT[0].value = max;
	elementT[0].selected = true;  
	elementT[1] = new Option("Studio");
	elementT[1].value = 0.9; 
	counter = 1;
	for (i = 1; i<10.5; i+=0.5) {
	  counter++;
	  var s = i.toString().replace('.5','½');
	  elementT[counter] = new Option(s);
	  elementT[counter].value = i;
	}
  }
  if(document.searchForm.immoType.value == "HOU" ||
    document.searchForm.immoType.value == "OFI" ||
    document.searchForm.immoType.value == "SHO") {
	counter = 0;
	for (i = 1; i<10.5; i+=0.5) {
      var s = i.toString().replace('.5','½');
	  elementF[counter] = new Option(s);
      elementF[counter].value = i;
	  counter++;
	}
	elementF[0].selected = true;  
	    
	elementT[0] = new Option(max);
	elementT[0].value = max;
	elementT[0].selected = true;  
	counter = 1;
	for (i = 1; i<10.5; i+=0.5) {
      var s = i.toString().replace('.5','½');
	  elementT[counter] = new Option(s);
	  elementT[counter].value = i;
	  counter++;
    }
  }
  if(document.searchForm.immoType.value == "ROO") {
    elementF[0] = new Option("1");
	elementF[0].value = 1;
	elementF[0].selected = true;   
	    
	elementT[0] = new Option("1");
	elementT[0].value = 1;
	elementT[0].selected = true; 
  }
  if(document.searchForm.immoType.value == "GAR") {
	elementF[0] = new Option("0");
	elementF[0].value = 0;
	elementF[0].selected = true; 
	elementF[1] = new Option("1");
	elementF[1].value = 1;
	    
	elementT[0] = new Option("0");
	elementT[0].value = 0;
	elementT[1] = new Option("1");
	elementT[1].value = 1;
	elementT[1].selected = true; 
  }
  if(document.searchForm.immoType.value == "GAD" ||
    document.searchForm.immoType.value == "LAN") {
	  elementF[0] = new Option("0");
	  elementF[0].value = 0;
	  elementF[0].selected = true; 
	    
	  elementT[0] = new Option("0");
	  elementT[0].value = 0;
	  elementT[0].selected = true; 
  }
  if(document.searchForm.immoType.value == immoType) 
    retrieveSelectedRoomsOnLoad(roomsF, roomsT);
}

  /*var obj =  e;
    for(var prop in obj){
      alert(prop +'  '+obj[prop]);
    }*/