function autoSelect(el) {
	// one-click select a block of text
    if(el.tagName === "TEXTAREA" || (el.tagName === "INPUT" && el.type === "text")) {
        el.select();
        return;
    }
    
    if (window.getSelection) { // FF, Safari, Opera
        var sel = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(el);
        sel.removeAllRanges();
        sel.addRange(range);
    } else if (document.selection) { // IE
        document.selection.empty();
        var range = document.body.createTextRange();
        range.moveToElementText(el);
        range.select();
    }
};

function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			x[i].onkeyup = x[i].onchange = checkMaxLength;
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength) {
		var tempstring = this.value.substr( 0, maxLength );
		this.value = tempstring;
	}
}

function mooMaxLength(obj) {
	// used to do maxlength on mootools Element textareas
	var ml = obj.retrieve('maxlength');
	var cl = obj.value.length;
	if (cl > ml) {
		var t = obj.value.substr(0, ml);
		obj.value = t;
	}
}

function new_captcha() {
	var randomnumber=Math.floor(Math.random()*1001)
	var capdiv = $("imgCaptcha");
	capdiv.src = "/captcha_image.php?a=" + randomnumber;
}

function is_browser_ie() {
	if (window.navigator.appName.indexOf("Explorer") > -1) {
		return true;
	} else {
		return false;
	}
}

function is_opera() {
	if (window.navigator.appName.indexOf("Opera") > -1) {
		return true;
	} else {
		return false;
	}
}

function gen_rnd_id() {
	var randomnumber=Math.floor(Math.random()*10000001);
	return randomnumber;
}

function get_uniq_uploader_id() {
	var mysalt = "" + Math.random()*100;
	mysalt = mysalt.substring(4,10);
	var uniq = uniq_base + mysalt;
	return uniq;
}

function convert_bbcode(otext) {
	if (otext != "") {
		otext = otext.replace(/\n/g,"<br />");
		
		otext = otext.replace(/\[a url='([^']*)'\]/g,"<a target='_new' href='$1'>");
		otext = otext.replace(/\[\/a\]/g,"</a>");
		
		otext = otext.replace(/\[img url='([^']*)'\]/g,"<img src='$1' border='0'>");
	
		otext = otext.replace(/\[youtube='([^']*)'\]/g,"<object width='"+(Math.ceil(425*ytpcnt))+"' height='"+(Math.ceil(355*ytpcnt))+"'><param name='movie' value='http://www.youtube.com/v/$1'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/$1' type='application/x-shockwave-flash' wmode='transparent' width='"+(Math.ceil(425*ytpcnt))+"' height='"+(Math.ceil(355*ytpcnt))+"'></embed></object>");
		
		otext = otext.replace(/\[b\]/g,"<strong>");
		otext = otext.replace(/\[\/b\]/g,"</strong>");
		
		otext = otext.replace(/\[i\]/g,"<em>");
		otext = otext.replace(/\[\/i\]/g,"</em>");
		
		otext = otext.replace(/\[u\]/g,"<span class='underline'>");
		otext = otext.replace(/\[\/u\]/g,"</span>");
		
		return otext;
	} else {
		return "no data for convert_bbcode!";
	}
}

function window_size() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [ myWidth, myHeight ];
}

/*
// mootools Element.getPosition() does this instead
function find_position( oElement ) {
  if( typeof( oElement.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
      posX += oElement.offsetLeft;
      posY += oElement.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oElement.x, oElement.y ];
  }
}
*/

function get_doc_property(type) {
	switch (type) {
		case "window.height":
			if (window.innerHeight) {
				return window.innerHeight;
			} else if (document.documentElement.clientHeight > 0) {
				return document.documentElement.clientHeight;
			} else {
				return document.body.clientHeight;
			}
			break;
	}
}

function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}

function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}

function do_png_check() {
	var b =navigator.userAgent.toLowerCase();
	if (b.indexOf('msie')>0
		&& parseFloat(b.substring(b.indexOf('msie')+5)) < 7) { // detect for IE (could be more specific to PC and version, but this works for the test)
		is = document.getElementsByTagName('IMG'); // get all images
		for(x=0; x<is.length; x++){ // cycle through those images
			if(is[x].src.indexOf('.png')){ // only do this to png files
				is[x].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+is[x].src+"', sizingMethod='scale')"; // apply the filter stuff that makes IE do it's magic
				is[x].src = "/images/null.gif"; // replace the image with a clear gif so that the filter can show through
			}
		}
	}
}

function do_single_png_check(imgid) {
	var b =navigator.userAgent.toLowerCase();
	if (b.indexOf('msie')>0
		&& parseFloat(b.substring(b.indexOf('msie')+5)) < 7)
		{ // detect for IE (could be more specific to PC and version, but this works for the test)
		var checkme = $(imgid);
		if (typeof(checkme) == "object") {
			if(checkme.src.indexOf('.png')){ // only do this to png files
				checkme.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+checkme.src+"', sizingMethod='scale')"; // apply the filter stuff that makes IE do it's magic
				checkme.src = "/images/null.gif"; // replace the image with a clear gif so that the filter can show through
			}
		}
	}
}

function ModifyTitle(title,t) {
   title = title.replace('\/',' ');
   if (t != "un") { title = title.replace(' ','_'); }
   title = title.replace('&','and');
   title = title.replace('\?','');
   //title = urlencode(title);
   return title;
}

function resize(w,h,max_w) {
	var rr = new Array(2);
	if (w > max_w) {
		h = h * (max_w / w);
		w = max_w;
	}
	rr[0] = w;
	rr[1] = h;
	return rr;
}

function activation_notice() {
	//load_portal('showPopWin','/activation_notice.php', 420, 320, null);
	//squeezebox_iframe("/activation_notice.php",480,320);
}

function disabled_notice() {
	//load_portal('showPopWin','/disabled_notice.php', 420, 320, null);
	squeezebox_iframe("/disabled_notice.php",480,320);
}

function squeezebox_iframe(loc,w,h) {
	var ifr = new Element("iframe", { 'width': w, 'height':h, 'border':0, 'src':loc, id: 'ifr_gen' });
	$$("body").grab(ifr);

	SqueezeBox.fromElement($("ifr_gen"), {
		size: {x: w, y: h},
		handler: 'adopt' // we set a handler to disable handler/parser detection
	});
}

/***************
form helper functions
***************/

function get_label_text(labs,for_id) {
	var txt = "label not found";
	labs.each(function(l) {
		if (l.get('for') == for_id) { txt = l.get('text'); }
	});
	return txt;
}

