// ------------------------------------------------------------------------
// DHTML Suite Functions
// ------------------------------------------------------------------------		

var calendarObjForForm = new DHTMLSuite.calendar({minuteDropDownInterval:10,numberOfRowsInHourDropDown:5,callbackFunctionOnDayClick:'getDateFromCalendar',isDragable:true,displayTimeBar:true}); 

// ------------------------------------------------------------------------		
function pickDate(buttonObj, inputObject) {
    
    inputFormat='yyyy-mm-dd';

    var myCalendarModel = new DHTMLSuite.calendarModel({ initialYear:2008,initialMonth:07,initialDay:20 });
	myCalendarModel.setLanguageCode('eng');
	calendarObjForForm.setCalendarModelReference(myCalendarModel);
	
	calendarObjForForm.setCalendarPositionByHTMLElement(inputObject,0,inputObject.offsetHeight+2);	// Position the calendar right below the form input
	calendarObjForForm.setInitialDateFromInput(inputObject, inputFormat);	// Specify that the calendar should set it's initial date from the value of the input field.
	calendarObjForForm.addHtmlElementReference('myDate',inputObject);	// Adding a reference to this element so that I can pick it up in the getDateFromCalendar below(myInput is a unique key)
	calendarObjForForm.displayTimeBar=false;
	if(calendarObjForForm.isVisible()){
		calendarObjForForm.hide();
	}else{
		calendarObjForForm.resetViewDisplayedMonth();	// This line resets the view back to the inital display, i.e. it displays the inital month and not the month it displayed the last time it was open.
		calendarObjForForm.display();
	}		
}	
/* inputArray is an associative array with the properties
year
month
day
hour
minute
calendarRef - Reference to the DHTMLSuite.calendar object.
*/

// ------------------------------------------------------------------------		
function getDateFromCalendar(inputArray)
{
	var references = calendarObjForForm.getHtmlElementReferences(); // Get back reference to form field.
    references.myDate.value = inputArray.year + '-' + inputArray.month + '-' + inputArray.day;	calendarObjForForm.hide();	
	
}	

// ------------------------------------------------------------------------		
function autoFillValidate(id) {

	var key_id=String(id).replace(/_display/i,'');
	
	// Clear hidden key/selected field if displayed field is cleared
	if (document.getElementById(id).value=='') {
	    if(document.getElementById(key_id)) document.getElementById(key_id).value='';
	    if(document.getElementById(key_id+'_selected')) document.getElementById(key_id+'_selected').value='';
	}
	
	// Ensure that displayed field contains always the selected value (the user could clear part of it or enter an invalid value)
	else if (document.getElementById(key_id+'_selected')) {	
		if (document.getElementById(id).value!=document.getElementById(key_id+'_selected').value) {
		    document.getElementById(id).value=document.getElementById(key_id+'_selected').value;
		}
	}
}

// ------------------------------------------------------------------------
// DOM Functions
// ------------------------------------------------------------------------		

//---------------------------------------------------------------------------
function dom_set_html(id, html) {
    document.getElementById(id).innerHTML = html;
}
//---------------------------------------------------------------------------
function dom_load_url(id, url) {
	var dynContentObj;			
	dynContentObj=new DHTMLSuite.dynamicContent();	
	dynContentObj.loadContent(id, url);
}
//---------------------------------------------------------------------------
function dom_set_img(id, src, height, width) {
    document.getElementById(id).src = src;
    document.getElementById(id).height = height;
    document.getElementById(id).width = width;
}
//---------------------------------------------------------------------------
function dom_toggle_visibility(id)
{
	obj=document.getElementById(id);
	obj.style.display=((obj.style.display=='none') ? '' : 'none');
}
//---------------------------------------------------------------------------
function dom_show(id)
{
	obj=document.getElementById(id);
	obj.style.display='';
}
//---------------------------------------------------------------------------
function dom_hide(id)
{
	obj=document.getElementById(id);
	obj.style.display='none';
}

//---------------------------------------------------------------------------
function dom_stop_event(e) {
   if (e.stopPropagation) {  
     e.stopPropagation();
   } else {
     e.cancelBubble = true;
   }
}

// ------------------------------------------------------------------------
// AJAX Functions
// ------------------------------------------------------------------------		

var http_request = false;

//---------------------------------------------------------------------------
function ajax_make_request(url) {

	http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = ajax_handle_response;
	http_request.open('GET', url, true);
	http_request.send(null); 

}

