/**** START: FLASH PLAYER & ANALYTICS ****/

function FlashAnalyticsOnComplete(value) {
// alert(value);
}

function FlashAnalyticsOnTimeOut(value) {
alert("FlashAnalytics TimeOut");
}

function FlashAnalyticsOnError(value) {
alert("FlashAnalytics Error");
}

/**** END: FLASH PLAYER & ANALYTICS ****/


/**** STOPS LAST PLAYING FLASH PLAYER ****/
// object tag version
function StopPlayers(id)
{
    var itemIndex = document.getElementById('itemIndexValue');
    if(itemIndex.value != -1 && itemIndex.value != id)
    {
        var object = document.getElementById('flashDiv_' + itemIndex.value);
        object.innerHTML = object.innerHTML;
    }
    itemIndex.value = id;
}

// swfobject version
function StopPlayersSWFObject(id)
{
    var itemIndex = document.getElementById('itemIndexValue');
    if(itemIndex.value != -1 && itemIndex.value != id)
    {
        eval('writeFlashDiv_' + itemIndex.value + '()');
    }
    itemIndex.value = id;
}
/**** END: STOP PLAYERS ****/


/**** START: AJAX METHODS ****/
var addFavoriteEncodedAdID = "";
function addFavorite(encodedAccountID, encodedAdID) {
    addFavoriteEncodedAdID = encodedAdID;
    SpotRunner.Hollywood.ClientWebsite.Services.AJAXService.AddToFavorites(encodedAccountID, encodedAdID, onFavoritesAddComplete);
}
 
function onFavoritesAddComplete(result) {
    if(result) {
        document.getElementById("adResult" + addFavoriteEncodedAdID).className = "searchResultItem favorite";
        document.getElementById("addToFavorites" + addFavoriteEncodedAdID).style.display = "none";
        document.getElementById("myFavorite" + addFavoriteEncodedAdID).style.display = "block";
    }
    else {
        alert("Sorry, could not add to favorites.");
    }
}

function sendSuggestionEmail(textareaID, textboxID, refURL, industry, searchValue) {
    var textareaControl = document.getElementById(textareaID);
    var textboxControl = document.getElementById(textboxID);
    SpotRunner.Hollywood.ClientWebsite.Services.AJAXService.SendSuggestionEmail(textareaControl.value, textboxControl.value, refURL, industry, searchValue, onSendSuggestionEmailComplete);
} 

function onSendSuggestionEmailComplete(result) {
    if(result == "SUCCESSFUL")
        document.getElementById("suggestionReceived").style.display = "block";
    else if(result == "INVALIDEMAIL")
        document.getElementById("invalidEmail").style.display = "block";
    else
        document.getElementById("systemError").style.display = "block";    
}

function logExcessiveRegionSelection(totalRegionCount, emailAddress, accountID, activeGroupID) {
    SpotRunner.Hollywood.ClientWebsite.Services.AJAXService.LogExcessiveRegionSelection(totalRegionCount, emailAddress, accountID, activeGroupID);
}
/**** END: AJAX METHODS ****/

// limit character count on textarea controls
function textLimiter(field, charMax) {
	var maxlimit = 500;
	if(charMax != null)
	    maxlimit = charMax;
	  
	var txt = field.value;
	txt = fixNewLines(txt);

	if(txt.length > maxlimit) // if too long...trim it!
	  field.value = txt.substring(0, maxlimit);  

}

//20070919 jh - this function was created to normalized newlines between browsers
//In IE browsers a new line is "\r\n" - two characters
//In firefox a new line is "\n" - one character
//Windows typically uses "\r\n". We need to convert everything to the 
//way windows uses it since we're using .NET and SQL
//this is basically used to find out the correct length to see if the string fits in SQL
function fixNewLines (val) {             
  // Adjust newlines so can do correct character counting 
  if (val.indexOf('\r\n')!=-1)
    ; // this is IE on windows. Puts both characters for a newline, do nothing
  else if (val.indexOf('\r')!=-1)
    val = val.replace ( /\r/g, "\r\n" );        // this is IE on a Mac. Need to add the line feed
  else if (val.indexOf('\n')!=-1)
    val = val.replace ( /\n/g, "\r\n" );        // this is Firefox on any platform. Need to add carriage return
  else 
    ;                                           // no newlines in the textarea  
  return val;
}
function updateHiddenValue(formElementId, value) { 
    document.getElementById(formElementId).value = value; 
}

