function changedir(obj,n,lvl){
	object=document.getElementById('child_'+n).style;	
	if(object.display=='none'){
    object.display='';    
    obj.style.listStyleImage='url(../img/folder.png)';
		document.getElementById('child_'+n).innerHTML='Loading ...';
		var httpRequest=new ajaxObject('../php/intranetprocessor.php',processData);		
		httpRequest.update('id=opendir&dir='+n+'&level='+lvl);   
  }else{
    object.display='none';
    document.getElementById('child_'+n).innerHTML='';
    obj.style.listStyleImage='url(../img/folder_closed.png)';
  }
}//changedir

function searchdocs(lvl){
	var params='';
	if(document.getElementById('title').value!=''||document.getElementById('contents').value!=''){
		if(encodeURIComponent){		
			params='&title='+encodeURIComponent(document.getElementById('title').value);
			params+='&contents='+encodeURIComponent(document.getElementById('contents').value);
		}else{		
			params='&title='+escape(document.getElementById('title').value);
			params+='&contents='+escape(document.getElementById('contents').value);
		}		
		var httpRequest=new ajaxObject('../php/intranetprocessor.php',processData);		
		httpRequest.update('id=searchdocs'+params+'&level='+lvl);		
	}
}//searchdocs	



//template
function readCookie(){
  var the_cookie = unescape(document.cookie);	
  if(the_cookie!=''){
    var font_size=the_cookie.split('=');
    if(font_size[1]>79&&font_size[1]<111){
	  document.getElementById('contentBlock').style.fontSize=font_size[1]+"%";
	  document.getElementById('span'+font_size[1]).style.border="2px solid #FFFFFF"; 
	}else{
	  var font_size=font_size[1].split(';');
	  if(font_size[0]>79&&font_size[0]<111){
		document.getElementById('contentBlock').style.fontSize=font_size[0]+"%";
		document.getElementById('span'+font_size[0]).style.border="2px solid #FFFFFF"; 
	  }
	}	  
  }
}//readCookie

function setCookie(x){	
  var the_date = new Date("December 31, 2050");
  var the_cookie_date = the_date.toGMTString();
  document.cookie='cf='+escape(x)+ ";expires=" + the_cookie_date;
}//setCookie

function changeFont(x){
  var fonts = new Array();
  fonts[0]=80;
  fonts[1]=90;
  fonts[2]=100;
  fonts[3]=110;  
  for(a in fonts){
    document.getElementById('span'+fonts[a]).style.border='1px solid #FFFFFF';	  
  }	
  document.getElementById('contentBlock').style.fontSize=x+"%";
  document.getElementById('span'+x).style.border="2px solid #FFFFFF"; 
  setCookie(x); 
}//changeFont

function both(thistag){
  object=document.getElementById(thistag).style;
  object.display=(object.display=='none')?(''):('none');
}// both

//document pages
function changeMap(jur){
	var jurisdictions=new Array('AB','BC','CA','MB','NB','NL','NT','NS','NU','ON','PE','QC','SK','YT');
  for(x=0;x<15;x++){
    if(document.getElementById('map_'+jurisdictions[x])){
      document.getElementById('map_'+jurisdictions[x]).style.display='none';    
    }  
  }
  document.getElementById('map_'+jur).style.display='';
	
}

//intranet pages
function getTree(pid,level){
	if(pid!=''&&level!=''){
      var httpRequest=new ajaxObject('../php/intranetprocessor.php',processData);
      httpRequest.update('id=gettree&pid='+pid+'&level='+level);			           
    }
}//getTree	
	

//conferences page
function changeConference(jur){
  //var jurisdictions=new Array('AB','BC','CA','MB','NB','NL','NT','NS','NU','ON','PE','QC','SK','YT','archive');
  var divs=document.getElementById('subBlock').getElementsByTagName('div');
  for(i=0;i<divs.length;i++){
      divs[i].style.display='none';
  } 
  document.getElementById('min_'+jur).style.display='';  
}//conferences

function changeconf2009_q4(){
	if(document.getElementById('li_q4_1').style.display=='none'){
		document.getElementById('li_q4_1').style.display='';
		document.getElementById('li_q4_2').style.display='';
		document.getElementById('li_q5').style.display='';
	}else{
		document.getElementById('li_q4_1').style.display='none';
		document.getElementById('q4_1').value='';		
		document.getElementById('li_q4_2').style.display='none';
		document.getElementById('q4_2').value='';
		document.getElementById('li_q5').style.display='none';
		document.getElementById('q5').value='';
	}	
}//changeconf2009_q4	


