// JavaScript Document
function OpenClose(ID)
	{
		var viewOpenClose = document.getElementById(ID).style.display;
		if (viewOpenClose=="none")
		{
			document.getElementById(ID).style.display="block";
		}
		else
		{
			document.getElementById(ID).style.display="none";
		}
	}
	
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
	
	};
BrowserDetect.init();

function AddCode(TextID,Code)
{
	Text = document.getElementById(TextID)
	selectedText = Text.value.substring(Text.selectionStart,Text.selectionEnd);
	replaceText = "["+Code+"]"+selectedText+"[/"+Code+"]"
	finalText = Text.value.replace(selectedText,replaceText)
	
	document.getElementById(TextID).value=finalText
}

function Message(msg)
{
//	alert(msg);
	document.getElementById('Message').style.display="block";
	message="<span class=\"Green\">"+msg+"</span>"
	document.getElementById('Message').innerHTML=message
	
	setTimeout("DivHidden('Message')",2000);
}

function DivHidden(DivID)
{
	document.getElementById(DivID).style.display="none";
}

function TinyWindow(URL,Name)
{
	var NewWindow = window.open(URL,Name,"width=200, height=200, scrollbars=1,location=0,toolbar=0 ");
	return NewWindow;
}

function SmallWindow(URL,Name)
{
	var NewWindow = window.open(URL,Name,"width=500, height=600, scrollbars=1,location=0,toolbar=0 ");
	return NewWindow;
}

function MediumWindow(URL,Name)
{
	var NewWindow = window.open(URL,Name,"width=700, height=600, scrollbars=1,location=0,toolbar=0 ");
	return NewWindow;
}

function LargeWindow(URL,Name)
{
	window.open(URL,Name,"width=1000, height=700, scrollbars=1,location=0,toolbar=0,resizable=1 ");
	//return NewWindow;
}

function ClearBothFrames()
{
	if(window.top.Main.Sub !== undefined)
		window.top.Main.Sub.location.href='Sub.php';
	window.top.Main.Content.location.href='Content.php';
}

function ClearContentFrames()
{
	window.top.Main.Content.location.href='Content.php';
}

function ConfirmDelete(Link)
{
	ConfirmClick(Link,"Are you sure you want to delete?");
}

function ConfirmClick(Link,Message)
{
	if (confirm(Message))
	{
		location.href=Link;
	}
}

function ConfirmClose(Message)
{
	if (confirm(Message))
	{
		window.close();
	}
}

function ResizeToFitWindowHeight(DivID,HeightOffset)
{
	var offset = (HeightOffset) ? HeightOffset : "100%";
	var elmt = obj = document.getElementById(DivID);
	var winH = document.documentElement.clientHeight;
	var yy   = margin = padding = border = 0;
	//Find y-position of the given div
	while (obj)
	{
		yy += obj.offsetTop;
		margin  += Number(obj.style.marginBottom.replace("px","").replace("pt",""));
		padding += Number(obj.style.paddingTop.replace("px","").replace("pt","")) + Number(obj.style.paddingBottom.replace("px","").replace("pt",""));
		border  += Number(obj.style.borderTopWidth.replace("px","").replace("pt","")) + Number(obj.style.borderBottomWidth.replace("px","").replace("pt",""));
		obj = obj.offsetParent;
	}
	
	//Height-offset can be in 'px' or '%'
	if(offset.indexOf('%')==-1)
	{
		//pixel mode
		offset = Number(offset.replace("px",""));
		yy = winH - yy - offset - margin - padding - border;
	}
	else
	{
		//percent mode
		offset = Number(offset.replace("%",""));
		yy = (winH - yy - margin - padding - border) * (offset/100);
	}
	
	//Resize Height
	yy = (yy <= 0) ? 0 : yy;
	if(elmt)
	{
		elmt.style.height = yy + "px";
	}
}