//---------------------------------------------------------------------------
function ajax_handle_response() {

   
    if(http_request.readyState == 4){

	if (http_request.status == 200) {
	
		var update = new Array();
		var response = http_request.responseText;
		alert(response);
response = 'toto|<img width="200" src="a.jpg"></img>';
update = response.split('|');
if(response.indexOf('|' != -1)) {
	update = response.split('|');
	document.getElementById(update[0]).innerHTML = update[1];

//	document.location = http_request.responseText;
}
	} else {
		alert('There was a problem with the request.');
	}

    }
}

//---------------------------------------------------------------------------

// ------------------------------------------------------------------------
// Data Picker
// ------------------------------------------------------------------------		
function dataPicker(pickerID, fieldID) {
	document.getElementById("DataPicker_RefID").value = fieldID;
	document.getElementById("DataPicker").style.visibility = "visible";
}

function dataPicker_pick(){
	fieldID = document.getElementById("DataPicker_RefID").value;
	document.getElementById(fieldID).value = "****";
	document.getElementById("DataPicker").style.visibility = "hidden";
}

// ------------------------------------------------------------------------
// Pop-up window
// ------------------------------------------------------------------------		
var winpopup = null;
function f_OpenWindowPopup(popurl) {
	// Centrage de la fenêtre
    if (document.all)
        var xMax = screen.width, yMax = screen.height;
    else
        if (document.layers)
            var xMax = window.outerWidth, yMax = window.outerHeight;
        else
            var xMax = 640, yMax=480;

    var xOffset = (xMax - 200)/2, yOffset = (yMax - 200)/2;

	popset = 'resizable=no,status=yes,toolbar=0,scrollBars=1,location=0,statusbar=0,menubar=0,height=400,width=440' 
	         // La ligne ci-dessous permet de centrer la popup
			 //+ ',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+'';		 

	if(winpopup){
		if(winpopup.closed){
			//the window has been closed, so open a new one.
			winpopup = window.open(popurl, 'winpopup', popset); 
			if (winpopup.opener == null) winpopup.opener = self;
		} else{
			winpopup.focus();
		}
	} else {
		winpopup = window.open(popurl, 'winpopup', popset);
	}
	winpopup.focus();

	return winpopup;
}

/**
 * Open window popup detail
 */
function f_OpenWindowPopupDetail(popurl) {
	// Centrage de la fenêtre
    if (document.all)
        var xMax = screen.width, yMax = screen.height;
    else
        if (document.layers)
            var xMax = window.outerWidth, yMax = window.outerHeight;
        else
            var xMax = 640, yMax=480;

    var xOffset = (xMax - 200)/2, yOffset = (yMax - 200)/2;

	popset = 'resizable=yes,status=yes,toolbar=0,scrollBars=1,location=0,statusbar=0,menubar=0' 
	         // La ligne ci-dessous permet de centrer la popup
			 //+ ',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+'';		 

	winpopup = window.open(popurl, 'winpopup', popset);
	winpopup.resizeTo(448,550);
	winpopup.focus();
	
	return winpopup;
}

// ------------------------------------------------------------------------
// Validation of fields used in package 'class.form.inc.' (event 'onBlur')
// ------------------------------------------------------------------------		

// Verif number format (0-9)
function f_verifNumber(field, msg){	
	var valid = 1;
	var GoodChars = "0123456789";
	var i = 0;
	var number = field.value;

	for (i = 0; i <= number.length - 1; i++) {
		if (GoodChars.indexOf(number.charAt(i)) == -1) {
			valid = 0;
			break;
		}
	}
	if (valid==0) alert(msg);
	return valid;
}

// Verify text format
function f_verifText(field,value){
	// Do nothing (because this procedure is called only for TextArea Field)	
}

