﻿// JScript File
function randomString(len) {
	   var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	   var string_length = 8;
	   if(len)
	      string_length = len;
	      
	   var randomstring = '';
	   
	   for (var i=0; i<string_length; i++) {
		  var rnum = Math.floor(Math.random() * chars.length);
		  randomstring += chars.substring(rnum,rnum+1);
	   }
	
	   return randomstring;
    }
    
function CheckBoxGroup() {
	this.controlBox=null;
	this.controlBoxChecked=null;
	this.maxAllowed=null;
	this.maxAllowedMessage=null;
	this.masterBehavior=null;
	this.formRef=null;
	this.checkboxWildcardNames=new Array();
	this.checkboxNames=new Array();
	this.totalBoxes=0;
	this.totalSelected=0;
	// Public methods
	this.setControlBox=CBG_setControlBox;
	this.setMaxAllowed=CBG_setMaxAllowed;
	this.setMasterBehavior=CBG_setMasterBehavior;	// all, some
	this.addToGroup=CBG_addToGroup;
	// Private methods
	this.expandWildcards=CBG_expandWildcards;
	this.addWildcardCheckboxes=CBG_addWildcardCheckboxes;
	this.addArrayCheckboxes=CBG_addArrayCheckboxes;
	this.addSingleCheckbox=CBG_addSingleCheckbox;
	this.check=CBG_check;
	}

// Set the master control checkbox name
function CBG_setControlBox(name) { this.controlBox=name; }

// Set the maximum number of checked boxes in the set, and optionally
// the message to popup when the max is reached.
function CBG_setMaxAllowed(num,msg) {
	this.maxAllowed=num;
	if (msg!=null&&msg!="") { this.maxAllowedMessage=msg; }
	}

// Set the behavior for the checkbox group master checkbox
//	All: all boxes must be checked for the master to be checked
//	Some: one or more of the boxes can be checked for the master to be checked
function CBG_setMasterBehavior(b) { this.masterBehavior = b.toLowerCase(); }

// Add checkbox wildcards to the checkboxes array
function CBG_addToGroup() {
	if (arguments.length>0) {
		for (var i=0;i<arguments.length;i++) {
			this.checkboxWildcardNames[this.checkboxWildcardNames.length]=arguments[i];
			}
		}
	}

// Expand the wildcard checkbox names given in the addToGroup method
function CBG_expandWildcards() {
	if (this.formRef==null) {alert("ERROR: No form element has been passed.  Cannot extract form name!"); return false; }
	for (var i=0; i<this.checkboxWildcardNames.length;i++) {
		var n = this.checkboxWildcardNames[i];
		var el = this.formRef[n];
		if (n.indexOf("*")!=-1) { this.addWildcardCheckboxes(n); }
		else if(CBG_nameIsArray(el)) { this.addArrayCheckboxes(n); }
		else { this.addSingleCheckbox(el); }
		}
	}


// Add checkboxes to the group which match a pattern
function CBG_addWildcardCheckboxes(name) {
	var i=name.indexOf("*");
	if ((i==0) || (i==name.length-1)) {
		searchString= (i)?name.substring(0,name.length-1):name.substring(1,name.length);
		for (var j=0;j<this.formRef.length;j++) {
			currentElement = this.formRef.elements[j];
			currentElementName=currentElement.name;
			var partialName = (i)?currentElementName.substring(0,searchString.length) : currentElementName.substring(currentElementName.length-searchString.length,currentElementName.length);
			if (partialName==searchString) {
				if(CBG_nameIsArray(currentElement)) this.addArrayCheckboxes(currentElement);
				else this.addSingleCheckbox(currentElement);
				}
			}
		}
	}

// Add checkboxes to the group which all have the same name
function CBG_addArrayCheckboxes(name) {
	if((CBG_nameIsArray(this.formRef[name])) && (this.formRef[name].length>0)) {
		for (var i=0; i<this.formRef[name].length; i++) { this.addSingleCheckbox(this.formRef[name][i]); }
		}
	}