function ResizeToFitWindowWidth(DivID,WidthOffset)
{
	var offset = (WidthOffset) ? WidthOffset : "100%";
	var elmt = obj = document.getElementById(DivID);
	var winW = document.documentElement.clientWidth;
	var xx   = margin = padding = border = 0;
	//Find x-position of the given div
	while (obj)
	{
		xx += obj.offsetLeft;
		margin  += Number(obj.style.marginRight.replace("px","").replace("pt",""));
		padding += Number(obj.style.paddingLeft.replace("px","").replace("pt","")) + Number(obj.style.paddingRight.replace("px","").replace("pt",""));
		border  += Number(obj.style.borderLeftWidth.replace("px","").replace("pt","")) + Number(obj.style.borderRightWidth.replace("px","").replace("pt",""));
		obj = obj.offsetParent;
	}
	
	//Width-offset can be in 'px' or '%'
	if(offset.indexOf('%')==-1)
	{
		//pixel mode
		offset = Number(offset.replace("px",""));
		xx = winW - xx - offset - margin - padding - border;
	}
	else
	{
		//percent mode
		offset = Number(offset.replace("%",""));
		xx = (winW - xx - margin - padding - border) * (offset/100);
	}
	
	//Resize Height
	xx = (xx <= 0) ? 0 : xx;
	if(elmt)
	{
		elmt.style.width = xx + "px";
	}
}

function FixScroll(ID)
{
	if (!/*@cc_on!@*/0)
	{
		
	}
	else
	{
		var elmt = document.getElementById(ID);
		if(elmt.scrollHeight > elmt.offsetHeight)
		{
			elmt.style.paddingRight = "15px";
		}
		else
		{
			elmt.style.paddingRight = "0px";
		}
	}
}

var END_OF_INPUT = -1;

var base64Chars = new Array(
    'A','B','C','D','E','F','G','H',
    'I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X',
    'Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n',
    'o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3',
    '4','5','6','7','8','9','+','/'
);

var reverseBase64Chars = new Array();
for (var i=0; i < base64Chars.length; i++){
    reverseBase64Chars[base64Chars[i]] = i;
}

var base64Str;
var base64Count;
function setBase64Str(str){
    base64Str = str;
    base64Count = 0;
}
function readBase64(){    
    if (!base64Str) return END_OF_INPUT;
    if (base64Count >= base64Str.length) return END_OF_INPUT;
    var c = base64Str.charCodeAt(base64Count) & 0xff;
    base64Count++;
    return c;
}
function encodeBase64(str){
    setBase64Str(str);
    var result = '';
    var inBuffer = new Array(3);
    var lineCount = 0;
    var done = false;
    while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
        inBuffer[1] = readBase64();
        inBuffer[2] = readBase64();
        result += (base64Chars[ inBuffer[0] >> 2 ]);
        if (inBuffer[1] != END_OF_INPUT){
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
            if (inBuffer[2] != END_OF_INPUT){
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                result += (base64Chars [inBuffer[2] & 0x3F]);
            } else {
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                result += ('=');
                done = true;
            }
        } else {
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
            result += ('=');
            result += ('=');
            done = true;
        }
        lineCount += 4;
        if (lineCount >= 76){
            result += ('\n');
            lineCount = 0;
        }
    }
    return result;
}
function readReverseBase64(){   
    if (!base64Str) return END_OF_INPUT;
    while (true){      
        if (base64Count >= base64Str.length) return END_OF_INPUT;
        var nextCharacter = base64Str.charAt(base64Count);
        base64Count++;
        if (reverseBase64Chars[nextCharacter]){
            return reverseBase64Chars[nextCharacter];
        }
        if (nextCharacter == 'A') return 0;
    }
    return END_OF_INPUT;
}

function ntos(n){
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}

function decodeBase64(str){
    setBase64Str(str);
    var result = "";
    var inBuffer = new Array(4);
    var done = false;
    while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
        && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
        inBuffer[2] = readReverseBase64();
        inBuffer[3] = readReverseBase64();
        result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
        if (inBuffer[2] != END_OF_INPUT){
            result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
            if (inBuffer[3] != END_OF_INPUT){
                result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return result;
}