function submitForm(isConfirmWithUser, alertMsg) {
    if(isConfirmWithUser != null && isConfirmWithUser) {
        userResponse = confirm("Are you sure you want to delete this saved credit card?");
        if(!userResponse)
            return;
    }
    document.forms[0].submit();    
}

// retrieve elements by class name, useful because .NET changes ID behind the scenes
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
} 

// retrieve element by class name, useful because .NET changes ID behind the scenes
function getElementByClass(searchClass,node,tag) {
    return getElementsByClass(searchClass,node,tag)[0];
}

// toggles display of elements by id
function toggle(obj, displayValue) {
	var el = document.getElementById(obj);
	if ( el.style.display != "none" ) { 
		el.style.display = "none";
	}
	else { 
	    if(displayValue == null)
		    el.style.display = "";
		else 
		    el.style.display = displayValue;  
	}	
} 

// toggle with display option
function toggleOption(obj, displayValue) {
    var el = document.getElementById(obj);
    el.style.display = displayValue;
}

// toggles display of elements by class name
function toggleByClassName(obj, displayValue) {
	var elList = getElementsByClass(obj.className);
	var el;
	for ( i=0; i<elList.length; i++ ) {
		el = elList[i];
		if ( el.style.display != "none" ) {
			el.style.display = "none";
	    }
		else { 
	        if(displayValue == null)
		        el.style.display = "";
		    else 
		        el.style.display = displayValue;  
		}
	}
}

// toggles keyword layer on ad results page
function toggleKeywords(moreKeywordClassName, moreKeywordLinkClassName) {
	var moreKeywordsClassList = getElementsByClass(moreKeywordClassName);
	var moreKeywordsLinkClassList = getElementsByClass(moreKeywordLinkClassName);
	for ( i=0; i<moreKeywordsClassList.length;i++ )
		toggleByClassName(moreKeywordsClassList[i]);
	for ( i=0; i<moreKeywordsLinkClassList.length;i++ )	
		toggleByClassName(moreKeywordsLinkClassList[i]);
}

function toggleIndustries() {
    var refineMoreIndustriesList = getElementsByClass("refineMoreIndustries");
    var moreIndustriesList = getElementsByClass("moreIndustries");
	for ( i=0; i<refineMoreIndustriesList.length;i++ )
		toggleByClassName(refineMoreIndustriesList[i]);
	for ( i=0; i<moreIndustriesList.length;i++ )	
		toggleByClassName(moreIndustriesList[i], "block");
} 

/*
 * Function opening centered pop up windows
 * @param url (string), width (int), height
 *     optional params: resizeable (string:yes|no), scrollbar (string:yes|no), menus (string:yes|no)
 */
function showPopUp(url,w,h) {
    var argv = showPopUp.arguments;
    var argc = showPopUp.arguments.length;
    var resizeable = (3< argc) ? argv[3] : "no";
    var scrollbars = (4< argc) ? argv[4] : "no";
    var menus = (5 < argc) ? argv[5] : "no";
    var iTop,iLeft,settings
    var popWin
    iLeft=(screen.width)?(screen.width-w)/2:100;
    iTop=(screen.height)?(screen.height-h)/2:100;
    var settings='width='+w+',height='+h+',top='+iTop+',screenY='+iTop+',left='+iLeft+',screenX='+iLeft+',scrollbars='+scrollbars+',location=no,directories=no,status=no,menubar='+menus+',toolbar='+menus+',resizable='+ resizeable;
    popWin = window.open(url,"",settings);
    popWin.focus();
}

/*NEW INITS
/********************************************************/
addLoadEvent(general_init);

/*NEW FUNCTIONS AND VARS
/********************************************************/

//contains objects found using explore all
var arr_findme = new Array();



