//==========================================
// Set up
//==========================================

// Sniffer based on http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var uagent    = navigator.userAgent.toLowerCase();
var is_safari = ((uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_ie     = ((uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv));
var is_ie4    = ((is_ie) && (uagent.indexOf("msie 4.") != -1));
var is_moz    = (navigator.product == 'Gecko');
var is_ns     = ((uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_opera  = (uagent.indexOf('opera') != -1);
var is_kon    = (uagent.indexOf('konqueror') != -1);
var is_webtv  = (uagent.indexOf('webtv') != -1);

var is_win    =  ((uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1));
var is_mac    = ((uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc."));
var ua_vers   = parseInt(navigator.appVersion);

//==========================================
// Get cookie
//==========================================

function my_getcookie(name)
{
	cname = ipb_var_cookieid + name + '=';
	cpos  = document.cookie.indexOf(cname);
	
	if (cpos != -1)
	{
		cstart = cpos + cname.length;
		cend   = document.cookie.indexOf(";", cstart);
		
		if (cend == -1)
		{
			cend = document.cookie.length;
		}
		
		return unescape(document.cookie.substring(cstart, cend));
	}
	
	return null;
}

//==========================================
// Set cookie
//==========================================

function my_setcookie(name, value, sticky)
{
	expire = "";
	domain = "";
	path   = "/";
	
	if (sticky)
	{
		expire = "; expires=Wed, 1 Jan 2020 00:00:00 GMT";
	}
	
	if (ipb_var_cookie_domain)
	{
		domain = '; domain=' + ipb_var_cookie_domain;
	}
	
	if (ipb_var_cookie_path)
	{
		path = ipb_var_cookie_path;
	}
	
	document.cookie = ipb_var_cookieid + name + "=" + value + "; path=" + path + expire + domain + ';';
}

//==========================================
// Pop up MyAssistant window
//==========================================

function buddy_pop()
{
	window.open('index.'+ipb_var_phpext+'?act=buddy&s='+ipb_var_s,'BrowserBuddy','width=250,height=500,resizable=yes,scrollbars=yes');
}

//==========================================
// Pop up chat window
//==========================================

function chat_pop(cw,ch)
{
	window.open('index.'+ipb_var_phpext+'?s='+ipb_var_s+'&act=chat&pop=1','Chat','width='+cw+',height='+ch+',resizable=yes,scrollbars=yes');
}

//==========================================
// Multi Page jumps
//==========================================

function multi_page_jump(url_bit, total_posts, per_page)
{
	pages = 1;
	cur_st = ipb_var_st;
	cur_page  = 1;
	
	if (total_posts % per_page == 0)
	{
		pages = total_posts / per_page;
	}
	else
	{
		pages = Math.ceil(total_posts / per_page);
	}
	
	msg = ipb_lang_tpl_q1 + " " + pages;
	
	if (cur_st > 0)
	{
		cur_page = cur_st / per_page; cur_page = cur_page -1;
	}
	
	show_page = 1;
	
	if (cur_page < pages)
	{
		show_page = cur_page + 1;
	}
	
	if (cur_page >= pages)
	{
		show_page = cur_page - 1;
	}
 	else
 	{
 		show_page = cur_page + 1;
 	}
 	
	userPage = prompt(msg, show_page);
	
	if (userPage > 0 )
	{
		if (userPage < 1)     {    userPage = 1;  }
		if (userPage > pages) { userPage = pages; }
		if (userPage == 1)    {     start = 0;    }
		else { start = (userPage - 1) * per_page; }
	
		window.location = url_bit + "&st=" + start;
	}
}

//==========================================
// Hide / Unhide menu elements
//==========================================

function ShowHide(id1, id2)
{
	if (id1 != '') toggleview(id1);
	if (id2 != '') toggleview(id2);
}
	
//==========================================
// Get element by id
//==========================================

function my_getbyid(id)
{
	itm = null;
	
	if (document.getElementById)
	{
		itm = document.getElementById(id);
	}
	else if (document.all)
	{
		itm = document.all[id];
	}
	else if (document.layers)
	{
		itm = document.layers[id];
	}
	
	return itm;
}

//==========================================
// Show/hide toggle
//==========================================

function toggleview(id)
{
	if (! id) return;
	
	if (itm = my_getbyid(id))
	{
		if (itm.style.display == "none")
		{
			my_show_div(itm);
		}
		else
		{
			my_hide_div(itm);
		}
	}
}

//==========================================
// Set DIV ID to hide
//==========================================

function my_hide_div(itm)
{
	if (! itm) return;
	
	itm.style.display = "none";
}

//==========================================
// Set DIV ID to show
//==========================================

function my_show_div(itm)
{
	if (! itm) return;
	
	itm.style.display = "";
}

//==========================================
// Change cell colour
//==========================================

function change_cell_color(id, cl)
{
	itm = my_getbyid(id);
	
	if (itm)
	{
		itm.className = cl;
	}
}

//==========================================
// Toggle category
//==========================================

function togglecategory(fid, add)
{
	saved = new Array();
	clean = new Array();

	//-----------------------------------
	// Get any saved info
	//-----------------------------------
	
	if (tmp = my_getcookie('collapseprefs'))
	{
		saved = tmp.split(",");
	}
	
	//-----------------------------------
	// Remove bit if exists
	//-----------------------------------
	
	for(i = 0 ; i < saved.length; i++)
	{
		if (saved[i] != fid && saved[i] != "")
		{
			clean[clean.length] = saved[i];
		}
	}
	
	//-----------------------------------
	// Add?
	//-----------------------------------
	
	if (add)
	{
		clean[ clean.length ] = fid;
		my_show_div(my_getbyid('fc_'+fid ));
		my_hide_div(my_getbyid('fo_'+fid ));
	}
	else
	{
		my_show_div(my_getbyid('fo_'+fid ));
		my_hide_div(my_getbyid('fc_'+fid ));
	}
	
	my_setcookie('collapseprefs', clean.join(','), 1);
}

//==========================================
// locationjump
//==========================================

function locationjump(url)
{
	window.location = ipb_var_base_url + url;
}

//==========================================
// CHOOSE SKIN
//==========================================

function chooseskin(obj)
{
	choosebox = obj.options[obj.selectedIndex].value;
	extravars = '';
	
	if (choosebox != -1 && ! isNaN(choosebox))
	{
		if (document.skinselectorbox.skinurlbits.value)
		{
			extravars = '&' + document.skinselectorbox.skinurlbits.value;
		}
		
		locationjump('setskin=1&skinid=' + choosebox + extravars);
	}
}

//==========================================
// CHOOSE LANG
//==========================================

function chooselang(obj)
{
	choosebox = obj.options[obj.selectedIndex].value;
	extravars = '';
	
	if (document.langselectorbox.langurlbits.value)
	{
		extravars = '&' + document.langselectorbox.langurlbits.value;
	}
	
	locationjump('setlanguage=1&langid=' + choosebox + extravars);
}

//==========================================
// pop up window
//==========================================

function PopUp(url, name, width,height,center,resize,scroll,posleft,postop)
{
	showx = "";
	showy = "";
	
	if (posleft != 0) { X = posleft }
	if (postop  != 0) { Y = postop  }
	
	if (!scroll) { scroll = 1 }
	if (!resize) { resize = 1 }
	
	if ((parseInt (navigator.appVersion) >= 4) && (center))
	{
		X = (screen.width  - width) / 2;
		Y = (screen.height - height) / 2;
	}
	
	if (X > 0)
	{
		showx = ',left='+X;
	}
	
	if (Y > 0)
	{
		showy = ',top='+Y;
	}
	
	if (scroll != 0) { scroll = 1 }
	
	var Win = window.open(url, name, 'width='+width+',height='+height+ showx + showy + ',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');
}

//==========================================
// Array: Get stack size
//==========================================

function stacksize(thearray)
{
	for (i = 0 ; i < thearray.length; i++)
	{
		if ((thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined'))
		{
			return i;
		}
	}
	
	return thearray.length;
}

//==========================================
// Array: Push stack
//==========================================

function pushstack(thearray, newval)
{
	arraysize = stacksize(thearray);
	thearray[arraysize] = newval;
}

//==========================================
// Array: Pop stack
//==========================================

function popstack(thearray)
{
	arraysize = stacksize(thearray);
	theval = thearray[arraysize - 1];
	delete thearray[arraysize - 1];
	return theval;
}


function shoutBox_shout(in_form) 
{
    // don't allow blank messages
    if (!in_form.messageTyping.value && in_form.messageTyping.value !== 0) 
	{
        return;
    }
    
    var tmp_matches;
    if (tmp_matches = in_form.messageTyping.value.match(/^\/j(oin)? #([^ ]+)/)) 
	{
        in_form.channel.value = tmp_matches[2];
        in_form.channelDisplay.style.display = '';
        in_form.channelDisplay.value = '#' + tmp_matches[2];
        document.getElementById('shoutBox').src = 'shoutbox.php?action=retrieve&channel=' + escape(tmp_matches[2]) + '&idleFactor=' + window.shoutBox.shoutBox_idleFactor + '&fresh=' + Math.random();
    }
    else if (tmp_matches = in_form.messageTyping.value.match(/^\/(leave|part)$/)) 
	{
        in_form.channel.value = '';
        in_form.channelDisplay.value = '';
        in_form.channelDisplay.style.display = 'none';
        document.getElementById('shoutBox').src = 'shoutbox.php?action=retrieve&fresh=' + Math.random();

    }
    else if (in_form.messageTyping.value.match(/^\/list$/)) 
	{
        document.getElementById('shoutBox').src = 'shoutbox.php?action=list&fresh=' + Math.random();
    }
    else if (tmp_matches = in_form.messageTyping.value.match(/^\/nick (.+)/)) 
	{
        in_form.screenname.value = tmp_matches[1];
    }
    else if (in_form.messageTyping.value.match(/^\/help$/)) {

        window.open('shoutbox_help.html', 'shoutBoxHistory', 'width=300,height=400,toolbar=0,location=0,menubar=0,directories=0,scrollbars=1');
    }
    else if (in_form.messageTyping.value.match(/^\/history$/)) 
	{
        window.open('shoutbox_history.php', 'shoutBoxHistory', 'width=154,height=550,toolbar=0,location=0,menubar=0,directories=0,scrollbars=0');
    }
    else 
	{
        in_form.action.value = 'record';
        in_form.idleFactor.value = 0;
        in_form.message.value = in_form.messageTyping.value;
        in_form.submit();
    }

    in_form.messageTyping.value = '';
}

function setCookie(in_cookieName, in_cookieValue)
{
    var cookieExpiry = (arguments.length >= 3 && arguments[2] != 0) ? arguments[2] : 31536000000;
    var cookiePath = (arguments.length >= 4) ? arguments[3] : '/';
    var expDate = new Date();
    expDate.setTime(expDate.getTime() + cookieExpiry);
    document.cookie = in_cookieName + '=' + window.escape(in_cookieValue) + '; expires=' + expDate.toGMTString() + '; path=' + cookiePath;
}

/*
function validate_form(Form)
{
	var reqd_flag = 0;
	var reqd_flds = "";
	var fld_value = "";

	for(i=0; i<document.MILLENNIUM.elements.length; i++)
	{
		if((document.MILLENNIUM.elements[i].name).match("_req") != null)
		{
			fld_value = document.MILLENNIUM.elements[i].value;
			if(fld_value.length == 0)
			{
				reqd_flag = 1;
				reqd_flds += document.MILLENNIUM.elements[i].id + "\n";
			}
		}
	}

	if(reqd_flag == 0)
	{
		document.MILLENNIUM.ACTION.value = "SUBMIT";
		Form.submit();
	}
	else
	{
		document.MILLENNIUM.ACTION.value = "";
		alert("The Following feilds are required\
*/