/***************************************************************************
 *                                functions.js
 *                            -------------------
 *   begin                : Saturday, April 15, 2006
 *   copyright            : (C) 2006 James Ravenscroft
 *   email                : ravenscroftj@gmail.com
 *
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 **************************************************************************/
 
/*******************************Generic Input Functions******************************************/ 
///////////////////////////////Bold Function/////////////////
 sigb='0';
function insert_tag_bold(button){ 
if(sigb=='1'){
document.forms[0].entry.value = document.forms[0].entry.value + "[/B]";
sigb='0';
document.forms[0].entry.focus();
button.value = "B";
}else{
document.forms[0].entry.value = document.forms[0].entry.value + "[B]";
sigb='1';
document.forms[0].entry.focus();
button.value = "B*";
}
}
//////////////////////////////Underline Function/////////////
 sigu='0';
 function insert_tag_underline(button){
if(sigu=='1'){
document.forms[0].entry.value = document.forms[0].entry.value + "[/U]";
sigu='0';
document.forms[0].entry.focus();
button.value = "U";
}else{
document.forms[0].entry.value = document.forms[0].entry.value + "[U]";
sigu='1';
document.forms[0].entry.focus();
button.value = "U*";
}
}

//////////////////////////////Italic Function/////////////
 sigi='0';
 function insert_tag_italic(button){
if(sigi=='1'){
document.forms[0].entry.value = document.forms[0].entry.value + "[/I]";
sigi='0';
document.forms[0].entry.focus();
button.value = "I";
}else{
document.forms[0].entry.value = document.forms[0].entry.value + "[I]";
sigi='1';
document.forms[0].entry.focus();
button.value = "I*";
}
}

//////////////////////////////Insert Tag PHP Function/////////////
 sigi='0';
 function insert_tag_PHP(button){
if(sigi=='1'){
document.forms[0].entry.value = document.forms[0].entry.value + "[/PHP]";
sigi='0';
document.forms[0].entry.focus();
button.value = "PHP";
}else{
document.forms[0].entry.value = document.forms[0].entry.value + "[PHP]";
sigi='1';
document.forms[0].entry.focus();
button.value = "PHP*";
}
}

//////////////////////////Insert Tag Quote////////////////

sigq='0'
function insert_tag_quote(){
quoted = prompt("Quoted by:","");
if(quoted == null)
{
	quoted = ''	
}
time = prompt("Time of Quote:","");
if(time == null)
{
	time = '';
}
linksyntax = "[Quote=" + quoted +","+ time +"]Quote Text Here[/Quote]";
document.forms[0].entry.value = document.forms[0].entry.value + linksyntax ;
document.forms[0].entry.focus();
}

///////////////////////////Link Function///////////////////
function link_prompt(){
url = prompt("Link URL:","http://");
text = prompt("Link Text:","External Link");
linksyntax = "[URL=" + url +"]" + text + "[/URL]";
document.forms[0].entry.value = document.forms[0].entry.value + linksyntax ;
document.forms[0].entry.focus();
}


/////////////////////////Image Function/////////////////////
function img_prompt(){
img = prompt("Image URL:","http://");
imgsyntax ="[IMG]" + img + "[/IMG]";
document.forms[0].entry.value = document.forms[0].entry.value + imgsyntax ;
}



//////////////////////////Color Selector////////////////////////////////

function bb_color(Color){
document.forms[0].entry.value = document.forms[0].entry.value + "[color=" + Color +"]"+ Color +" Text Here[/color]";
document.forms[0].entry.focus();
}
/////////////////////////Emoticon Insert//////////////////////////////////////////

function insert_emo( emoticon_sign ){

document.forms[0].entry.value = document.forms[0].entry.value + emoticon_sign;
document.forms[0].entry.focus();
}

////////////////////////Preview///////////////////////////////////////////////
function preview(){

if(document.forms[0].allow_smilies.checked == true){
smilies = '&dosmilies';
}else{
smilies = '';
}
if(document.forms[0].allow_bbcode.checked == true){
bbcode='';
}else{
bbcode='&bb_off';
}
open('index.php?act=forum/preview&content=' + document.forms[0].entry.value + smilies + bbcode);
}