function check_required(oform) {
	ssr(gsr() + "in check_required()\n");
	var ok_to_submit = true;
	if (typeof(oform) == "object" && oform.id != "") { // form to check must have an ID.
		ssr(gsr() + "CHECK FORM: "+oform.id+"\n");
		var labs = $$("#"+oform.id+" label");
		var requ = $$("#"+oform.id+" input.required","#"+oform.id+" textarea.required");
		if (requ.length > 0) {
			var missing = new Array();
			var c = 0;
			requ.each(function(r) {
				ssr(gsr() + "REQUIRED ELEMENT: "+r.name+"\n");
				if (r.get('tag') == "textarea") {

					// assuming only one tinyMCE per page, when involved with "required elements"
					// set val from tiny even if it's blank...
					r.value = tinyMCE.activeEditor.getContent();

					if (r.value == "") {
						ok_to_submit = false;
						missing[c] = get_label_text(labs,r.id).replace(":","");
						c++;
					}
				} else {
					switch (r.type) {
						case "text":
							if (r.value == "") {
								ok_to_submit = false;
								missing[c] = get_label_text(labs,r.id).replace(":","");
								c++;
							}
							break;
						case "checkbox":
							if (r.checked !== true) {
								ok_to_submit = false;
								missing[c] = get_label_text(labs,r.id).replace(":","");
								c++;
							}
							break;
						//case "radio":
							// not sure how to handle radio yet, as it's series of possibles...
							//break;
					}
				}
			});
			
			
			if (ok_to_submit === true) {
				ssr(gsr() + "\n\nOK TO SUBMIT THIS FORM!\n\n");
				oform.submit();
			} else {
				ssr(gsr() + "\n\nNOT OK TO SUBMIT THIS FORM!\n\n");
				ssr(gsr() + "missing: "+missing.join(", ")+"\n");
				big_poppa("Please fill in all required fields.<br /><br />Missing fields: "+missing.join(", "));
			}

		} else {
			ssr(gsr() + "no required elements found?");
			oform.submit();
		}
	} else {
		ssr(gsr() + "no form id or sumtin? ["+oform+"]");
	}
}

function set_radio(oForm,oRadio,oVal) {
	for (var i=0; i < oForm.elements[oRadio].length; i++) {
		if (oForm.elements[oRadio][i].value == oVal) {
			oForm.elements[oRadio][i].checked = true;
		}
	}
}

function get_radio(oForm,oRadio) {
	for (var i=0; i < oForm.elements[oRadio].length; i++) {
		if (oForm.elements[oRadio][i].checked === true) {
			return oForm.elements[oRadio][i].value;
		}
	}
}

function check_filename(fname,tpe) {
	var ret = false;
	var suf = fname.slice(-3);
	suf = suf.toLowerCase();
	switch (tpe) {
		case "gfx":
			if (suf == "gif" || suf == "jpg" || suf == "png") {
				ret = true;
			}
			break;
	}
	return ret;
}

function check_all(oform,button) {
	if (typeof(oform) == "object" && typeof(button) == "object") {
		if (button.value == 'Uncheck All') {
			var cfg = "";
			button.value = 'Check All';
		} else {
			var cfg = "checked";
			button.value = 'Uncheck All';
		}
		for (i=0; i<oform.elements.length; i++) {
			if (oform.elements[i].type == "checkbox") {
				oform.elements[i].checked = cfg;
			}
		}
	} else {
		ssr(gsr() + "check_all() problems... oform: "+oform+", button: "+button);
	}
}

function reset_field(oform,ofield,ovalue) {
	if (typeof("oform") != "object") { oform = $(oform); }
	var my_container;
	var my_file_element;
	var my_element_name;
	var new_element;
	for (i=0; i<oform.elements.length; i++) {
		if (oform.elements[i].name == ofield) {
			switch (oform.elements[i].type) {
				case "text":
				case "password":
				case "textarea":
				case "hidden":
					oform.elements[i].value=ovalue;
					break;
				case "radio":
				case "checkbox":
					if (oform.elements[i].value == ovalue) {
						oform.elements[i].checked = true;
					}
					break;
				case "select-one":
					for (g=0; g<oform.elements[i].options.length; g++) {
						if (oform.elements[i].options[g].value == ovalue) {
							oform.elements[i].options[g].selected=true;
						}
					}
					break;
				case "file":
					
					/*
					my_container = $(oform.id.replace("_form","") + "_file_container");
					if (!my_container) {
						my_container = $(ofield + "_container");
						if (!my_container) {
							
						}
					}
					*/
					
					my_file_element = $(oform.elements[i].id);
					if (my_file_element) {
						my_container = $(my_file_element.parentNode.id);
	
						if (my_container) {
							my_file_element = $(oform.elements[i].id);
							my_element_name = oform.elements[i].id;
							my_container.removeChild(my_file_element);
							new_element = document.createElement("input");
							new_element.id = my_element_name;
							new_element.name = my_element_name;
							new_element.type = "file";
							if (my_element_name.indexOf("_image_file") > -1) {
								new_element.style.fontSize = "0.7em";
							}
							my_container.appendChild(new_element);
						}
					}
					break;
			}
		}
	}
}

function get_form_params(oform) {
	var fieldtype;
	var fieldname;
	var fieldvalue;
	var urlstring = "";
	if (typeof(oform) == "object") {
		for (i=0; i<oform.elements.length; i++) {
			if (oform.elements[i].type=="text" ||
				oform.elements[i].type=="hidden" ||
				oform.elements[i].type=="password" ||
				oform.elements[i].type=="button" ||
				oform.elements[i].type=="textarea" ||
				oform.elements[i].type=="select-one" ||
				(oform.elements[i].type=="radio" && oform.elements[i].checked===true) ||
				(oform.elements[i].type=="checkbox" && oform.elements[i].checked===true)
				) {
				fieldtype = oform.elements[i].type;
				fieldname = oform.elements[i].name;
				fieldvalue = oform.elements[i].value;
				urlstring += fieldname + "=" + Url.encode(fieldvalue) + "&";
			}
		}
	}
	urlstring = urlstring.substring(0,(urlstring.length-1));
	return urlstring;
}

function isValidDate(day,month,year){
	var dteDate;
	dteDate=new Date(year,month,day);
	return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}

