/*
Project: Cross-Fury Version 1.0 © Shin, 2005
This code may be used provided that you do not edit or repost this code without my prior permission, and that you do NOT remove this header. This script's coding is my official property, so please do not attempt to claim any of it as your own. This header must always remain intact.
*/

function checkForSymbols(){
if(this&&this.type=="text"&&this.value.match(/\W/i)){
alert("This field may only contain letters and/or numbers!");
this.focus();
this.select();
}}

function ValidateData(){
if(document.createAddOn){
var check=0;
var total=0;
var check2=0;
for(z=0;z<document.createAddOn.elements.length;z++){
if(document.createAddOn.elements[z].type&&document.createAddOn.elements[z].type=="text"&&document.createAddOn.elements[z].name!="defaultInput"){
if(document.createAddOn.elements[z].value==""){
check=1;
total++;
} else if(document.createAddOn.elements[z].value.match(/\"/)){
document.createAddOn.elements[z].value=document.createAddOn.elements[z].value.replace(/\"/g,"");
check2=1;
ValidateData();
} else if(document.createAddOn.elements[z].value.match(/\;/)){
document.createAddOn.elements[z].value=document.createAddOn.elements[z].value.replace(/\;/g,"");
check2=1;
ValidateData();
}}}
if(check==1&&check2==0){
var word1=((total==1)?"":"s");
var word2=((total==1)?"has":"have");
alert(total+" required field"+word1+" "+word2+" been left blank.\n\nPlease double-check your data entries and try again.");
} else if(check2==0&&document.getElementById("beforeValid")&&document.getElementById("afterValid")){
document.getElementById("beforeValid").style.display="none";
document.getElementById("afterValid").style.display="";
var confirmForm="<b>Option ID:</b> "+document.createAddOn.IDInput.value+"<br/><br/><b>Displayed Title:</b> "+document.createAddOn.dispTitle.value+"<br/><br/><b>Option Type:</b> "+document.createAddOn.elemType.options[document.createAddOn.elemType.selectedIndex].text+"<br/></br>";

if(document.createAddOn.defaultInput){
confirmForm+="<b>Default Value:</b> "+document.createAddOn.defaultInput.value;
if(document.createAddOn.defaultInput.value==""){
confirmForm+="(No default value)";
}
} else if(document.createAddOn.selectionInput){
confirmForm+="<b>Selections: </b>"+document.createAddOn.selectionInput.value+"<br/><font size='1'>The entered selections will separate at each ampersand (&)</font>";
}

confirmForm+="<br/><br/><b>Description: </b>"+document.createAddOn.descriptionInput.value+"<br/><br/><b>Who can edit this option?</b> "+document.createAddOn.editByBox.options[document.createAddOn.editByBox.selectedIndex].text+"<br/><br/><b>Enable this option?</b> "+document.createAddOn.enableBox.options[document.createAddOn.enableBox.selectedIndex].text+"<br/><br/>";

document.getElementById("afterValidInner").innerHTML+=confirmForm;
alert("Data validation complete.");
}}}

function SaveCreatedAddOn(){
if(document.createAddOn&&document.forms[fn]){
var newID=document.createAddOn.IDInput.value;

var newEnabled=document.createAddOn.enableBox.options[document.createAddOn.enableBox.selectedIndex].value;

var newElemType=document.createAddOn.elemType.options[document.createAddOn.elemType.selectedIndex].value;

var newEditBy=document.createAddOn.editByBox.options[document.createAddOn.editByBox.selectedIndex].value;

var newDisplayTitle=document.createAddOn.dispTitle.value;

var OptionsString="";
var newDefault="";

var newDescription=document.createAddOn.descriptionInput.value;

if(document.createAddOn.defaultInput){
newDefault+=document.createAddOn.defaultInput.value;
OptionsString+="\"";
} else if(document.createAddOn.selectionInput){
var SelectionsString=document.createAddOn.selectionInput.value;
var SelectionsArray=SelectionsString.split("&");
newDescription+="\"";
for(q=0;q<SelectionsArray.length;q++){
OptionsString+=",\""+SelectionsArray[q]+"\"";
}}

var AddedToHeader="\n<scr"+"ipt type=\"text/javascript\">\n<"+"!"+"--\nAddOns["+AddOns.length+"]=new ProfileAddOn(\""+newID+"\",\""+newEnabled+"\",\""+newElemType+"\",\""+newEditBy+"\",\""+newDisplayTitle+"\",\""+newDefault+"\",\""+newDescription+OptionsString+")\;\n/"+"/--"+">\n</scr"+"ipt>";

document.forms[fn].header.value+=AddedToHeader;

document.forms[fn].submit();
}}

function EditAddOn(){
if(document.createAddOn&&document.forms[fn]){
var newID=document.createAddOn.IDInput.value;

var newEnabled=document.createAddOn.enableBox.options[document.createAddOn.enableBox.selectedIndex].value;

var newElemType=document.createAddOn.elemType.options[document.createAddOn.elemType.selectedIndex].value;

var newEditBy=document.createAddOn.editByBox.options[document.createAddOn.editByBox.selectedIndex].value;

var newDisplayTitle=document.createAddOn.dispTitle.value;

var OptionsString="";
var newDefault="";

var newDescription=document.createAddOn.descriptionInput.value;

if(document.createAddOn.defaultInput){
newDefault+=document.createAddOn.defaultInput.value;
OptionsString+="\"";
} else if(document.createAddOn.selectionInput){
var SelectionsString=document.createAddOn.selectionInput.value;
var SelectionsArray=SelectionsString.split("&");
newDescription+="\"";
for(q=0;q<SelectionsArray.length;q++){
OptionsString+=",\""+SelectionsArray[q]+"\"";
}}
//document.createAddOn.selectOption.selectedIndex
var oldDataStr="AddOns\\["+aoIndex+"\\]=new ProfileAddOn(.+?)\;";
var oldDataReg=new RegExp(oldDataStr);

if(document.forms[fn].header.value.match(oldDataReg)){
var oldDataInsert=RegExp.$1;
var newDataInsert="(\""+newID+"\",\""+newEnabled+"\",\""+newElemType+"\",\""+newEditBy+"\",\""+newDisplayTitle+"\",\""+newDefault+"\",\""+newDescription+OptionsString+")";

document.forms[fn].header.value=document.forms[fn].header.value.replace(oldDataInsert,newDataInsert);

document.forms[fn].submit();
} else {
alert("An unexpected error occured when attempting to perform this action.\n\nAborting this action.");
location.href="index.cgi?action=admin";
}
}}

function DeleteAddOn(){
if(document.createAddOn&&document.forms[fn]){
var removeAddOnStr="<scr"+"ipt.+?>\\s+?<\\!--\\s+?AddOns\\["+aoIndex+"\\]=new ProfileAddOn.+?\;\\s+?\\/\\/-->\\s+?<\\/scr"+"ipt>";
var removeAddOnReg=new RegExp(removeAddOnStr);
if(document.forms[fn].header.value.match(removeAddOnReg)){
document.forms[fn].header.value=document.forms[fn].header.value.replace(removeAddOnReg,"");
document.forms[fn].submit();
} else {
alert("An unexpected error occured when attempting to perform this action.\n\nAborting this action.");
location.href="index.cgi?action=admin";
}
}}

function DeleteAllAddOns(){
if(document.createAddOn&&document.forms[fn]){
var deleteAllReg=/<scr\wpt.+?>\s+?<\!--\s+?AddOns\[\d+\]=new ProfileAddOn.+?\;\s+?\/\/-->\s+?<\/sc\wipt>/g;
if(document.forms[fn].header.value.match(deleteAllReg)){

document.forms[fn].header.value=document.forms[fn].header.value.replace(deleteAllReg,"");

document.forms[fn].submit();
} else {
alert("Error in data checking...\n\nReg Expression: "+deleteAllReg);
}
}}

function ProfileAddOn(ID,enabled,elementType,editBy,displayTitle,defaultValue,desc){
this.ID=ID;
this.enabled=enabled;
this.elementType=elementType;
this.editBy=editBy;
this.displayTitle=displayTitle;
this.defaultValue=defaultValue;
this.desc=desc;
if(arguments.length>7){
this.options=new Array();
for(a=7;a<arguments.length;a++){
this.options[a-7]=arguments[a];
}
}
this.create=ProfileAddOn_create;
this.loadValue=ProfileAddOn_loadValue;
this.saveValue=ProfileAddOn_saveValue;
}

function ProfileAddOn_create(){
if(this&&document.modifyForm){
var Parent3=document.modifyForm.signature.parentNode.parentNode.parentNode;
var newRow=Parent3.parentNode.parentNode.insertRow(Parent3.rowIndex);
var newCell1=newRow.insertCell(0);
var newCell2=newRow.insertCell(1);
var newCell3=newRow.insertCell(2);

var newElement=document.createElement(this.elementType);
newElement.id=this.ID;

switch(this.elementType){

case "input":
newElement.type="text";
newElement.size="35";
newElement.value=this.defaultValue;
break;

case "select":
if(this.options){
for(a=0;a<this.options.length;a++){
var newOption=document.createElement("option");
var newText=document.createTextNode(this.options[a]);
newOption.appendChild(newText);
newElement.appendChild(newOption);
}}
break;

}
var newTitle=document.createTextNode(this.displayTitle+":");
var newDesc=document.createTextNode(this.desc);
var newFont1=document.createElement("font");
var newFont2=newFont1.cloneNode(false);
newFont1.size="2";
newFont2.size="1";
newFont1.appendChild(newTitle);
newFont2.appendChild(newDesc);
newCell1.appendChild(newFont1);
newCell2.appendChild(newElement);
newCell3.appendChild(newFont2);
if(this.editBy=="admin"&&!document.modifyForm.posts){
newCell1.style.display="none";
newCell2.style.display="none";
newCell3.style.display="none";
}

}}

function ProfileAddOn_loadValue(){
if(this&&document.modifyForm&&document.getElementById(this.ID)){
var Object=document.getElementById(this.ID);
var websiteURL=document.modifyForm.websiteurl;
var Values=websiteURL.value.split("?");
for(a=0;a<Values.length;a++){
var searchString=this.ID+"=(.+?)&";
var searchReg=new RegExp(searchString);
if(Values[a].match(searchReg)){
var newValue=RegExp.$1;
switch(this.elementType){

case "input":
if(newValue!="NO_VALUE"){
Object.value=newValue;
}
break;

case "select":
for(b=0;b<Object.options.length;b++){
if(Object.options[b].text==newValue){
Object.options[b].selected="1";
}}
break;
}
var replaceString="?"+this.ID+"="+newValue+"&?";
websiteURL.value=websiteURL.value.replace(replaceString,"");
break;

}}

}}

function ProfileAddOn_saveValue(){
if(this&&document.modifyForm&&document.getElementById(this.ID)){
var Object=document.getElementById(this.ID);
var websiteURL=document.modifyForm.websiteurl;

switch(this.elementType){

case "input":
var currentValue=Object.value;
if(currentValue==""){
currentValue="NO_VALUE";
}
break;

case "select":
var currentValue=Object.options[Object.selectedIndex].text;
break;
}

if(websiteURL.value=="" || !websiteURL.value.match(/^http/i)){
websiteURL.value=location.href.split("?")[0];
document.modifyForm.websitename.value=document.title.split("-")[0];
}

websiteURL.value+="?"+this.ID+"="+currentValue+"&?";
}}

var AddOns=new Array();