////////////////////////////Manage Attachments///////////////////////
function manage_attachments(){
if(atno != 5){
popupHandle = open('modules/forum/new.php?attachments');
}else{
alert("You have already specified 5 attachments, please delete one to attach another.");
}
}
 /////////////////////////Mass Check and uncheck CheckBoxes/////////////
function select_deselectAll (chkVal, idVal)
{
    var frm = document.forms[0];
    // Loop through all elements
    for (i=0; i<frm.length; i++)
    {
        // Look for our Header Template's Checkbox
        if (idVal.indexOf ('CheckAll') != -1)
        {
            // Check if main checkbox is checked, then select or deselect datagrid checkboxes
            if(chkVal == true)
            {
                frm.elements[i].checked = true;
            }
            else
            {
                frm.elements[i].checked = false;
            }
            // Work here with the Item Template's multiple checkboxes
        }
        else if (idVal.indexOf ('DeleteThis') != -1)
        {
         // Check if any of the checkboxes are not checked, and then uncheck top select all checkbox
            if(frm.elements[i].checked == false)
            {
                frm.elements[1].checked = false; //Uncheck main select all checkbox
            }
        }
    }

}


////////////////////////////Collapse and Expand Content with Javascript///////////////////////////

/***********************************************
* Switch Content script- © Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use. Last updated April 2nd, 2005.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var enablepersist="on" //Enable saving state of content structure using session cookies? (on/off)
var collapseprevious="no" //Collapse previously open content when opening present? (yes/no)

var contractsymbol='- ' //HTML for contract symbol. For image, use: <img src="whatever.gif">
var expandsymbol='+ ' //HTML for expand symbol.


if (document.getElementById){
document.write('<style type="text/css">')
document.write('.switchcontent{display:none;}')
document.write('</style>')
}

function getElementbyClass(rootobj, classname){
var temparray=new Array()
var inc=0
var rootlength=rootobj.length
for (i=0; i<rootlength; i++){
if (rootobj[i].className==classname)
temparray[inc++]=rootobj[i]
}
return temparray
}

function sweeptoggle(ec){
var thestate=(ec=="expand")? "block" : "none"
var inc=0
while (ccollect[inc]){
ccollect[inc].style.display=thestate
inc++
}
revivestatus()
}


function contractcontent(omit){
var inc=0
while (ccollect[inc]){
if (ccollect[inc].id!=omit)
ccollect[inc].style.display="none"
inc++
}
}

function expandcontent(curobj, cid){
var spantags=curobj.getElementsByTagName("SPAN")
var showstateobj=getElementbyClass(spantags, "showstate")
if (ccollect.length>0){
if (collapseprevious=="yes")
contractcontent(cid)
document.getElementById(cid).style.display=(document.getElementById(cid).style.display!="block")? "block" : "none"
if (showstateobj.length>0){ //if "showstate" span exists in header
if (collapseprevious=="no")
showstateobj[0].innerHTML=(document.getElementById(cid).style.display=="block")? contractsymbol : expandsymbol
else
revivestatus()
}
}
}

function revivecontent(){
contractcontent("omitnothing")
selectedItem=getselectedItem()
selectedComponents=selectedItem.split("|")
for (i=0; i<selectedComponents.length-1; i++)
document.getElementById(selectedComponents[i]).style.display="block"
}

function revivestatus(){
var inc=0
while (statecollect[inc]){
if (ccollect[inc].style.display=="block")
statecollect[inc].innerHTML=contractsymbol
else
statecollect[inc].innerHTML=expandsymbol
inc++
}
}

function get_cookie(Name) { 
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) { 
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function getselectedItem(){
if (get_cookie(window.location.pathname) != ""){
selectedItem=get_cookie(window.location.pathname)
return selectedItem
}
else
return ""
}

function saveswitchstate(){
var inc=0, selectedItem=""
while (ccollect[inc]){
if (ccollect[inc].style.display=="block")
selectedItem+=ccollect[inc].id+"|"
inc++
}

document.cookie=window.location.pathname+"="+selectedItem
}

function do_onload(){
uniqueidn=window.location.pathname+"firsttimeload"
var alltags=document.all? document.all : document.getElementsByTagName("*")
ccollect=getElementbyClass(alltags, "switchcontent")
statecollect=getElementbyClass(alltags, "showstate")
if (enablepersist=="on" && ccollect.length>0){
document.cookie=(get_cookie(uniqueidn)=="")? uniqueidn+"=1" : uniqueidn+"=0" 
firsttimeload=(get_cookie(uniqueidn)==1)? 1 : 0 //check if this is 1st page load
if (!firsttimeload)
revivecontent()
}
if (ccollect.length>0 && statecollect.length>0)
revivestatus()
}

if (window.addEventListener)
window.addEventListener("load", do_onload, false)
else if (window.attachEvent)
window.attachEvent("onload", do_onload)
else if (document.getElementById)
window.onload=do_onload

if (enablepersist=="on" && document.getElementById)
window.onunload=saveswitchstate


//////////////////////////Set Pyrophobia Skin//////////////////////////////////////
function setskin(skindir){
document.cookie = 'skin='+ skindir +'; expires=Wed 1 Jan 2020 00:00:00 GMT; path=/'
window.location = "index.php"
}

function setskinadmin(skindir){
document.cookie = 'skinadmin='+ skindir +'; expires=Wed 1 Jan 2020 00:00:00 GMT; path=/'
window.location = "index.php"
}

//////////////////////Remove Attachment from list///////////////////////////////
function remove_attachment(){

 var elSel = document.getElementById('attachments');
  var i;
  for (i = elSel.length - 1; i>=0; i--) {
    if (elSel.options[i].selected) {
popupHandle = open('modules/forum/new.php?delete_attached&fn='+elSel.options[i].value);
      elSel.remove(i);
document.forms[0].attachment_no.value = document.forms[0].attachment_no.value - 1;
	  
}
}
}
///////////////////Select all Attachments///////////////////////////////////////
function select_all(){

 var elSel = document.getElementById('attachments');
 elSel.multiple = true; 
  var i;
  for (i = elSel.length - 1; i>=0; i--) {
      elSel.options[i].selected = true;
	  
}
}


/***********************************************
* Fixed ToolTip script- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
		
var tipwidth='150px' //default tooltip width
var tipbgcolor='#AA0000'  //tooltip bgcolor
var disappeardelay=250  //tooltip disappear speed onMouseout (in miliseconds)
var vertical_offset="0px" //horizontal offset of tooltip from anchor link
var horizontal_offset="-3px" //horizontal offset of tooltip from anchor link

/////No further editting needed

var ie4=document.all
var ns6=document.getElementById&&!document.all

if (ie4||ns6)
document.write('<div id="fixedtipdiv" style="visibility:hidden;width:'+tipwidth+';background-color:'+tipbgcolor+'" ></div>')

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}


function showhide(obj, e, visible, hidden, tipwidth){
if (ie4||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
if (tipwidth!=""){
dropmenuobj.widthobj=dropmenuobj.style
dropmenuobj.widthobj.width=tipwidth
}
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
obj.visibility=visible
else if (e.type=="click")
obj.visibility=hidden
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=(whichedge=="rightedge")? parseInt(horizontal_offset)*-1 : parseInt(vertical_offset)*-1
if (whichedge=="rightedge"){
var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
}
return edgeoffset
}

function fixedtooltip(menucontents, obj, e, tipwidth){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
clearhidetip()
dropmenuobj=document.getElementById? document.getElementById("fixedtipdiv") : fixedtipdiv
dropmenuobj.innerHTML=menucontents

if (ie4||ns6){
showhide(dropmenuobj.style, e, "visible", "hidden", tipwidth)
dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
}
}

function hidetip(e){
if (typeof dropmenuobj!="undefined"){
if (ie4||ns6)
dropmenuobj.style.visibility="hidden"
}
}

function delayhidetip(){
if (ie4||ns6)
delayhide=setTimeout("hidetip()",disappeardelay)
}

function clearhidetip(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}

/***************************************************************************
Swap Content (useful if one div is invisible)
****************************************************************************/

function swap_content(div1,div2)
{

	var content1 = document.getElementById(div1).innerHTML;
	var content2 = document.getElementById(div2).innerHTML;
	
	document.getElementById(div1).innerHTML = content2;
	document.getElementById(div2).innerHTML = content1;

}



/*********************************************************
Reference Javascript files dynamically
*********************************************************/
function include_js(Path)
{
	var el = document.createElement("script");
	el.src = Path;
	el.type="text/javascript";
	if(document.getElementsByTagName("head")[0].appendChild(el))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