// used in conjunction with the color picker,
// to update a DOM object bg color to match the color chosen with the picker
function set_field_color_preview(ofield,ocolor,no_styleeditor_update) {
	if (typeof(ofield) != "object") { ofield = $(ofield); }
	var preview_id = ofield.id + "_preview";
	if ($(preview_id)) {
		$(preview_id).style.backgroundColor = '#' + ocolor;
	}
	if (window.update_style_preview) { update_style_preview(); }
}


/***************
add comments handlers
***************/

function comment_form(commlink) {
	// build rating form in DOM instead of HTML

	var itm_id = parseInt(commlink.id);
	//$(itm_id + "acl").addClass("hidden");
	commlink.addClass("hidden");
	commbox = $(itm_id + "cmc"); // add comment link container
	cur_commbox = commbox; // mark current container in global var
	
	if ($(itm_id + "cfrm")) { $(itm_id + "cfrm").dispose(); }

	var comf = new Element("form", {
		'id' : itm_id + "cfrm",
		'method' : "post",
		"enctype" : "multipart/form-data"
	});

	var el = new Element("input", {
		'type' : 'hidden',
		'name' : 'MAX_FILE_SIZE',
		'value' : '1048576'
	});
	comf.grab(el);

	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'APC_UPLOAD_PROGRESS',
		'id' : 'progress_key',
		'value' : ''
	});
	comf.grab(el);

	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'stype',
		'value' : 'post.comment'
	});
	comf.grab(el);
	

	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'util',
		'value' : 'uc'
	});
	comf.grab(el);
	
	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'ssid',
		'value' : ssid
	});
	comf.grab(el);
	

	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'item_id',
		'value' : commbox.retrieve('item_id')
	});
	comf.grab(el);
	
	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'parent_id',
		'value' : commbox.retrieve('parent_id')
	});
	comf.grab(el);
		
	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'profile_id',
		'value' : commbox.retrieve('profile_id')
	});
	comf.grab(el);
		
	el = new Element("input", {
		'type' : 'hidden',
		'name' : 'comment_type',
		'value' : commbox.retrieve('ctype')
	});
	comf.grab(el);
		
	if (commbox.retrieve('anon')) {
		el = new Element("input", {
			'type' : 'hidden',
			'name' : 'anon',
			'value' : 1
		});
		comf.grab(el);
			
		var ap = new Element("p", { 'text' : 'Your name: ' });
	
		el = new Element("input", {
			'type' : 'text',
			'name' : 'aname',
			'class' : 'med_input'
		});
		ap.grab(el);
		comf.grab(ap);

		ap = new Element("p", { 'text' : 'Email: ' });
	
		el = new Element("input", {
			'type' : 'text',
			'name' : 'aemail',
			'class' : 'med_input'
		});
		ap.grab(el);
		comf.grab(ap);

		ap = new Element("p", { 'text' : 'Website/URL: ' });
	
		el = new Element("input", {
			'type' : 'text',
			'name' : 'awww',
			'class' : 'med_input'
		});
		ap.grab(el);
		comf.grab(ap);
	}

	el = new Element("p", { 'text' : 'Add your comments here:' });
	comf.grab(el);
	
	el = new Element("textarea", {
		'name' : 'user_comments',
		'id' : itm_id + 'user_comments',
		'class' : 'short_ta mce_short'
	});
	comf.grab(el);

	if (!commbox.retrieve('anon')) {
		el = new Element("p", { 'text' : 'Attach up to 1MB photo:' });
		comf.grab(el);
	
		el = new Element("input", {
			'type' : 'file',
			'name' : 'comment_file'
		});
		comf.grab(el);
		comf.grab(new Element("br"));
	} else {
		el = new Element("input", {
			'type' : 'hidden',
			'name' : 'comment_file'
		});
		comf.grab(el);
	}
	

	el = new Element("input", {
		'type' : 'button',
		'value' : 'Send Comments',
		'class' : 'styled_button',
		'id' : itm_id + 'acb',
		'events' : { 'click' : function () { save_comments_prep(this.form); } }
	});
	comf.grab(el);
	
	el = new Element("input", {
		'type' : 'button',
		'value' : 'Cancel',
		'class' : 'styled_button',
		'events' : { 'click' : function () { cancel_comment(this.form); } }
	});
	comf.grab(el);
	
	comf.grab(new Element("br"));

	el = new Element("span", { 'id' : itm_id + 'acm' });
	comf.grab(el);
	
	el = new Element("div", { 'class' : 'cf' });
	comf.grab(el);

	commbox.grab(comf);
	ssr(gsr() + "\nbefore tinyMCE.execCommand(), itm_id = "+itm_id);
	tinyMCE.execCommand('mceAddControl',false,itm_id + 'user_comments');
	ssr(gsr() + "\nafter tinyMCE.execCommand(), itm_id = "+itm_id+"\n");
	$(itm_id + 'acm').scrollTo();

}

function cancel_comment(oform) {
	var id = oform.item_id.value;
	tinyMCE.execCommand('mceRemoveControl', false, id + 'user_comments');
	oform.dispose();
	$(id + "acl").removeClass("hidden");
}

function save_comments(oform) {
	//alert ("oform:"+oform.id+"\nobutton:"+obutton.id);
	var id = oform.item_id.value;
	$(id + 'acm').addClass('alert');
	$(id + 'acm').set('html', 'Saving comments...');
	
	ssr(gsr() + "\n----------------------------save_comments() vars to send:\n"+oform.toQueryString()+"\n--------------------------\n");

	$$('#' + id + 'cfrm input.styled_button').each(function(bu) {
		bu.set('disabled',true);
	});
	
	var ajrq = new Request({
		url:ajax_url,
		onSuccess: function(responseText, responseXML) {
			ssr(gsr() + "\n----------------------------save_comments() success!\n"+responseText+"\n--------------------------\n");
			tinyMCE.execCommand('mceRemoveControl', false, id + 'user_comments');
			oform.dispose();
			add_comments_to_page(responseText);
		},
		onFailure: function() { 
			big_poppa('Failed to send comments, sorry... try again later!');
		}
	}).send(oform.toQueryString());

}

