tar_climit ={
	init:function(){
		$(".tar_charlimit").each(function(){
			var varlist=tar_utilities.buildobject($(this).parent(),"var","title","text");
			var showmessage=(("showmessage" in varlist)) ? varlist.showmessage : true;
			if (showmessage == true){
				$(this).before("<p class=\"limitnotice\"><span class=\"printstring\"></span> character<span class=\"pluralism\">s</span> <span class=\"whisker\">remaining</span></p>");
			}
			tar_climit.eventsetup(this,varlist);
			tar_climit.countchars(this,varlist);
		});	
	},
	eventsetup:function(elem){
		$(elem).keyup(function(){
			tar_climit.countchars(elem);
		}).keydown(function(e){
			return tar_climit.allowthis(elem,e);
		});
	},
	countchars:function(elem){
		var getlength=$(elem).val().length;
		var getlimit=parseInt($(elem).parent().find("var[title=\"charlimit\"]").text());
		var printstring=Math.abs(getlimit-getlength);
		$(elem).prev(".limitnotice").children(".printstring").html(printstring);
		if (printstring == 1){
			$(elem).addClass("singlechar").prev(".limitnotice").children(".pluralism").html("");
		} else if ($(elem).hasClass("singlechar")){
			$(elem).removeClass("singlechar").prev(".limitnotice").children(".pluralism").html("s");
		}
		if (getlength > getlimit){
			if (!($(elem).hasClass("overlimit"))){
				$(elem).addClass("overlimit").prev(".limitnotice").addClass("overlimit").children(".whisker").html("over");
			}
		} else if ($(elem).hasClass("overlimit")){
			$(elem).removeClass("overlimit").prev(".limitnotice").removeClass("overlimit").children(".whisker").html("remaining");
		}
	},
	allowthis:function(elem,e){
		var forcelimit=($(elem).parent().find("var[title=\"forcelimit\"]").length > 0) ? $(elem).parent().find("var[title=\"forcelimit\"]").text() : false;
		var getlength=$(elem).val().length;
		var getlimit=parseInt($(elem).parent().find("var[title=\"charlimit\"]").text());
		var permit=tar_climit.detectkeys(e,[8,37,38,39,40,46]);
		if ((getlength >= getlimit) && forcelimit && (!(permit))){ return false; }
	},
	detectkeys:function(e,validkeys){
		var evt=e || window.event;
		var keycode=evt.keyCode;
		var tester=false;
		for(i=0;i<validkeys.length;i++){
			tester=(tester == false) ? (keycode == validkeys[i]) : true;
		}
		return tester;
	}
}
tar_cselect={
	init:function(arg){
		if(arg){
			tar_cselect.setup(arg);
			$(arg+":eq(0)").each(function(){ tar_cselect.selectchild(this,$(this).data("vars")); });
			$(arg).change();
		}else{
			$(".tar_cselect").each(function(){ tar_cselect.setup(this); });
			$(".tar_cselect:eq(0)").each(function(){ tar_cselect.selectchild(this,$(this).data("vars")); });
			$(".tar_cselect").each(function(){ $(this).change(); });
		}
	},
	setup:function(elem){
		var vars=tar_utilities.buildobject(elem,".tar_var","title","text");
		$(elem).find(".tar_var").remove();
		var openres=("openres" in vars && vars.openres != "") ? vars.openres : false;
		$(elem).data("openres",openres);
		var target=("target" in vars && vars.target != "") ? "#"+vars.target:null;
		$(elem).data("vars",vars);
		if($(elem).children().length>0){ $(elem).data("defopt",$(elem).children()); }
		tar_cselect.events(elem,vars,target);
	},
	events:function(elem,vars,target){
		$(elem).unbind("change").bind("change",function(){
			var newcode=($(this).val()==null)?"":$(this).val();
			if(target){
				if(newcode!=""){
					tar_cselect.json(newcode,vars);
				}else{
					if($(target).is(":text")){ tar_cselect.typeswapper(target,"return"); }
					tar_cselect.restoredefault(target);
				}
			}
			$(this).blur();
		});
	},
	json:function(code,vars){
		var getpage=vars.ping+"?q="+code+"&fu="+(new Date().getTime());
		var target="#"+vars.target;
		var formname=$(target).closest("form").attr("name");
		$(target).empty();
		$.ajax({
			url:getpage,
			dataType:'json',
			success:function(json){
				var tag=(json.tag)?json.tag:"option";
				var dtrig="display";
				var elements="";
				if(json.items.length>0){
					if($(target).is(":text")){ tar_cselect.typeswapper(target,"return"); }
					$.each(json.items,function(i,item){
						elements+=tar_utilities.htmlformatobject(item,tag,dtrig);
					});
					$(target).empty().append(elements)
				}else{
					if($(target).data("openres")==true){
						tar_cselect.typeswapper(target,"text");
					}else{
						if(!($(target).is(":text"))){
							tar_cselect.restoredefault(target);
							return;
						}
					}
				}
				tar_cselect.selectchild(target,$(target).data("vars"));
				$(target).change();
			},
			error:function(XMLHttpRequest,textStatus,errorThrown){
				if($(target).data("openres")==true){
					tar_cselect.typeswapper(target,"text");
				}else{
					if(!($(target).is(":text"))){
						tar_cselect.restoredefault(target);
						return;
					}
				}
			}
		});
	},
	typeswapper:function(elem,direc){
		var formname=$(elem).closest("form").attr("name");
		if(direc=="return"){
			$(elem).after($("#purg_"+formname+" #purg_"+elem.substring(1)));
			$(elem).remove();
			$("#purg_"+elem.substring(1)).attr("id",elem.substring(1));
		}else{
			var portattr=tar_utilities.htmlformatobject(tar_utilities.attrtoobj(elem,["id","name","class","rel"]));
			var appendstring='<input type="text"'+portattr+'/>';
			if(!($("#purg_"+formname).length>0)){
				$(elem).closest("form").before('<div style="display:none;" id="purg_'+formname+'"></div>')
			}
			$(elem).after(appendstring);
			$("#purg_"+formname).append($(elem));
			$(elem).attr("id",("purg_"+$(elem).attr("id")));
		}
	},
	restoredefault:function(target){
		$(target).empty();
		var s="";
		var defvars=$(target).data("defopt");
		var dlength=defvars.length;
		for(var i=0;i<dlength;i++){
			$(target).append(defvars[i]);
		}
		tar_cselect.selectchild(target,$(target).data("vars"));
		$(target).change();
	},
	selectchild:function(elem,vars,kill){
		if("value" in vars && vars.value!=null){
			$(elem).children("[value="+vars.value+"]").attr("selected","selected");
			vars.value=null;
			$(elem).data("vars",vars);
		}else{
			$(elem).children(":eq(0)").attr("selected","selected");
		}
	}
}

