//<![CDATA[

var DEBUG = false;
var isIE = false;
var tip = userlang.substring(0,2);
var ordered = 1;
var availablex = document.getElementById('available');
availablex = (availablex=='on') ? 1:0;
var args = new Array();
var xmlhttpflag = 0;
/*
var description;
var hardcoreBands = new Object();
hardcoreBands["mathyGoodnes"] = "Dillinger Escape Plan";
hardcoreBands["legendary"] = "Converge";
hardcoreBands["fashionistas"] = "Every Time I Die";

for(description in hardcoreBands) {  // print out the bands with descriptions
  alert(hardcoreBands[description] + " == " + description);
}
*/

function TurnControls(B) {
 try {
  document.getElementById('country').disabled=B;
  document.getElementById('city').disabled=B;
  document.getElementById('suburb').disabled=B;
  document.getElementById('type').disabled=B;
  document.getElementById('district').disabled=B;
  document.getElementById('minp').disabled=B;
  document.getElementById('maxp').disabled=B;
  document.getElementById('aim').disabled=B;
  document.getElementById('available').disabled=B;
 } catch(error) {}

}

function xmlRequest(url, data, callback) {
	xmlHttpReq = false; 
	if(window.XMLHttpRequest) { 
		try { 
			xmlHttpReq = new XMLHttpRequest(); 
		} catch(error) { 
			xmlHttpReq = false; 
		}
	} else if(window.ActiveXObject) { 
		try { 
			xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); 
            isIE = true;
            } catch(error) { 
			try { 
				xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
			} catch(error) { 
				xmlHttpReq = false; 
			} 
		} 
	}

	if (!xmlHttpReq) { 
//throw "XMLHttpRequest not supported by "+navigator.userAgent+".";

return false;
		
		}

	xmlHttpReq.open('POST', url, true);
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttpReq.onreadystatechange = function() { 
		if (xmlHttpReq.readyState == 4) { 
        		//document.getElementById('debug').innerHTML = xmlHttpReq.responseText;
			switch (xmlHttpReq.status) { 
				// TODO: handle other status values, error checking, etc
				case 200: 
					// Call the desired callback function 
					eval(callback + '(xmlHttpReq.responseXML);'); 
					break; 
				default: 
					break; 
			}  // switch
		}  // if
	}  // function

	xmlHttpReq.send(data);
	return true;
}



function getElementTextNS(prefix, local, parentElem, index) {   /////  not used
    var result = "";

// ::              item = req.responseXML.getElementsByTagName("item")[select.value];
// ::           content = getElementTextNS("content", "encoded", item, 0);


    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
        return "n/a";
    }
}


function plural(w) {
	switch(w) {
		case "country":  return "countries"; break;
		case "city": return "cities"; break;
		case "suburb": return "suburbs"; break;
		case "district" :    return "districts"; break;
		case "type":    return "types"; break;
		default :
			return w;
	}
}

function IsSelect(fo) {
var WithOptions = false;
if(!(document.getElementById(fo)==null || document.getElementById(fo)=='undefined')) {
  WithOptions = document.getElementById(fo).type == 'select-one';
}  
  return WithOptions;
}