function save_comments_prep(oform) {
	var uniq;
	var newif;
	var utilvar;
	var ssidvar;
	var msgid;
	var buttonid;
	var tmc = tinyMCE.activeEditor.getContent();

	ssr(gsr() + "save_comments_prep()\n\n");
	/*
	ssr(gsr() + "------------- start form elements check ----------------\n");
	for (i=0; i<oform.elements.length; i++) {
		ssr(gsr() + "name: "+oform.elements[i].name+", type: "+oform.elements[i].type+", visibility: "+oform.elements[i].style.visibility+", display: "+oform.elements[i].style.display+"\n")
	}
	ssr(gsr() + "\n------------- end form elements check ----------------\n");
	*/
	
	if (tmc != "") { oform.user_comments.value = tmc; }
	
	if (oform.user_comments.value != "" || oform.comment_file.value != "") {
		if (oform.comment_file.value != "" && check_filename(oform.comment_file.value,"gfx") === true) { // only allowing graphics at this time
			ssr(gsr() + "detected graphic to upload, do it.\n");
			uniq = get_uniq_uploader_id();
			ssr(gsr() + "set progress_key to uniq["+uniq+"].\n");
			oform.progress_key.value = uniq;
			//oform.APC_UPLOAD_PROGRESS.value = uniq;
	
			newif = new Element("iframe", {
				'id' : oform.id + "_up",
				'name' : oform.id + "_up",
				'class' : 'hidden'
			});

			if (!isie) {
				ssr(gsr() + "not ie, just appending iframe\n");
				//if (!dev_ip()) { newif.addClass("hidden"); }
				$$("body").grab(newif);
				oform.target = newif.name;

			} else {
				ssr(gsr() + "we're in ie, gotta do extra stuff before appending iframe\n");
				// special iframe target handling for ie
				var ie_iframe_div = new Element("div", {
					'id' : oform.id + "_iediv",
					'class' : 'hidden'
				});

				ie_iframe_div.grab(newif);
				$$("body").grab(ie_iframe_div);
				oform.target = $(oform.id+"_up").name;
			}
			
			ssr(gsr() + "new iframe name: "+oform.id + "_up"+"\n");
	
			$(oform.item_id.value + 'acm').addClass('alert');
			$(oform.item_id.value + 'acm').set('html', 'Uploading file(s)...');

			oform.action = ajax_url;
			oform.submit();
	
			startProgress_nosubmit(oform,uniq);
	
		} else {
			ssr(gsr() + "no graphic detected to upload, skip and save text only.\n\nTEXT:\n"+oform.user_comments.value+"\n");
			save_comments(oform);
		}
	} else {
		big_poppa("Please add a comment to submit.",320,120);
	}
}


function delcomm(lnk) {
	if (confirm('Are you sure you want to delete this comment?')) {
		//var my = $(id);
		//var urlstring = "stype=del.comment&util=user_comments&ssid="+ssid+"&typ="+typ+"&id="+id;
		
		var id = parseInt(lnk.id);
		var pnode = $(id + "comm"); // container for the comment
		var typ = parseInt(pscl(lnk,"_ty")); // type contained in the delete link classes list

		ssr(gsr() + "\n in delcomm("+lnk+","+id+"), ["+pnode.id+"]");
		ssr(gsr() + ", type:"+typ+"\n");
		
		//return false;

		var ajrq = new Request({
			url:ajax_url,
			onSuccess: function(responseText, responseXML) {
				ssr(gsr() + "\n----------------------------delcomm() success!\n"+responseText+"\n--------------------------\n");
				ojson = JSON.decode(responseText); // eval("(" + responseText + ")");
				ssr(gsr() + "rT:" + responseText + "\nmsg:" + ojson.msg);
				if (ojson.result == "ok") {
					$(pnode).dispose();
					big_poppa("The comment has been removed.",320,120);
				} else {
					big_poppa("There was a problem removing the comment, sorry.",360,120);
				}
				return false;
			},
			onFailure: function(){ big_poppa("There was a problem removing the comment.",360,120); }
		}).send({data:{ util:'uc', stype:'del.comment', ssid:ssid, typ:typ, id:id }});
	}
}

function finish_comm_upload(oformid,uniq) {
	ssr(gsr() + "starting finish_comm_upload(),\noform:"+oformid+"\nuniq:"+uniq);
	var oform = $(oformid);

	ssr(gsr() + "\nf_c_u, mark 1\n");

	var ifid = oform.id + "_up";
	//var ifdata = $(ifid).get('html');
	var ifdata = get_iframe_data(ifid,ifid);

	ssr(gsr() + "did we get data returned?: "+ifdata+"\n");
	
	$("progress_outer_"+uniq).dispose();
	$("progress_text_"+uniq).dispose();

	if (ifdata != "") {
		if ($(ifid + "_iediv")) {
			$(ifid + "_iediv").dispose();
		} else {
			$(ifid).dispose();
		}

		ssr(gsr() + "iframe is now removed...add new comments to page()\n");
		//ojson = JSON.decode(ifdata); //eval("(" + ifdata + ")");
		//ajax_success(ojson.cbObj,oform,'');
		add_comments_to_page(jenc_cleanup(ifdata));
	} else {
		ssr(gsr() + "NO DATA RETURNED, wtf? ["+$(ifid)+"] ["+$(ifid).get('html')+"]");
		$(ifid).removeClass("hidden");
		$(ifid).setStyle("width", "300px");
		$(ifid).setStyle("height", "300px");
	}
}