tar_mselect ={
	init:function(){
		$(".tar_mselect").each(function(){
			tar_mselect.setup(this);
		});
	},
	addboxstring:function(thisid){
		thisid=thisid.substr(4);
		var basestring='<div class="addbox"><!--span class="label">Add an item:</span--></div>';
		$("#box_"+thisid).append(basestring);
		tar_mselect.addselbox(thisid);
	},
	addselbox:function(thisid){
		$("#box_"+thisid+" .addbox").append('<select name="tempbox" class="addcombo" id="select_'+thisid+'"></select>');
		tar_mselect.addoptions(thisid);
	},
	addoptions:function(thisid){
		optionstring="";
		optioncount=0;
		$("#"+thisid).children().each(function(){
			if(!($(this).attr("selected"))){
				if(!($(this).attr("value")=="")){
					optionstring=optionstring+'<option value="'+$(this).attr("title")+'" rel="'+optioncount+'">'+$(this).html()+'</option>';
				}
			}
			optioncount++;
		});
		$("#select_"+thisid).empty().append('<option rel="x">Choose an option to add to the list...</option>'+optionstring);
		tar_cfelement.init("#select_"+thisid,{});
		tar_mselect.eventsetup();
	},
	setup:function(elem){
		var vars=tar_utilities.buildobject(elem,".tar_var","title","text");
		$(elem).find(".tar_var").remove();
		var thisid="box_"+$(elem).attr("id");
		var isimg="";
		if(vars.img_path){
			$(elem).addClass("imglist");
			$(elem).data("path", vars.img_path);
			isimg=" imglist";
		}
		$(elem).hide();
		$(elem).before('<div class="superselectbox'+isimg+'" id="'+thisid+'"><div class="boxcontainer"></div></div>');
		tar_mselect.addboxes(elem,thisid);
	},
	addboxes:function(elem,thisid,indi){
		$("#"+thisid+" .boxcontainer").empty();
		thislist=$(elem).children(":selected");
		for(i=0;i<thislist.length;i++){
			thisindex=$(thislist[i]).parent().children().index($(thislist[i]));
			$("#"+thisid+" .boxcontainer").append(tar_mselect.structure(elem,$(thislist[i]).text(),$(thislist[i]).attr("title"),thisindex));
		}
		tar_mselect.addboxstring(thisid);
	},
	structure:function(elem,val,img,rel){
		var addimg="";
		if($(elem).hasClass("imglist")){
			var parent=$(elem).attr("id").replace("box_","");
			var imgpath=$("#"+parent).data("path");
			addimg='<span class="supertagimg"><img src="'+imgpath+img+'"/></span>';
		}
		return'<div class="supertag" rel="'+rel+'"><span class="supertagval">'+addimg+val+'</span><span class="supertagbutton remove" title="Remove this entry."></span></div>';
	},
	eventsetup:function(){
		$(".superselectbox .supertagbutton").unbind("click").click(function(){
			if($(this).hasClass("remove")){
				tar_mselect.startremove($(this).parent());
			}
		});
		$(".superselectbox .addcombo").unbind("change").bind("change",function(e){
			tar_mselect.additem($(this).parent().parent());
		});
		$(".superselectbox.imglist .addcombo .option").unbind("mouseenter").bind("mouseenter",function(){
			tar_mselect.imgpreview.create(this);
		}).unbind("mouseout").bind("mouseout",function(){
			tar_mselect.imgpreview.destroy();
		});
	},
	startremove:function(elem){
		$(elem).hide(400,function(){ tar_mselect.killnode(this,$(this).closest(".superselectbox")); });
	},
	killnode:function(elem,parent){
		thisindex=$(elem).attr("rel");
		$(elem).remove();
		tar_mselect.selectio($(parent).attr("id").substr(4),thisindex,"remove");
		$(parent).find(".addcombo").remove();
		tar_mselect.addselbox($(parent).attr("id").replace("box_",""));
	},
	selectio:function(thisid,thisindex,mode){
		statechange=(mode=="add")?true:false;
		$("#"+thisid).children(":eq("+thisindex+")").attr("selected",statechange);
		if(window.location.search.indexOf("oldbehavior")<0){
			if(!(statechange)){
				if($("#"+thisid).children(":selected").length==0){
					$("#"+thisid).children(":eq(0)").attr("selected",true);
				}
			} else{
				$("#"+thisid).children(":eq(0)").attr("selected",false);
			}
		}
	},
	additem:function(elem){
		addrel=$(elem).find(".addcombo").children(":selected").attr("rel");
		$("#imglistpreview").remove();
		if(addrel!="x"){
			var addtext=$(elem).find(".addcombo").children(":selected").text();
			if($(elem).hasClass("imglist")){
				var imgname=$(elem).find(".addcombo").children(":selected").attr("value");
			}
			$(elem).find(".boxcontainer").append(tar_mselect.structure(elem,addtext,imgname,addrel));
			tar_mselect.selectio($(elem).attr("id").substr(4),addrel,"add");
			$(elem).find(".addtext").val("");
			$(elem).find(".addcombo").remove();
			tar_mselect.addselbox($(elem).attr("id").replace("box_",""));
		}
	},
	imgpreview :{
		create:function(elem){
			var getrel=$(elem).attr("rel");
			var parpath=$(elem).closest(".addcombo").attr("id").replace("rep_","");
			var grandparpath=$(elem).closest(".addcombo").attr("id").replace("rep_select_","");
			var imgname=$("#"+parpath).find("option:eq("+getrel+")").attr("value");
			var imgpath=$("#"+grandparpath).data("path");
			if(getrel!="0"){
				$("#imglistpreview").remove();
				$("#box_"+grandparpath).find(".addbox").append('<div id="imglistpreview"><img src="'+imgpath+imgname+'"/></div>');
			}else{
				$("#imglistpreview").remove();
			}
		},
		destroy:function(){
			$("#imglistpreview").remove();
		}
	}
}

