var tools = {
	debug_mode:false,
	in_array:function(value, indexed_array)
	{
		var i;
		var len;

		len = indexed_array.length;
		i = 0;
		while (i < len)
		{
			if (value == indexed_array[i])
				return (true);
			i++;
		}
		return (false);
	},
	find_pos:function(id)
	{
		var elem_parent;
		var top;
		var left;
		var pos = new Array();
		var posl;
		var obj;

        if (typeof(id) == "string")
            obj = $(id);
        else
            obj = id;
        posl = obj.cumulativeOffset();
        pos['x'] = posl['left'];
        pos['y'] = posl['top'];
        return (pos);
        if (!obj)
        {
       
		}
		top = 0;
		left = 0;
		do
		{
			pos = obj.positionedOffset();
			left += pos[0];
			top += pos[1];
			id = obj.getOffsetParent();
		}
		while (obj.id != "body" && obj);
		return ({
			"x":left,
			"y":top
		});
	},
	get_event:function(event)
	{
		if (!event)
			event = window.event;
		return (event);
	},
	get_event_source:function(evt)
	{
		if (!evt)
			return(evt);
		if (window.event)
		{
			evt = window.event; // For IE
			return (evt.srcElement);
		}
		else
			return (evt.target); // For Firefox
	},
	switch_tab:function(prefix, index, class_active, class_nonactive, start_at)
	{
		var tab;
		var tabs_module;
       
		if (!start_at)
			start_at = 0;
		while ((tab = $(prefix+start_at)))
		{
			if (start_at == index)
			{
				tab.removeClassName(class_nonactive).addClassName(class_active);
			}
			else
			{
				tab.removeClassName(class_active).addClassName(class_nonactive);
			}
			start_at++;
		}
		
		tabs_module = $$('li.ws-settings-tab-module');
		var i = 0;
		while (tabs_module[i])
		{
			tabs_module[i].removeClassName(class_active).addClassName(class_nonactive);
			i++;
		}
	},
	switch_tab_module:function(prefix, index, class_active, class_nonactive, start_at)
	{
		var tab;
		var tab_module;
		var tabs_module;
		var prefix_ws_set;
		
		prefix_ws_set = 'ws_settings_tab_';
		if (!start_at)
			start_at = 0;
		while ((tab = $(prefix_ws_set+start_at)))
		{
			tab.removeClassName(class_active).addClassName(class_nonactive);
			start_at++;
		}

		tabs_module = $$('li.ws-settings-tab-module');
		var i = 0;
		while (tabs_module[i])
		{
			tabs_module[i].removeClassName(class_active).addClassName(class_nonactive);
			i++;
		}

		tab_module = $(prefix+index);
		tab_module.removeClassName(class_nonactive).addClassName(class_active);
	},
	get_keycode:function(e)
	{
		var keycode;

		if (window.event)
			keycode = window.event.keyCode;
		else if (e)
			keycode = e.which;
		return (keycode);
	},
	pressed_enter:function(e)
	{
		if (tools.get_keycode(e) == 13)
			return (true);
		return (false);
	},
	ucfirst:function(str)
	{
		var tmp;
        
		if (!str)
			return ("");
		tmp = str.toUpperCase()[0]+str.substring(1, (str.length));
		return (tmp);
	},
	html_element_is_in:function(element, in_id)
	{
		while (element)
		{
			if (element.id)
			{
				if (element.id == in_id)
				{
					return (true);
				}
			}
			if ((element.id == "body" || element.tagName == "BODY" || element.tagName == "body" || element.tagName == "HTML"))
			{
				return (false);
			}
			element = element.parentNode;
		}
		return (false);
	},
	debug:function(msg)
	{
		var element;
		var debug;

		if (!tools.debug_mode)
			return ;
		if (!(debug = $("debug")))
			return ;
		element = new Element('pre');
		element.update(msg);
		debug.insertBefore(element, debug.firstChild);
		debug.style.display = "block";
	},
	active_debug_mode:function()
	{
		this.debug_mode = true;
		tools.debug("Debug mode activated");
		return ;
	},
	format_date:function(time_unix, format)
	{
		var date_str;

        
		switch (format)
		{
			case 'long' :
				date_str = phpjs.date('m/d/Y - h:ia', time_unix);
				break;

			case 'short' :
				date_str = phpjs.date('m/d/Y', time_unix);
				break;

			case 'calendarview' :
				date_str = phpjs.date('Y-m-d', time_unix);
				break;
		}
		return (date_str);
	},
	in_ia_array:function(arr, key, value)
	{
		var i = 0;
		var len = 0;
    
		len = arr.length;
		while (i < len && arr)
		{
			if (!arr[i])
			{
				return (false);
			}
			if (!arr[i][key])
			{
				i++;
				continue;
			}
			if (arr[i][key] == value)
			{
				return (i);
			}
			i++;
		}
		return (false);
	},
	array_concat_in_for_key:function(arr, key, concat_with)
	{
		var i = 0;
		var len = 0;
		var tab = [];

		len = arr.length;
		while (i < len && arr)
		{
			tab.push(arr[i][key]);
			i++;
		}
		return (tab);
	},
	nb_is_between:function(nb, start, end, strict)
	{
		if (strict)
		{
			if (nb > start && nb <= end)
				return (true);
			else
				return (false);
		}
		else
		{
			if (nb >= start && nb <= end)
				return (true);
			else
				return (false);
		}
	},
	event2text:function(str, params)
	{
		var k;
		var regexp;

		for (k in params)
		{
			regexp = new RegExp("\\$\\("+k+"\\)");
			str = str.replace(regexp, params[k]);
		}
		return (str);
	},
	get_number:function(str)
	{
		var regexp;
		var matches;

		regexp = /([0-9]+)/;
		matches = str.match(regexp);
		if (matches)
			return (matches[0]);
		return (false);
	},
	get_scroll:function()
	{
		var scroll = new Array();

		if (!tools.is_ie())
		{
			scroll =  document.viewport.getScrollOffsets();
		}
		else
		{
			scroll['left'] =  document.documentElement.scrollLeft;
			scroll['top'] =  document.documentElement.scrollTop;
		}
		return (scroll);
	},
	is_ie:function()
	{
        
        return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
    },
    set_parent:function(el, newParent)
    {
        if (!el || !newParent)
            return ;
        newParent.appendChild(el);
    },
    my_get_scroll:function()
    {
		var scroll = new Array();

		if (!tools.is_ie())
		{
			scroll =  document.viewport.getScrollOffsets();
		}
		else
		{
			scroll['left'] =  document.documentElement.scrollLeft;
			scroll['top'] =  document.documentElement.scrollTop;
		}
		return (scroll);
	},
	trim:function(str, chars)
	{
		return tools.ltrim(tools.rtrim(str, chars), chars);
	},
	ltrim:function(str, chars)
	{
		chars = chars || "\\s";
		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
	},
	rtrim:function(str, chars)
	{
		chars = chars || "\\s";
		return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
	},
	is_email:function(string) 
	{
		var regExpPattern = /([\w-\.\+]+\@[\w-]+\.+[\w]{2,4})/gi;
		return regExpPattern.test(string);
		
	},
	num_abbrev_str:function (num)
	{
		var len = num.length;
		var last_char = num.charAt(len - 1);
		var abbrev;

		if (len == 2 && num.charAt(0) == '1')
		{
			abbrev = 'th';
		}
		else
		{
			if (last_char == '1')
			{
				abbrev = 'st';
			}
			else if (last_char == '2')
			{
				abbrev = 'nd';
			}
			else if (last_char == '3')
			{
				abbrev = 'rd';
			} else
			{
				abbrev = 'th';
			}
		}
		return num + abbrev;
	},
	is_in_array:function(string, array)
	{
		function oc(a)
		{
			var o = {};
			for(var i=0;i<a.length;i++)
			{
				o[a[i]]='';
			}
			return o;
		}
		return (string in oc(array))
	},
	reload_css:function()
	{
		var	css;
		var	i;
		var	len;
		var	href;
		var	date;
		var	info;


		info = new Element('div');
		info.update("Reloading css...");
		info.setStyle({'position':'fixed', 'left':'0px', 'top':'0px', 'background':'#C40000', 'color':'white', 'zIndex':'999999'});


		date = new Date();
		css = $$("link");
		i = 0;
		len = css.length;
		while (i < len)
		{
			href = css[i].href+"?livereload_date="+date.getTime();
			css[i].setAttribute('href', href);
			i++;
		}

		$('body').appendChild(info);
		setTimeout(function()
			{
				if (info)
				{
					info.remove();
				}
			},
			1000
		);
	},
	fromday2number:function(day_name)
	{
		var day_number;

		switch (day_name)
		{
			case "sunday":
				day_number = 0;
				break;
			case "monday":
				day_number = 1;
				break;
			case "tuesday":
				day_number = 2;
				break;
			case "wednesday":
				day_number = 3;
				break;
			case "thursday":
				day_number = 4;
				break;
			case "friday":
				day_number = 5;
				break;
			case "saturday":
				day_number = 6;
				break;
		}

		return day_number;
	},
	frommonth2number:function(month_name)
	{
		var month_number;

		switch (month_name)
		{
			case "january":
				month_number = 0;
				break;
			case "Jan":
				month_number = 0;
				break;
			case "february":
				month_number = 1;
				break;
			case "Feb":
				month_number = 1;
				break;
			case "march":
				month_number = 2;
				break;
			case "Mar":
				month_number = 2;
				break;
			case "april":
				month_number = 3;
				break;
			case "Apr":
				month_number = 3;
				break;
			case "may":
				month_number = 4;
				break;
			case "May":
				month_number = 4;
				break;
			case "june":
				month_number = 5;
				break;
			case "Jun":
				month_number = 5;
				break;
			case "july":
				month_number = 6;
				break;
			case "Jul":
				month_number = 6;
				break;
			case "august":
				month_number = 7;
				break;
			case "Aug":
				month_number = 7;
				break;
			case "september":
				month_number = 8;
				break;
			case "Sep":
				month_number = 8;
				break;
			case "october":
				month_number = 9;
				break;
			case "Oct":
				month_number = 9;
				break;
			case "november":
				month_number = 10;
				break;
			case "Nov":
				month_number = 10;
				break;
			case "december":
				month_number = 11;
				break;
			case "Dec":
				month_number = 11;
				break;
		}

		return month_number;
	}
};