function add_comments_to_page(data) {
	// add just-posted comments directly to the page
	ssr(gsr() + "in add_comments_to_page("+data+")\n");
	if (typeof(data) != "object") { datatemp = JSON.decode(data); data = datatemp.cbObj; }
	ssr(gsr() + "post object-check: ("+data+")\n");
	var commroot = $(data.item_id+'isc');
	if (typeof(commroot) == "object") {

		var comm_id =  data.comment_id + "comm";

		var newcomm = new Element("div", {
			'id' : comm_id,
			'class' : 'thread_msgs'
		});

		ssr(gsr() + "\nset newcomm");

		var senderdiv = new Element("div", { 'class' : 'thread_msg_sender' });
		ssr(gsr() + "\nset thread_msg_sender");

		var sname = new Element("div", { 'class':'sender_name' });
		ssr(gsr() + "\nset sender_name");

	// sender name + photo
		if (data.sender_photo_id > 0) {
			var phsrc = "/display_gfx/id/"+data.sender_photo_id+"/s/50/sq/1";
			var phclass = "usr_avatar";
			var phw = 50;
			var phh = 50;
		} else {
			var phsrc = "/images/no_avatar.png";
			var phclass = "missing_avatar";
			var phw = 40;
			var phh = 40;
		}

		var phObj = new Element("img", {
			'width' : phw,
			'height' : phh,
			'border' : 0,
			'src' : phsrc,
			'class' : phclass
		});
		ssr(gsr() + "\nset photo ["+data.sender_photo_id+"]");

		if (data.anon == 1 && data.user_url == 0) {
			sname.grab(phObj);
			sname.grab(new Element("br"));
			sname.grab(new Element("span",{'text':data.sender_name}));
		
		} else {
			hrefObj = new Element("a", { 'href' : data.user_url });
			var texthref = hrefObj.clone(false);
			hrefObj.grab(phObj);
			sname.grab(hrefObj);
			ssr(gsr() + "\nset photo href ["+data.user_url+"]");
	
			sname.grab(new Element("br"));
	
			texthref.set('text', data.sender_name);
			sname.grab(texthref);
			ssr(gsr() + "\nset text href ["+data.sender_name+"]");
		}

		senderdiv.grab(sname);
		ssr(gsr() + "\nset appended user");

	// sender date
		sname = new Element("div", { 'class' : 'sender_date', 'text' : data.postdate });
		senderdiv.grab(sname);
		ssr(gsr() + "\nset appended date");
		
		newcomm.grab(senderdiv);

	// msg
		sname = new Element("div", { 'class' : 'thread_msg_body' });
		ssr(gsr() + "\nbefore data.comment ["+data.comment+"]");
		sname.set('html', convert_bbcode(data.comment));
		ssr(gsr() + "\nafter data.comment");

	// comm photo
		if (data.pid.id > 0 && data.photo.width > 0) {
			var scale_flag = "";
			if (data.photo.width > Math.ceil(425*ytpcnt)) {
				scale_flag = "/s/" + (Math.ceil(425*ytpcnt));
				var pwid = Math.ceil(425*ytpcnt);
				var phei = Math.ceil(data.photo.height * (Math.ceil(425*ytpcnt) / data.photo.width));
			} else {
				var pwid = data.photo.width;
				var phei = data.photo.height;
			}
			var phObj = new Element("img", {
				'width': pwid + "px",
				'height': phei + "px",
				'styles' : { 'border': "0" },
				'src':'/display_gfx/id/'+data.pid.id+scale_flag
			});

			var p = new Element("p");
			p.grab(phObj);
			sname.grab(p);
		}
		
		if (data.anon == 0) {
			var p = new Element("p");
			hrefObj = new Element("a", {
				'id' : comm_id + "d",
				'class' : 'styled_button2 '+data.commtype+'_ty',
				'text' : 'Remove this comment',
				'events' : { 'click' : function() { delcomm(this) } }
			});
			
			p.grab(hrefObj);
			sname.grab(p);
		}

		newcomm.grab(sname);
		ssr(gsr() + "\nset appended msg");

	// clearfloats
		sname = new Element("div", { 'class' : 'cf', 'html' : '&nbsp;' });
		ssr(gsr() + "\nset appended cf");

		newcomm.grab(sname);
		
		if (isie) {
			newcomm.grab(new Element("hr"));
		} else {
			sname = new Element("div", { 'class' : 'pm_divide', 'html' : '&nbsp;' });
			sname.addClass("pm_divide");
			newcomm.grab(sname);
		}
		ssr(gsr() + "\nset appended divide");
		
		ssr(gsr() + "\ntrying to append to commroot ("+data.item_id+")");
		commroot.grab(newcomm);
		//commroot.removeClass("hidden"); // <-- I don't think this has a "hidden" class set... so take it out and see.
		ssr(gsr() + "\nset appended new msg finished");

		if ($(data.item_id + 'cfrm')) { $(data.item_id + 'cfrm').dispose(); }
		$(data.item_id + 'acl').removeClass("hidden");
		ssr(gsr() + "\nform reset finished");
	}
}


/***************
MCP add modules and maybe module manager still use these:
***************/

function switch_panel(newpanel) {
	var p = $(panel);
	p.addClass("hidden");
	if ($(panel+"_header")) { $(panel+"_header").addClass("hidden"); }
	var pp = $(newpanel);
	pp.removeClass("hidden");
	if ($(newpanel+"_header")) { $(newpanel+"_header").removeClass("hidden"); }

	panel = newpanel;
	if (lastmsgid && $(lastmsgid)) {
		$(lastmsgid).empty();
		$(lastmsgid).addClass("hidden");
	}
}

function toggle_panel(panel_id) {
	var pp = $(panel_id);
	//if (typeof(pp) == "object") {
	if (pp) {
		if (pp.hasClass("hidden")) {
			pp.removeClass("hidden");
		} else {
			pp.addClass("hidden");
		}
	}
}


/***************
big poppa, kf custom alert box thang
mootools does this better, methinks.
***************/

var bigp_fade;

function big_poppa(str,w,h,fade) {
	if (fade < 1 || fade == undefined) { fade = 6000; }
	str = str.replace("<br />","");
	if (w < 1 || w == undefined) { w = 600; }
	if (h < 1 || h == undefined) { h = 120; }
	if ($("big_poppa")) { $("big_poppa").dispose(); }
	clearTimeout(bigp_fade);

	var elem = new Element("div", {
		'id' : 'big_poppa',
		'styles' : { width: w, height: h },
		'events' : { 'click' : function() { $("big_poppa").dispose(); clearTimeout(bigp_fade); } }
	});

	var elem2 = new Element("p", {'html' : str});
	elem.grab(elem2);

	var elem2 = new Element("div", {
		'id': 'big_poppa_close',
		'text': 'Click anywhere in this box to close'
	});
	elem.grab(elem2);
	
	document.body.appendChild(elem);
	centerBigPoppa();

	bigp_fade = setTimeout(function() { $('big_poppa').fade('out') } ,fade);
}

function centerBigPoppa() {
	if ($("big_poppa")) {
		w = $("big_poppa").style.width.replace("px","");
		h = $("big_poppa").style.height.replace("px","");
		var fullHeight = getViewportHeight();
		var fullWidth = getViewportWidth();

		var scLeft,scTop;
		if (self.pageYOffset) {
			scLeft = self.pageXOffset;
			scTop = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			scLeft = document.documentElement.scrollLeft;
			scTop = document.documentElement.scrollTop;
		} else if (document.body) {
			scLeft = document.body.scrollLeft;
			scTop = document.body.scrollTop;
		}

		var topMargin = scTop + ((fullHeight - h) / 2); // (height+titleBarHeight)
		if (topMargin < 0) { topMargin = 0; }
		$("big_poppa").style.top = topMargin + "px";
		$("big_poppa").style.left =  (scLeft + ((fullWidth - w) / 2)) + "px";
	}
}