function showNewOptions(optionsXML) {
        var status = document.getElementById('displaystatus');
        var flags = 0;


  for(x in args) {
	try	{
		var root      = optionsXML.getElementsByTagName(plural(args[x].name))[0];
		var OptionsList    = optionsXML.getElementsByTagName(args[x].name);
		var rowcount    = optionsXML.getElementsByTagName('rowcount')[0].firstChild.nodeValue;
		try {
            var warning  = optionsXML.getElementsByTagName('warning');
			var flag     = warning[x].getAttribute('flag');
            try {
                var query    = optionsXML.getElementsByTagName('query'); 
//       alert("Flag : "+flag+" for "+args[x].name+"  query : "+query[x].firstChild.nodeValue);
  		    } catch(error) { alert(error.description);}
		} catch (e) { if(DEBUG) alert(error.description+" query! x:"+x);}


		if(IsSelect(args[x].formname)) {
			var optionsDiv = document.getElementById(args[x].formname);
			var currentOption = document.getElementById(args[x].formname).value;
			optionsDiv.options.length = 0;
	
                if(isIE) {
			      optionsDiv.add(new Option(ArabizeJ(args[x].name), 0)); 
			    } else {
			      optionsDiv.options[0] = new Option(ArabizeJ(args[x].name), 0);
				}

			for(ctr=0;ctr<OptionsList.length;ctr++) {
                
			   try { var id   = OptionsList[ctr].getElementsByTagName("id")[0].firstChild.nodeValue; }
			   catch (e)
			   {
				   var id = ctr;
			   }
			   try { var name = OptionsList[ctr].getElementsByTagName("name")[0].firstChild.nodeValue; }
			   catch (e)
			   { 
				   var name = 'Unknown';
			   }
  			   var moption = new Option(name, id);
			      try
			      {
				      optionsDiv.options.add(moption);
			      }
			      catch (error)
			      {
					  if(DEBUG) alert("Problem with adding an option");
                      optionsDiv.options[ctr+1]=moption;			     
                  }
				  optionsDiv.options[ctr+1].selected = optionsDiv.options[ctr+1].value==currentOption;
			}  // for ctr
      TurnControls(false);
		   try {
			if (flag==0) 
		    {
        	   if(userlang=="arabic")
				  status.innerHTML = "تم تحديث قائمة" + " " + plural(ArabizeJ(args[x].name)) + " " + OptionsList.length + " " + "خيارات جديده"
			   else
				  status.innerHTML = "The" + " " + plural(args[x].name) + " " + "options list has been successfully updated";
			} else {
                status.innerHTML = warning[x].childNodes[0].nodeValue;
				flags = 1;
				if(DEBUG) alert(warning[x].childNodes[0].nodeValue);
				xmlhttpflag = 0;
                ChoiceMadeSubmit(document.getElementById('MainForm'));
		    }
		   } catch (error) { if(DEBUG) alert(error.description); }
		}  // loop
        	   if(userlang=="arabic")
                  status.innerHTML = "الموجود" + " : " + rowcount
			   else
                  status.innerHTML = "Available" + " : " + rowcount
	} catch(error) { 
		status.innerHTML = "Failed to retrieve and parse    " + ArabizeJ(args[x].name) + "    results!";
		if(DEBUG) alert(error.description);
		xmlhttpflag = 0;
        ChoiceMadeSubmit(document.getElementById('MainForm'));
	}
  }  // for 

//        status.innerHTML = '';
}


function OptionInfo( name, formname, value, ordered ) {  
   try {
	this.name = name;  
    this.formname = formname;  
    this.value = value;  
    this.ordered = ordered;  
   }
   catch (e)
   {
	   xmlhttpflag=0;
   }

//  this.orderby = orderby;
}  


function ArabizeJ(t) {
if(userlang=="arabic") { 
  switch(t.toLowerCase()) {
	case "countries" : return 'الدول'; break;
	case "cities"    : return 'المدن'; break;
	case "suburbs"   : return 'الأحياء'; break;
	case "types"     : return 'الأنواع'; break;
	case "districts" : return 'المناطق'; break;
	case "country"   : return 'الدوله'; break;
	case "city"      : return 'المدينه'; break;
	case "suburb"    : return 'الحي'; break;
	case "type"      : return 'النوع'; break;
	case "district"  : return 'المنطقه'; break;
    default :
      return t;
  }
} else {
	return t;
}
}


function ValidName(fn) {
  var fnx = 'rfields[' + fn + ']';
  var v1='';
  var v2='';


try {
	v1 = document.getElementById(fn).name;
	return v1;
} catch (error) {
	v1='?';
	try	{
		v2 = document.getElementById(fnx).name;
		return v2;
	} catch (error)	{
		v2 = '?';
		return 'xxx';
	}
}


}