tar_mtag ={
	addboxstring : '<div class="addbox"><div class="addform"><input type="text" class="addtext" value=""/> <span class="additem"></span></div></div>',
	init:function(seek){
		seek=(seek)?seek:".tar_mtag";
		$(seek).each(function(){
			tar_mtag.setup(this,seek.substr(1));
		});
		tar_mtag.eventsetup(seek);
	},
	setup:function(elem,seek){
		var thisid="box_" + $(elem).attr("id");
		var defaultval="Add items here. Separate multiple items with a semi-colon ( ; )";
		var myclass=$.trim($(elem).attr("class").replace(seek,""));
		myclass=(myclass!="")?'supertagbox '+myclass+' ':'supertagbox ';
		var listtype=($(elem).hasClass("list")) ? "bulletlist" : "taglist"; 
		$(elem).change(function(){ tar_mtag.addboxes(this,"box_" + this.id,true) }).hide();
		$(elem).before('<div class="' + myclass + listtype + '" id="' + thisid + '"><div class="boxcontainer"></div></div>');
		tar_mtag.addboxes(elem,thisid);
		$("#" + thisid).append(tar_mtag.addboxstring);
		$("#"+thisid+" .addtext").val(defaultval).data("defaultval",defaultval);
	},
	addboxes:function(elem,thisid,indi){
		$("#" + thisid+" .boxcontainer").empty();
		thislist=$(elem).val().split(";");
		for (i=0;i<thislist.length;i++){
			if ($.trim(thislist[i]) != ""){
				$("#" + thisid+" .boxcontainer").append(tar_mtag.structure(thislist[i]));
			}
		}
		tar_mtag.addrels($("#" + thisid));
		if (indi){
			tar_mtag.eventsetup();
		}
	},
	addrels:function(elem){
		var childnum=$(elem).find(".supertag").length;
		for (i=0;i<childnum;i++){
			$(elem).find(".supertag:eq(" + i + ")").attr("rel",i);
		}
	},
	structure:function(val){
		val=val.replace("<","&lt;");
		return '<div class="supertag"><span class="supertagval">' + $.trim(val) + '</span><span class="supertagbutton edit" title="Edit this entry."></span><span class="supertagbutton remove" title="Remove this entry."></span></div>';
	},
	eventsetup:function(seek){
		$(".supertagbox .supertagbutton").unbind("click").click(function(){
			if ($(this).parent().hasClass("editing")){
				if ($(this).hasClass("edit")){
					tar_mtag.finishedit($(this).parent(),"finish");
				} else if ($(this).hasClass("remove")){
					tar_mtag.finishedit($(this).parent(),"cancel");
				}
			} else{
				if ($(this).hasClass("edit")){
					tar_mtag.startedit($(this).parent(),"focus");
				} else if ($(this).hasClass("remove")){
					tar_mtag.startremove($(this).parent());
				}
			}
		});
		$(".supertagval").unbind("dblclick").bind("dblclick",function(){
			tar_mtag.startedit($(this).parent(),"select");
		});
		$(".supertagbox .addtext").unbind("focus").bind("focus",function(){
			var val=$.trim($(this).val());
			var defval=$(this).data("defaultval");
			if(val==defval){ $(this).val(""); }
			$(this).parent().addClass("focused");
		}).unbind("blur").bind("blur",function(){
			var val=$.trim($(this).val());
			var defval=$(this).data("defaultval");
			if(val==""){ $(this).val(defval); }
			$(this).parent().removeClass("focused");
		});
		$(".supertagbox .additem").unbind("click").click(function(){
			$(this).prev().focus();
			tar_mtag.additem($(this).closest(".supertagbox"));
		});
		$(".supertagbox .addtext").unbind("keydown").bind("keydown",function(e){
			if (e.keyCode == 13){
				$(this).next().click();
				return false;
			}
		}); 
	},
	additem:function(elem){
		addrel=parseInt($(elem).children(".supertag").length);
		addtext=$(elem).find(".addtext").val().split(";");
		addtextstring="";
		for (i=0;i<addtext.length;i++){
			if ($.trim(addtext[i]) != ""){
				$(elem).find(".boxcontainer").append(tar_mtag.structure(addtext[i]));
				addtextstring+=addtext[i]+";";
			}
		}
		tar_mtag.boxio("","#"+$(elem).attr("id").substr(4),addtextstring.substr(0,addtextstring.length-1),"add");
		$(elem).find(".addtext").val("");
		tar_mtag.eventsetup();
		tar_mtag.addrels(elem);
	},
	startedit:function(elem,fs){
		if ($("#editingbox").length > 0){
			tar_mtag.finishedit($("#editingbox").parent().parent(),"finish");
		}
		curwidth=parseInt($(elem).outerWidth()) - 58;
		$(elem).addClass("editing");
		tar_mtag.renamebuttons(elem,"toedit");
		gettext=$(elem).children(".supertagval").html();
		$(elem).children(".supertagval").attr("rel",gettext);
		inclass=$(elem).parent().hasClass("bulletlist");
		if (gettext.length > 128 || inclass){
			$(elem).children(".supertagval").html('<span id="editingbox"><textarea id="newval" rows="3" style="width:' + (curwidth+1) + 'px;height:45px;">' + gettext + '</textarea></span>');
		} else{
			$(elem).children(".supertagval").html('<span id="editingbox"><input id="newval" type="text" value="' + gettext + '" style="width:' + (curwidth+6) + 'px"/></span>');
		}
		$("#newval").unbind("keydown").bind('keydown',function(e){
			if (e.keyCode == 13){
				$(this).parent().parent().next().click();
				return false;
			}
		});
		if(fs=="select"){
			$("#editingbox").children("input").select();
		}else{
			$("#editingbox").children("input").focus();
		}
	},
	finishedit:function(elem,action){
		if ($.trim($("#editingbox").children("#newval").val()) != ""){
			$(elem).removeClass("editing").removeAttr("style");
			tar_mtag.renamebuttons(elem,"unedit");
			newtext=(action == "finish") ? $.trim($("#editingbox").children("#newval").val()) : $.trim($(elem).children(".supertagval").attr("rel"));
			tar_mtag.boxio($(elem).attr("rel"),"#"+$(elem).closest(".supertagbox").attr("id").substr(4),newtext,"edit");
			$(elem).children(".supertagval").html(newtext);
			$("#editingbox").remove();
		} else{
			tar_mtag.startremove(elem);
		}
	},
	startremove:function(elem){
		$(elem).hide(400,function(){ tar_mtag.killnode(this,$(this).closest(".supertagbox")); });
	},
	killnode:function(elem,parent){
		thisindex=$(elem).attr("rel");
		$(elem).remove();
		tar_mtag.boxio(thisindex,"#"+$(parent).attr("id").substr(4),"","kill");
		tar_mtag.addrels($(parent));
	},
	boxio:function(thisindex,getid,newstring,mode){
		rawval=$(getid).val();
		curval=rawval.split(";");
		switch(mode){
			case "kill":
				curval.splice(thisindex,1);
				break;
			case "add":
				curval.splice(curval.length,0,newstring);
				break;
			case "edit":
				curval.splice(thisindex,1,newstring);
				break;
		}
		for (i=0;i<curval.length;i++){
			if ($.trim(curval[i])==""){
				curval.splice(i,1);
			}
		}
		newstring=curval.join(";");
		$(getid).val(newstring);
	},
	renamebuttons:function(elem,direc){
		if (direc == "toedit"){
			editbutton="Confirm this change.";
			removebutton="Canced this change.";
		} else{
			editbutton="Edit this entry.";
			removebutton="Remove this entry.";
		}
		$(elem).children(".supertagbutton.edit").attr("title",editbutton);
		$(elem).children(".supertagbutton.remove").attr("title",removebutton);
	}
}