function center_element(el) {
	w = el.getStyle('width').toInt();
	h = el.getStyle('height').toInt();
	var fullHeight = getViewportHeight();
	var fullWidth = getViewportWidth();

	var scLeft,scTop;
	if (self.pageYOffset) {
		scLeft = self.pageXOffset;
		scTop = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		scLeft = document.documentElement.scrollLeft;
		scTop = document.documentElement.scrollTop;
	} else if (document.body) {
		scLeft = document.body.scrollLeft;
		scTop = document.body.scrollTop;
	}

	var topMargin = scTop + ((fullHeight - h) / 2); // (height+titleBarHeight)
	if (topMargin < 0) { topMargin = 0; }
	el.setStyle("top",topMargin + "px");
	el.setStyle("left",(scLeft + ((fullWidth - w) / 2)) + "px");
}

function viewport_top_element(el,top_buffer) {
	// if this function fails at some point, then the if($(el)) part is causing it...
	if (top_buffer == undefined) { top_buffer = 0; }
	h = el.getStyle('height').toInt();

	var scTop;
	if (self.pageYOffset) {
		scTop = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		scTop = document.documentElement.scrollTop;
	} else if (document.body) {
		scTop = document.body.scrollTop;
	}

	var topMargin = (scTop < top_buffer ? top_buffer : scTop);
	el.setStyle("top",topMargin + "px");
}

function viewport_right_element(el,right_buffer,right_offset) {
	if (right_buffer == undefined) { right_buffer = 0; }
	if (right_offset == undefined) { right_offset = 0; }
	var h = el.getStyle('width').toInt();
	var wi = getViewportWidth();
	if (wi > right_buffer) {
		var r = ((wi - right_buffer) / 2) + right_offset;
	} else {
		var r = right_offset;
	}
	//ssr(gsr() + "\nviewport_right_element() formula: "+r+" = (("+wi+" - "+right_buffer+") / 2) + "+right_offset+"");
	el.setStyle("right",r + "px");
}

/****************************

generic sortables

****************************/

function sortsingle_changed(obj) {
	obj = $(obj);
	if (!obj.retrieve("changed")) {
		obj.store("changed",true);
		var el = new Element("input", { "type": "button", "value": "Save Changes", "class": "styled_button2", "id" : obj.id + "_save" });
		el.addEvent("click",function() { sortsingle_save(this); });
		var p = new Element("p", { "id": obj.id + "_savep" });
		p.grab(el);
		obj.getParent().grab(p);
	}
}

function sortsingle_save(obj) {
	var sl = $(obj.id.replace("_save",""));
	var no = sortsingle_objects[sl.retrieve("ssobj_key")].serialize();
	var config_str = sl.get("rel");
	var cparts = config_str.split(";");
	var config = new Object();
	
	cparts.each(function(c) {
		var cp = c.split(":");
		config[cp[0]] = cp[1];
	});
	
	//var str = "util:" + config.util + "\nstype:" + config.stype + "\nserialize list:" + no;
	//alert(str);
	obj.addClass("hidden");
	var sp = new Element("span", { "text" : "Saving changes to your list...." } );
	obj.getParent().grab(sp);

	var ajrq = new Request({
		url:ajax_url,
		onSuccess: function(responseText, responseXML) {
			ojson = JSON.decode(responseText); // eval("(" + responseText + ")");
			if (ojson.result == "ok") {
				big_poppa("Changes saved.",160,120);
				obj.getParent().destroy();
				sl.store("changed",false);
			} else {
				big_poppa("There was a problem saving your changes, sorry.",360,120);
			}
			return false;
		},
		onFailure: function(){ big_poppa("There was a problem saving your changes, sorry.",260,120); }
	}).send({data:{ util:config.util, stype:config.stype, new_so: no, ssid:ssid, other:config.other }});

}

var sortsingle_objects = new Array();
window.addEvent('domready', function() {
	if ($$('ul.sortsingle')) {
		$$('ul.sortsingle').each( function(u) {
			var my_id = u.id;
			var akey = sortsingle_objects.length;
			u.store("changed",false);
			u.store("ssobj_key",akey);
			sortsingle_objects[akey] = new Sortables(u, {
				revert: { duration: 500, transition: 'elastic:out' },
				clone: true,
				opacity: 0.5,
				constrain: true,
				onComplete: function () { sortsingle_changed(my_id); }
			});
		});
	}
});

/***************
kf custom functions, some maybe better handled by mootools now...
***************/

function get_config(t) {
	var ajrq = new Request({
		url:ajax_url,
		onSuccess: function(responseText, responseXML) {
			ssr(gsr() + "return from get_config():\n"+responseText+"\n");
			switch (t) {
				case "pmconfig":
					pmf(JSON.decode(responseText));
					break;
				case "imconfig":
					imf(JSON.decode(responseText));
					break;
			}
		},
		onFailure: function(){ return false; }
	}).send({data:{ util:"configvars", stype:t, ssid:ssid }});
}

function pscl(obj,find) { // parse_classes, finds a substring of a class
	var found = false;
	var cla = obj.getProperty('class');
	var cl = cla.split(" ");
	cl.each(function(f) { if (f.indexOf(find) > -1) { found = f }; });
	return found;
}

var curpanel = null;
function moo_switch_panel(panel) {
	if ($defined(curpanel)) { curpanel.addClass("hidden"); }
	
	if ($(panel)) {
		$(panel).removeClass("hidden");
		curpanel = $(panel);
	}
}

function get_custom_id(oform,type) {
	switch (type) {
		case "msg":
			return oform.id.replace("_form","") + "_msg";
		case "button":
			return oform.id.replace("_form","") + "_button";
	}
}

function hide_last(lastid) {
	// used to show/hide the sys status msgs after ajax form submission
	if ($(lastid)) {
		$(lastid).innerHTML = "";
		$(lastid).addClass("hidden");
	}
}

function jenc_cleanup(str) {
	// getting strange closing </p> at end of data read from iframe
	if (str.indexOf("}</p>") > -1) {
		str = str.substr(0,str.indexOf("}</p>")+1);
	}
	return str;
}

function load_portal(passfunc, var1, var2, var3, var4) {
	// old way of getting around non-loaded stuff.
	alert("load portal called!\npassfunc:"+passfunc+"\nvar1:"+var1+"\nvar2:"+var2+"\nvar3:"+var3+"\nvar4:"+var4);
}

function kf_convert_newlines($str) { return $str.replace(/\{NEWLINE\}/g,"\n"); }

function pausecomp(millis) {
	// not sure where I use this....
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); } 
	while(curDate-date < millis);
}