function general_init(){
	
	//alert(document.forms.length);
	var obj_start = document.body;

/***	Clear Text	***/
	setupClearText(obj_start);

/***	Show	***/
//used on search.htm
//

	var obj_findthis 			= new Object();
	obj_findthis.str_ident		= "show";
	obj_findthis.str_tag		= "a"; 
	obj_findthis.reg_class		= new RegExp(/show_(\d*)/);
	obj_findthis.arr_results 	= new Array();
	obj_findthis.arr_apply 		= new Array();

	var obj_event 				= new Object();
	obj_event.str_event_name 	= "onclick";
	obj_event.str_function		= "function(){display(this);}";
	obj_findthis.arr_apply[obj_findthis.arr_apply.length] = obj_event;
	//add object to array
	arr_findme[arr_findme.length] = obj_findthis;

/***	Show	***/
//applied to inputs
//
	var obj_findthis 			= new Object();
	obj_findthis.str_ident		= "show";
	obj_findthis.str_tag		= "input"; 
	obj_findthis.reg_class		= new RegExp(/show_(\d*)/);
	obj_findthis.arr_results 	= new Array();
	obj_findthis.arr_apply 		= new Array();

	var obj_event 				= new Object();
	obj_event.str_event_name 	= "onchange";
	obj_event.str_function		= "function(){display(this);}";
	obj_findthis.arr_apply[obj_findthis.arr_apply.length] = obj_event;
	//add object to array
	arr_findme[arr_findme.length] = obj_findthis;
	
/***	Display	***/
//used on search.htm
//
	var obj_findthis 			= new Object();
	obj_findthis.str_ident		= "display";
	obj_findthis.str_tag		= ""; 
	obj_findthis.reg_class		= new RegExp(/display_(\d*)/);
	obj_findthis.arr_results 	= new Array();
	obj_findthis.arr_apply 		= new Array();
	//add object to array
	arr_findme[arr_findme.length] = obj_findthis;

/***	Toggle disable	***/
//used on search.htm
//
	var obj_findthis 			= new Object();
	obj_findthis.str_tag		= "input"; 
	obj_findthis.reg_class		= new RegExp(/jstoggleinput/);
	obj_findthis.arr_results 	= new Array();
	obj_findthis.arr_apply 		= new Array();

	var obj_event 				= new Object();
	obj_event.str_event_name 	= "onclick";
	obj_event.str_function		= "function(){toggleInput(this);}";
	obj_findthis.arr_apply[obj_findthis.arr_apply.length] = obj_event;
	//add object to array
	arr_findme[arr_findme.length] = obj_findthis;

/***	Check Multiple	***/
//
	var obj_findthis 			= new Object();
	obj_findthis.str_tag		= "input"; 
	obj_findthis.reg_class		= new RegExp(/jscheckmultiple/);
	obj_findthis.arr_results	= new Array();
	obj_findthis.arr_apply 		= new Array();

	var obj_event 				= new Object();
	obj_event.str_event_name 	= "onclick";
	obj_event.str_function		= "function(){checkMultiple(this);}";
	obj_findthis.arr_apply[obj_findthis.arr_apply.length] = obj_event;

	var obj_event 				= new Object();
	obj_event.str_event_name 	= "runtimeFunction";
	obj_event.str_function		= "verifyEvent(obj_this);";
	obj_findthis.arr_apply[obj_findthis.arr_apply.length] = obj_event;
	//add object to array
	arr_findme[arr_findme.length] = obj_findthis;

/***	Jump Menu	***/
//
	var obj_findthis 			= new Object();
	obj_findthis.str_tag		= "select"; 
	obj_findthis.reg_class		= new RegExp(/jsjumpmenu/);
	obj_findthis.arr_results	= new Array();
	obj_findthis.arr_apply 		= new Array();

	var obj_event 				= new Object();
	obj_event.str_event_name 	= "onchange";
	obj_event.str_function		= "function(){this.form.submit();}";
	obj_findthis.arr_apply[obj_findthis.arr_apply.length] = obj_event;
	//add object to array
	arr_findme[arr_findme.length] = obj_findthis;

	//find elements
	exploreAll(obj_start, arr_findme);

	//specifies the start and end of the functions to assigned to an event
	var start = new RegExp(/^\s*function\s*\(\s*\)\s*\{/);
	var end = new RegExp(/\s*;\s*\}\s*$/);

	//apply events to elements
	for (var i=0; i<arr_findme.length; i++){
		var obj_findthis = arr_findme[i];
		for (var j=0; j<obj_findthis.arr_results.length; j++){
			for (var k=0; k<arr_findme[i].arr_apply.length; k++){
				var temp = obj_findthis.arr_results[j];
				if(arr_findme[i].arr_apply[k].str_event_name=="runtimeFunction")	
				{
					//make obj_this current object
					var obj_this = temp;
					eval(arr_findme[i].arr_apply[k].str_function);
				}
				else
				{
					var str_function = "";
					var str_curr_function = "";
					
					//get event function if set
					if(eval("temp."+obj_findthis.arr_apply[k].str_event_name)){					
						var str_curr_function = eval("temp."+obj_findthis.arr_apply[k].str_event_name).toString();
						//strip out function open and close
						str_curr_function = str_curr_function.replace(start, "");
						str_curr_function = str_curr_function.replace(end, ";");
					}
					var str_this_function = obj_findthis.arr_apply[k].str_function;
					str_this_function = str_this_function.replace(start, "");
					str_this_function = str_this_function.replace(end, ";");
					//assemble
					str_function = "function(){"+str_curr_function+str_this_function+"}";
					
					//set event
					eval("temp."+obj_findthis.arr_apply[k].str_event_name+"="+str_function);
					
				}
			}//end for k
		}//end for j
	}//end for i
}
/*end general_init*/