function ExamineField(fn) {
   var myNull = null;
   var fnvalue;

fn = ValidName(fn);

try {
   if(document.getElementById(fn)==myNull || document.getElementById(fn)=='undefined') return eval(fn);

   try { 
	     var fnvalue = document.getElementById(fn).value;
	   }
   catch (e) 
	     { 
	       try  { fnvalue = document.getElementById(eval('rfields['+fn+']')); } catch (e) { fnvalue=0; } 
		 }

   if(fnvalue==myNull || fnvalue=='undefined') return 0;
   return fnvalue;
}
catch (e)
{
	return 0;
}

}

function LoadElements() {

  TurnControls(true);	
	var form = document.getElementById('MainForm');
	var country = ExamineField('country');
	var city = ExamineField('city');
	var suburb = ExamineField('suburb');
	var district = ExamineField('district');
	var type = ExamineField('type');
	var minp = ExamineField('minp');
	var maxp = ExamineField('maxp');
	var bestoffer = ExamineField('bestoffer');
	var aim = ExamineField('aim');

	var status = document.getElementById('displaystatus'); 

	if(userlang=="arabic")
	  status.innerHTML = "جاري البحث ...  فضلاً إنتظر";
	else
	  status.innerHTML = "looking up ...please wait...";
// watch out for path	
	url = './js/optionsxmldata.php';  
    var pivotsarray="";
	for(x in args) {
      pivotsarray += "&pivots%5B%5D="+args[x].name;
	}
    var sortsarray="";
	for(x in args) {
      sortsarray += "&sorts%5B%5D="+args[x].ordered;
	}

	urldata = "switch=0"+"&district="+district+"&type="+type+"&tip="+tip+"&ordered="+ordered+"&country="+country+"&city="+city;
	urldata = urldata+"&suburb="+suburb+"&minp="+minp+"&maxp="+maxp+"&aim="+aim+"&available="+availablex;
	urldata = urldata+pivotsarray+sortsarray;
	
	xmlhttpflag = 1;

	if (!xmlRequest(url, urldata, 'showNewOptions')) { 
		status.innerHTML = "Error in looking up info"; 
	} else {
		status.innerHTML = ""; 
	}

//  TurnControls(false);	
}

function ChoiceMade(p) {
// To fully limit to available, reload all options again!

var form      = document.getElementById('MainForm');
var favailable = document.getElementById('available');

try {
  try {
	  var availabley = (favailable.checked) ? 1:0;    //<?php if(isset($available)) echo 1; else echo 0; ?>;
  }  catch (error) { }
  if(p=='country') {
	  try { fitaim(form); } catch (error) { }
  } 




/* untested */
  if(p=='rfields[country]') {
	  try {
         document.getElementById('city').value = 0;
 	     document.getElementById('suburb').value = 0;
	  }
	  catch (error) { }
  }
}
catch (error) {
  availablex = 0;
}

//  full checking
if(availablex) {
	ShowAvailable(0);
    return;	
} 
// full checking


try { 
   var status = document.getElementById('displaystatus');
   if(userlang=='arabic')
	   status.innerHTML = ' جاري تحميل الخيارات  فضلاً إنتظر';
     else
	   status.innerHTML = 'Loading options.. please wait!';
}
catch (error) {}

 args = [];

try {
switch(p) {
	case 'country' : 
        args[0] = new OptionInfo('city', 'city', document.getElementById('city').value,1);
	break;
	case 'rfields[country]' : 
        args[0] = new OptionInfo('city', 'rfields[city]', document.getElementById('rfields[city]').value,1);
	break;
	case 'city' : 
        args[0] = new OptionInfo('suburb', 'suburb', document.getElementById('suburb').value,1);
	break;
	case 'rfields[city]' : 
        args[0] = new OptionInfo('suburb', 'rfields[suburb]', document.getElementById('rfields[suburb]').value,1);
	break;
   default :
}

xmlhttpflag = 1;
}
catch (e)
{
	xmlhttpflag=0;
}

try {
     if(args.length>0) {
		 LoadElements();
	     if(xmlhttpflag==0) {  ChoiceMadeSubmit(form); }  // manual
	 }
    } catch(error) {
       if(DEBUG) alert(error.description);
       ChoiceMadeSubmit(form);
    }

  status.innerHTML = '';
}