function get_iframe_data_moo(ID,name) {
	var ifr = $(ID);
	ssr(gsr() + "returning data from get_iframe_data()\n");
	return(ifr.get("html"));
}

function get_iframe_data(ID,name) {
	var saf = navigator.userAgent.match(/Safari/i);
	var safver = (saf ? parseFloat(navigator.userAgent.match(/[\d\.]+ Safari/i)) : 0);
	var targetif = $(ID);
	var data;

	if (targetif.contentDocument && (!saf || (saf && safver >= 3))) {
		// NS6 & Gecko & Opera & IE7+
		if (!saf || (saf && safver >= 3)) {
			data=targetif.contentDocument.defaultView.document.body.innerHTML;
		} else {
			data=targetif.document.body.innerHTML;
		}

	} else if (targetif.contentWindow && !saf) {
		// IE 5.5 & 6.x
		data=targetif.contentWindow.document.body.innerHTML;

	}
	
	return(data);
}

function check_scroll_to_me() {
	var scrollmark = $('scrolltome');
	//if (typeof(scrollmark) == "object") {
	if (scrollmark) {
		//scrollmark.scrollTo();
		var myFx = new Fx.Scroll(window, { duration: 4000 }).toElement(scrollmark);
	}
}

function setPopupTitle(title) {
	// used in conjunction with submodal
	alert("setPopupTitle() called!\ntitle: "+title);
	var parentlist = parent.document.getElementsByTagName("body")[0];
	var len = parentlist.childNodes.length;
	var list = "";
	for (i=0; i<parentlist.childNodes.length;i++) {
		if (parentlist.childNodes[i].id=="popupContainer") {
			var popupTitle = parentlist.childNodes[i].childNodes[0].childNodes[0].childNodes[0];
		}
	}
	popupTitle.innerHTML = title;
}




function ajax_success(text,oform,callback) {
ssr(gsr() + "someone's still calling ajax_success(text["+text+"]\n,oform["+oform.id+"]\n,callback["+callback+"])\n");
//*
	ssr(gsr() + "ajax_success("+callback+")\n"+text+"\n");
	ojson = JSON.decode(text); //eval("(" + text + ")");
	var resetfield;
	var resetvalue;
	var temp;
	
	ssr(gsr() + "respond to ajax result flag\n");
	if (ojson.msg && ojson.result) { // simple check to see if json object was created
		if ($(lastmsgid)) {
			ssr(gsr() + "resetting form!\nlastmsgid:"+lastmsgid);
			$(lastmsgid).innerHTML = ojson.msg;
			$(lastmsgid).removeClass("alert");
			$(lastmsgid).addClass("alertok");
			$(lastbuttonid).disabled = false;
			big_poppa(ojson.msg);
			ssr(gsr() + "done");
		} else {
			ssr(gsr() + "couldn't reset form!\nlastmsgid:"+lastmsgid+"\n");
		}

		switch (ojson.result) {
			case "ok":
				// settings update verified
				break;
			case "resetfields":
				// some settings were attempted to be excluded or improperly set (like bad email)
				// so, response should return the last saved value of the field in the db
				if (ojson.reset && oform) {
					for (f=0; f<ojson.reset.length; f++) {
						resetfield = ojson.reset[f].field;
						resetvalue = ojson.reset[f].value;
						reset_field(oform,resetfield,resetvalue);
					}
				}
				break;
			case "badssid":
				// savesettings_id did not match on server, possible attempt at security breach
				break;
			case "syserror":
				// something happened on server side
				break;
		}
	//} else {
		//ssr(gsr() + "no ojson result/msg"+"\n");
	}
	
	if (callback) { handle_callback(oform,callback,ojson.cbObj); } // else { ssr(gsr() + "no callback?["+callback+"]\n"); }
	//*/
}

function ajax_failed(oform,butval) {
	$(lastmsgid).innerHTML = "There was a problem saving your '"+butval+"' settings, please try later.";
	$(lastbuttonid).disabled = false;
}

function handle_callback(oform,callback,cbObj) {
	//alert("handling callback for :"+callback+"\nobj?: "+cbObj);
	switch (callback) {
		case "update_feat_cats":
			var cats = cbObj.category;
			var articles = cbObj.article_list;
			update_article_list(articles,'passive')
			update_category_list(cats);
			break;
		/*case "comments":
			add_comments_to_page(cbObj);
			break;
		case "update_cats":
			update_category_list(cbObj);
			break;
		case "update_albums":
			update_album_list(cbObj,"active");
			break;
		case "view_bens":
			//alert("starting process to 'view entries', tid: "+cbObj.tid);
			var tid = cbObj.tid;
			var threads = cbObj.threads;
			update_category_list(threads);
			get_blog_entry(tid,0,'view_entries');
			break;*/
		case "view_feat":
			var cid = cbObj.cid;
			var cats = cbObj.category;
			var articles = cbObj.article_list;
			var authors = cbObj.authors;
			update_category_list(cats,'passive');
			update_article_list(articles,'passive')
			update_author_list(authors);
			view_article(cbObj);
			break;
		case "user_search_results":
			user_search_results(oform,cbObj);
			break;
		case "ufrl":
			var msg = cbObj.msg;
			update_friend_link(msg);
			break;
		case "joch":
			var msg = cbObj.msg;
			var addmem = cbObj.addmem;
			update_joinchannel_link(msg,addmem);
			break;
		case "in_acc":
		case "in_ign":
		case "in_blo":
		case "in_rem":
			var action = cbObj.a;
			update_fr_boxes(action,callback);
			break;
		case "fr_rem":
			var action = cbObj.a;
			if (action == 1) {
				get_friends('active');
			}
			break;
		case "view_profqs":
			update_category_list(cbObj.categories,"passive");
			get_questions(cbObj.catid,'',"view_questions");
			break;
		case "view_profcats":
			update_category_list(cbObj);
			break;
		case "update_style_list":
			update_style_list(cbObj.styles);
			break;
		case "update_vitals":
			update_vital_constants(oform,cbObj);
			break;
		default:
			//alert("no callback action found for '"+callback+"'");
			break;
	}
}


/***************
mini search box
***************/