//ministers page
function changeMinister(jur){
	//parent.location.hash = jur;
  var jurisdictions=new Array('AB','BC','CA','MB','NB','NL','NT','NS','NU','ON','PE','QC','SK','YT');
  for(x=0;x<14;x++){
    if(document.getElementById('min_'+jurisdictions[x])){
      document.getElementById('min_'+jurisdictions[x]).style.display='none';    
    }  
  }
  document.getElementById('min_'+jur).style.display='';
	var httpRequest=new ajaxObject('../php/writesession.php','');
  httpRequest.update('id=minister&jur='+jur);  
}//changeMinister  

//contact page
function changeContact(jur){  
  var jurisdictions=new Array('AB','BC','CA','MB','NB','NL','NT','NS','NU','ON','PE','QC','SK','YT');
  for(x=0;x<14;x++){    
    document.getElementById('contact_'+jurisdictions[x]).style.display='none';    
  }
  document.getElementById('contact_'+jur).style.display='';
	//representative
	var httpRequest=new ajaxObject('../php/writesession.php','');
  httpRequest.update('id=representative&jur='+jur);  
}//changeContact

//conference form
function showCompany(evnt){
  var displayVal=(evnt=='yes')?(''):('none');
  document.getElementById('showCompany').style.display=displayVal;
}//showCompany  

function validateForm(formName,lang){
	var errorTXT=(lang=='en')?('Required Field'):('Champ obligatoire');
  var flag=false;    
  switch(formName){
  	case "conference":
  		flag=true;
  		var fields=new Array('prenom','nom','fonction','gouvernement','ministere','poste','add1','ville','postal','telephone','cellulaire','email');
    break;
    case "conferencelogin":
    	flag=true;
     	var fields=new Array('conferencePW');
    break;
    case "intranetlogin":
    	flag=true;
     	var fields=new Array('intranetPW');
    break;
  }  
  if(fields.length>0&&flag==true)
  for(x in fields){
  	switch(fields[x]){  		
  		//default validation
      case 'prenom':
      case 'nom':
      case 'titre':
      case 'ministere':
      case 'add1':            
      case 'ville':			
			case 'postal':			
			case 'telephone':
			case 'telecopieur':			
			case 'conferencePW':
			case 'fonction':
			case 'gouvernement':
			case 'cellulaire':
				if(trim(document.getElementById(fields[x]).value)!=''&&document.getElementById(fields[x]).value!=null){
					document.getElementById('li_'+fields[x]).style.display='none';
				}else{
					flag=false;
					document.getElementById('li_'+fields[x]).style.display='';
          document.getElementById('li_'+fields[x]).innerHTML='&uarr; '+errorTXT+' &uarr;';
        }            
      break;
      //specific validation
      case 'poste':
      //jur validation            	
        if(checkJur(document.getElementById(fields[x]).value)){
        	document.getElementById('li_'+fields[x]).style.display='none';
        }else{
        	flag=false;
          document.getElementById('li_'+fields[x]).style.display='';
          document.getElementById('li_'+fields[x]).innerHTML='&uarr; '+errorTXT+' &uarr;';
        }
        break;
        case 'courriel':
        case 'email':
        //email validation
        if(checkEmail(document.getElementById(fields[x]).value)){
        	document.getElementById('li_'+fields[x]).style.display='none';
        }else{
        	flag=false;
        	document.getElementById('li_'+fields[x]).style.display='';
          document.getElementById('li_'+fields[x]).innerHTML='&uarr; '+errorTXT+' &uarr;';
        } 
      break;
    }//switch       
  }//for
  return(flag);  
}//validateForm