function ShowAvailable(v)
{

var form      = document.getElementById('MainForm');
var favailable = document.getElementById('available');
availabley = (favailable.checked) ? 1:0;    //<?php if(isset($available)) echo 1; else echo 0; ?>;

//    evt = (evt) ? evt : ((window.event) ? window.event : null);
//variable = (condition) ? true-value : false-value;
//message = ('Stephen' === name) ? "Welcome back Stephen" : "Welcome " + name;

if(availablex==availabley && !availablex) {
    availablex = availabley;
	if(!availabley) return;
}

availablex = availabley;

xmlhttpflag = 1;

try
{
   var status = document.getElementById('displaystatus');
   if(userlang=='arabic')
	   status.innerHTML = 'جاري فرز الموجود فقط';
     else
	   status.innerHTML = 'Loading options for available only.. please wait!';
}
catch (error) {}

  try {
       args[0] = new OptionInfo('country', document.getElementById('country').name, document.getElementById('country').value,0);
       args[1] = new OptionInfo('city', document.getElementById('city').name, document.getElementById('city').value,1);
       args[2] = new OptionInfo('suburb', document.getElementById('suburb').name, document.getElementById('suburb').value,1);
       args[3] = new OptionInfo('district', document.getElementById('district').name, document.getElementById('district').value,1);
       args[4] = new OptionInfo('type', document.getElementById('type').name, document.getElementById('type').value,1);
	   
	   try{ LoadElements();} catch(error) { 
		   ChoiceMadeSubmit(form);
	   }
	   if(xmlhttpflag==0) ChoiceMadeSubmit(form);  // manual
       } catch(error) {
          if(DEBUG) alert(error.description);
          ChoiceMadeSubmit(form);
       }
}









function GetLine(Row,i) {
 var e = Row.childNodes.length;
 var x = 0;
 var line = new Array();

if(i<2) alert("processing "+e+" items");
//if(i<4) alert("line i : "+i+" obj_data at i : "+obj_data[i]);


x=Row.childNodes;
for (i=0;i<x.length;i++)
{
document.write("Nodename: " + x[i].nodeName);
document.write(" (nodetype: " + x[i].nodeType + ")<br />");
} 

 for(x=0;x<e;x++) {
if(i<2) alert("field at line i : "+i+" element x : "+x+" value : "+Row[x].firstChild.nodeValue);
  obj_data[i][x] =  Row.childNodes[x].nodeValue;   //Row.getElementsByTagName(Row.elements[x].name)[0].firstChild.nodeValue; 
line[x] = Row.childNodes[x].nodeValue;
}
alert(line);
//if(i<4) alert("line i : "+i+obj_data[i]);
//  obj.setDataText(function(i, j){return obj_data[i][j]});
//  obj.setColumnText(function(i){return obj_columns[i]});

}