/*
 * Function to add onload events while preserving existing onload events
 * @param func - string
 * 	function name
 */
 function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

/*
 * Function to explore all elements within an element
 * @param obj - obj
 *     the containing element in most cases page (must have an id)
 * @list list - arr
 *     array of objects to find
 * @returns: list - and array of objects
 */
function exploreAll(obj, list)
{
	if (obj){
		var arr_child = obj.childNodes;
		
		for( var i=0; i<(arr_child.length); i++ )
		{
			if ( arr_child[i].nodeType == 1)
			{	
				for(var j=0; j<list.length; j++){
					var fetch_attrib 	= (obj.getAttributeNode) ? "getAttributeNode('class').value" : "className";
					var tag_name 		= list[j].str_tag.toUpperCase();
					//be sure to fix with eval
					if ( arr_child[i].tagName==tag_name && (arr_child[i].className.search(list[j].reg_class) > -1))
					{
						//alert(arr_child[i].className);
						list[j].arr_results[list[j].arr_results.length] = arr_child[i];
					}
					else if(tag_name=="" && (arr_child[i].className.search(list[j].reg_class) > -1)){
						//alert(arr_child[i].className+"!");
						list[j].arr_results[list[j].arr_results.length] = arr_child[i];
					}
				}//end for
				if ( arr_child[i].childNodes.length > 0 ){
					exploreAll( arr_child[i], list );
				}
			}//end if nodeType
		}//end for
	}//end if
}


