/*
JKI TOOLS
www.jeffkalsow.info
*/
var JKIT = new Object();

JKIT.ENUM = new Object();
JKIT.ENUM.create_new = '+ Create New';
JKIT.ENUM.edit = '+ Edit';
JKIT.ENUM.hide_details = '- Hide Details';
JKIT.ENUM.remove = 'x Remove';

JKIT.VALIDATE = new Object();
JKIT.VALIDATE.email = function(s) {
	var isvalid = (/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/.test(s))
	/*alert('\' ' + s + '\' Validation: ' + isvalid);*/
	return isvalid;
}
/*
******************************************************
SWF METHODS
******************************************************
*/
JKIT.SWF = new Object();
JKIT.SWF.get_movie_name = function(s) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
    	return window[s]
    }
    else {
    	return document[s]
    }
}
/*
******************************************************
XML METHODS
******************************************************
*/
JKIT.XML = new Object();
JKIT.XML.fExC = function(classname, elm) {
	
	var l, r, aa, i;
	elm = (elm != null) ? elm : document.getElementsByTagName("body")[0];
	r = new Array();
	if (elm.className == classname) r.push(elm);
	l = elm.childNodes.length;
	for (i = 0; i < l; i++) {
		if (elm.childNodes[i].nodeType == 1) {
			aa = new Array();
			aa = JKIT.XML.fExC(classname, elm.childNodes[i]);
			if (aa.length > 0) r = r.concat(aa);
		}
	}
	//if (elm == document.body) alert("Final length of return array of elements of classname: "+ classname + ", is: " + r.length);
	return r;	
}