// Verify date format 
function f_verifDate(field,format,msg){

	var lb_date_validate = 1;
	var ld_date = field.value;
	var ll_date = ld_date.length;
	var format1 = "";
	var format2 = "";
	var format3 = "";
	
	// Return if field is empty
	if (ld_date == '') return 0;

	// Recherche le séparateur utilisé pour le format de date (config)
	if (format.indexOf('.') > 0) separator = '.';
	else if (format.indexOf('/') > 0) separator = '/';
	else if (format.indexOf('-') > 0) separator = '-';

	// Obtenir le format de la date (D M Y)
	str = format.split(separator);
	format1 = str[0];
	format2 = str[1];
	format3 = str[2]; 
	
	// Recherche si le séparateur utilisé dans la saisie de la date est valide
	if ((ld_date.indexOf('.') > 0) && (ld_date.lastIndexOf('.') > 0)) separator = '.';
	else if ((ld_date.indexOf('/') > 0) && (ld_date.lastIndexOf('/') > 0)) separator = '/';
	else if ((ld_date.indexOf('-') > 0) && (ld_date.lastIndexOf('-') > 0)) separator = '-';
	else lb_date_validate = 0;

	// Test si la date insérée n'est pas trop grande
	if (ll_date > 10) lb_date_validate = 0;
	
	// Test le premier digit
	digit = ld_date.indexOf(separator);
	if (digit != (format1.length)) {
		if ((format1.length == 4) || (digit > 2) || (digit < 1)) lb_date_validate = 0;
	}

	// Test le deuxième digit
	digit = ld_date.length - (ld_date.indexOf(separator) + (ld_date.length - ld_date.lastIndexOf(separator) + 1));
	if (digit != (format2.length)) {
		if ((format2.length == 4) || (digit > 2) || (digit < 1)) lb_date_validate = 0;
	}

	// Test le dernier digit
	digit = ld_date.length - ld_date.lastIndexOf(separator) - 1;
	if (digit != (format3.length)) {
		if ((format3.length == 4) || (digit > 2) || (digit < 1)) lb_date_validate = 0;
	}

	if (lb_date_validate == 0) 
	{
		alert(msg);
		field.focus();
		return 0;
	}
	return 1;
}

// Verify datetime format
function f_verifDateTime(field,date_format,hour_format,msg) {

	var lb_datetime_validate = 1;
	var ld_datetime = field.value;
	var ll_datetime = ld_datetime.length;
	
	// Return if field is empty
	if (ld_datetime == '') return 0;
		
	// Obtient la date uniquement, sans les heures
	var datetime = field.value.split(" ");
	var ld_date = datetime[0];
	var lb_date_validate = 1;
	var ll_date = ld_date.length;
	var format1 = "";
	var format2 = "";
	var format3 = "";

	// Return if field is empty
	if (ld_date == '') return 0;

	// Recherche le séparateur utilisé pour le format de date (config)
	if (date_format.indexOf('.') > 0) separator = '.';
	else if (date_format.indexOf('/') > 0) separator = '/';
	else if (date_format.indexOf('-') > 0) separator = '-';

	// Obtenir le format de la date (D M Y)
	str = date_format.split(separator);
	format1 = str[0];
	format2 = str[1];
	format3 = str[2]; 
	
	// Recherche si le séparateur utilisé dans la saisie de la date est valide
	if ((ld_date.indexOf('.') > 0) && (ld_date.lastIndexOf('.') > 0)) separator = '.';
	else if ((ld_date.indexOf('/') > 0) && (ld_date.lastIndexOf('/') > 0)) separator = '/';
	else if ((ld_date.indexOf('-') > 0) && (ld_date.lastIndexOf('-') > 0)) separator = '-';
	else lb_date_validate = 0;

	// Test si la date insérée n'est pas trop grande
	if (ll_date > 10) lb_date_validate = 0;
	
	// Test le premier digit
	digit = ld_date.indexOf(separator);
	if (digit != (format1.length)) {
		if ((format1.length == 4) || (digit > 2) || (digit < 1)) lb_date_validate = 0;
	}

	// Test le deuxième digit
	digit = ld_date.length - (ld_date.indexOf(separator) + (ld_date.length - ld_date.lastIndexOf(separator) + 1));
	if (digit != (format2.length)) {
		if ((format2.length == 4) || (digit > 2) || (digit < 1)) lb_date_validate = 0;
	}

	// Test le dernier digit
	digit = ld_date.length - ld_date.lastIndexOf(separator) - 1;
	if (digit != (format3.length)) {
		if ((format3.length == 4) || (digit > 2) || (digit < 1)) lb_date_validate = 0;
	}
	
	// Obtient les heures et les minutes uniquement, sans la date
	var lb_time_validate = 1;
	
	if (typeof(datetime[1]) == "undefined") {
		lb_time_validate = 0;
	} else {	
		var lt_hour = datetime[1];
		
		// Recherche si les heures et les minutes sont séparés par les ':'
		if (lt_hour.indexOf(':') == -1 ) lb_time_validate = 0;
		if (lt_hour.length > 5 ) lb_time_validate = 0;
	}
	
	if ((lb_datetime_validate == 0) || (lb_date_validate == 0) || (lb_time_validate == 0))
	{
		alert(msg);
		field.focus();
		return 0;
	}
	return 1;
}
