/*function load_categories(form_name, cat_type, store_key) {
	
	var url = do_link("site.remote_ops", "request=categories&cat_type=" + cat_type + "&store_key=" + store_key);
	
	remote_data_request(url, "", "populate_categories_data('" + form_name + "', '" + cat_type + "')");
	
}

function populate_categories_data(form_name, cat_type) {
	
	var customarray = new Array();
	idx=0;
	for (var i in remote_res_categories) {
		customarray[idx] = unescape(remote_res_categories[i]);
		idx++;
	}
	customarray[idx] = "no_match-NO MATCH";
	//alert(remote_res_cat_keys);
	for (var i in remote_res_cat_keys) {
		textbox = '_ACTB_TEXTBOX_' + unescape(remote_res_cat_keys[i]);
		actb(document.getElementById(textbox),customarray);
	}
	
}*/


function was_rated(jokes_key, jokes_rate, returned_average){

	dom_toggle_element("ratemenu" + jokes_key, false);
	dom_toggle_element("hide_rate" + jokes_key, true);

	jokes_rating_pic = document.getElementById("jokes_rating_pic" + jokes_key);

	jokes_rating_pic.src = PATH + "/img/site/rating/bar_" + Math.ceil(returned_average) + ".gif";
}

function form_set_select_id(sel_id, form_name, sel_index) {
	var obj = dom_get_element(sel_id);

	var sel_length = obj.length;

	for (optionCounter = 0; optionCounter < sel_length; optionCounter++) {
		if (obj.options[optionCounter].value == sel_index){
			obj.selectedIndex = optionCounter;
		}
	}
}

function CounterText(field, cntfield, maxlimit) {
	var obj_field = dom_get_element(field);
	var obj_cntfield = dom_get_element(cntfield);
	if (obj_field.value.length > maxlimit){
        		obj_field.value = obj_field.value.substring(0, maxlimit);
	}
   	else {
       		obj_cntfield.value = maxlimit - obj_field.value.length;
   	}
}

function MM_swapImgRestore(){ //v3.0
        var i, x, a = document.MM_sr;

        for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) {
                x.src = x.oSrc;
        }
}

function MM_preloadImages(){ //v3.0
        var d = document;

        if (d.images) {
                if (!d.MM_p) {
                        d.MM_p = new Array();
                }

                var i, j = d.MM_p.length, a = MM_preloadImages.arguments;

                for (i = 0; i < a.length; i++){
                        if (a[i].indexOf("#") != 0) {
                                d.MM_p[j] = new Image;
                                d.MM_p[j++].src = a[i];
                        }
                }
        }
}

function MM_findObj(n, d){ //v4.01
        var p, i, x;

        if (!d) {
                d = document;
        }

        if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
                    d = parent.frames[n.substring(p + 1)].document;
                    n = n.substring(0, p);
        }

          if (!(x = d[n]) && d.all) {
                  x = d.all[n];
          }

          for (i = 0; !x && i < d.forms.length; i++) {
                  x = d.forms[i][n];
          }

          for (i = 0; !x && d.layers && i < d.layers.length; i++) {
                  x = MM_findObj(n, d.layers[i].document);
          }

          if (!x && d.getElementById) {
                  x = d.getElementById(n);
          }

          return x;
}

function MM_swapImage(){ //v3.0
        var i, j = 0, x, a = MM_swapImage.arguments;

        document.MM_sr = new Array;

        for (i = 0; i < (a.length - 2); i += 3) {
                   if ((x = MM_findObj(a[i])) != null) {
                           document.MM_sr[j++] = x;
                           if (!x.oSrc) {
                                   x.oSrc = x.src;
                           }
                           x.src = a[i + 2];
                   }
        }
}


/* Event Functions */

// Add an event to the obj given
// event_name refers to the event trigger, without the "on", like click or mouseover
// func_name refers to the function callback when event is triggered
function addEvent(obj,event_name,func_name){
	if (obj.attachEvent){
		obj.attachEvent("on"+event_name, func_name);
	}else if(obj.addEventListener){
		obj.addEventListener(event_name,func_name,true);
	}else{
		obj["on"+event_name] = func_name;
	}
}

