function homeLinks(){
  //properties
  this.oForm;
  this.lastIndex;
  this.aObjectsSelects = new Array();
  //methods
  this.init = init;
  this.loadFile = loadFile;
  this.getXMLHttpObj = getXMLHttpObj;
  this.chooseCategory = chooseCategory;
  this.displayObjectSelect = displayObjectSelect;
  this.displayObjectOrder = displayObjectOrder;
  this.followLink = followLink;
  this.displayLink = displayLink;
  this.displayList = displayList;
  this.displayHead = displayHead;
  this.displayMain = displayMain;
  this.getParsFromUrl = getParsFromUrl;
}

function init(lastIndex){
  this.lastIndex = lastIndex;
  this.oForm = document.form_links;
}

function chooseCategory(i,categoryCode){
  if(categoryCode){
    if(!this.aObjectsSelects[categoryCode]){
      var oTh = document.getElementById('td_obj_lab_'+i);
      oTh.innerHTML = 'oggetti';
      var fileToLoad = 'get_data.php?method=disp_obj_select&i='+i+'&cat_code='+categoryCode;
      var callbackFunction = 'oHl.displayObjectSelect';
      var aCallbackFunctionParameters = [i,categoryCode];
      this.loadFile(fileToLoad,callbackFunction,aCallbackFunctionParameters);
    }else{
      this.displayObjectSelect(this.aObjectsSelects[categoryCode],i,categoryCode);
    }
    this.displayObjectOrder(i);
  }
}

function displayObjectOrder(i){
  if(!document.getElementById('ho_ord_'+i)){
    var oTh = document.getElementById('td_ord_lab_'+i);
    oTh.innerHTML = 'ordinamento';
    var oTd = document.getElementById('td_ord_'+i);
    var id = 'ho_ord_'+i;
    var name = 'ho['+i+'][ord]';
    oTd.innerHTML = '<input type="text" id="'+id+'" name="'+name+'" size="5"/>';
  }
}

function displayObjectSelect(response,i,categoryCode){
  var oTd = document.getElementById('td_obj_'+i);
  oTd.innerHTML = response;
  if(!this.aObjectsSelects[categoryCode]) this.aObjectsSelects[categoryCode] = response;
}

function followLink(lang,cat_code,objectId,tipoPub,id2){
  lang = lang == 'i' ? 'ita' : 'eng';
  var page = 'aarte_'+lang+'_art.htm?cat='+cat_code+'&id='+objectId+'&lang='+lang;
  if(cat_code == 'pub') page += '&tipo='+tipoPub+'&id2='+id2;
  window.parent.location = page;
}

function displayLink(){
  var oPars = this.getParsFromUrl();
  this.displayList(oPars);
  this.displayHead(oPars);
  this.displayMain(oPars);
}

function displayMain(oPars){
  var oPages = new Object();
  oPages.ita = {mos:'mostra',pub:'pubblicazione',fie:'fiera',age:'agenda'};
  oPages.eng = {mos:'exhibition',pub:'book',fie:'fair',age:'agenda_eng'};
  
  oPages.pars = {
                mos:'id_mostra='+oPars.id,
                pub:'tipo='+oPars.tipo+'&id_pubblicazione='+oPars.id+'&id_'+(oPars.tipo=='m'?'mostra':'fiera')+'='+oPars.id2,
                fie:'id_fiera='+oPars.id,
                age:'id_appuntamento='+oPars.id};
  var page = oPages[oPars.lang][oPars.cat] + '.php?'+oPages.pars[oPars.cat];
  window.frames['mainFrame'].location.href = page;
}

function displayHead(oPars){
  var oPages = new Object();
  oPages.ita = {mos:'mostra',pub:'pubbli',fie:'fiera',age:'agenda'};
  oPages.eng = {mos:'exhibition',pub:'book',fie:'fair',age:'agenda'};
  
  oPages.pars = {
                mos:'mos=n&ved=s&ope=s&pub=s&id_mostra='+oPars.id,
                pub:'tipo='+oPars.tipo+'&sch=n&txt=s&dat=s&id_pubblicazione='+oPars.id+'&id_'+(oPars.tipo=='m'?'mostra':'fiera')+'='+oPars.id2,
                fie:'id_fiera='+oPars.id+'&fie=n&pub=s',
                age:'id_appuntamento='+oPars.id};
  var page = oPages[oPars.lang][oPars.cat] + '_head.php?'+oPages.pars[oPars.cat];
  window.frames['intestazione'].location.href = page;
}

function displayList(oPars){
  var oPages = new Object();
  oPages.ita = {prefix:'elenco_',mos:'mostre',pub:'pubblicazioni',fie:'fiere',age:'agenda'};
  oPages.eng = {prefix:'list_',mos:'exhibitions',pub:'books',fie:'fairs',age:'agenda'};
  var page = oPages[oPars.lang].prefix + oPages[oPars.lang][oPars.cat] + '.php';
  if(oPars.cat == 'pub') page += '?tipo='+oPars.tipo;
  window.frames['elenchi'].location.href = page;
}

function getParsFromUrl(){
  var oPars = new Object();
  //lang
  //category and id
  var sTmp = location.search;
  sTmp = sTmp.replace(/\?/,'');
  var aPars = sTmp.split('&');
  var sPar;
  var aTmp;
  for(i in aPars){
    sPar = new String(aPars[i]);
    aTmp = sPar.split('=');
    oPars[aTmp[0]] = aTmp[1];
  }
  return oPars;
}

function loadFile(fileToLoad,callbackFunction,aCallbackFunctionParameters,bSync,sendMethod,oPostData){
  var http_request = this.getXMLHttpObj();
  if (!http_request) {
      oSystem.oDebug.de('Giving up :( Cannot create an XMLHTTP instance');
      return false;
  }
  http_request.onreadystatechange = function() {
      if (http_request.readyState == 4) {
          if (http_request.status == 200) {
            var callbackFunctionParameters = '(http_request.responseText';
            if(aCallbackFunctionParameters){
              //alert(callbackFunction+', '+aCallbackFunctionParameters+', '+aCallbackFunctionParameters.length);
              for(i in aCallbackFunctionParameters){
                
                callbackFunctionParameters += ',\''+aCallbackFunctionParameters[i]+'\'';
              }
            }
            callbackFunctionParameters += ')';
            eval(callbackFunction + callbackFunctionParameters);
          } else {
              oSystem.oDebug.de('There was a problem with the request.(Code: '+http_request.status+', URL: '+fileToLoad+')');
          }
      }
  };
  
  bAsync = bSync ? !bSync : true;
  if(sendMethod == 'post'){
    http_request.open('POST', fileToLoad, true);
    var parametersString = '';
    for(i in oPostData){
      parametersString += '&'+i+'='+encodeURI(oPostData[i]);
    }
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parametersString.length);
    if(!(oSystem.browserCode == 'e' && oSystem.browserVersion < 7)){
      http_request.setRequestHeader("Connection", "close");
    }
    http_request.send(parametersString);
  }else{
    http_request.open('GET', fileToLoad, bAsync);
    http_request.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');
    http_request.send(null);
  }
  delete bAsync;
}

function getXMLHttpObj(){
	if(typeof(XMLHttpRequest)!='undefined')
		return new XMLHttpRequest();

	var axO=['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'], i;
	for(i=0;i<axO.length;i++)
		try{
			return new ActiveXObject(axO[i]);
		}catch(e){}
	return null;
}