function mini_search_post(oform) {
	if (oform.msb_text.value != "" && oform.msb_text.value != "search") {
		var kw = oform.msb_text.value;
		$("bcresults").setStyle("left",$('msb_text').getStyle("left"));
		$("bcresults").empty();
		var el = new Element("div", { 'class' : 'tmbar_shadow' });
		el.addClass("bcresults_shadow");
		$("bcresults").grab(el);

		var p = new Element("p", { 'text': 'loading results...' });
		$("bcresults").grab(p);
		$("bcresults").removeClass("hidden");

		var ajrq = new Request({
			url:'/search',
			onSuccess: function(responseText, responseXML) {
				mini_search_results(responseText);
			},
			onFailure: function() { 
				var p = new Element("p", { 'text': 'search failed, try later.' });
				$("bcresults").empty();
				$("bcresults").grab(p);
			}
		}).send({data:{sterms: kw, msb: 'true'}});

	}
}

function mini_search_results(str,oform) {
	ojson = JSON.decode(str); // eval("(" + str + ")");
	$("bcresults").empty();
	//var el = new Element("div", { 'class' : 'tmbar_shadow' });
	//$("bcresults").grab(el);
	
	var el = new Element("div", {
		'class' : 'tmbar_shadow',
		/*'styles' : { 'height' : '18px', 'text-align' : 'right', 'margin' : '0 3px 0 4px', 'width' : '212px' },*/
		'events' : { 'click' : function() { $("bcresults").empty(); $("bcresults").addClass("hidden"); $$("div.bcoverlay").dispose(); } }
	});
	el.addClass("bcresults_shadow");
	var im = new Element("img", {
		'src' : '/images_new/closebox.png',
		'width' : '18px',
		'height' : '18px',
		'border' : 0,
		'styles' : { 'paddingRight' : '2px' }
	});
	el.grab(im);
	$("bcresults").grab(el);

	var el = new Element("div", { 'html' : ojson.data });
	$("bcresults").grab(el);
	
	//$("bcresults").set('html',ojson.data);
	ssr("msb msg:\n"+ojson.msg +"msb results:\n"+ojson.data);
	p = new Element("p", { 'html': 'Didn\'t find what you want?<br />&raquo; <a href="/search">Advanced search</a>', 'class':'last' });
	$("bcresults").grab(p);
	var overlay = new Element ("div", {
		'class' : 'bcoverlay',
		'events' : { 'click' : function() { $("bcresults").empty(); $("bcresults").addClass("hidden"); $$("div.bcoverlay").dispose(); } }
	});
	$$("body").grab(overlay);
}

/***************
DOMREADY
+
EVENT LISTENERS
+
INIT VARS
***************/

var mcp_flag = 0;
var ytpcnt = 1;
var isie = is_browser_ie();
var isopera = is_opera();
var ajax_url = "/handler_ajax";
var uniq_base = ssid;
var lastmsgid = '';
var lastbuttonid = '';

window.addEvent('domready', function() {
	// msb_text = mini search box in top menu
	var msbox = $('msb_text');
	if (msbox) {
		msbox.addEvent('focus',function() { if (msbox.value=="search") { $("bcresults").addClass("hidden"); msbox.value=""; msbox.setStyle("color","#ed4a92"); } });
		msbox.addEvent('blur',function() { if (msbox.value=="") { msbox.value="search"; msbox.setStyle("color","#afafaf"); } });
		$("msb").addEvent('click',function() { mini_search_post(this.form); })
	}
	
	// assigns squeezebox behavior to <a href="#" class="boxed" rel="config">
	SqueezeBox.assign($$('a.boxed'), { parse: 'rel' });

	// ie6 inline PNG fixer (no worky on external css):
	do_png_check();
	
	// add onsubmit action to forms with class='chkreq'
	$$('form.chkreq').each(function(frm) {
		ssr(gsr() + "adding chkreq to 1 form["+frm.id+"]\n");
		frm.addEvent('submit',function() { check_required(this); return false; })
	});
	//ssr(gsr() + "domready!\n");

	// init the comment form links...
	ssr(gsr() + "starting to look for commboxes...\n");
	$$('div.commc').each(function(cb) {
		var comm_obj = JSON.decode(cb.get("rel"));
		cb.store('parent_id',comm_obj.pa);
		cb.store('ctype',comm_obj.t);
		cb.store('profile_id',comm_obj.p);
		cb.store('item_id',comm_obj.i);
		
		var anon = (cb.hasClass("anon") ? true : false);
		cb.store('anon',anon);
		
		// set link action
		var lnk = cb.getChildren("a");
		lnk[0].addEvent('click', function() { comment_form(this); return false; });
		ssr(gsr() + "comm_box! ["+cb+", "+cb.id+", rel: "+cb.get('rel')+"]\n");
	});

	// comment show/hide toggle, if present....
	$$("a.cmshow").each(function(ac) {
		ssr(gsr() + "show/hide comm link! ["+ac+", "+ac.id+"]\n");
		var ac_itm_id = parseInt(ac.id);
		ac.addEvent('click', function() {
			ac.addClass("hidden");
			$(ac_itm_id+"chdl").removeClass("hidden");
			$(ac_itm_id+"cmmblk").removeClass("hidden");
			return false;
		});
		var ac2 = $(ac_itm_id+"chdl");
		ac2.addEvent('click', function() {
			ac2.addClass("hidden");
			$(ac_itm_id+"cshl").removeClass("hidden");
			$(ac_itm_id+"cmmblk").addClass("hidden");
			return false;
		});
	});
	
	$$("a.delcom").each(function(dc) {
		ssr(gsr() + "delcomm_box! ["+dc+", "+dc.id+"]\n");
		dc.addEvent('click', function() {
			delcomm(this);
			return false;
		});
	});
	
	$$('img.dashicon2').each(function(di) {
		//di.store("srcval",di.get("src"));
		var bn = di.get("src").replace("/images/buttons/nb_off_","").replace(".png","");
		di.set("src","/images/null.gif");
		di.setStyle("background-image","url('/images/buttons/nb_"+bn+".png')");
	});

	// pop external links to _blank:
	var currentDomain = window.location.host;
	$(document.body).addEvent('click', function(evt) {
		$trgt = $(evt.target);
		if ($trgt.get('tag') !== 'a') {
			$trgt = $trgt.getParent();
		}
		// if the target is a link AND the link is absolute AND the link goes to a different domain,
		// then set the target to _blank to open in new page
		if ($trgt &&
				$trgt.get('tag') === 'a' &&
				$trgt.get('href').test('http') &&
				!$trgt.get('href').test(currentDomain)) {
			$trgt.set('target', '_blank');
		}
	});

});

// mootools way:
window.addEvent('resize',centerBigPoppa);
window.addEvent('scroll',centerBigPoppa);

