function runningInGr8stuff() { if (parent.location.href==location.href) { return false; } else { return true; } }
var gr8=parent;

// ----------------------------------------------
// products_display routines used by all projects
// ----------------------------------------------

function loadup() {
	var display_frame=get_IFRAME_doc('display_frame');
	var jt=window.location.search;
	if (jt!='') { jt=jt.substr(1);
		if (jt!='type_all') {
			var pt=jt.split('_'); var p=pt[1];
			if (sel.ptype.length===undefined || sel.ptype.length===null) {
				if (sel.ptype===null || sel.ptype===undefined) { jt='under_construction';
				} else { sel.ptype.checked=true; }
			} else {
				if (sel.ptype[p]===null || sel.ptype[p]===undefined) { jt='under_construction';
				} else { sel.ptype[p].checked=true; }
			}
		} else {
			// Uncheck all options
			if (sel.ptype.length===undefined || sel.ptype.length===null) { sel.ptype.checked=false;
			} else { for (var i=0; i<sel.ptype.length; i++) { sel.ptype[i].checked=false; } }
		}
		try { display_frame.location.href=jt+'.htm'; } catch(err) { display_frame.src=jt+'.htm'; }
	} else { showframe(); }
	showdiv();
}

function showframe() {
	var display_frame=get_IFRAME_doc('display_frame');
	if (display_frame) {
		if (sel.ptype.length===undefined || sel.ptype.length===null) {
			if (sel.ptype.checked) {
				try { display_frame.location.href='type_0.htm'; } catch(err) { display_frame.src='type_0.htm'; }
			}
		} else {
			for (var i=0; i<sel.ptype.length; i++) {
				if (sel.ptype[i].checked) {
					try { display_frame.location.href='type_'+i+'.htm'; } catch(err) { display_frame.src='type_'+i+'.htm'; }
					break;
				}
			}
		}
	}
}

function showdiv() { 
	var display_frame=get_IFRAME_doc('display_frame');
	if (display_frame) {
		try { display_frame.attachEvent('oncontextmenu',rightclick); } catch(err) { }
		try { var s=display_frame.document.body.innerHTML; } catch(err) { var s=display_frame.src; }
		try { var hgt=display_frame.getElementById('bottom').offsetTop; } catch(err) { return; }
		var wdth=getEle('framecell').offsetWidth;
//alert('hgt='+hgt+'\nwdth='+wdth);
		getEle('framecell').height=hgt;
		var display_frame = document.getElementById('display_frame') || top.frames['display_frame'];
		try { display_frame.resizeTo(wdth,hgt); } catch(err) { display_frame.height=hgt; }
	}
}

function get_IFRAME_doc(sIFRAME_ref)
{
	var oIframe = document.getElementById(sIFRAME_ref) || top.frames[sIFRAME_ref];
	if (typeof oIframe != 'undefined' && oIframe != null)
	{
		if (oIframe.contentDocument) 
			return oIframe.contentDocument; 
		else if (oIframe.contentWindow)
			return oIframe.contentWindow.document;
		else if (oIframe.document)
			return oIframe.document;
		else return null;
	}
}


function rightclick() {
	if (!runningInGr8stuff()) return;
	var display_frame=window.frames[0];
	var dframe = get_IFRAME_doc('display_frame');
	try { var dhref=dframe.location.href; } catch(e) { var dhref=dframe.src; }
	if (dhref.indexOf('type_all.htm')>=0) {
		if (display_frame.event.srcElement.tagName=='IMG') {
			var sp=display_frame.event.srcElement.parentElement.parentElement.parentElement.parentElement.outerHTML.toLowerCase().split(' class=details_type>');
			var p=sp[1].split('<')[0];
			if (sel.ptype[p]===null || sel.ptype[p]===undefined) { sel.ptype.checked=true;
			} else { sel.ptype[p].checked=true; }
		}
	}
	try { parent.rightclickframe(display_frame); } catch(err) { }
}

function changelanguage(pfix) {
	var hrf=window.location.href; 
	if (pfix!='') { hrf=hrf.replace(/\.htm/gi,pfix+'.htm') } else { hrf=hrf.replace(/\_afr\./gi,'.'); } 
	window.location.href=hrf;
}

function goto(folder,page) {
	try { parent.we_submenu('^gotofolder_'+folder+'/'+page); }
	catch(e) { location.href=folder+'/'+page }
}

function gobackto(folder,page) {
	try { parent.we_submenu('^gotofolder_'+folder+'/'+page); }
	catch(e) { location.href='../'+folder+'/'+page }
}

function showall() {
	// Uncheck all options
	if (sel.ptype.length===undefined || sel.ptype.length===null) { sel.ptype.checked=false;
	} else { for (var i=0; i<sel.ptype.length; i++) { sel.ptype[i].checked=false; } }
	try { window.frames['display_frame'].location.href='type_all.htm'; } catch(err) { window.frames['display_frame'].src='type_all.htm'; }
}

// --------------------------------------------
// product_details routines used by all folders
// --------------------------------------------

var category_page=''; var prodpage='';

function details_load() {
	
	if (runningInGr8stuff()) {
		var st=document.getElementsByClassName('details_type');
		if (st.length>=1) {
			category_page=st[0].innerText.toLowerCase();
			if (category_page!='') category_page='products_display.htm?type_'+category_page.replace(/ /g,'_');
		} else {
			category_page=st.innerText.toLowerCase();
			if (category_page!='') category_page='products_display.htm?type_'+category_page.replace(/ /g,'_');
		}
	}
}