//Find Parent Element by Tagname
JKIT.XML.fPExTN = function(prnt, elm)
{
	var vartyp = typeof(elm);
	var welm;
	var parentfound = false;
	switch(vartyp)
	{
		case 'string':
		elm = document.getElementsByTagName(elm)[0];
		break;
		default:
		elm = elm;
	}
	//alert("fPExTN::elmname: " + elm.nodeName);
	if (prnt.length > 0)
	{
		welm = elm;
		do
		{
			welm = welm.parentNode;
			welmname = welm.nodeName.toLowerCase();
			//alert(welmname);
			parentfound = (welmname == prnt);
		}
		while(welm.parentNode != null && !parentfound)
	}
	return (parentfound) ? welm : null;
}
// Find Element by Element list = a = [elm1, key1, elm2, key2, ...]
JKIT.XML.fExElementList = function(elm, a)
{
	
	for (i = 0; i < a.length; i=i+2)
	{
		elm = elm.getElementsByTagName(a[i])[a[i+1]];
	}
	return elm;
}
//Get child values from elm
JKIT.XML.fVxECTags = function(elm, tagname, isformvalue, checkforselected)
{
	isformvalue = (isformvalue) ? isformvalue : false;
	checkforselected = (checkforselected) ? checkforselected : false;
	var a = new Array();
	kids = elm.getElementsByTagName(tagname);
	var getnodevalue = true;
	for (i = 0; i < kids.length; i++)
	{
		getnodevalue = true;
		v = null
		if (checkforselected)
		{
			if (kids[i].selected)
			{
				if (isformvalue)
				{
					v = kids[i].value; getnodevalue = false;
				} 
			}else{
				getnodevalue = false; 
			}
		}else{
			if (isformvalue)
			{
				v = kids[i].value; getnodevalue = false;
			}
		}
		if (getnodevalue) { v = kids[i].firstChild.nodeValue; }
		a.push(v);
	}
	return a;
}
JKIT.XML.get_elements_by_tagname = function(xx, ns, tagname)
{
	var r;
	r = xx.getElementsByTagName(ns + ":" + tagname);
	if (typeof(r) != 'object')
	{
		/*Using Safari*/
		r = xx.getElementsByTagName(tagname);
	}
	return r;
}
JKIT.XML.get_attribute = function(xx, ns, attname)
{
	var r;
	r = xx.getAttribute(ns + ":" + attname);
	if (typeof(r) != 'string')
	{
		/*Using Safari*/
		r = xx.getAttribute(attname);
	}
	return r;
}
JKIT.XML.modify_attribute = function(node_id, n, v)
{
	var e = document.getElementById(node_id);
	e.setAttribute(n, v);
}
JKIT.XML.fXCxTN = function(elm, tagname)
{
	elmchildren = elm.getElementsByTagName(tagname);
	l = elmchildren.length;
	for (i = l-1; i >= 0; i--)
	{
		elm.removeChild(elmchildren[i]);
	}
}
JKIT.XML.xremovechild = function(s, typ) {
	
	var elm,prnt;
	
	switch (typ) {
			
		case "object":
		
			s.parentNode.removeChild(s);
			break;
			
		case "string":
		default:
			
			try
			{
				elm = document.getElementById(s);
				prnt = elm.parentNode;
				prnt.removeChild(elm);
			}
			catch(e){}
			
	}
}
JKIT.XML.newxml = function()
{
	var xmldoc;
	try //Internet Explorer
	{
		xmldoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			xmldoc=document.implementation.createDocument("","",null);
		}
		catch(e) {alert(e.message);}
	}
	return xmldoc;
}
JKIT.XML.newxmlfromtext = function(t)
{
	var xmldoc;
	try //Internet Explorer
	{
		xmldoc=new ActiveXObject("Microsoft.XMLDOM");
		xmldoc.async="false";
		xmldoc.loadXML(t);
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
		parser=new DOMParser();
		xmldoc=parser.parseFromString(t,"text/xml");
		}
		catch(e) {alert(e.message);}
	}
	return xmldoc;
}
JKIT.XML.clean_nodevalue = function(s)
{
	return s.replace(/[\s]+/g, '');
}
/*
**************************************************
TINYMCE
***************************************************
*/
JKIT.TINYMCE = new Object();
JKIT.TINYMCE.elms = new Array();
JKIT.TINYMCE.onswitch = function()
{
	var a = JKIT.TINYMCE.onswitch.arguments;
	JKIT.TINYMCE.elms.push(a[0]);
	tinyMCE.init({ // General options
					mode : "exact",
					elements : JKIT.TINYMCE.elms.join(","),
					editor_selector : "mceEditor",
					theme : "advanced",
					cleanup : false,
					verify_html : false,
					plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups",
			
					// Theme options
					theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
					theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
					theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
					theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
					theme_advanced_toolbar_location : "top",
					theme_advanced_toolbar_align : "left",
					theme_advanced_statusbar_location : "bottom",
					theme_advanced_resizing : true,
			
					// Example word content CSS (should be your site CSS) this one removes paragraph margins
					content_css : "css/word.css",
			
					// Drop lists for link/image/media/template dialogs
					template_external_list_url : "lists/template_list.js",
					external_link_list_url : "lists/link_list.js",
					external_image_list_url : "lists/image_list.js",
					media_external_list_url : "lists/media_list.js",
			
					// Replace values for the template plugin
					
					forced_root_block : false
					

					

					
	});
}
/*
******************************************************
FORM TOOLS
******************************************************
*/
// t = search form
// s = search input default
JKIT.FORMS = new Object();
JKIT.FORMS.Fi_chk = function()
{
	var a = JKIT.FORMS.Fi_chk.arguments;
	var s = (a[1]) ? a[1] : '';
	if (a[0].value==s) a[0].value='';
	a[0].select();
	a[0].style.fontStyle = 'normal';
	
	
}
JKIT.FORMS.Fi_next = function(evt, o, nn, l)
{
	//f = (f) ? f : 0;
	var charok = (evt.charCode > 47 && evt.charCode < 58);
	if (o.value.length == (l-1) && charok)
	{
		//document.forms[f].elements[nn].focus();
		//document.forms[f].elements[nn].select();
		document.getElementById(nn).focus();
		document.getElementById(nn).select();
	}
}
//[0]=current element, [1]=which input to select, [2]=search from this parent element tag name
JKIT.FORMS.selectitem = function()
{
	var elm_prnt, inputelm;
	var a = JKIT.FORMS.selectitem.arguments;
	//alert("JKIT::FORMS..." + a[0]);
	var elm = (a[0]) ? a[0] : null;
	var parent_tag_name = (a[2]) ? a[2] : 'tr';
	var input_which = (a[1]) ? a[1] : 0;
	if (elm)
	{
		//alert(elm.nodeName + ", " + parent_tag_name)
		elm_prnt = JKIT.XML.fPExTN(parent_tag_name, elm);
		if (elm_prnt)
		{
			//alert(elm_prnt.nodeName);
			inputelm = elm_prnt.getElementsByTagName('input');
			if (inputelm)
			{
				inputelm = inputelm[input_which];
				inputelm.checked = true;
			}
		}
	}
}
//[0]=current element, [1]=true:selectall, false:unselectall, [2]=for each input group inside this element tag name, [3]=which input to select wihtin each group, [4]=parent tag to search from for input groups
JKIT.FORMS.selectall = function()
{
	var a = JKIT.FORMS.selectall.arguments;
	var elm = (a[0]) ? a[0] : null;
	var selectall = (typeof(a[1]) == 'boolean') ? a[1] : true;
	var inputgroup_tagname = (a[2]) ? a[2] : 'tr';
	var input_prnt_tagname = (inputgroup_tagname == 'tr') ? 'td' : 'input';
	var input_which = (a[3]) ? a[3] : 0;
	var parent_tag_name = (a[4]) ? a[4] : 'form';
	var elm_prnt, group_elms, input_elms, input_elm, i, l, sol, group_elms, so_elm_prnt, so_group_elm, so_input_elms, so_span_elms, so_input, so_span, k, v, soinputs, so_which_inputs, input_prnt_elms, doselect;
	var select_options_classname = 'select_options_row';
	var so_prnt = 'div';
	var so_group_tagname = 'tr';
	var so = null;
	if (elm)
	{
		//alert(elm.nodeName + ", " + parent_tag_name);
		elm_prnt = JKIT.XML.fPExTN(parent_tag_name, elm);
		if (elm_prnt)
		{
			//alert(elm_prnt.nodeName);
			group_elms = elm_prnt.getElementsByTagName(inputgroup_tagname);
			if (group_elms)
			{
				// Get select all options if exists
				so_elm_prnt = JKIT.XML.fPExTN(so_prnt, elm);
				if (so_elm_prnt)
				{
					so_group_elm = so_elm_prnt.getElementsByTagName(so_group_tagname)[0];
					if (so_group_elm)
					{
						if (so_group_elm.className == select_options_classname)
						{	
							so = new Array();
							soinputs = new Array();
							so_input_elms = so_group_elm.getElementsByTagName('input');
							so_span_elms = so_group_elm.getElementsByTagName('span');
							sol = so_input_elms.length;
							//alert(sol);
							for (i = 0; i < sol; i++)
							{
								so_input = so_input_elms[i];
								so_span = so_span_elms[i];
								if (so_input.checked == true)
								{
									k = so_input.value;
									v = so_span.firstChild.nodeValue;
									soinputs.push(k);
									so.push(v);
								}
								
							}
							sos = so.length;
						}
						
					}
				}
				
				l = group_elms.length;
				//alert("Group counts="+l);
				//alert(group_elms[0].getElementsByTagName(input_prnt_tagname)[0].nodeName.toLowerCase());
				for (i=0; i < l; i++)
				{
					//alert("which input: " + input_which + ", input counts in " + inputgroup_tagname + ": " + group_elms[i].nodeName);
					if (group_elms[i].className !== select_options_classname)
					{
						input_prnt_elms = group_elms[i].getElementsByTagName(input_prnt_tagname);
						doselect = true;
						
						if (so !== null)
						{
							doselect = false;
							
							for (ii=0; ii < sos; ii++)
							{
								so_which_input = soinputs[ii];
								//alert(input_prnt_elms[so_which_input].getElementsByTagName('input').length);
								input_elm = (input_prnt_elms[0].nodeName.toLowerCase() !== 'input') ? input_prnt_elms[so_which_input].getElementsByTagName('input')[0] : input_prnt_elms[so_which_input];
								if (input_elm)
								{
									if (input_elm.value == so[ii]) { doselect = true; ii = so.length; }
								}
							}
						}
						input_elm = (input_prnt_elms[0].nodeName.toLowerCase() !== 'input') ? input_prnt_elms[input_which].getElementsByTagName('input')[0] : input_prnt_elms[input_which];		
						if (input_elm && doselect)
						{
							input_elm.checked = selectall;
						}
						//alert(input_elm.nodeName + ", i=" + i);
					}
				}
				
			}
		}
	}
}