function CBG_addSingleCheckbox(obj) {
	if (obj != this.formRef[this.controlBox]) {
		this.checkboxNames[this.checkboxNames.length]=obj;
		this.totalBoxes++;
		if (obj.checked) {
			this.totalSelected++;
			}
		}
	}

// Runs whenever a checkbox in the group is clicked
function CBG_check(obj) {
	var checked=obj.checked;
	if (this.formRef==null) {
		this.formRef=obj.form;
		this.expandWildcards();
		if (this.controlBox==null || obj.name!=this.controlBox) {
			this.totalSelected += (checked)?-1:1;
			}
		}
	if (this.controlBox!=null&&obj.name==this.controlBox) {
		if (this.masterBehavior=="all") {
			for (i=0;i<this.checkboxNames.length;i++) { this.checkboxNames[i].checked=checked; }
			this.totalSelected=(checked)?this.checkboxNames.length:0;
			}
		else {
			if (!checked) {
				obj.checked = (this.totalSelected>0)?true:false;
				obj.blur();
				}
			}
		}
	else {
		if (this.masterBehavior=="all") {
			if (!checked) {
				this.formRef[this.controlBox].checked=false;
				this.totalSelected--;
				}
			else { this.totalSelected++; }
			if (this.controlBox!=null) {
				this.formRef[this.controlBox].checked=(this.totalSelected==this.totalBoxes)?true:false;
				}
			}
		else {
			if (!obj.checked) { this.totalSelected--; }	
			else { this.totalSelected++; }
			if (this.controlBox!=null) {
				this.formRef[this.controlBox].checked=(this.totalSelected>0)?true:false;
				}
			if (this.maxAllowed!=null) {
				if (this.totalSelected>this.maxAllowed) {
					obj.checked=false;
					this.totalSelected--;
					if (this.maxAllowedMessage!=null) { alert(this.maxAllowedMessage); }
					return false;
					}
				}
			}
		}
	}

function CBG_nameIsArray(obj) {
	return ((typeof obj.type!="string")&&(obj.length>0)&&(obj[0]!=null)&&(obj[0].type=="checkbox"));
	}

// HtmlHelper.js created by qun wang 2006-10-06
// javascript help functions for html page and html element

// Check for namespace collision
if ("undefined" == typeof(HtmlHelper))
{
	HtmlHelper = new Object();
	HtmlHelper.isIE = false; //-- Internet Exploer
	HtmlHelper.isNS = false; //-- netscape
	HtmlHelper.isFF = false; //-- firefox
}

 HtmlHelper.gotoPoint=function(anchor)
{
	var obj=document.getElementById(anchor);
	obj.click();
	obj.focus();
}

HtmlHelper.detectBrowser = function()
{
   if (navigator.appVersion.indexOf("MSIE")!=-1){
      HtmlHelper.isIE = true;
      HtmlHelper.isFF = false;
   }
   else
   {
       HtmlHelper.isIE = false;
       HtmlHelper.isFF = true;
   }
}

HtmlHelper.Init = function()
{
    HtmlHelper.detectBrowser();
}

HtmlHelper.LoopSelect = function(selObj)
{
  for (i=0; i<selObj.options.length; i++) {
    if (selObj.options[i].selected) {
 return  selObj.options[i].value;
    }
  }
}

HtmlHelper.Show = function(el)
{
  var b = document.getElementById(el);
   b.style.display = "block";
}


HtmlHelper.ShowCenter = function(el,left,bw,offtop)
{
        if(!bw)
           bw = 300;
        var box = document.getElementById(el)
        
        box.style.display = "block";
        box.style.width = bw + "px";
        var w=document.documentElement.clientWidth;
        var h=document.documentElement.clientHeight;
        var l = document.documentElement.scrollLeft;
        var t = document.documentElement.scrollTop;
          
        if(left){
           box.style.left = left- parseInt(box.style.width)/2  + l +"px";
        }else{
           box.style.left = (w- parseInt(box.style.width)/2 -bw)/2 + l + "px";
        }
       
       if(parseInt(box.style.left) <0)   box.style.left = "0px";
        
     if(offtop) 
        box.style.top = h/2 - parseInt(box.style.height)/2  - offtop + t  + "px";
     else
        box.style.top = h/2  -parseInt(box.style.height)/2  + t + "px";
       
        if(parseInt(box.style.top) <0)   box.style.top = "0px"; 
}