tar_datepick={
	timers:{},
	init:function(vars){
		if(vars==undefined){ vars={}; }
		vars.seek=(vars.seek!=undefined)?vars.seek:".tar_datepick";
		$(vars.seek).each(function(){
			tar_datepick.setup(this,vars);
		});
		tar_datepick.events(vars.seek);
	},
	setup:function(elem,vars){
		var myid=$(elem).hide().attr("id");
		$(elem).after('<input type="text" class="tar_datepick_replace" id="tar_input_'+myid+'"/><div id="tar_cal_'+myid+'" class="tar_picker_calendar"></div>');
		$("#tar_cal_"+myid).data(tar_datepick.getvars(elem,vars));
		if($.trim($(elem).val())!=""){
			splitdate=tar_datepick.splitdate($.trim($(elem).val()),vars.format);
			tar_datepick.getdate("reset",elem,splitdate);
		}
		if(tar_datepick.bool($("#tar_cal_"+myid).data("autopickdate"))){
			if($.trim($(elem).val())==""){
				var autopick=$("#tar_cal_"+myid).data("autopickdate");
				var operand=String(autopick).charAt(0);
				if(operand=="+"||operand=="-"){
					var useval=parseInt(autopick);
					var offset=0+parseInt(autopick);
				}
				tar_datepick.getdate("auto",elem,offset);
			}
		}
		$("label[for="+myid+"]").attr("for","tar_input_"+myid);
	},
	events:function(seek){
		$(".tar_datepick_replace").bind("focus",function(event,passed){
			if(passed==undefined){
				if($.browser.msie&&$("body").hasClass("ieistheworstbrowserever")){
					$("body").removeClass("ieistheworstbrowserever");
				} else {
					tar_datepick.opencalendar(this);
					$(this).select();
				}
			} else if ($.browser.msie){
				$("body").addClass("ieistheworstbrowserever");
			}
		}).live("keydown",function(e){
			switch(e.keyCode){
				case 9:
					$("#tar_activecal").remove();
					$("body").unbind("click");
					break;
				case 40:
					if($("#tar_activecal").length==0){
						$(this).blur().focus();
					}
					break;
				default:
					return false;
					break;
			}
		}).bind("click",function(){ $(this).blur().focus();return false; });
		$(".tar_cal_nav span.arrow").live("mousedown",function(){
			if(tar_datepick.bool($(this).closest(".tar_picker_calendar").data("holdscroll"))==true){
				$("#tar_activecal").addClass("scrolling");
				var offset=($(this).hasClass("next"))?1:-1;
				tar_datepick.newmonth(offset);
			}
			return false;
		}).live("mouseup",function(){
			if(tar_datepick.bool($(this).closest(".tar_picker_calendar").data("holdscroll"))==true){
				$("#tar_activecal").removeClass("scrolling");
			}else{
				var offset=($(this).hasClass("next"))?1:-1;
				tar_datepick.newmonth(offset);
			}
		}).live("mouseout",function(){
			$("#tar_activecal").removeClass("scrolling");
		});
		$(".tar_cal_activeday").live("click",function(){
			tar_datepick.getdate("bycal",this);
		});
		$(".tar_cal_command span.direct").live("click",function(){
			if(!($("#tar_activecal").hasClass("tar_direct_picking"))){
				$("#tar_activecal").addClass("tar_direct_picking");
				tar_datepick.opendirect();
			}
		});
		$(".tar_cal_month_title").live("click",function(){
			if(!($("#tar_activecal").hasClass("tar_direct_picking"))){
				$("#tar_activecal").addClass("tar_direct_picking");
				tar_datepick.opendirect();
			}
		});
		$(".tar_cal_command span.hide").live("click",function(){
			if($("#tar_activecal").hasClass("tar_direct_picking")){
				$("#tar_activecal").removeClass("tar_direct_picking");
				$("#tar_cal_directpick").remove();
			}else{
				$("#tar_input_"+$(this).closest(".tar_picker_calendar").attr("id").replace("tar_cal_","")).trigger("focus",["cancel"]);
				$("#tar_activecal").remove();
				$("body").unbind("click");
			}
		});
		$("#tar_cal_directpick .increm").live("click",function(){
			var offset=($(this).hasClass("next"))?1:-1;
			var curval=parseInt($("#tar_cal_directpick_year").val());
			$("#tar_cal_directpick_year").val(curval+offset);
		});
		$("#tar_cal_directpick_monthbox").live("click",function(){
			$("#tar_cal_directpick_monthdrop").show();
		});
		$("#tar_cal_directpick_monthdrop span").live("click",function(){
			var setmonth=parseInt($(this).attr("rel"));
			$("#tar_cal_directpick_monthdrop").hide();
			$("#tar_cal_directpick_monthbox").attr("rel",setmonth).text(tar_datepick.textcon("month_full",setmonth));
		});
		$("#tar_cal_directpick_year").live("click",function(){
			$(this).select();
		}).live("keydown",function(e){
			if(e.keyCode==13){
				$("#tar_activecal .tar_cal_directpick_button").click();
				return false;
			}else if(parseInt($(this).val().length)>=4){
				$(this).select();
			}
		});
		$(".tar_cal_directpick_button").live("click",function(){
			var vars={};
			var curpos=$("#tar_activecal").attr("rel").split(",");
			vars.month=parseInt($("#tar_cal_directpick_monthbox").attr("rel"));
			vars.year=parseInt($("#tar_cal_directpick_year").val());
			vars.direc=1;
			$("#tar_cal_directpick").remove();
			$("#tar_activecal").removeClass("tar_direct_picking");
			if(vars.month!=parseInt(curpos[0])||vars.year!=parseInt(curpos[1])){
				tar_datepick.getmonth(vars);
			}
		});
	},
	opencalendar:function(elem){
		$("#tar_activecal").remove();
		$("body").unbind("click");
		$(elem).next(".tar_picker_calendar").append('<div id="tar_activecal"><div class="tar_cal_nav"><span class="prev arrow"></span><span class="next arrow"></span></div><div id="tar_cal_screen"></div></div>');
		var myid=$(elem).attr("id").replace("tar_input_","");
		if($("#"+myid).data("curdate")){
			var getmoy=$("#"+myid).data("curdate").split(",");
			var vars={};
			vars.month=getmoy[0];
			vars.year=getmoy[2];
		}
		tar_datepick.getmonth(vars);
		$("body").bind("click",function(event){
			var proceed=1;
			if($(event.target).closest(".tar_picker_calendar").length){
				if($(event.target).closest(".tar_picker_calendar").attr("id").replace("tar_cal_","")==myid){
					proceed=0;
				}
			}
			if(proceed){
				$("#tar_activecal").remove();
				$("body").unbind("click");
			}
		});
	},
	getmonth:function(dopt){
		var newdate=new Date();
		var curday=newdate.getDate();
		var curmonth=newdate.getMonth();
		var curyear=newdate.getFullYear();
		var offset=0;
		if(dopt){
			curday=(dopt.day>=0)?dopt.day:curday;
			curmonth=(dopt.month>=0)?dopt.month:curmonth;
			curyear=(dopt.year)?dopt.year:curyear;
			offset=(dopt.direc)?dopt.direc:offset;
		}
		$("#tar_activecal .tar_cal_month").attr("id","tar_calendar_takemeout");
		var bringitin=tar_datepick.drawmonth(curmonth,curyear,curday);
		$("#tar_calendar_takemeout").css({"position":"absolute"}).animate({"left":-182*offset},300,function(){ $(this).remove(); });
		$(bringitin).css({"position":"absolute","left":182*offset}).animate({"left":0},300,function(){ $(this).removeAttr("style").parent().empty().append($(this));if($("#tar_activecal").hasClass("scrolling")){ tar_datepick.newmonth(offset); } });
	},
	newmonth:function(offset){
		var curpos=$("#tar_activecal").attr("rel").split(",");
		var vars={};
		var month=parseInt(curpos[0])+offset;
		var year=parseInt(curpos[1]);
		if(month>=12){
			month=0;
			year=year+offset;
		}else if(month<0){
			month=11;
			year=year+offset;
		}
		vars.month=month;
		vars.year=year;
		vars.direc=(offset>=0)?1:-1;
		tar_datepick.getmonth(vars);
	},
	drawmonth:function(month,year,day){
		var firstday=new Date(year,month,1).getDay();
		var totaldays=32-new Date(year,month,32).getDate();
		var weekbreak=0+firstday;
		var fmonth=tar_datepick.textcon("month_full",month);
		var monthid="tar_cal_"+fmonth.toLowerCase();
		var seldate=$("#"+$("#tar_activecal").parent().attr("id").replace("tar_cal_","")).data("curdate");
		if (seldate){
			seldate=seldate.split(",");
		}else{
			seldate=[0,0,0];
		}
		$("#tar_activecal").attr("rel",month+","+year);
		$("#tar_cal_screen").append('<div id="'+monthid+'" class="tar_cal_month"><div class="tar_cal_month_title">'+fmonth+' '+year+'</div><div class="tar_cal_week" id="tar_cal_currow"></div></div>');
		for(headings=0;headings<7;headings++){
			$("#tar_cal_currow").append('<span class="tar_cal_heading">'+tar_datepick.textcon("day_short",headings)+'</span>');
		}
		$("#tar_cal_currow").removeAttr("id").after('<div class="tar_cal_week" id="tar_cal_currow"></div>');
		for(fpad=0;fpad<firstday;fpad++){
			$("#tar_cal_currow").append('<span class="tar_cal_padding"></span>');
		}
		var testdays=(month==seldate[0] && year==seldate[2])?true:false;
		for(i=1;i<=totaldays;i++){
			if(weekbreak==7){
				weekbreak=0;
				$("#tar_cal_currow").removeAttr("id").after('<div class="tar_cal_week" id="tar_cal_currow"></div>');
			}
			var extclass="tar_cal_day";
			if(i==day && month==new Date().getMonth() && year==new Date().getFullYear()){
				extclass+=" tar_cal_today";
			}
			if(testdays){
				if(i==seldate[1]){ extclass+=" tar_cal_selectedday"; }
			}
			if(true){
				extclass+=" tar_cal_activeday";
			}
			if(weekbreak==0){
				extclass+=" tar_cal_sunday";
			}
			$("#tar_cal_currow").append('<span class="'+extclass+'" rel="'+i+'">'+i+'</span>');
			weekbreak++;
		}
		$("#tar_cal_currow").removeAttr("id");
		$("#tar_activecal").append('<div class="tar_cal_command"><span class="button direct">Set Month</span> <span class="button hide">Cancel</span></div>');
		return $("#"+monthid);
	},
	getdate:function(method,elem,passed){
		switch(method){
			case "bycal":
				var m_y=$("#tar_activecal").attr("rel").split(",");
				var day=$(elem).attr("rel");
				var month=m_y[0];
				var year=m_y[1];
				var setid=$(elem).closest(".tar_picker_calendar").attr("id").replace("tar_cal_","");
				var calendarelem=$(elem).closest(".tar_picker_calendar");
				break;
			case "auto":
				var newdate=new Date();
				if(passed){ newdate.setDate(newdate.getDate()+passed); }
				var day=newdate.getDate();
				var month=newdate.getMonth();
				var year=newdate.getFullYear();
				var setid=$(elem).attr("id");
				var calendarelem=$("#tar_cal_"+$(elem).attr("id"));
				break;
			case "reset":
				var day=passed[2];
				var month=passed[1];
				var year=passed[0];
				var setid=$(elem).attr("id");
				var calendarelem=$("#tar_cal_"+$(elem).attr("id"));
				break;
		}
		
		var datedata=tar_datepick.datestring(calendarelem,"format",day,month,year);
		var datestring=tar_datepick.datestring(calendarelem,"friendlyformat",day,month,year);
		
		$("#"+setid).val(datedata).data({"curdate":month+","+day+","+year});
		$("#tar_input_"+setid).val(datestring);
		if(method=="bycal"){
			$("#tar_input_"+setid).trigger("focus",["set"]);
			$("#tar_activecal").remove();
			$("body").unbind("click");
		}
	},
	opendirect:function(){
		$("#tar_cal_directpick").remove();
		var curpos=$("#tar_activecal").attr("rel").split(",");
		$("#tar_activecal").append('<div id="tar_cal_directpick"><div class="tar_cal_directpick_title">Set Month</div><div class="tar_cal_directpick_inputwrap"><div id="tar_cal_directpick_monthbox" rel="'+curpos[0]+'">'+tar_datepick.textcon("month_full",curpos[0])+'</div><div id="tar_cal_directpick_monthdrop" style="display:none;"></div><div id="tar_cal_directpick_yearbox"><span class="increm next"></span><span class="increm prev"></span><input type="text" id="tar_cal_directpick_year" value="'+curpos[1]+'"/></div></div><span class="tar_cal_directpick_button">Go to This Month</span></div>');
		$("#tar_cal_directpick").css({"opacity":0,"bottom":40}).animate({"opacity":1,"bottom":25},300,function(){ $(this).removeAttr("style"); });
		for(i=0;i<12;i++){
			var monthname=tar_datepick.textcon("month_abbr",i);
			$("#tar_cal_directpick_monthdrop").append('<span rel="'+i+'">'+monthname+'</span>');
		}
	},
	datestring:function(elem,getdata,day,month,year){
		var getformat=$(elem).data(getdata);
		var format=getformat.split("")
		for(i=0;i<format.length;i++){
			format[i]=tar_datepick.datecases(format[i],String(day),String(month),String(year));
		}
		return format.join("");
	},
	splitdate:function(startdate,format){
		var wildcards=["d","j","F","M","m","n","y","Y"];
		var splits=format;
		for(i=0;i<wildcards.length;i++){
			var splits=splits.replace(wildcards[i],"");
		}
		splits=splits.split("");
		var splitstest=false;
		for(i=0;i<splits.length;i++){
			splitstest=splits[0]==splits[i];
		}
		if(splitstest){
			var splitdate=startdate.split(splits[0]);
			format=format.split(splits[0]);
			var returns=[];
			for(i=0;i<format.length;i++){
				if(format[i]=="y"||format[i]=="Y"){
					returns[0]=splitdate[i];
				}
				if(format[i]=="F"||format[i]=="M"||format[i]=="m"||format[i]=="n"){
					returns[1]=splitdate[i]-1;
				}
				if(format[i]=="d"||format[i]=="j"){
					returns[2]=splitdate[i];
				}
			}
			return returns;
		}
		/*var splitdate=[startdate];
		var finaldate=[];
		for(i=0;i<splits.length;i++){
			splitdate=splitdate[i].split(splits[i]);
			finaldate[i]=splitdate[i];
		}
		alert(finaldate);*/
	},
	datecases:function(key,day,month,year){
		var formatted="";
		switch(key){
			case "d":
				if(day.length<=1){
					formatted=tar_datepick.textcon("zero_pad",day-1);
				}else{ formatted=day; }
				break;
			case "j": formatted=day; break;
			case "F": formatted=tar_datepick.textcon("month_full",month); break;
			case "M": formatted=tar_datepick.textcon("month_abbr",month); break;
			case "m":
				if(month<9){
					formatted=tar_datepick.textcon("zero_pad",month);
				}else{ formatted=parseInt(month)+1; }
				break;
			case "n": formatted=parseInt(month)+1; break;
			case "Y": formatted=year; break;
			case "y": formatted=year.substr(2); break;
			default: formatted=key; break;
		}
		return formatted;
	},
	textcon:function(type,get){
		switch(type){
			case "day_full": var opts=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; break;
			case "day_abbr": var opts=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; break;
			case "day_short": var opts=["Su","Mo","Tu","We","Th","Fr","Sa"]; break;
			case "month_full": var opts=["January","February","March","April","May","June","July","August","September","October","November","December"]; break;
			case "month_abbr": var opts=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; break;
			case "zero_pad": var opts=["01","02","03","04","05","06","07","08","09"]; break;
		}
		var tosender=(isNaN(get))?opts.indexOf(get):opts[get];
		return tosender;
	},
	getvars:function(elem,vars){
		if(vars==undefined){ vars={}; }
		$(elem).parent().find("var").each(function(){
			var tester=$(this).attr("title");
			vars[$(this).attr("title")]=$(this).text();
		});
		if(!(vars.seek)){ vars.seek=".tar_datepick" }
		if(!(vars.event)){ vars.event="focus" }
		if(!(vars.format)){ vars.format="Y-m-d" }
		if(!(vars.friendlyformat)){ vars.friendlyformat="F j, Y" }
		if(!(vars.daylabel)){ vars.daylabel="short" }
		if(!(vars.holdscroll)){ vars.holdscroll=false }
		if(!(vars.autopickdate)){ vars.autopickdate=false }
		return vars;
	},
	bool:function(val){
		switch(val){
			case "true": return true; break;
			case "false": return false; break;
			case true: return true; break;
			case false: return false; break;
			default: return parseInt(val);
		}
	}
}

