// JavaScript Document
// Last edit: 2007.02.16 17:51
var xmlHttp;

// function showList(section, action, layer, searchStr, orderDir, groupId)
// section determines the backend PHP file
// action determines action taken
// layer determines the updated <div> by its id
// searchStr determines a search filter (if such field exists)
// orderDir determines the order direction
function showList(section, action, layer, searchStr, orderDir, groupId, page/*, additional*/) {
  var xmlHttp=null;
  
  xmlHttp=GetXmlHttpObject();
  
  if(xmlHttp) {
    var url = section+'.php'; //section = 'language' => language_backend.php
    url=url+"?param="+action+"&search="+searchStr+"&orderdir="+orderDir+"&groupid="+groupId+"&currentPage="+page+"&region="+($('region')?$('region').options[$('region').selectedIndex].value:'');//+additional;
    //alert(url);
    xmlHttp.onreadystatechange=function() {
      if (xmlHttp.readyState==4)
      if (xmlHttp.status==200) {
        stateChanged(layer, xmlHttp);
    	correctPNG();
      }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
  }
}

// function deleteItem(id, layer, param, message, groupid, page, show_action)
// id - id of the deleted item
// layer - updated layer after action
// param - action, which takes place (in a PHP file)
// message - confirmation message
// groupid - additional filter parameter
// page - page name
// show_action - 'name' of the visualisation action, that takes place in a PHP file
function deleteItem(id, layer, param, message, groupid, page, show_action) {
  document.getElementById('error_div').style.display = 'block';
  document.getElementById('error_div').innerHTML = "<div class='floatleft'><b>Confirmation</b></div>"
  +"<div class='floatright'>"

  +"</div>"
  +"<div id='confirm_message'><b>"+message+"</b></div>"
  +"<div id='buttonset'>"
  +"<input type='button' class='button' value='Yes' onClick=\"document.getElementById('error_div').style.display='none'; deleteConfirmed('"+id+"', '"+layer+"', '"+param+"', '"+message+"', '"+groupid+"', '"+page+"', '"+show_action+"');\">"
  +"<input type='button' class='button' value='No' onClick=document.getElementById('error_div').style.display='none';>"
  +"</div>";
}

// function addEditItem(layer, id, action, page)
// id - id of the deleted item
// layer - updated layer after action
// action - action, which takes place (in a PHP file)
// page - page name
function addEditItem(layer, id, action, page) {
  xmlHttp=GetXmlHttpObject();
  if(xmlHttp) {
    var url=page+"_backend.php";
    url=url+"?param="+action+"&id="+id;
    xmlHttp.onreadystatechange=function() {
      if (xmlHttp.readyState==4)
      if (xmlHttp.status==200) {
        stateChanged(layer, xmlHttp);
      }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
  }
}

function deleteConfirmed(id, layer, param, message, groupid, page, show_action) {
  xmlHttp=GetXmlHttpObject();
  if(xmlHttp) {
    var url=page+"_backend.php";
    url=url+"?param="+param+"&id="+id;
    xmlHttp.onreadystatechange=function() {
      if (xmlHttp.readyState==4)
      if (xmlHttp.status==200) {
        showList(page, show_action, layer, '', '', groupid, 0);
      }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
  }
}



function stateChanged(layer, xmlHttp) {
  document.getElementById(layer).innerHTML=xmlHttp.responseText;
}

function GetXmlHttpObject(){
  var xmlHttp=null;
  try {
    xmlHttp=new XMLHttpRequest();
  }
  catch (e) {
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }

  if (xmlHttp==null) {
    alert ("Your browser does not support AJAX!");
    return null;
  }
  else
  return xmlHttp;
}




function makePOSTRequest(url, parameters) {
  xmlHttp = GetXmlHttpObject();
  //alert(parameters);
  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
      if (xmlHttp.status == 200) {
        if(xmlHttp.responseText == '') {
          removeTinyMCE();
        } else {
          removeTinyMCE();
          document.getElementById('error_div').style.display='block';
          document.getElementById('error_div').innerHTML = xmlHttp.responseText;
        }
      } else {
        alert('There was a problem with the request.');
      }
    }
  }
  xmlHttp.open('POST', url, true);
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", parameters.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(parameters);
}

function get(obj, url) {
  var url = url+'_backend.php';
  var poststr = getRequestBody(obj);
  //alert(poststr)
  makePOSTRequest(url, poststr);
}

function getRequestBody(oForm) {
  var aParams = new Array();

  for (var i=0 ; i < oForm.elements.length; i++) {
    var sParam = encodeURIComponent(oForm.elements[i].name);
    sParam += "=";
    if(oForm.elements[i].type == 'checkbox')
    	sParam += encodeURIComponent(oForm.elements[i].checked);
    else if(oForm.elements[i].type == 'radio') {
    	if(oForm.elements[i].checked == true) {
    		sParam += encodeURIComponent(getCheckedValue(oForm.elements[i]));
    	}
    	else
    		continue;
    }
    else
    	sParam += encodeURIComponent(oForm.elements[i].value);
    aParams.push(sParam);
  }

  return aParams.join("&");
}

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 "";
}