HtmlHelper.Hide = function(el)
{
   var box = document.getElementById(el);
   box.style.display = "none";
 }

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
HtmlHelper.SetRadioValue = function(r, newValue) 
{
    var radioObj =document.getElementsByName(r);
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}
 
// set the radio button with the given value as being checked
HtmlHelper.GetRadioValue = function(r) 
{
    var radioObj =document.getElementsByName(r);
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
} 

HtmlHelper.PopWin =function(url,name,options){
  var ContextWindow = window.open(url,name,options);
  ContextWindow.focus();
  return false;
}

HtmlHelper.Init();


function Querystring(qs) { // optionally pass a querystring to parse
	this.params = new Object()
	this.get=Querystring_get
	
	if (qs == null)
		qs=location.search.substring(1,location.search.length)

	if (qs.length == 0) return

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ')
	var args = qs.split('&') // parse out name/value pairs separated via &
	
// split out each name=value pair
	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=')
		var name = unescape(pair[0]).toLowerCase();

		if (pair.length == 2)
			value = unescape(pair[1])
		else
			value = name
		
		this.params[name] = value
	}
}

function Querystring_get(key, default_) {
	// This silly looking line changes UNDEFINED to NULL
	if (default_ == null) default_ = null;
	
	var value = this.params[key.toLowerCase()];
	if (value==null) value=default_;
	
	return value
}

var fontarray = new Array(
	'Arial', 'Arial Black', 'Arial Rounded MT Bold', 
	'Book Antiqua', 'Bookman Old Style', 'Braggadocio', 
	'Britannic Bold','Brooklyn','Brush Script MT', 
	'Carleton', 'Century Gothic','Century Schoolbook','Charcoal','Chicago','CG Times','Colonna MT','Comic Sans MS','Coronet','Courier','Courier New','Cursive Elegant','DawnCastle','Desdemona','Donata','Erie','Expo','Footlight MT Light','Fritzquad','Garamond','Geneva','Georgia','GilbertUltraBold','Gill Sans Condensed Bold','GV Terminal','Haettenschweiler','Helvetica','Humanst521 Cn BT','Impact','Kino MT','Klang MT','Lansbury','Letter Gothic','Lincoln','Matura MT Script Capitals','Merlin','Micro','Minion Web','Modern','Monaco','Motor','Sonoma','Sonoma Italic','Swiss721 BlkEx BT','Times','Times New Roman','Verdana','Wide Latin'
);	
	
var fontstylearray = new Array('normal', 'italic', 'oblique' );
var fontweightarray = new Array('bold', 'bolder', 'lighter','normal','100','200','300','400','500','600','700','800','900' );	
var sizearray = new Array('x-small','small','medium','large','x-large','xx-large');
var relativesizearray = new Array('Larger','Smaller');	
var selectedfontsize;
var positions = new Array('Centered', 'Top Left', 'Top Center', 'Top Right',
                    'Middle Left', 'Middle Center', 'Middle Right','Buttom Left', 'Buttom Center', 'Buttom Right');
	
function BindFont(lstFont)
{  
   for(i=0;i<fontarray.length;i+=1)
	{
		lstFont.options[i] = new Option(fontarray[i],fontarray[i]);
	}
}

function BindSize(lstSize){
 for(i=8;i<121;i+=1)
	{
		lstSize.options[i-8] = new Option(i+"pt",i);
	}
}

function BindPosition(lstPosition){
for(i=0;i<positions.length;i+=1)
	{
		lstPosition.options[i] = new Option(positions[i],i);
	}
}