JKIT.FORMS.showselectoptions = function()
{
	var a = JKIT.FORMS.showselectoptions.arguments;
	var elm = (a[0]) ? a[0] : null;
	var prnt = (a[1]) ? a[1] : 'td';
	var hiliteparents = (a[2]) ? a[2] : ['div', 0];
	var hilitewrapper = (a[3]) ? a[3] : 'p';
	var elmvalue = elm.firstChild.nodeValue;
	//alert(elmvalue);
	var toshow = (/ show /i.test(elmvalue));
	//alert(toshow.toString());
	var parentelm, hiliteelm, selectelm, newvals;
	if (elm)
	{
		parentelm = JKIT.XML.fPExTN(prnt, elm);
		if (parentelm)
		{
			// Get hiliteelm
			hiliteelm = JKIT.XML.fExElementList(parentelm, hiliteparents);
			//alert(hiliteelm.nodeName + ', count: ' + hiliteelm.childNodes.length);
			//Get selectelm
			selectelm = parentelm.getElementsByTagName('select')[0];
			
			//If showing select
			if (toshow)
			{
				//clear all elements in hilite/reset rather
				JKIT.XML.fXCxTN(hiliteelm, hilitewrapper);
				//alert(hiliteelm.nodeName + ', count: ' + hiliteelm.childNodes.length);
				hiliteelm.style.display = "none";
				selectelm.style.display = "block";
				elm.firstChild.nodeValue = "- Hide Options";
			}else{
				newvals = JKIT.XML.fVxECTags(selectelm, 'option', false, true);
				for (i = 0; i < newvals.length; i++)
				{
					pelm = document.createElement(hilitewrapper);
					pelmtxt = document.createTextNode(newvals[i]);
					pelm.appendChild(pelmtxt);
					hiliteelm.appendChild(pelm);
				}
				hiliteelm.style.display = "block";
				selectelm.style.display = "none";
				elm.firstChild.nodeValue = "+ Show Options";
			}
				
		}
	}
}
JKIT.FORMS.CREATENEW_COUNT = 0;
JKIT.FORMS.CREATENEW_PARENTNAME = '';
JKIT.FORMS.CREATENEW_CONTAINER = '';
JKIT.FORMS.CREATENEW_BUTTON_CONTAINER = '';
JKIT.FORMS.CREATENEW_HILITEPARENTS = '';
JKIT.FORMS.CREATENEW_HILITEWRAPPER = '';
JKIT.FORMS.createnew = function()
{
	var a = JKIT.FORMS.createnew.arguments;
	var elm = (a[0]) ? a[0] : null;
	var fieldsinfo = (a[1]) ? a[1] : null;
	var prnt = (a[2]) ? a[2] : 'td';
	JKIT.FORMS.CREATENEW_PARENTNAME = prnt;
	JKIT.FORMS.CREATENEW_CONTAINER = 'div';
	var hiliteparents = JKIT.FORMS.CREATENEW_HILITEPARENTS = (a[3]) ? a[3] : ['div', 0];
	var hilitewrapper = JKIT.FORMS.CREATENEW_HILITEWRAPPER = (a[4]) ? a[4] : 'p';
	JKIT.FORMS.CREATENEW_BUTTON_CONTAINER = (a[5]) ? a[5] : 'p';
	var buttoncontainer = JKIT.FORMS.CREATENEW_BUTTON_CONTAINER;
	var elmvalue = elm.firstChild.nodeValue;
	//alert(elmvalue);
	//var toshow = (/ show /i.test(elmvalue));
	//alert(toshow.toString());
	var parentelm, hiliteelm, selectelm, newvals, bpick;
	if (elm && fieldsinfo)
	{
		parentelm = JKIT.XML.fPExTN(prnt, elm);
		buttoncontainer_elm = JKIT.XML.fPExTN(buttoncontainer, elm);
		if (parentelm)
		{
			// Get hiliteelm
			//hiliteelm = JKIT.XML.fExElementList(parentelm, hiliteparents);
			//alert(hiliteelm.nodeName + ', count: ' + hiliteelm.childNodes.length);
			//Get selectelm
			//selectelm = parentelm.getElementsByTagName('select')[0];
			
			//If showing select
			
			new_container_elm = document.createElement(JKIT.FORMS.CREATENEW_CONTAINER);
			
			hilite_elm = document.createElement('div');
			attr = document.createAttribute('class');
			attr.nodeValue = 'createnew_hilite';
			hilite_elm.setAttributeNode(attr);
			new_container_elm.appendChild(hilite_elm);
			
			linked_ct = fieldsinfo[0][0];
			fieldsarray = fieldsinfo[1];
			linked_ct_caption = fieldsinfo[0][1];
			tbl_elm = document.createElement('table');
			tbl_cap_elm = document.createElement('caption');
			tbl_h5_elm = document.createElement('h5');
			txt_node = document.createTextNode('New ' + linked_ct_caption);
			tbl_h5_elm.appendChild(txt_node);
			tbl_cap_elm.appendChild(tbl_h5_elm);
			tbl_elm.appendChild(tbl_cap_elm);
			tbl_tr_elm = document.createElement('tr');
			
			
			
			l = fieldsarray.length;
			for(i = 0; i < l; i++)
			{
				bpick = ( /createnewpick\[\]$/i.test(fieldsarray[i][0]));
				bcreatenewct = (/^createnewlinkedct/i.test(fieldsarray[i][0]));
				tbl_td_elm = document.createElement('td');
				fieldname = (!bpick && !bcreatenewct) ? linked_ct : '';
				fieldname += fieldsarray[i][0];
				fieldname += (!bpick && !bcreatenewct) ? JKIT.FORMS.CREATENEW_COUNT.toString() : '';
				fieldlabel = fieldsarray[i][1];
				inputtype = fieldsarray[i][2];
				fieldvalue = (bpick) ? JKIT.FORMS.CREATENEW_COUNT : '';
				fieldvalue = (bcreatenewct) ? fieldlabel : fieldvalue;
				label_elm = document.createElement('h5');
				label_textnode = document.createTextNode(fieldlabel);
				label_elm.appendChild(label_textnode);
				field_elm = document.createElement('input');
				field_elm.type = inputtype;
				field_elm.name = fieldname;
				if (bpick || bcreatenewct) { field_elm.value = fieldvalue; }
				if (!bpick && !bcreatenewct) { tbl_td_elm.appendChild(label_elm); }
				tbl_td_elm.appendChild(field_elm);
				tbl_tr_elm.appendChild(tbl_td_elm);
				
			}
			JKIT.FORMS.CREATENEW_COUNT++;
			
			tbl_elm.appendChild(tbl_tr_elm);
			
			new_container_elm.appendChild(tbl_elm);
			JKIT.FORMS.BUTTONS.add(JKIT.ENUM.hide_details, new_container_elm, 'p');
			JKIT.FORMS.BUTTONS.add(JKIT.ENUM.remove, new_container_elm, 'p');
			parentelm.insertBefore(new_container_elm, buttoncontainer_elm);
			
				
		}
	}
}
JKIT.FORMS.BUTTONS = new Object();
JKIT.FORMS.BUTTONS.add = function(buttonname, elm, container_name)
{
	container_name = (container_name) ? container_name : 'p';
	if (elm)
	{
		container_elm = document.createElement(container_name);
		a_elm = document.createElement('a');
		a_elm_textnode = document.createTextNode(buttonname);
		a_elm.appendChild(a_elm_textnode);
		a_elm_onclick = document.createAttribute('onclick');
		a_elm_onclick.nodeValue = 'JKIT.FORMS.BUTTONS.action(this); return true;';
		a_elm.setAttributeNode(a_elm_onclick);
		a_elm.className = 'a-toggler';
		container_elm.appendChild(a_elm);
		elm.appendChild(container_elm);
	}
}
JKIT.FORMS.BUTTONS.action = function(elm)
{
	s = elm.firstChild.nodeValue;
	var bHideDetails = (/hide details/i.test(s));
	var bRemove = (/remove/i.test(s));
	var bEdit = (/edit/i.test(s));
	var prnt = JKIT.FORMS.CREATENEW_CONTAINER;
	container_elm = JKIT.XML.fPExTN(prnt, elm);
	parent_elm = JKIT.XML.fPExTN(JKIT.FORMS.CREATENEW_PARENTNAME, container_elm);
	hiliteparents = JKIT.FORMS.CREATENEW_HILITEPARENTS;
	hilitewrapper = JKIT.FORMS.CREATENEW_HILITEWRAPPER;
	tbl_elm = container_elm.getElementsByTagName('table')[0];
	hiliteelm = JKIT.XML.fExElementList(container_elm, hiliteparents);
	if (bHideDetails)
	{
		
		newvals = JKIT.XML.fVxECTags(tbl_elm, 'input', true, false);
		newinputs = tbl_elm.getElementsByTagName('input');
		pelm = document.createElement(hilitewrapper);
		for (i = 0; i < newvals.length; i++)
		{
			//alert(newinputs[i].name);
			bpick = (/createnewpick\[\]$/i.test(newinputs[i].name));
			bcreatenewct = (/^createnewlinkedct/i.test(newinputs[i].name));
			if (!bpick && !bcreatenewct)
			{
				spanelm = document.createElement('span');
				elmtxt = document.createTextNode(newvals[i] + ' ');
				spanelm.appendChild(elmtxt);
				pelm.appendChild(spanelm);
			}
		}
		hiliteelm.appendChild(pelm);
		hiliteelm.style.display = "block";
		tbl_elm.style.display = "none";
		elm.firstChild.nodeValue = JKIT.ENUM.edit;
	}
	if (bRemove)
	{
		parent_elm.removeChild(container_elm);
	}
	if (bEdit)
	{
		pelm = hiliteelm.getElementsByTagName(hilitewrapper)[0];
		hiliteelm.removeChild(pelm);
		hiliteelm.style.display = "none";
		tbl_elm.style.display = "block";
		elm.firstChild.nodeValue = JKIT.ENUM.hide_details;
	}
}
/*
*******************************************************
WINDOW TOOLS
*******************************************************
*/
/*
wnew - New Window:
[0]width
[1]height
[2]do not use screen w dim
[3]do not use screen h dim
[4]url incl. get vars (optional)
[5]window name (optional)
*/
JKIT.wnew = function()
{
	var a = JKIT.wnew.arguments;
	var nw = JKIT.wwh('w', a[0], Boolean(a[2]));
	var nh = JKIT.wwh('h', a[1], Boolean(a[3]));
	var u = (a[4]) ? a[4] : '/';
	var wnm = (a[5]) ? a[5] : '_blank';
	var vrs = "width="+nw+",height="+nh+",status=no,toolbar=no,menubar=no,location=no,left=0,top=0";	
	var w = window.open(u, wnm, vrs);
	return false;
}
/*
wwh - Window - Width - Height
[0] w or h
[1] desired w/h
[2] do not use screen dim
*/
JKIT.wwh = function wwh(){
	var a = JKIT.wwh.arguments;
	var rs;
	if(a[0] == 'w'){
		rs = (screen.availWidth && !(a[2])) ? screen.availWidth : a[1];
	}
	if(a[0] == 'h'){
		rs = (screen.availHeight && !(a[2])) ? screen.availHeight : a[1];
	}
	return rs;
}
JKIT.WIN = new Object();