// Non-AJAX functions
function startDrag(e){
  // determine event object
  if(!e){var e=window.event};
  // determine target element
  var targ=e.target?e.target:e.srcElement;
  if(targ.className!='draggable'){return};
  // calculate event X,Y coordinates
  offsetX=e.clientX;
  offsetY=e.clientY;
  // assign default values for top and left properties
  //alert(targ.style.left)
  if(!targ.style.left){targ.style.left='350px';};
  if(!targ.style.top){targ.style.top=parseInt(offsetY)+'px';};
  // calculate integer values for top and left properties
  coordX=parseInt(targ.style.left);
  coordY=parseInt(targ.style.top);
  drag=true;
  // move div element
  document.onmousemove=dragDiv;
}
// continue dragging
function dragDiv(e){
  if(!drag){return};
  if(!e){var e=window.event};
  var targ=e.target?e.target:e.srcElement;
  // move div element
  targ.style.left=coordX+e.clientX-offsetX+'px';
  targ.style.top=coordY+e.clientY-offsetY+'px';
  return false;
}
// stop dragging
function stopDrag(){
  drag=false;
}

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return [curtop, curleft];
}

function ClearFilters(f){
  for(i = 0; i < f.elements.length; i++){
    if(f.elements[i].name == 'filter_ITEMS')
      continue;
    if(f.elements[i].type == 'text')
       f.elements[i].value = '';
    else if(f.elements[i].type == 'select-one')
      f.elements[i].selectedIndex = 0;
  } 
}

// End Non-AJAX functions block


// Cilgerimmo quiz functions:
function checkIntegrity(param) {
	var oForm = document.forms['quizform'];
  var sBody = getRequestBody(oForm);
  
  xmlHttp=GetXmlHttpObject();
  if(xmlHttp) {
    var url="validation.php?param="+param+"&";
    url=url+sBody;
    
   	xmlHttp.onreadystatechange=function() {
      if (xmlHttp.readyState==4)
      if (xmlHttp.status==200) {
      	if(xmlHttp.responseText == 'accept') {
					showList('validation', 'show_accepted', 'conditions_container', '', '', '', '&'+sBody);
				}
				else if(xmlHttp.responseText == 'reject') {
					showList('validation', 'show_rejected', 'conditions_container', '', '', '', '&'+sBody);
				}
        else {
        	showList('validation', 'show_quiz', 'conditions_container', '', '', '', '&'+sBody+'&errors='+xmlHttp.responseText);
        }
      }
    }
    xmlHttp.open("get",url,true);
    xmlHttp.send(null);
  }
}
//End Cilgerimmo quiz functions

// Cilgerimmo estate selection functions:
function addToSelection(param, type, page) {
  xmlHttp=GetXmlHttpObject();
  if(xmlHttp) {
    var url=page+".php?param=addtoselection&reference="+param+"&type="+type;
    xmlHttp.onreadystatechange=function() {
      if (xmlHttp.readyState==4) {
	      if (xmlHttp.status==200) {
	      	if(xmlHttp.responseText) {
						document.getElementById('selected_offers').innerHTML = xmlHttp.responseText;
					}
	      }
	    }
    }
    xmlHttp.open("get",url,true);
    xmlHttp.send(null);
  }
}

function removeFromSelection(param, type, page, numberPage, items, searchStr) {
  xmlHttp=GetXmlHttpObject();
  if(xmlHttp) {
    var url=page+".php?param=remove&reference="+param+"&type="+type;
    
    if(items == 1 && numberPage != 0)
      numberPage = numberPage - 1;
    
    xmlHttp.onreadystatechange=function() {
      if (xmlHttp.readyState==4) {
	      if (xmlHttp.status==200) {
	      	if(xmlHttp.responseText) {
						document.getElementById('selected_offers').innerHTML = xmlHttp.responseText;
            showList('myselection', 'show_results', 'search_container', searchStr, '', '', numberPage);
					}
	      }
	    }
    }
    xmlHttp.open("get",url,true);
    xmlHttp.send(null);
  }
}
//End Cilgerimmo estate selection functions