function setupClearText(obj_parent)
{
	if(obj_parent)
	{
		var inputs = toArray(obj_parent.getElementsByTagName("INPUT"));
		var textareas =  toArray(obj_parent.getElementsByTagName("TEXTAREA"));
	}
	else
	{
		var inputs = toArray(document.getElementsByTagName("INPUT"));
		var textareas = toArray(document.getElementsByTagName("TEXTAREA"));
	}		

	inputs = inputs.concat(textareas);
	for(var i=0; i<inputs.length; i++)
	{
		cfg_locations_obj_listen_here = inputs[i];

		if((cfg_locations_obj_listen_here.tagName == "INPUT" || cfg_locations_obj_listen_here.tagName == "TEXTAREA") && cfg_locations_obj_listen_here.className.indexOf("jscleartext")>-1)
		{
			//set default
			if(cfg_locations_obj_listen_here.tagName == "TEXTAREA")
				cfg_locations_obj_listen_here.defaultValue = cfg_locations_obj_listen_here.innerHTML;
		   
		
			if(cfg_locations_obj_listen_here && document.addEventListener){
				cfg_locations_obj_listen_here.addEventListener("focus", cleartext, false);
				cfg_locations_obj_listen_here.addEventListener("blur", restoretext, false);	
				
				//voice over "growfield" event listener
				if (cfg_locations_obj_listen_here.tagName == "INPUT" && (cfg_locations_obj_listen_here.id).indexOf('vof')==0){
			        cfg_locations_obj_listen_here.addEventListener("keypress", growfieldevent, false);
			        cfg_locations_obj_listen_here.addEventListener("focus", growfieldevent, false);
			        growfield(cfg_locations_obj_listen_here);			        
			    }
			    //textarea maxlength enforcer
				else if (cfg_locations_obj_listen_here.tagName == "TEXTAREA"){
					cfg_locations_obj_listen_here.addEventListener("keyup", enforceWordLimit, false);
					cfg_locations_obj_listen_here.addEventListener("blur", enforceWordLimit, false);
				}			    
			    
			}
			//IE
			else if(cfg_locations_obj_listen_here)
			{
				cfg_locations_obj_listen_here.id+" "+cfg_locations_obj_listen_here.attachEvent("onfocus", cleartext);
				cfg_locations_obj_listen_here.attachEvent("onblur", restoretext);
				
				//voice over "growfield" event listener
				if (cfg_locations_obj_listen_here.tagName == "INPUT" && (cfg_locations_obj_listen_here.id).indexOf('vof')==0) {
			        cfg_locations_obj_listen_here.attachEvent("onkeypress", growfieldevent);
			        cfg_locations_obj_listen_here.attachEvent("onfocus", growfieldevent);
			        growfield(cfg_locations_obj_listen_here);
			    }
			    //textarea maxlength enforcer
			    else if (cfg_locations_obj_listen_here.tagName == "TEXTAREA"){
					cfg_locations_obj_listen_here.attachEvent("onkeypress", enforceWordLimit);
					cfg_locations_obj_listen_here.attachEvent("onblur", enforceWordLimit);
				}	
			        	
			}
		}
	}
}
function cleartext(e){
	if(document.addEventListener)
		event_target = e.target;
	else
		event_target = e.srcElement;

	//stop the propagation of the event.
	if (e.stopPropagation) e.stopPropagation();
	else e.cancelBubble = true;
	
	if (event_target.tagName == "INPUT")
	{
		if (event_target.defaultValue == event_target.value) {
			event_target.value = "";
		}
	}
	else if (event_target.tagName == "TEXTAREA")
	{
	if(document.all)
	{
		if(event_target.defaultValue == event_target.innerHTML)
		{
			event_target.value = "";
		}
	}
	else
	{
		if(event_target.defaultValue == event_target.value)
		{
			event_target.value = "";
		}
	}
	}
}
function restoretext(e) {

	if(document.addEventListener)
		event_target = e.target;
	else
		event_target = e.srcElement;

	if (event_target.tagName == "INPUT")
	{
		if (event_target.defaultValue == event_target.value || event_target.value == '') {
			event_target.value = event_target.defaultValue;
		}
	}
	else if (event_target.tagName == "TEXTAREA")
	{
		if (event_target.defaultValue == event_target.value || event_target.value == '') {
			event_target.value = event_target.defaultValue;
			event_target.innerHTML = event_target.defaultValue;
		}
	}
}
function growfieldevent(e){
	if(document.addEventListener) event_target = e.target;
	else event_target = e.srcElement;
	growfield(event_target);
}
function growfield(event_target){
    var min = 125;
    var max = 435;
	var len = ((event_target.value).length+1)*6;
	if (len>max) len =  max+"px";
	else if (len>min) len = len + "px";
	else len = min + "px";
	event_target.style.width = len;
}
/*
 * Function to display or hide page elements
 * @param obj - obj
 *     the obj to show or hide
 */
function display(obj){
	var arr_display_these;//
	var reg_show		= new RegExp(/show_(\d*)/);
	var reg_display		= new RegExp(/display_(\d*)/);
		
	//locate the array of objects to display from arr_findme
	for (var i=0; i<arr_findme.length; i++){
		if (arr_findme[i].str_ident && arr_findme[i].str_ident=="display"){
			arr_display_these = arr_findme[i].arr_results;
		}
	}
	//check for multiple classes of same type and repeat if necessary
	var result = obj.className.split(/\s/);
	for (var j=0; j < result.length; j++) {		
		
		var bar = reg_show.exec(result[j]);
		if (bar!=null){
			str_id=bar[1];
	//get ids of div to be displayed
			for (var i=0; i<arr_display_these.length; i++){
				//alert("!"+arr_display_these[i].className);
				var str_comp = reg_display.exec(arr_display_these[i].className);
				var str_comp = str_comp[1];
		
				if(str_id == str_comp){
					arr_display_these[i].style.display = (arr_display_these[i].style.display=="block") ? "none" : "block";
				}//end if
			}//end for
		}//end if bar
	}//end for
}