JKIT.WIN.fgoto = function(href, winname)
{
	var newwin;
	if (winname != null)
	{
		newwin = window.open(href,winname);
		window.focus(winname);
		return false;
	}
}
/*
*******************************************************
XMLHTTP
*******************************************************
*/
JKIT.XMLHTTP = new Object();
JKIT.XMLHTTP.rq = null;
JKIT.XMLHTTP.rq_o = null;
JKIT.XMLHTTP.rq_ocheck = null;

JKIT.XMLHTTP.requestGET = function(serverside, first_callback, add_html_to_id, send_data, check_if_exists_id, second_callback, async)
{
	var xs, xo, contenttype, httpmethod;
	JKIT.XMLHTTP.rq = null;
	JKIT.XMLHTTP.rq_o = null;
	JKIT.XMLHTTP.rq_secondmethod = null;
	JKIT.XMLHTTP.rq_ocheck = null;
	if (window.XMLHttpRequest)
	{
		try {
			JKIT.XMLHTTP.rq = new XMLHttpRequest();
		} catch(e)
		{
			JKIT.XMLHTTP.rq = null;
		}
	}else if (window.ActiveXObject)
	{
		try
		{
			JKIT.XMLHTTP.rq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try
			{
				JKIT.XMLHTTP.rq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				JKIT.XMLHTTP.rq = null;
			}
		}
	}
	if (JKIT.XMLHTTP.rq)
	{
		JKIT.XMLHTTP.rq_o = add_html_to_id;
		JKIT.XMLHTTP.rq_ocheck = check_if_exists_id;
		JKIT.XMLHTTP.rq_secondmethod = second_callback;
		if (send_data)
		{
			httpmethod = 'POST';
			contenttype = "application/x-www-form-urlencoded";
			/*xs = '<?xml version="1.0"?><root><data><name>state</name><value>' + send_data + '</value></data></root>';*/
			xo = send_data;
			/*xo = JKIT.XML.newxmlfromtext(xs);*/
		}else{
			httpmethod = 'GET';
			contenttype = "text/xml";
			xo = null;
			
		}
		JKIT.XMLHTTP.rq.open(httpmethod, serverside, async);
		JKIT.XMLHTTP.rq.onreadystatechange = first_callback;
		JKIT.XMLHTTP.rq.setRequestHeader("Content-Type", contenttype);
		JKIT.XMLHTTP.rq.send(xo);
		if (!async)
		{
			return JKIT.XMLHTTP.rq.responseText;
		}
	}
}
JKIT.XMLHTTP.prq_html = function()
{
	/*alert('State: ' + JKIT.CONTACT.rq.readyState + "\n" + 'Status: ' + JKIT.CONTACT.rq.status);*/
	if (JKIT.XMLHTTP.rq.readyState == 4 && JKIT.XMLHTTP.rq.status == 200)
	{
		var htmlstring = JKIT.XMLHTTP.rq.responseText;
		if (htmlstring)
		{
			var o = document.getElementById(JKIT.XMLHTTP.rq_o);
			var bnodeexists = Boolean(document.getElementById(JKIT.XMLHTTP.rq_ocheck));
			var bexistscheck = Boolean(JKIT.XMLHTTP.rq_ocheck);
			var addhtml = !(bnodeexists && bexistscheck);
			/*alert('Node Exists: ' + bnodeexists + "\nExists Check On: " + bexistscheck);*/
			if (o && addhtml)
			{
				o.innerHTML = htmlstring;
			}else{
				//Content Not Added
			}
			if (JKIT.XMLHTTP.rq_secondmethod) JKIT.XMLHTTP.rq_secondmethod();
		}
	}
}
/*
*******************************************************
FORMAT TEXT/PHONES/STUFF
*******************************************************
*/
JKIT.FORMAT = new Object();
JKIT.FORMAT.rdf_label = function(l)
{
	switch(l)
	{
		case 'free':
		return 'toll free';
		
		case 'work':
		return 'office';
		
		case 'work2':
		return 'office';
		
		default:
		return l;
	}
}
JKIT.FORMAT.clean_null = function(o)
{
	var r;
	switch(typeof(o))
	{
		case 'string':
		r = (o != null) ? o : '';
		break;
		
		default:
		r = new Object();
		for (i in o)
		{
			r[i] = (o[i] != null) ? o[i] : '';
		}
	}
	return r;
}
		
