function GetUrlObj(){
	var hash=location.hash;
	var retObj = {};
	if (hash){
		//alert(hash);
		// strip off the leading '?'
		hash = hash.substring(1);
		
		var nvPairs = hash.split("&");
		
		var tmpObj = {};
		
		for (i = 0; i < nvPairs.length; i++){
			var nvPair = nvPairs[i].split("=");
			nvPair = (nvPair && nvPair.length==1)?['sid',nvPair[0]]:nvPair;
			eval("tmpObj."+nvPair[0]+"='"+nvPair[1]+"'");
			//tmpObj = {nvPair[0] : nvPair[1]};
			$extend(retObj,tmpObj);
		}
		//alert(retObj.sr);				
	}
	return retObj;
}
function SetUrlObj(obj){
	if (obj && typeof obj === 'object'){
		var hash = location.hash.substring(1);
		
		var splitter = tmpStr = "";		
		for(prop in obj){				
			if(obj[prop] && !(obj[prop] === "undefined")){				
				tmpStr += splitter+prop+"="+escape(obj[prop]);
				splitter = "&";
			}
		}	
		if(tmpStr && tmpStr.length>0){
			window.location.hash = tmpStr;			
		}
	}
}
function UpdateUrlObj(key,val){
	
	var myObj = GetUrlObj();
	var tmpObj = {};
	if(myObj && typeof( myObj ) == 'object' && 
		key && typeof key === 'string'){
		eval("tmpObj."+key+"='"+val+"'");
		(key in myObj)? eval("myObj."+key+"='"+val+"'"):$extend(myObj,tmpObj);
	}
	return myObj;
}
//////////////////////////////////////////////////////////////////////////////////////////
//
//	CONVERT HTML ELEMENT TO OBJECT
//
function FormToArrayObject(form,mixedobj){
	
	var elem 	= form.elements;
	var retArr	= [];
	alert(form);
	for(var i = 0; i < elem.length; i++){ // RETURN OBJECT
		retArr[i]	=	HTMLElementToObject(elem[i],mixedobj);
	}
	return retArr;
	
}
function HTMLElementToObject(el,mixedobj){
	// FOR SERIALIZE OBJECT	
	//alert(el.value);
	if(!el.type) return {mixed: 			mixedobj};
	
	switch(el.type){
		case 'text':
		case 'textarea':
			var data = {	name: 			el.name,							
							value: 			escape(el.value),
							type : 			el.type,
							length:			el.textLength,
							multiple:		null,
							rows:			el.rows,
							cols:			el.cols,
							disabled:		el.disabled,
							selectionEnd:	el.selectionEnd,
							selectionStart:	el.selectionStart,
							tabIndex:		el.tabIndex,
							selectedIndex: 	el.selectedIndex,
							className:		el.className,
							options:		null,
							mixed: 			mixedobj
							 }; 
			return data;		
		case 'select-one': case 'select-multiple':
			var arrCollection = HTMLCollectionToArray(el.options);
			var data = {	name: 			el.name,							
							value: 			escape(el.value),
							type : 			el.type,
							length:			el.length,
							multiple:		el.multiple,
							size:			el.size,
							tabIndex:		el.tabIndex,
							selectedIndex: 	el.selectedIndex,
							className:		el.className,
							options:		arrCollection,
							mixed: 			mixedobj
							 }; 
			return data;
		break;
		case 'checkbox': 
			var data = {	name: 			el.name,							
							value: 			escape(el.value),
							type : 			el.type,
							length:			el.length,
							multiple:		el.multiple,
							size:			el.size,
							tabIndex:		el.tabIndex,
							selectedIndex: 	el.selectedIndex,
							className:		el.className,
							options:		null,
							mixed: 			mixedobj
							 }; 
			return data;				
		break;				
		case 'radio': 
			var data = {	name: 			el.name,							
							value: 			el.value,
							type : 			el.type,
							length:			el.length,
							multiple:		el.multiple,
							size:			el.size,
							tabIndex:		el.tabIndex,
							selectedIndex: 	el.selectedIndex,
							className:		el.className,
							options:		null,
							mixed: 			mixedobj
							 }; 
			return data;							
	}	
}
function HTMLCollectionToArray(htmlcollection){
	var tmp = [];
	for(i=0;i<htmlcollection.length;i++){
		tmp[i] = {	"defaultSelected"	: htmlcollection[i].defaultSelected,
					"value" 			: htmlcollection[i].value,
					"index" 			: htmlcollection[i].index,
					"disabled" 			: htmlcollection[i].disabled,
					"label" 			: htmlcollection[i].label,
					"selected" 			: htmlcollection[i].selected					
					};
	}
	return tmp;
}
//
//	CONVERT HTML ELEMENT TO OBJECT
//
//////////////////////////////////////////////////////////////////////////////////////////
function RemoveArrDivContent(arr){
	if(arr && arr.length>0){		
		for(i=0;i<arr.length;i++){
			// IF DIV IS SET
			($(arr[i]))?$(arr[i]).innerHTML="":null;
		}//end loop
	}//end arr is set
}
function RemoveDivContent(divId){
	if(divId && document.getElementById(divId)){		
		document.getElementById(divId).innerHTML="";
		return 1;
	}//end arr is set
	return -1;
}
function RemoveElement(parentDiv,divToRemove){	
	if(parentDiv && document.getElementById(parentDiv) &&
		divToRemove && document.getElementById(divToRemove)){		
		var d = document.getElementById(parentDiv);
		var olddiv = document.getElementById(divToRemove);
		d.removeChild(olddiv);
	}	
}
function AddElement(parentDiv,divToAdd,arrAttributes) {
	
	if(parentDiv && document.getElementById(parentDiv) &&
		divToAdd){
			
		var holder 		= document.getElementById(parentDiv);
		var newdiv 		= document.createElement('div');		
		newdiv.setAttribute('id',divToAdd);
		newdiv.setAttribute('class','search-filter-dynamic-holder');
		if(false && arrAttributes){		
			for (var property in arrAttributes){				
				newdiv.setAttribute(property,arrAttributes[property]);						
			}
		}		
		holder.appendChild(newdiv);
	}
}
//////////////////////////////////////////////////////////
//
//	DISPLAY FUNCTIONS
//

function DisplayErrorMsg(strMsg,divid)
{
	if($(divid))
		$(divid).innerHTML = '<div align="center" style="padding:5px 5px 5px 5px;">'+strMsg+'</div>';	
	else
		alert('Erreur, le id spécifié { '+divid+' } est inexistant !');
}
function DisplayLoading(){
	return '<div align="center" style="padding:5px 5px 5px 5px;"><img src="../global-uri/loading.gif" border="0"></div>';
}
//////////////////////////////////////////////////////////
//
//	EXTEND FUNCTIONS
//
/*
String.prototype.pad = function(l, s, t){
	// length : amount of characters that the string must have
	// substring : string that will be concatenated
	// type : specifies the side where the concatenation will happen, where: 0 = left, 1 = right and 2 = both sides
    return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length)
        + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2))
        + this + s.substr(0, l - t) : this;
};

Object.prototype.extend = function(destination,source) {
	alert(destination +' => '+ source);
    for (var property in source)
    	alert(destination[property] +' => '+ source[property]);
        destination[property] = source[property];
    return destination;
};

Object.prototype.merge = (function (ob) {var o = this;var i = 0;for (var z in ob) {if (ob.hasOwnProperty(z)) {o[z] = ob[z];}}return o;})
*/