function enforceWordLimit(e){
   if(document.addEventListener) event_target = e.target;
   else event_target = e.srcElement;
   var limit = event_target.getAttribute? parseInt(event_target.getAttribute("maxlength")) : 0;
   var iLen = (event_target.value).length;
   if (limit>0 && iLen>=limit){
       event_target.value = (event_target.value).substring(0,limit);
	   return false;
   }
   else return true;
}

    
/*
 * Function to show/hide elements by a selector (requires getelementbyselector.js)
 * @param elem
 *     Returns the current element
 * @param hide_elem
 *     returns the selector of the element to hide
 */
 function show_hide_selector(elem, hide_class) {
	//div = elem.parentNode.parentNode;
	elements = document.getElementsBySelector(hide_class)
	if (elements.length > 0) {
		for (i=0; i<elements.length; i++) {
			if (elements[i].style.display == 'none') {
				if (navigator.userAgent.indexOf("MSIE") != -1) {
					elements[i].style.display = 'block'; // show it to IE, too...
				}
				else {
					elements[i].style.display = 'table-row'; // show it
				}
			}
			else {
				elements[i].style.display = 'none'; // hide it
			}
		}
	}
	img = elem.previousSibling.previousSibling;

	if (img.src.indexOf('minus.gif') != -1) { // swap to plus image
		img.src = 'i/plus.gif';
		img.alt = 'expand';
	}
	else { // swap to minus image
		img.src = 'i/minus.gif';
		img.alt = 'contract';
	}
}


/*
 * Functions to disable/enable form elements
 * @param obj_elem
 *     input element
 */
function toggleInput(obj_elem) {
	//arr_inputs = new Array();
	
	disEnable(obj_elem, "input");
	disEnable(obj_elem, "select");
	disEnable(obj_elem, "textarea");
}

function disEnable(obj_elem, str_tagname)
{
	var arr_inputs = obj_elem.parentNode.parentNode.getElementsByTagName(str_tagname);
	
	for(var i = arr_inputs.length-1; i >= 0 ; i--)
	{
		if(arr_inputs[i] != obj_elem)
		{
			arr_inputs[i].disabled = arr_inputs[i].disabled ? false : true;
			arr_inputs[i].blur();
		}
	}
}

function toArray(obj_list){
	var arr_ofobjects = new Array();
	
	for(var i=0; i<obj_list.length; i++){
		arr_ofobjects[arr_ofobjects.length] = obj_list[i];
	}
	
	return arr_ofobjects;
}

/*
 * Function to assign additional events to checkboxes within a common fieldset
 * @param obj_elem - obj
 *		 the chechbox to which checkall is assigned
 */
 function verifyEvent(obj_elem){
	 var obj_fieldset = obj_elem;

	var found=false;
	 //find fieldset
	 while(!found){
		if(obj_fieldset.tagName == "FIELDSET"){
			found = true;
		}
		else{
			obj_fieldset = obj_fieldset.parentNode;
		}
	 }
	 
	 var arr_inputs = obj_fieldset.getElementsByTagName("input");
	 for(var i=0; i<arr_inputs.length; i++)
	 {
		if(arr_inputs[i].type == "checkbox" && arr_inputs[i]!=obj_elem)
		{
			arr_inputs[i].onclick = function(){verifyMultiple(this)};
		}
	}
 }
 
/*
 * Function to check multiple boxes in a form
 * @param obj_elem - obj
 *     the obj within the fieldset which intiates the action
 */
function checkMultiple(obj_elem)
{
	var arr_inputs = obj_elem.parentNode.parentNode.getElementsByTagName("input");
	for(var i=0; i<arr_inputs.length; i++)
	{
		if(arr_inputs[i].type == "checkbox" && arr_inputs[i]!=obj_elem)
		{
			arr_inputs[i].checked = obj_elem.checked ? true : false;
		}
	}
}

/*
 * Function to check if select all if checked even though not all subsequent boxes are checked
 * @param obj_elem - obj
 *     the obj within the fieldset which intiates the action
 */
 function verifyMultiple(obj_elem)
 {
	if(!obj_elem.checked)
	{
		var arr_inputs = obj_elem.parentNode.parentNode.getElementsByTagName("input");
	
		for(var i=0; i<arr_inputs.length; i++)
		{
			if(arr_inputs[i].className.indexOf("jscheckmultiple")>=0)
			{
				arr_inputs[i].checked = false;
			}
		}
	}
 }