// Removes an event from the object
function removeEvent(obj,event_name,func_name){
	if (obj.detachEvent){
		obj.detachEvent("on"+event_name,func_name);
	}else if(obj.removeEventListener){
		obj.removeEventListener(event_name,func_name,true);
	}else{
		obj["on"+event_name] = null;
	}
}

// Stop an event from bubbling up the event DOM
function stopEvent(evt){
	evt || window.event;
	if (evt.stopPropagation){
		evt.stopPropagation();
		evt.preventDefault();
	}else if(typeof evt.cancelBubble != "undefined"){
		evt.cancelBubble = true;
		evt.returnValue = false;
	}
	return false;
}

// Get the obj that starts the event
function getElement(evt){
	if (window.event){
		return window.event.srcElement;
	}else{
		return evt.currentTarget;
	}
}
// Get the obj that triggers off the event
function getTargetElement(evt){
	if (window.event){
		return window.event.srcElement;
	}else{
		return evt.target;
	}
}
// For IE only, stops the obj from being selected
function stopSelect(obj){
	if (typeof obj.onselectstart != 'undefined'){
		addEvent(obj,"selectstart",function(){ return false;});
	}
}

/*    Caret Functions     */

// Get the end position of the caret in the object. Note that the obj needs to be in focus first
function getCaretEnd(obj){
	if(typeof obj.selectionEnd != "undefined"){
		return obj.selectionEnd;
	}else if(document.selection&&document.selection.createRange){
		var M=document.selection.createRange();
		try{
			var Lp = M.duplicate();
			Lp.moveToElementText(obj);
		}catch(e){
			var Lp=obj.createTextRange();
		}
		Lp.setEndPoint("EndToEnd",M);
		var rb=Lp.text.length;
		if(rb>obj.value.length){
			return -1;
		}
		return rb;
	}
}
// Get the start position of the caret in the object
function getCaretStart(obj){
	if(typeof obj.selectionStart != "undefined"){
		return obj.selectionStart;
	}else if(document.selection&&document.selection.createRange){
		var M=document.selection.createRange();
		try{
			var Lp = M.duplicate();
			Lp.moveToElementText(obj);
		}catch(e){
			var Lp=obj.createTextRange();
		}
		Lp.setEndPoint("EndToStart",M);
		var rb=Lp.text.length;
		if(rb>obj.value.length){
			return -1;
		}
		return rb;
	}
}
// sets the caret position to l in the object
function setCaret(obj,l){
	obj.focus();
	if (obj.setSelectionRange){
		obj.setSelectionRange(l,l);
	}else if(obj.createTextRange){
		m = obj.createTextRange();		
		m.moveStart('character',l);
		m.collapse();
		m.select();
	}
}
// sets the caret selection from s to e in the object
function setSelection(obj,s,e){
	obj.focus();
	if (obj.setSelectionRange){
		obj.setSelectionRange(s,e);
	}else if(obj.createTextRange){
		m = obj.createTextRange();		
		m.moveStart('character',s);
		m.moveEnd('character',e);
		m.select();
	}
}

/*    Escape function   */
String.prototype.addslashes = function(){
	return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g, '\\$1');
}
String.prototype.trim = function () {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
/* --- Escape --- */

/* Offset position from top of the screen */
function curTop(obj){
	toreturn = 0;
	while(obj){
		toreturn += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return toreturn;
}
function curLeft(obj){
	toreturn = 0;
	while(obj){
		toreturn += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return toreturn;
}
/* ------ End of Offset function ------- */

/* Types Function */

// is a given input a number?
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

/* Object Functions */

function replaceHTML(obj,text){
	while(el = obj.childNodes[0]){
		obj.removeChild(el);
	};
	obj.appendChild(document.createTextNode(text));
}