function showNewRows(RowsXML)
{
    var fx=0;
	try	{
		var root      = RowsXML.getElementsByTagName('rows');
		var RowsList    = RowsXML.getElementsByTagName('row');
		try {
		    var rowcount    = RowsXML.getElementsByTagName('rowcount')[0].firstChild.nodeValue;
            var warning  = RowsXML.getElementsByTagName('warning');
			var flag     = warning[0].getAttribute('flag');
            try {
                var query    = RowsXML.getElementsByTagName('query'); 
               //alert("Flag : "+flag+" for items  query : "+query[0].firstChild.nodeValue);
  		    } catch(error) { alert(error.description);}
            try {
                if(start==0) var totalrowcount    = RowsXML.getElementsByTagName('totalrowcount'); 
  		    } catch(error) { alert(error.description);}
		} catch (e) { if(DEBUG) alert(error.description+" query! ");}


var xx='';
var yy='';
var fieldvalue='';
			for(ctr=0;ctr<limit;ctr++) {
			   try { 
                  for (fx=0;fx<RowsList[ctr].childNodes.length;fx++)
                  {
  			        if(RowsList.length>ctr) {
					  
					  try
					  {
					  	fieldvalue = RowsList[ctr].childNodes[fx].firstChild.nodeValue;
					  }
					  catch (e) {
					    fieldvalue = '';
					  }
					  yy = yy + fieldvalue;
                      obj_data[ctr][fx] = fieldvalue;
					} else {
                      obj_data[ctr][fx] = '';
					}
                  } 
                  obj.refresh();
			   }
			   catch (e)
			   {
				    if(DEBUG) alert("Cannot process grid line # "+ctr+" error : "+error.description);
			   }
			}  // for ctr
		    if (flag==0)
		    {
        	   if(userlang=="arabic")
				  status.innerHTML = "تم تحديث قائمة" + " " + plural('Items') + " " + RowsList.length + " " + "خيارات جديده"
			   else
				  status.innerHTML = "The" + " " + plural('Items') + " " + "options list has been successfully updated";
			} else {
                status.innerHTML = warning.nodeValue;
				flags = 1;
				xmlhttpflag = 0;
                ChoiceMadeSubmit(document.getElementById('MainForm'));
            }
        	   if(userlang=="arabic")
                  status.innerHTML = "الموجود" + " : " + rowcount
			   else
                  status.innerHTML = "Available" + " : " + rowcount
	} catch(error) { 
		xmlhttpflag = 0;
        ChoiceMadeSubmit(document.getElementById('MainForm'));
    }
}




function LoadGrid() {
	var form = ExamineField('MainForm');

	var country = ExamineField('country');
	var city = ExamineField('city');
	var suburb = ExamineField('suburb');
	var district = ExamineField('district');
	var type = ExamineField('type');

	var minp = ExamineField('minp');
	var maxp = ExamineField('maxp');
	var bestoffer = ExamineField('bestoffer');
	var aim = ExamineField('aim');

	var status = document.getElementById('displaystatus'); 

	if(userlang=="arabic") 
	  status.innerHTML = "جاري البحث ...  فضلاً إنتظر";
	else
	  status.innerHTML = "looking up ...please wait...";
// watch out for path	
	url = './js/optionsxmldata.php';  
	urldata = "switch=1"+"&pivots[]=item"+"&district="+district+"&type="+type+"&tip="+tip+"&ordered="+ordered+"&country="+country+"&city="+city;
	urldata = urldata+"&suburb="+suburb+"&minp="+minp+"&maxp="+maxp+"&aim="+aim+"&start="+start+"&limit="+limit;
	urldata = urldata+"&sorted=1"+"&sortedby=ads.adstart";
   
	xmlhttpflag = 1;


	if (!xmlRequest(url, urldata, 'showNewRows')) 
	{ 
		status.innerHTML = "Error in looking up info"; 
	} 
	else
	{
		status.innerHTML = ""; 
	}


//  obj.setDataText(function(i, j){return obj_data[i][j]});
//  obj.setColumnText(function(i){return obj_columns[i]});

}

function GetPage(start,limit)
{
// To fully limit to available, reload all options again!


xmlhttpflag = 1;

try {
      LoadGrid();
    } catch(error) {
       if(DEBUG) alert(error.description);
	   form.submit();  // manual submit - old method
    }
}






    //]]>