/*
 * Function for image mouseover effect
 * @param img
 *     updates the image source by replacing text in the file name
 */
function imgOver(img){img.src = (img.src).replace("_off","_over");}
function imgOff(img){img.src = (img.src).replace("_over","_off");}

/*
 * Function opening centered pop up windows
 * @param url (string), width (int), height
 *     optional params: resizeable (string:yes|no), scrollbar (string:yes|no), menus (string:yes|no)
 */
function showPopUp(url,w,h){
    var argv = showPopUp.arguments;
    var argc = showPopUp.arguments.length;
    var resizeable = (3< argc) ? argv[3] : "no";
    var scrollbars = (4< argc) ? argv[4] : "no";
    var menus = (5 < argc) ? argv[5] : "no";
    var iTop,iLeft,settings
    var popWin
    iLeft=(screen.width)?(screen.width-w)/2:100;
    iTop=(screen.height)?(screen.height-h)/2:100;
    var settings='width='+w+',height='+h+',top='+iTop+',screenY='+iTop+',left='+iLeft+',screenX='+iLeft+',scrollbars='+scrollbars+',location=no,directories=no,status=no,menubar='+menus+',toolbar='+menus+',resizable='+ resizeable;
    popWin = window.open(url,"",settings);
    popWin.focus();
}
/*
 * Function opening ad preview
 * @param url (string)
 *     analyzes url to determine window size, calls showPopUp
 * returns false to indicate function has been called and anchor click event can be ignored
 */
function showPreview(url){
    var sFormat = url.indexOf("type=wmv")!=-1 ? "wmv" : "mov";
    var sQuality = url.indexOf("quality=high")!=-1 ? "high" : "low";
    var iMargin = 10;
    var iWMVControls = 69;
    var iMOVControls = 16;
    var h,w;
    if (sQuality == "high") {w=400;h=300;}
    else {w=240;h=180;}
    if (sFormat=="wmv") showPopUp(url,eval(w+2*iMargin),eval(h+2*iMargin+iWMVControls));
    else showPopUp(url,eval(w+2*iMargin),eval(h+2*iMargin+iMOVControls));
    return false;
}

/*
 * Function formats currency
 * @param num (int)
 */
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	//cents = num%100;
	num = Math.floor(num/100).toString();
	//if(cents<10)
	//cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num);
}

/*
 * Function formats currency
 * @param num (int)
 */
 
/* 
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}
*/

/*
 * Attach change event handlers to all text/textarea forms[0] fields
 * PS-48 20060808 Created
 * PS-48 20060828 Changed IE event from "onchange" to "onblur". onchange event does not fire if
 *   value is programatically changed (to a valid value) but the user changes the value back 
 *   to the original invalid value.
 */
function addCleanInputTextEventHandlers() {
	var elemCt = document.forms[0].elements.length;
	for (var i = 0; i < elemCt; i++) {
		var elem = document.forms[0].elements[i];
		if (elem != null && elem.type != null && (elem.type == "text" || elem.type == "textarea")) {
			if (document.addEventListener) // Mozilla, etc
				elem.addEventListener("change", cleanInputText, false);
			else // IE
				elem.attachEvent("onblur", cleanInputText);
		}
	}
}

/*
 * For input strings that are not placeholders(e.g. >>SpotRunner<<) and that contain at least one
 * less-than character, replace less-than and greater-than characters with asterisks to avoid 
 * HttpRequestValidationException, which can't be handled in this page's code-behind.
 * @param evt (Event object)
 * PS-48 20060808
 */
function cleanInputText(evt) {
	if (evt != null) {
		if (evt.target) // Mozilla, etc
			elem = evt.target;
		else // IE
			elem = evt.srcElement;

		if (elem != null && elem.value != null && elem.value.length > 0) {
			if (elem.value.search(/^>>[^><]*<<$/) == -1 && elem.value.search(/</) > -1) {
				elem.value = elem.value.replace(/<|>/g, "*");
			}
		}
	}
}

// TFS11688:attach button event to click
function clickButton(e, buttonid){
    var evt = e ? e : window.event;
    var bt = document.getElementById(buttonid);
    if (bt) {
        if (evt.keyCode == 13){
            bt.click();
            return false;
        }
    }
}

// TFS11447:hide status bar
function hideStatusBar() {
    window.status = "";
    return true;
}

function setCookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}
