/**
 * JSimple 0.2.2 - New Wave Javascript
 * $Rev: 40
 */
if(typeof registry == "undefined" && typeof _$ == "undefined") {
    var registry = []; // var global
    var _$ = {

        die : function ()
        {
            throw("_$ is down...");
        },

        error : function (src)
        {
          alert("Error _$ : " + src);
        },

        getElementExist : function (o)
        {
          var ob = document.getElementById(o) || false;
          if (ob === false) _$.error('id -> ' + o);
          return ob;
        },

        registry : {
            get : function(id)
            {
                return registry[id] || false;
            },

            set : function(id, element)
            {
              switch (typeof element) {
        			case "string" :
        			case "number" : registry[id] = element; break;
        			case "object" : registry[id] = new Object(element); break;
        			case "undefined" : return; break;
        			default : return;
                }
            },

            remove : function(id)
            {
                var tempRegistry = new Array();

                switch (typeof id) {
        			   case "string" :
        			     var modif = false;
                         for (var tab in registry) {
                             if (id !== tab) {
                                 tempRegistry[tab] = registry[tab];
                                 modif = true;
                             }
                         }

                         if (modif !== false) {
                            registry = new Array();
                            registry = tempRegistry;
                         }
                         return;
        			     break;
        			default : return;
                }
            }
        },

        /* Debug */
        Debug : {
            var_dump : function (tab)
            {
            	if(arguments.length == 2) {var indent = arguments[1] + "\t";}
            	else{ var indent = "\t";}
            	var i = 0;
            	var elements="";
            	for (var elt in tab) {
            		elements += (i ? ",\n " : " ") + indent + "[" + elt + "]:";
            		switch (typeof tab[elt])
            		{
            			case "string" : elements += "\"" + tab[elt] + "\""; break;
            			case "number" : elements += tab[elt]; break;
            			case "object" :
            				if (tab[elt] == null) elements += "*null*";
            				else if (tab[elt]) elements += _$.Debug.var_dump(tab[elt], indent); break;
            			case "undefined" : elements += "*undefined*"; break;
            			default : elements += tab[elt];
            		}
            		i++;
            	}
            	return "Array(" + i + ") {\n" + elements + "\n" + (arguments[1] ? arguments[1] : "") + "}";
            }
        },

        /* BEGIN : BASE */

        base : {

        },

        /* END : BASE */
        Events : {

            registry : function (element, eventName, functionName, capture)
            {
              var capture = capture || false;
              var element = document.getElementById(element) || element;

              if ( element.addEventListener ) {
                element.addEventListener(eventName, functionName, capture);
              } else if ( element.attachEvent ) {
                element.attachEvent("on" + eventName, functionName);
              }
            },

            unregistry : function (element, eventName, functionName, capture)
            {
              var element = document.getElementById(element) || element;

              if ( element.removeEventListener ) {
                element.removeEventListener(eventName, functionName, capture);
              } else if ( element.detachEvent ) {
                element.detachEvent("on" + eventName, functionName);
              }
            },

            browser :
            {
                get : function (e)
                {
                	var v = navigator.appVersion;
                	var agent = navigator.userAgent;
                	var dom = document.getElementById ?true:false;
                	var opera5 = agent.indexOf("Opera 5")>-1;
                	var ie5 = (v.indexOf("MSIE 5")>-1 && dom && !opera5) ?true:false;
                	var ie6 = (v.indexOf("MSIE 6")>-1 && dom && !opera5) ?true:false;
                	var ie7 = (v.indexOf("MSIE 7")>-1 && dom && !opera5) ?true:false;
                	var ie = ie5 || ie6 || ie7;
                	var mac = agent.indexOf("Mac")>-1;
                	var ns6 =(dom && parseInt(v) >= 5) ?true:false;
                	var bw = (ie7 || ie6 || ie5 || ns6 || opera5);

                    switch (e)
                    {
                        case 'version' : return v; break;
                        case 'agent' : return agent; break;
                        case 'dom' : return dom; break;
                        case 'opera5' : return opera5; break;
                        case 'ie5' : return ie5; break;
                        case 'ie6' : return ie6; break;
                        case 'ie7' : return ie7; break;
                        case 'ie' : return ie; break;
                        case 'mac' : return mac; break;
                        case 'ns6' : return ns6; break;
                        case 'bw' : return bw; break;
                    }
                }
            },

            click : function (e)
            {
                switch(e)
                {
                    case 'onedblclick' : window.scrollTo(0,0); break;
                }
            }
        },

        /* STRING */
        String : {
            ltrim : function (str)
            {
                return str.replace(/^\s+/, '');
            },

            rtrim : function (str)
            {
                return str.replace(/\s+$/, '');
            },

            trim : function (str)
            {
                return str.replace(/(^\s*)|(\s*$)/g, '');
            },

            empty : function (obj)
            {
              return document.getElementById(obj).length = 0;
            },

            is_empty : function (str)
            {
              return str.length == 0 ? true : false;
            },

            url_encode : function (str)
            {
              if (typeof str == "string") {
                return escape(str);
              }
              return str;
            },

            url_decode : function (str)
            {
              if (typeof str == "string") {
                return unescape(str);
              }
              return str;
            },

            replace_title : function (str, type)
            {
              var strTemp = "";
              var search = { '"' : {dec : '34', hec : '%22', html : '&quot;', spl : ''},
                             'à' : {dec : '224', hec : '%E0', html : '&agrave;', spl : 'a'},
                             'á' : {dec : '225', hec : '%E1', html : '&aacute;', spl : 'a'},
                             'â' : {dec : '226', hec : '%E2', html : '&acirc;', spl : 'a'},
                             'ã' : {dec : '227', hec : 'ùE3', html : '&#259;', spl : 'a'},
                             'ä' : {dec : '228', hec : '%E4', html : '&auml;', spl : 'a'},
                             'å' : {dec : '229', hec : '%E5', html : '&#314;', spl : 'a'},
                             'ç' : {dec : '231', hec : '%E7', html : '&ccedil;', spl : 'c'},
                             'è' : {dec : '232', hec : '%E8', html : '&#269;', spl : 'e'},
                             'é' : {dec : '233', hec : '%E9', html : '&eacute;', spl : 'e'},
                             'ê' : {dec : '234', hec : '%EA', html : '&#281;', spl : 'e'},
                             'ë' : {dec : '235', hec : '%EB', html : '&euml;', spl : 'e'},
                             'ì' : {dec : '236', hec : '%EC', html : '&#283;', spl : 'i'},
                             'í' : {dec : '237', hec : '%ED', html : '&iacute;', spl : 'i'},
                             'î' : {dec : '238', hec : '%EE', html : '&icirc;', spl : 'i'},
                             'ï' : {dec : '239', hec : '%EF', html : '&#271;', spl : 'i'},
                             'ñ' : {dec : '241', hec : '%F1', html : '&#324;', spl : 'n'},
                             'ò' : {dec : '242', hec : '%F2', html : '&#328;', spl : 'o'},
                             'ó' : {dec : '243', hec : '%F3', html : '&oacute;', spl : 'o'},
                             'ô' : {dec : '244', hec : '%F4', html : '&ocirc;', spl : 'o'},
                             'õ' : {dec : '245', hec : '%F5', html : '&#337;', spl : 'o'},
                             'ö' : {dec : '246', hec : '%F6', html : '&ouml;', spl : 'o'},
                             'ù' : {dec : '249', hec : '%F9', html : '&#367;', spl : 'u'},
                             'ú' : {dec : '250', hec : '%FA', html : '&uacute;', spl : 'u'},
                             'û' : {dec : '251', hec : '%FB', html : '&#369;', spl : 'u'},
                             'ü' : {dec : '252', hec : '%FC', html : '&uuml;', spl : 'u'},
                             'ý' : {dec : '253', hec : '%FD', html : '&yacute;', spl : 'y'}
              };

              for (var i=0; i<str.length; i++) {

                var a = str.substring(i, i+1).toLowerCase();
                var p = true;

                for (var elt in search) {
                  if (a === elt) {
                    strTemp += search[elt].spl;
                    p = false;
                  }
                }

                if (p) strTemp += a;
              }

              return strTemp.toLowerCase();
            }
        },

        /* Array */
        Array : {
            count : function (arr)
            {
              var i=0;
              for (var elt in arr) i++;
              return i;
            },

            explode : function (symb, string, size)
            {
                 if(symb.length == 0) return false;

                 var texte = string;
                 var tru = true; // Variable drapeau
                 var flag = false; // Variable drapeau
                 var plast = 0;
                 var num = 0;
                 var last;
                 var llast = texte.lastIndexOf(symb); // Dernière occurence de symb dans string
                 var ordr = new Array();
                 var len = texte.length;

                 while(tru == true) {
                   last = texte.indexOf(symb, plast);
                   if(flag == true) {
                     tru = false;
                     last = len;
                   }
                   ordr[num] = texte.substring( plast , last );

                   if(size)
                   {
                     if(ordr.length == size) {
                       ordr[num] += texte.substring( last , len );
                       tru = false;
                     }
                   }
                   num++;
                   plast = last+1;
                   if(last == llast) {
                     flag = true
                   }
                 }
                 return ordr;
            },

            implode : function (symb,array)
            {
              var len = array.length;
              var fin = '';

              for(i = 0; i < len;i++)
              {
                if(i){
                  fin += symb;
                }
                fin +=array[i];
              }
              return fin;
            }
        },

        /* Verif */
        Verif : {
            is_blank : function (s)
            {
                return false != s.match(/^\s*$/);
            },

            is_array : function (s)
            {
            },

            is_mail : function (m)
            {
                var verif = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                if (verif.exec(m) == null) return true;
                else return false;
            },

            is_url : function (u)
            {
                return (new RegExp("((?:https?|ftp)://(.*))", "g")).test(u);
            }
        },

        /* Css */
        Css : {
            findPos : function (o)
            {
              if(_$.getElementExist(o) !== false) {
                var o = document.getElementById(o);
              	var curleft = curtop = 0;
              	if (o.offsetParent) {
              		curleft = o.offsetLeft;
              		curtop = o.offsetTop;
              		while (o = o.offsetParent) {
              			curleft += o.offsetLeft;
              			curtop += o.offsetTop;
              		}
              	}
              	return {"left" : curleft, "top" : curtop};
              } else {
                  return false;
              }
            }
        },

        /* Elements */
        Elements : {
            display : function (o, a)
            {
            	if(_$.getElementExist(o) !== false) {
            		var o = document.getElementById(o).style;
            		switch(a) {
            			case 0: o.display = 'none'; break;
            			case 1: o.display = 'inline'; break;
            			case 2:	if(o.display == 'none') o.display='inline';
            					else o.display='none';
            			break;
            		}
            	} else {
                  return false;
            	}
            },


            disabled : function (o, a) {
            	if(_$.getElementExist(o) !== false) {
            		var verif = document.getElementById(o).disabled;
            		switch(a) {
            			case 0: document.getElementById(o).disabled=false; break;
            			case 1: document.getElementById(o).disabled=true; break;
            			case 2:	if(verif==true) {document.getElementById(o).disabled=false;}
            					else{document.getElementById(o).disabled=true;}
            			break;
            		}
            	} else {
                  return false;
            	}
            },

            is_checked : function (o) {
            	if(_$.getElementExist(o) !== false) {
            		if(document.getElementById(o).checked == true) return true;
            		else return false;
            	} else {
                    return false;
              }
            },

            getInputText : function (o)
            {
              if(_$.getElementExist(o) !== false)
                return document.getElementById(o).value;
              else
                return false;
            },

            getSelectedByValue : function (o)
            {
              if(_$.getElementExist(o) !== false)
                  return document.getElementById(o).options[document.getElementById(o).selectedIndex].value;
              else
                  return false;
            },

            getRadioByName : function (o)
            {
              if(_$.getElementExist(o) !== false) {
            	  var r=document.getElementsByName(o);
            		for(var i=0; i < radio.length;i++) {
            			if (r[i].checked) return(r[i].value);
            		}
              } else {
                  return false;
              }
            },

            setSelectedByValue : function (obj, v)
            {
            	if(_$.getElementExist(obj) !== false) {
            		var objLen=document.getElementById(obj).options.length;
            	 	for(i=0; i<objLen; i++) {
            	 		var value=document.getElementById(obj).options[i].value;
            	 		if(value==v){document.getElementById(obj).selectedIndex=i;}
            	 	}
            	} else {
                return false;
            	}
            },

            setSelectedByText : function (o, v)
            {
            	if(_$.getElementExist(o) !== false) {
            		var oLen=document.getElementById(o).options.length;
            	 	for(i=0; i<oLen; i++) {
            	 		var txt=document.getElementById(o).options[i].text;
            	 		if(txt==v){document.getElementById(o).selectedIndex=i;}
            	 	}
            	} else {
                return false;
            	}
            },

            setRadioByName : function (o, s) {
            	if(_$.getElementExist(o) !== false) {
            		var r=document.getElementsByName(o);
            		for(var i=0; i<r.length;i++) {
            			if(r[i].value==s) {r[i].checked=true;}
            		}
            	} else {
                return false;
            	}
            }
        },

        /* gestion date */
        Date : {

         /**
          * format jj/mm/aaaa
          * Renvoye 0 si égalité, 1 si la première est supérieure, sinon 2 si inferieur
          */
          compare : function (paramOne, paramTwo)
          {
             var paramOne = _$.Date.switchEnglish(paramOne, '/');
             var paramTwo = _$.Date.switchEnglish(paramTwo, '/');

                 paramOne = Date.parse(paramOne);
                 paramTwo = Date.parse(paramTwo);

             if (paramOne == paramTwo) return 0;

             if (paramOne > paramTwo) return 1;
             else return 2;
          },

          switchEnglish : function (paramOne, paramTwo)
          {
            var date = new Array(3);
                date = _$.Date.scinde(paramOne);

            return date[2] + paramTwo + date[1] + paramTwo + date[0];
          },

          scinde : function (paramOne)
          {
            var returnArray = new Array(3);
            var day = '';
            var month = '';
            var year = '';

            var i = 0;
            while( (paramOne.charAt(i) != "/") && (i<10) ){
              day += paramOne.charAt(i);
              i++;
            }

            if(day.charAt(0) == "0"){
              day = day.charAt(1);
            }
            paramOne = paramOne.substring(i+1, paramOne.length);


            var i = 0;
            while((paramOne.charAt(i) != "/")&&(i<10)){
              month += paramOne.charAt(i);
              i++;
            }

            if(month.charAt(0) == "0"){
              month = month.charAt(1);
            }
            paramOne = paramOne.substring(i+1, paramOne.length);

            year = paramOne;
            returnArray[0] = day;
            returnArray[1] = month;
            returnArray[2] = year;
            return returnArray;
          }
        }
    };
};