function retrieveForm(formName){
	var fields=new Array();
  var params='';
  switch(formName){
  	case 'conference':
  		//var fields=new Array('prenom','nom','ministere','poste','add1','ville','titre','postal','telephone','telecopieur','courriel','special');
			var fields=new Array('prenom','nom','fonction','gouvernement','ministere','poste','add1','ville','postal','telephone','cellulaire','email','q1','q2','q3','q4','q4_1','q4_2','q5','q6');
    break;
    case 'conferencelogin':
    	var fields=new Array('conferencePW');
    break;	
    case 'intranetlogin':
    	var fields=new Array('intranetPW');
    break;
  }//switch
  if(fields.length>0)
  for(x in fields){
  	switch(fields[x]){
  		case 'poste':  			          	
        params+='&'+fields[x]+'='+document.getElementById(fields[x]).value;
      break;
      case 'q1':
      case 'q2':
      case 'q3':
      case 'q4':
      	if(document.getElementById(fields[x]).checked==true){
      		params+='&'+fields[x]+'=yes';
      	}	
      break;
      default:
       	params+='&'+fields[x]+'='+document.getElementById(fields[x]).value.replace(/#/,'');
      break;   
		}//swithc       
  }//for  
  return(params);    
}//retrieveForm

function trim(str){
    return str.replace(/^\s*([\S\s]*?)\s*$/, '$1');
}//trim

function checkEmail(str){
   return(str.indexOf(".") > 2) && (str.indexOf("@") > 0);   
}//checkEmail

function checkJur(num){
    num++;
    var str='';    
    if(num!=''){
      str=document.getElementById('poste').value;
    }
	return(trim(str)!=''&&str!='null');
}//checkEmail

function doSubmit(formName,lang){
	window.scroll(0,0);
  if(validateForm(formName,lang)){  	
  	var script='';
    var params=retrieveForm(formName);
    switch(formName){
    	case 'conference':
				script='formprocessor';
				callbackfn=processData;
			break;
			case 'conferencelogin':
				script='formprocessor';
        callbackfn=processData;
			break;
			case 'intranetlogin':
				script='intranetprocessor';
				callbackfn=processData;
			break;            
    }//switch
    if(script!=''&&(lang=='fr'||lang=='en')){
      var httpRequest=new ajaxObject('../php/'+script+'.php',callbackfn);
      httpRequest.update('id='+formName+'&lang='+lang+params);			           
    }
  }    
}//doSubmit

function processData(responseText, responseStatus){    
  if (responseStatus==200) {
  	var jsonObj=eval("("+responseText+")");
    //alert(jsonObj.bind.script);            
    document.getElementById(jsonObj.bind.affecteddiv).innerHTML=jsonObj.bind.html;    
    
  } else {
    alert(responseStatus + ' -- Error Processing Request');
  }
}//processData

//multiple ajax call function, generic
function ajaxObject(url, callbackFunction) {
  var that=this;      
  this.updating = false;
  this.abort = function() {
    if (that.updating) {
      that.updating=false;
      that.AJAX.abort();
      that.AJAX=null;
    }
  }
  this.update = function(passData,postMethod) { 
    if (that.updating) { return false; }
    that.AJAX = null;                          
    if (window.XMLHttpRequest) {              
      that.AJAX=new XMLHttpRequest();              
    } else {                                  
      that.AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }                                             
    if (that.AJAX==null) {                             
      return false;                               
    } else {
      that.AJAX.onreadystatechange = function() {  
        if (that.AJAX.readyState==4) {             
          that.updating=false;                
          that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML);        
          that.AJAX=null;                                         
        }                                                      
      }                                                        
      that.updating = new Date();                              
      if (/post/i.test(postMethod)) {
        var uri=urlCall+'?'+that.updating.getTime();
        that.AJAX.open("POST", uri, true);
        that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        that.AJAX.setRequestHeader("Content-Length", passData.length);
        that.AJAX.send(passData);
      } else {
        var uri=urlCall+'?'+passData+'&ts='+(that.updating.getTime()); 
        that.AJAX.open("GET", uri, true);                             
        that.AJAX.send(null);                                         
      }              
      return true;                                             
    }                                                                           
  }
  var urlCall = url;        
  this.callback = callbackFunction || function () { };
}//ajaxObject

var fixUrl = {
 	// public method for URL encoding
 	encode : function (string) {
 		 return escape(this._utf8_encode(string));
 	},
 	// public method for URL decoding
	 decode : function (string) {
 	 	return this._utf8_decode(unescape(string));
 	},
 	// private method for UTF-8 encoding
 	_utf8_encode : function (string) {
  		string = string.replace(/\r\n/g,"\n");
 	 	var utftext = "";
  		for (var n = 0; n < string.length; n++) {
   			var c = string.charCodeAt(n);
   			if (c < 128) {
    				utftext += String.fromCharCode(c);
 			} else if((c > 127) && (c < 2048)) {
  				utftext += String.fromCharCode((c >> 6) | 192);
  				utftext += String.fromCharCode((c & 63) | 128);
 			} else {
  				utftext += String.fromCharCode((c >> 12) | 224);
  				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
 	 			utftext += String.fromCharCode((c & 63) | 128);
 			}
 	}
		return utftext;
	},
 	// private method for UTF-8 decoding
 	_utf8_decode : function (utftext) {
 		 var string = "";
 		 var i = 0;
 		 var c = c1 = c2 = 0;
  		while ( i < utftext.length ) {
  			 c = utftext.charCodeAt(i);
   			if (c < 128) {
    				string += String.fromCharCode(c);
    				i++;
  			 } else if((c > 191) && (c < 224)) {
 				   c2 = utftext.charCodeAt(i+1);
    				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
    				i += 2;
  			 } else {
 				   c2 = utftext.charCodeAt(i+1);
    				c3 = utftext.charCodeAt(i+2);
    				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
   				 i += 3;
 			  }
		  }
		return string;
	 }
}