tar_cfelement ={
	init:function(seek,vars){
		var seek=(seek)?seek:".tar_cfe";
		$(seek).each(function(){
			tar_cfelement.setup.delegate(this,seek.substr(1),vars);
		});
	},
	setup:{
		delegate:function(elem,seek,vars){
			var type=elem.nodeName.toLowerCase();
			while($(elem).attr("id")==""){
				var newid=tar_cfelement.randomstring();
				if(!($("#"+newid).length)){$(elem).attr("id",newid);}
			}
			if(type in tar_cfelement.setup){
				tar_cfelement.setup[type].init(elem,seek,vars);
			}
		},
		select:{
			init:function(elem,seek,vars){
				$(elem).hide();
				var myid= "rep_"+$(elem).attr("id");
				var myclass=$.trim($(elem).attr("class").replace(seek,""));
				myclass=(myclass!="")?' class="tar_custom select '+myclass+'"':' class="tar_custom select"';
				var appstring='<div id="'+myid+'"'+myclass+'><div class="arrow"></div><div class="display_box"></div><div class="actor"></div><div class="options_box" style="left:-5000px"></div></div>';
				$(elem).after(appstring);
				var selex=tar_cfelement.setup.select.addoptions(elem,$("#"+myid).find(".options_box"));
				$("#"+myid).attr("rel",selex).find(".display_box").text($(elem).find("option:eq("+selex+")").text());
				setTimeout('tar_cfelement.setup.select.finalbits("'+myid+'","'+vars.auto+'","'+vars.center+'")',50);
				tar_cfelement.setup.select.events($("#"+myid),elem);
			},
			refresh:function(elem,selbox){
				var selex=tar_cfelement.setup.select.addoptions(selbox,$(elem).find(".options_box"));
				$(elem).attr("rel",selex).find(".display_box").text($(selbox).find("option:eq("+selex+")").text());
				$(elem).find(".options_box").hide();
				tar_cfelement.setup.select.events(elem,selbox);
			},
			addoptions:function(elem,cont){
				var limit=$(elem).find("option").length;
				var optiontemplate='<div class="option{s}" rel="{i}"><span>{v}</span></div>';
				var appstring="";
				var testit=$(elem).val();
				for(i=0;i<limit;i++){
					var portelem=$(elem).find("option:eq("+i+")");
					if($(portelem).val()==testit){
						var selc=" selected";
						var selex=i;
					}else{
						var selc="";
					}
					appstring+=optiontemplate.replace("{s}",selc).replace("{i}",i).replace("{v}",$(portelem).text());
				}
				$(cont).empty().append(appstring);
				return selex;
			},
			events:function(elem,selbox){
				$(elem).find(".actor").unbind("click").click(function(){
					if($(elem).hasClass("open")){
						$(elem).removeClass("open").find(".options_box").slideUp(100);
						$("body").unbind("click");
					}else{
						$(elem).addClass("open").find(".options_box").slideDown(100,function(){
							$("body").click(function(){
								$(elem).removeClass("open").find(".options_box").hide();
								$("body").unbind("click");
							});
						});
					}
				});
				$(elem).find(".option").unbind("click").click(function(){
					var switchto=$(this).attr("rel");
					var switchtext=$(this).text();
					$(elem).find(".selected").removeClass("selected");
					$(this).addClass("selected");
					$(elem).attr("rel",switchto);
					$(elem).find(".display_box").text(switchtext);
					$(selbox).find("option[selected]").removeAttr("selected");
					$(selbox).find("option:eq("+switchto+")").attr("selected",true).change();
				});
				$(selbox).live("change",function(){
					tar_cfelement.setup.select.refresh(elem,selbox);
				});
			},
			finalbits:function(myid,auto,center){
				if(auto==true){ tar_cfelement.setup.select.widthset("#"+myid,center); }
				$("#"+myid+" .options_box").hide().css({"left":""});
			},
			widthset:function(elem,center){
				alert("setwidth");
				var total=$(elem).find(".option").length;
				var boxwidth=parseInt($(elem).outerWidth())+20;
				var bigwidth=0;
				for(i=0;i<total;i++){
					getwidth=parseInt($(elem).find(".option:eq("+i+")").outerWidth());
					bigwidth=(getwidth>bigwidth)?getwidth:bigwidth;
				}
				if(bigwidth){
					$(elem).css({"width":bigwidth});
				}
				if(center){
					$(elem).css({"margin-left":-(bigwidth/2)});
				}
			}
		}
	},
	randomstring:function(len,custring){
		var pool=(custring)?custring.split(""):"abcdefghijklmnopqurtuvwxyz".split("");
		var len=(len)?len:6;
		var newid="";
		for(i=0;i<len;i++){newid+=pool[Math.floor(Math.random()*pool.length)];}
		return newid;
	}
}

tar_felement_ks={ init:function(){tar_climit.init();tar_cselect.init();tar_mselect.init();tar_mtag.init();tar_datepick.init();} }