/*
*******************************************************
CONTACT
*******************************************************
*/
JKIT.CONTACT = new Object();
JKIT.CONTACT.region = null;
JKIT.CONTACT.regionform = null;
JKIT.CONTACT.contactform = null;
JKIT.CONTACT.xmldoc = null;
JKIT.CONTACT.pvars = null;
JKIT.CONTACT.missingfields = null;
JKIT.CONTACT.allinputs = new Array();
JKIT.CONTACT.captchanames = new Array();
JKIT.CONTACT.container_id = '';

JKIT.CONTACT.ini = function(region_form, contact_form, contact_container_id)
{
	JKIT.CONTACT.allinputs[0] = {name:'name', id:'cF_nm', sn:'Name', type:'text', required:true, dflt:'Your Name'};
	JKIT.CONTACT.allinputs[1] = {name:'email', id:'cF_eml', sn:'Email', type:'text', required:true, dflt:'Email Address'};
	JKIT.CONTACT.allinputs[2] = {name:'adr.street', id:'cF_street', sn:'Street 1', type:'text', required:true, dflt:''};
	JKIT.CONTACT.allinputs[3] = {name:'adr.locality', id:'cF_locality', sn:'City', type:'text', required:true, dflt:''};
	JKIT.CONTACT.allinputs[4] = {name:'adr.region', id:'cF_region', sn:'Region', type:'text', required:true, dflt:''};
	JKIT.CONTACT.allinputs[5] = {name:'adr.postalcode', id:'cF_postalcode', sn:'Postal Code', type:'text', required:true, dflt:''};
	


	JKIT.CONTACT.captchanames.push('captcha');
	JKIT.CONTACT.captchanames.push('captcha_possible');
	JKIT.CONTACT.captchanames.push('captcha_precode');
	JKIT.CONTACT.container_id = contact_container_id;
	JKIT.CONTACT.regionform = (region_form) ? region_form : null;
	JKIT.CONTACT.contactform = (contact_form) ? contact_form : null;
	e = document.createElement("div");
	e.setAttribute("id", "regionD");
	e2 = document.createElement("a");
	e2.setAttribute("name", "regionA");
	e2.setAttribute("id", "regionA");
	ee = document.createElement("div");
	ee.setAttribute("id", "repD");
	eee = document.createElement("div");
	eee.setAttribute("id", "contact_emsgD");
	eeee = document.createElement("div");
	eeee.setAttribute("id", "contactD");
	
	ee2 = document.createElement("dl");
	ee.appendChild(ee2);
	ee3 = document.createElement("dt");
	ee3.setAttribute("id", "rep_hdr");
	ee2.appendChild(ee3);
	ee3 = document.createElement("dd");
	ee3.setAttribute("id", "rep_fn");
	ee2.appendChild(ee3);
	ee3 = document.createElement("dd");
	ee3.setAttribute("id", "rep_adr1");
	ee2.appendChild(ee3);
	ee3 = document.createElement("dd");
	ee3.setAttribute("id", "rep_adr2");
	ee2.appendChild(ee3);
	ee3 = document.createElement("dd");
	ee3.setAttribute("id", "rep_adr3");
	ee2.appendChild(ee3);
	ee3 = document.createElement("dd");
	ee2.appendChild(ee3);
	ee4 = document.createElement("span");
	ee4.setAttribute("id", "rep_work");
	ee3.appendChild(ee4);
	ee4 = document.createElement("attr");
	ee4.setAttribute("id", "rep_work_l");
	ee3.appendChild(ee4);
	ee3 = document.createElement("dd");
	ee2.appendChild(ee3);
	ee4 = document.createElement("span");
	ee4.setAttribute("id", "rep_work2");
	ee3.appendChild(ee4);
	ee4 = document.createElement("attr");
	ee4.setAttribute("id", "rep_work2_l");
	ee3.appendChild(ee4);
	ee3 = document.createElement("dd");
	ee2.appendChild(ee3);
	ee4 = document.createElement("span");
	ee4.setAttribute("id", "rep_free");
	ee3.appendChild(ee4);
	ee4 = document.createElement("attr");
	ee4.setAttribute("id", "rep_free_l");
	ee3.appendChild(ee4);
	ee3 = document.createElement("dd");
	ee2.appendChild(ee3);
	ee4 = document.createElement("span");
	ee4.setAttribute("id", "rep_cell");
	ee3.appendChild(ee4);
	ee4 = document.createElement("attr");
	ee4.setAttribute("id", "rep_cell_l");
	ee3.appendChild(ee4);
	ee3 = document.createElement("dd");
	ee2.appendChild(ee3);
	ee4 = document.createElement("span");
	ee4.setAttribute("id", "rep_fax");
	ee3.appendChild(ee4);
	ee4 = document.createElement("attr");
	ee4.setAttribute("id", "rep_fax_l");
	ee3.appendChild(ee4);
	ee3 = document.createElement("dd");
	ee2.appendChild(ee3);
	ee4 = document.createElement("a");
	ee4.setAttribute("href", "");
	ee4.setAttribute("id", "rep_email");
	ee3.appendChild(ee4);
	
	document.getElementById(contact_container_id).appendChild(e2);
	document.getElementById(contact_container_id).appendChild(e);
	document.getElementById(contact_container_id).appendChild(ee);
	document.getElementById(contact_container_id).appendChild(eee);
	document.getElementById(contact_container_id).appendChild(eeee);
	

}
JKIT.CONTACT.data_validate = function(f, captchamsg)
{
	f = (f) ? f : document.forms[JKIT.CONTACT.contactform];
	var replacee = document.getElementById('contact_emsgD');
	e = document.createElement('div');
	e.setAttribute('id', 'contact_emsgD');
	ee0 = document.createElement('a');
	ee0.setAttribute('name', 'contact_incomplete_msg');
	ee0.setAttribute('id', 'contact_incomplete_msg');
	ee1 = document.createElement('div');
	e.appendChild(ee0);
	e.appendChild(ee1);
	
	var i, dflt, formelm, empty, ee1a, ee1a0, dlid, ll;
	var a = JKIT.CONTACT.allinputs;
	var al = a.length;
	var berrors = false;
	var value_is_valid;
	
	dlid = f.getAttribute('id') + '_emsgDL';
	for (i = 0; i < al; i++)
	{
		formelm = f[a[i].name];
		formelm_l = document.getElementById([a[i].id + '_l']);
		if (formelm.value == a[i].dflt || formelm.value == '')
		{
			formelm.value = '';
			empty = true;
		}else{
			empty = false;
		}
		switch (a[i].name)
		{
			case 'email':
				/*validate email*/
				if (!empty)
				{
					value_is_valid = JKIT.VALIDATE.email(formelm.value);
				}
				break;
			
			default:
				value_is_valid = true;
			
		}
		if ((empty && a[i].required) || !value_is_valid)
		{
			berrors = true;
			if (ee1.childNodes.length == 0)
			{
				ee1a0 = document.createElement('h3');
				txt = document.createTextNode('!!!! The following required information is missing and/or invalid. Please fill them in, verify text from verification image and re-submit form. ');
				ee1a0.appendChild(txt);
				ee1.appendChild(ee1a0);
				ee1a = document.createElement('ul');
				ee1a.setAttribute('id', dlid);
				ee1.appendChild(ee1a);
			}
			ee1a0 = document.createElement('li');
			ee1a0a = document.createElement('strong');
			txt = (!value_is_valid) ? document.createTextNode('Invalid ' + a[i].sn) : document.createTextNode(a[i].sn);
			ee1a0a.appendChild(txt);
			ee1a0.appendChild(ee1a0a);
			ee1a.appendChild(ee1a0);
			formelm_l.style.background = '#faa';
		}else{
			formelm_l.style.background = 'none';
		}
	}
	/*
	var captchadata = 'httprq=1';
	for (i = 0; i < JKIT.CONTACT.captchanames.length; i++)
	{
		formelm = f[JKIT.CONTACT.captchanames[i]];
		captchadata += '&' + formelm.name + '=' + formelm.value;
	}
	
	var captchapass = JKIT.XMLHTTP.requestGET('/contact/s/check_captcha.php', null, null, captchadata, null, null, false);
	
	captchapass = Boolean(Number(captchapass));
	*/
	if (captchamsg)
	{
		if (!berrors)
		{
			ee1a0 = document.createElement('h3');
			txt = document.createTextNode('!! The following form fields are missing below and are required before submitting. Please fill them in, verify the image code, and re-submit form. ');
			ee1a0.appendChild(txt);
			ee1.appendChild(ee1a0);
			ee1a = document.createElement('ul');
			ee1a.setAttribute('id', dlid);
			ee1.appendChild(ee1a);
		}
		berrors = true;
		ee1a0 = document.createElement('li');
		ee1a0a = document.createElement('strong');
		txt = document.createTextNode('Image Code Verification');
		ee1a0a.appendChild(txt);
		ee1a0.appendChild(ee1a0a);
		ee1a.appendChild(ee1a0);
		
		
		
	}
	/*
	captchadata = '';
	captchadata = 'captcha_httprq=1';
	var captcharow = JKIT.XMLHTTP.requestGET('/contact/s/get_captcha.php', null, null, captchadata, null, null, false);
	
	document.getElementById('captchaR').innerHTML = captcharow;
	*/
		
	if (berrors)
	{
		document.getElementById('cF_captcha_l').style.background = '#faa';
		document.getElementById(JKIT.CONTACT.container_id).replaceChild(e, replacee);
		window.location.href = '#contact_incomplete_msg';
		return false;
	}else{
		return true;
	}
}
JKIT.CONTACT.regionform_mod = function()
{
	JKIT.XML.xremovechild(JKIT.CONTACT.regionform + "_submit");
	//if region selected coming back from processor to fill in missing form fields
	if(JKIT.CONTACT.region)
	{
		var elms = document.getElementsByTagName('option');
		/*alert(elms.length);*/
		var i;
		for (i = 1; i < elms.length; i++)
		{
			if (elms[i] != null)
			{
				if (elms[i].firstChild.nodeValue === JKIT.CONTACT.region)
				{
					elms[i].setAttribute("selected", "selected");
					JKIT.XMLHTTP.requestGET('/contact/s/getrep.php', JKIT.CONTACT.__repprocess, 'repD', 'region='+JKIT.CONTACT.region+'&httprq=1', null, null, true);
					i = elms.length;
				}
			}
		}
		
	}
}
JKIT.CONTACT.regionupdate = function(elmname)
{
	JKIT.CONTACT.region = document.forms[JKIT.CONTACT.regionform].elements[elmname].value;
	JKIT.XMLHTTP.requestGET('/contact/s/getrep.php', JKIT.CONTACT.__repprocess, 'repD', 'region='+JKIT.CONTACT.region+'&httprq=1', null, null, true);
	
}
JKIT.CONTACT.__repprocess = function()
{
	var repcode, xmldoc, reprdffile, fn, tel, adr, email;
	if (JKIT.XMLHTTP.rq.readyState == 4 && JKIT.XMLHTTP.rq.status == 200)
	{
		repcode = JKIT.XMLHTTP.rq.responseText;
		
		reprdffile = '/contact/vcard/' + repcode + ".xml";
		reprdffile = JKIT.XML.clean_nodevalue(reprdffile);

		if (repcode)
		{
			try 
			{
				JKIT.XMLHTTP.requestGET(reprdffile, JKIT.CONTACT.__repprocess_rdf, null, null, null, null, true);
	
			}
			catch(e) {alert(e.message);}
		}
		
	}
	
	
	
}
JKIT.CONTACT.__repprocess_rdf = function()
{
	var xmldoc, x, fn, tn, ne, e, xx, xxx, xxxn, oo, telcnt, ss;
	oo = JKIT.CONTACT.__newcontactobj();
	if (JKIT.XMLHTTP.rq.readyState == 4 && JKIT.XMLHTTP.rq.status == 200)
	{
		/*fn = xmldoc.getElementsByTagName('vCard:FN').nodeValue;*/
		
		e = document.getElementById('rep_hdr');
		if (e.childNodes.length == 0)
		{
			ne = document.createElement("h2");
			tn = document.createTextNode('Local Sales Representative');
			ne.appendChild(tn);
			e.appendChild(ne);
		}
		JKIT.CONTACT.__clear_contact_info(oo);
		xmldoc = JKIT.XMLHTTP.rq.responseXML;
		xx = xmldoc.documentElement;
		try{oo.fn = (JKIT.XML.get_elements_by_tagname(xx, "vCard", "FN"))[0].firstChild.nodeValue;} catch(e){}
		x = JKIT.XML.get_elements_by_tagname(xx, "vCard", "ADR")[0];
		try{oo.street = (JKIT.XML.get_elements_by_tagname(x, "vCard", "Street"))[0].firstChild.nodeValue;} catch(e){}
		try{oo.pobox = (JKIT.XML.get_elements_by_tagname(x, "vCard", "PoBox"))[0].firstChild.nodeValue;} catch(e){}
		try{oo.locality = (JKIT.XML.get_elements_by_tagname(x, "vCard", "Locality"))[0].firstChild.nodeValue;} catch(e){}
		try{oo.region = (JKIT.XML.get_elements_by_tagname(x, "vCard", "Region"))[0].firstChild.nodeValue;} catch(e){}
		try{oo.postalcode = (JKIT.XML.get_elements_by_tagname(x, "vCard", "Pcode"))[0].firstChild.nodeValue;} catch(e){}
		telcnt = 0;
		x = JKIT.XML.get_elements_by_tagname(xx, "vCard", "TEL");
		for (i = 0; i < x.length; i++)
		{
			telcnt++;
			xxxn = 'tel'+(i+1);
			try{oo[xxxn] = (JKIT.XML.get_elements_by_tagname(x[i], "rdf", "value"))[0].firstChild.nodeValue;} catch(e){}
			xxx = (JKIT.XML.get_elements_by_tagname(x[i], "rdf", "type"))[0];
			try{oo[xxxn + 'type'] = JKIT.XML.get_attribute(xxx, "rdf", "label");} catch(e){}
		}
		x = JKIT.XML.get_elements_by_tagname(xx, "vCard", "EMAIL")[0];
		try{oo.email = (JKIT.XML.get_elements_by_tagname(x, "rdf", "value"))[0].firstChild.nodeValue;} catch(e){}
		oo = JKIT.FORMAT.clean_null(oo);
		adr1 = oo.pobox;
		adr2 = oo.street;
		adr3 = oo.locality + ', '+oo.region+' '+oo.postalcode;
		
		JKIT.CONTACT.__update_contact_info('rep_fn', oo.fn);
		JKIT.CONTACT.__update_contact_info('rep_adr1', adr1);
		JKIT.CONTACT.__update_contact_info('rep_adr2', adr2);
		JKIT.CONTACT.__update_contact_info('rep_adr3', adr3);
		
		JKIT.CONTACT.__update_contact_info('rep_email', oo.email);
		JKIT.XML.modify_attribute('rep_email', 'href', 'mailto:'+oo.email);
		for (i = 0; i < telcnt; i++)
		{
			ss = 'tel'+(i+1);
			JKIT.CONTACT.__update_contact_info('rep_'+oo[ss+'type'], oo[ss]);
			JKIT.CONTACT.__update_contact_info('rep_'+oo[ss+'type']+'_l', ' ' + JKIT.FORMAT.rdf_label(oo[ss+'type']));
		}
		var senddata, ee1a0, txt, ee1, ee1a, dlid, ee1a0a;
		if (JKIT.CONTACT.pvrs)
		{
			/*alert('Organization: ' + JKIT.CONTACT.pvrs.organization);*/
			senddata = 'httprq=1';
			for (sss in JKIT.CONTACT.pvrs)
			{
				senddata += '&' + sss + '=' + JKIT.CONTACT.pvrs[sss];
			}
			
		}else{
			senddata = null;
		}
		JKIT.XMLHTTP.requestGET('/contact/s/contact_form.inc.php', JKIT.XMLHTTP.prq_html, 'contactD', senddata, JKIT.CONTACT.contactform, JKIT.CONTACT.__updatecontactform, true);
	}
}
JKIT.CONTACT.__newcontactobj = function()
{
	var r = new Object();
	r['street'] = null;
	r['fn'] = null;
	r['pobox'] = null;
	r['locality'] = null;
	r['region'] = null;
	r['postalcode'] = null;
	r['tel1'] = null;
	r['tel1type'] = null;
	r['tel2'] = null;
	r['tel2type'] = null;
	r['tel3'] = null;
	r['tel3type'] = null;
	r['email'] = null;
	r['org'] = null;
	r['adr1'] = null;
	r['adr2'] = null;
	r['adr3'] = null;
	r['cell'] = null;
	r['cell_l'] = null;
	r['work'] = null;
	r['work_l'] = null;
	r['work2'] = null;
	r['work2_l'] = null;
	r['free'] = null;
	r['free_l'] = null;
	r['fax'] = null;
	r['fax_l'] = null;
	return r;
}
JKIT.CONTACT.__clear_contact_info = function(oo)
{
	var ni, s, e;
	for (s in oo)
	{
		ni = "rep_"+s;
		try{
			e = document.getElementById(ni);
			if (e.childNodes.length > 0){ e.removeChild(e.childNodes[0]) }
			switch(e.nodeName)
			{
				case 'span':
				case 'SPAN':
				case 'attr':
				case 'ATTR':
				e.style.display = 'none';
				break;
				default:
			}
		} catch(e) {}
	}
}
JKIT.CONTACT.__update_contact_info = function(node_id, newtext)
{
	var tn = document.createTextNode(newtext);
	var e = document.getElementById(node_id);
	if (e.childNodes.length > 0){ e.removeChild(e.childNodes[0]) }
	e.appendChild(tn);
	
	switch(e.nodeName)
	{
		case 'span':
		case 'SPAN':
		case 'attr':
		case 'ATTR':
		e.style.display = 'inline';
		break;
		default:
	}
}

JKIT.CONTACT.__updatecontactform = function()
{
	var f = document.forms[JKIT.CONTACT.contactform].region.value = JKIT.CONTACT.region;
	document.forms[JKIT.CONTACT.contactform].mailto.value = JKIT.XML.clean_nodevalue(document.getElementById('rep_email').firstChild.nodeValue);
	document.forms[JKIT.CONTACT.contactform].repfn.value = document.getElementById('rep_fn').firstChild.nodeValue;
	/*alert(JKIT.CONTACT.pvrs + ' ' + JKIT.CONTACT.pvrs.captcha_pass);*/
	if (JKIT.CONTACT.pvrs)
	{
		if (!JKIT.CONTACT.pvrs.captcha_pass)
		{
			JKIT.CONTACT.data_validate(document.forms[JKIT.CONTACT.contactform], true);				
		}
	}
	window.location.href = '#regionA';
	
}

/*





















*/