function goback() {
	var st=document.getElementsByClassName('details_type');
	if (st.length>=1) {
		category_page=st[0].innerText.toLowerCase();
		if (category_page!='') category_page='products_display.htm?type_'+category_page.replace(/ /g,'_');
	} else {
		category_page=st.innerText.toLowerCase();
		if (category_page!='') category_page='products_display.htm?type_'+category_page.replace(/ /g,'_');
	}
	if (category_page=='') { history.back(); }
	else { location.href=category_page; }
}

// ----------------
// GENERAL ROUTINES
// ----------------

document.getElementsByClassName = function(className){
    var nodes = document.getElementsByTagName('*');
    var matches = new Array();
    for(i=0;i<nodes.length;i++){
        var tmp = nodes[i].getAttribute('class') || nodes[i].getAttribute('className');
        if(tmp == className) matches[matches.length] = nodes[i];
    }
    return matches;
}

// --------------------
// ASYNC AJAX Functions
// --------------------
/*
 * USAGE:
 *
 * in code: ajax_get(url,nextstep);
 *
 * function nextstep() {
 *    if (!(r=ajax())) { if (errstate!='') { alert(errstate); } return; }
 *    -- code goes here -- r contains response
 * }
*/

document.write('<DIV id="ajaxmsg" style="display:none;position:absolute;left: 45%;top: 40%;vertical-align:middle;background-color:transparent;z-index:40;"><img src=pics/aniloading.gif></DIV>');
var axmlhttp = xmlhttp_create();
var geturl='';

function ajax_get(serverUrl,respFunc) {
	geturl=serverUrl;
	var rand = Math.floor(Math.random()*1000001);
	try {
		errstate='';
		getEle('ajaxmsg').style.display='inline';
		if (serverUrl.indexOf('?')>=0) { var url=serverUrl+'&r='+rand; } else { var url=serverUrl+'?r='+rand; }
		axmlhttp.open("GET", url, true);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(null);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }

}

function ajax_post(serverUrl,postdata,respFunc) {
	try {
		getEle('ajaxmsg').style.display='inline';
		var pdata=postdata; errstate='';
		axmlhttp.open("POST", serverUrl, false);
		axmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		axmlhttp.setRequestHeader('Content-Length',pdata.length);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(pdata);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }
}

function ajax() {

	if (runningInGr8stuff()) {
		var bpath=gr8.baseLoc(geturl);
		var s=gr8.readFile(bpath);

		getEle('ajaxmsg').style.display='none';
		return s;
	}
	
	try {
		if (axmlhttp.readyState == 4) // Completed
		{
			
			getEle('ajaxmsg').style.display='none';

			if (axmlhttp.status == 200) // “OK”
			{ errstate=''; return fixreply(axmlhttp.responseText); }

			else if (axmlhttp.status == 403) // “Forbidden”
			{ errstate="Error (axmlhttp): Access denied.!"; }

			else if (axmlhttp.status == 404) // “URL Not Found”
			{ errstate="Error (axmlhttp): URL not found. Please check the URL!"; }

			else // Miscellaneous
			{ errstate="Error (axmlhttp): status code " + axmlhttp.status; }
		}
		return false;
	}
	catch (genException) { errstate="Error (axmlhttp): Unknown"; }
}

// Create the xmlHttpRequest object and return it.

function xmlhttp_create() {

	var xmlHttpRequest = false;
	//Internet Explorer
	try { xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (xml2Exception) {
		try { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (xmlException) { xmlHttpRequest = false; }

	}

	//Netscape, Mozila, Firefox, Safari, Opera
	if (!xmlHttpRequest && typeof XMLHTTPRequest == 'undefined') {
		try { xmlHttpRequest = new XMLHttpRequest(); }
		catch (genException) { XMLHttpRequest = false; }
	}
	return xmlHttpRequest;
}

function getFormParams(obj) {
	var getstr = "?";
	for (i=0; i<obj.elements.length; i++) {
		if (obj.elements[i].tagName == "INPUT") {
			if (obj.elements[i].type == "text" || obj.elements[i].type == "hidden") {
				getstr += obj.elements[i].name + "=" + escape(obj.elements[i].value) + "&";
			}
			if (obj.elements[i].type == "checkbox") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				} else {
					getstr += obj.elements[i].name + "=&";
				}
			}
			if (obj.elements[i].type == "radio") {
				if (obj.elements[i].checked) {
					getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
				}
			}
		}   
		if (obj.elements[i].tagName == "SELECT") {
			var sel = obj.elements[i];
			getstr += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
		}
		if (obj.elements[i].tagName == "TEXTAREA") {
			getstr += obj.elements[i].name + "=" + escape(obj.elements[i].value) + "&";
		}
         
	}
	if (getstr=='?') { getstr=''; } else { getstr=getstr.substr(0,getstr.length-1); }
	return getstr;
}

function fixreply(r) {
	var s=r.replace(/\r/g,'').replace(/\n/g,'');
	s=Trim(s);
	s=s.replace(/\{10\}/g,'\n').replace(/\{13\}/g,'\r');
	return s;
}
function Trim(v) {
	if (v=='') return v;
	var s=v;
	while (s.substr(0,1)==' ') { s=s.substr(1); }
	while (s.substr(s.length-1,1)==' ') { s=s.substr(0,s.length-1); }
	return s;
}

