var errorLine="";

/* DeskflowGeneral.js */


function replaceAll( str, sO, sN ) {try {var sOR = new RegExp(sO,'g');} catch(err) {return str;}if (str==null||str==undefined) return "";try {return str.replace(sOR,sN);} catch(err) {return str;}}
function interrogate(){var what=arguments[0];var doAlert=true;var doValue=false;var returnCount=false;var nestedInterrogate=true;if(arguments.length>=2)doAlert=arguments[1];if(arguments.length>=3)doValue=arguments[2];if(arguments.length>=4)returnCount=arguments[3];if(arguments.length>=5)nestedInterrogate=arguments[4];var c=0;var output='';for(var i in what){c++;if(returnCount){}else{output+=i+'';try{if(doValue){if(what[i]==undefined)output+=' [!undefined!] ';else if(what[i]==null)output+=' [~null~] ';else if(null!==what[i]&&'object'==typeof(what[i]))output+=' [{'+((nestedInterrogate)?interrogate(what[i],false,true,true):"...object...")+'}] ';else if(what[i].toString)output+=' ['+what[i].toString()+'] ';else output+=' [?] ';}}catch(err){output+=' ***'+err.description+'*** ';BBTO_Failure('{'+err.description+'} '+i+' = '+what[i]);}
if(c%5==0){output+='\n';}else output+='  ';}}
if(returnCount){if(doAlert)alert(c);return c;}else{if(doAlert)alert(output);return output;}}
/*
function showHeader(element, floater) {
askElement(a(this),c)}})};a.fn.unmask=function(){a(this).each(function(){a.unmaskElement(a(this))})};a.fn.isMasked=function(){return this.hasClass("masked")};a.maskElement=function(d,c){if(d.data("_mask_timeout")!==undefined){clearTimeout(d.data("_mask_timeout"));d.removeData("_mask_timeout")}if(d.isMasked()){a.unmaskElement(d)}if(d.css("position")=="static"){d.addClass("masked-relative")}d.addClass("masked");var e=a('<div class="loadmask"></div>');if(navigator.userAgent.toLowerCase().indexOf("msie")>-1){e.height(d.height()+parseInt(d.css("padding-top"))+parseInt(d.css("padding-bottom")));e.width(d.width()+parseInt(d.css("padding-left"))+parseInt(d.css("padding-right")))}if(navigator.userAgent.toLowerCase().indexOf("msie 6")>-1){d.find("select").addClass("masked-hidden")}d.append(e);if(c!==undefined){var b=a('<div class="loadmask-msg" style="display:none;"></div>');b.append("<div>"+c+"</div>");d.append(b);b.css("top",Math.round(d.height()/2-(b.height()-parseInt(b.css("padding-top"))-parseInt(b.css("padding-bottom")))/2)+"px");b.css("left",Math.round(d.width()/2-(b.width()-parseInt(b.css("padding-left"))-parseInt(b.css("padding-right")))/2)+"px");b.show()}};a.unmaskElement=function(b){if(b.data("_mask_timeout")!==undefined){clearTimeout(b.data("_mask_timeout"));b.removeData("_mask_timeout")}b.find(".loadmask-msg,.loadmask").remove();b.removeClass("masked");b.removeClass("masked-relative");b.find("select").removeClass("masked-hidden")}})(jQuery);
*/

/*
* jQuery resize event - v1.1 - 3/14/2010
* Copyright (c) 2010 "Cowboy" Ben Alman * Dual licens* ed under the MIT and GPL licenses. * http://benalman.com/about/license/ * http://benalman.com/projects/jquery-resize-plugin/
*/
(function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);

/*
* jQuery floating header plugin v1.4.0
* Licenced under the MIT License * Copyright (c) 2009, 2010, 2011 * Erik Bystrom <erik.bystrom@gmail.com>
*/
/*
jQuery floating header plugin v1.4.0
Licenced under the MIT License	
Copyright (c) 2009, 2010, 2011 
Erik Bystrom <erik.bystrom@gmail.com>

Contributors:
Elias Bergqvist <elias@basilisk.se>
Diego Arbelaez <diegoarbelaez@gmail.com>
Glen Gilbert	
Vasilianskiy Sergey		
Stephen J. Fuhry
Jason Axley
*/ 
(function(f){
	/**
	* Clone the table header floating and binds its to the browser scrolling
	* so that it will be displayed when the original table header is out of sight.
	*
	* The plugin defines two function on the table element.
	* 	fhRecalculate	Recalculates with column widths of the floater.
	*	fhInit			Recreates the floater from the source table header.
	*
	* @param config
	*		An optional dictionary with configuration for the plugin.
	*		
	*		fadeOut		The length of the fade out animation in ms. Default: 200
	*		fadeIn		The length of the face in animation in ms. Default: 200
	*		forceClass	Forces the plugin to use the markerClass instead of thead. Default: false
	*		markerClass The classname to use when marking which table rows that should be floating. Default: floating
	*		floatClass	The class of the div that contains the floating header. The style should
	*					contain an appropriate z-index value. Default: 'floatHeader'
	*		cbFadeOut	A callback that is called when the floating header should be faded out.
	*					The method is called with the wrapped header as argument.
	*		cbFadeIn	A callback that is called when the floating header should be faded in.
	*					The method is called with the wrapped header as argument.
	*		recalculate	Recalculate the column width on every scroll event
	<<<<<<< .mine
	*					Default: true
	=======
	>>>>>>> .r12
	*
	* @version 1.4.0
	* @see http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html
	*/
	errorLine = '10643';
	f.fn.floatHeader = function(config) {
		errorLine = '10644';
		config = f.extend({
			fadeOut: 200,
			fadeIn: 200,
			forceClass: false,
			markerClass: 'floating',
			floatClass: 'floatHeader',
			recalculate: false,
			container: null,
			cloneDataAndEvents:false, cloneDeepDataAndEvents:false,
			IE6Fix_DetectScrollOnBody: true
		}, config);	
		errorLine = '10654';
		return this.each(function () {	
			errorLine = 'return this.each';
			var self = f(this);
			errorLine = 'return this.each.A';
			var tableClone = self[0].cloneNode(config.cloneDataAndEvents,config.cloneDeepDataAndEvents);  
			var table = f(tableClone);
			var sourceId = table.attr("id"); 
			var cloneId =  sourceId + "FloatHeaderClone";
			table.attr("id", cloneId); // change the ID to avoid conflicts
			table.attr("sourceid", sourceId);
			table.parent().remove();   // remove any existing float box divs for this same grid.  we may be reinitializing and don't want to keep adding these to the DOM

			self.floatBox = f('<div class="'+config.floatClass+'"style="display:none"></div>'); /* display:none */
			self.floatBox.append(table);

			errorLine = 'return this.each.B';
			
			//alert('f.browser.msie : '+f.browser.msie+ ' and f.browser.version : '+f.browser.version +' and document.documentMode: '+document.documentMode);
			// Fix for the IE resize handling
			if (!f.browser.msie) {
				config.IE6Fix_DetectScrollOnBody = false;
			} else {
				if (Number(f.browser.version) >= 7) {
					config.IE6Fix_DetectScrollOnBody = false;
				}
			}
			
			if (!self.container && config.container) {
				errorLine = 'return this.each.Aa';
				self.container = true;
				self.scrollElement = config.container;
				self.IEWindowWidth = self.scrollElement.width();
				self.IEWindowHeight = self.scrollElement.height();
			} else {
				errorLine = 'return this.each.Ab';
				self.container = false;
				self.scrollElement = config.IE6Fix_DetectScrollOnBody ? f('body') : f(window);
				self.IEWindowWidth = document.documentElement.clientWidth;
				self.IEWindowHeight = document.documentElement.clientHeight;
			}
			errorLine = 'return this.each.C';
			
			
			// DO NOT create the floater yet.  
			// Lazy-load and create it only when neccessary to improve page load time

			/*
			* This is very specific to IE6 only if using position:fixed fixes.
			* This requires the window overflow to be set to hidden and the
			* containing 'body' tag to have overflow:auto.
			*/
			
			
			errorLine = 'return this.each.E';
			// bind to the scroll event'
			self.scrollElement.scroll(function() {
				errorLine = 'return this.each.F';
				if (self.floatBoxVisible) {		
					if (!showHeader(self, self.floatBox)) {
						errorLine = 'return this.each.G';
						// kill the floatbox	
						var offset = self.offset();
						var floatBoxCss = {'position':'absolute', 'top':0, 'left':0};
						self.floatBox.css(floatBoxCss);
					
						self.floatBoxVisible = false;
						if (config.cbFadeOut) {
							config.cbFadeOut(self.floatBox);
						} else {
							self.floatBox.stop(true, true);
							self.floatBox.fadeOut(config.fadeOut);
						}					
					}
				} else if (showHeader(self, self.floatBox)) {
					// populate the floating header now in case it is needed (lazy load)
					// and only if we haven't yet filled in the header details 
					if (config.cloneDataAndEvents && table.children().length > 0) table.empty();
					if (table.children().length === 0) {
						createFloater(table, self, config);
					}                  
					
					self.floatBoxVisible = true;
					var floatBoxCss = {'position':'absolute', 'top':0, 'left':0};
					self.floatBox.css(floatBoxCss);
					
					errorLine = 'return this.each.I';
					if (config.cbFadeIn) {
						config.cbFadeIn(self.floatBox);
					} else {
						self.floatBox.stop(true, true);					
						self.floatBox.fadeIn(config.fadeIn);
					}
					errorLine = 'return this.each.J';
				}

				// if the box is visible update the position
				errorLine = 'return this.each.K';
				//self.floatBoxVisible = true;
				if (self.floatBoxVisible) {
					
					errorLine = 'return this.each.K';
					
					if (self.container) {
						var floatBoxCss = {'position':'absolute'};
						if (f.browser.msie && Number(f.browser.version) < 7) {
							//<= 7
							floatBoxCss.position='fixed'; 
						}
					
						var offset = self.offset();
						if (self.scrollElement.top) {
							floatBoxCss.top = offset.top+self.scrollElement.top();
						} else if (self.scrollElement.scrollTop) {
							floatBoxCss.top = self.scrollElement.scrollTop();
						}
						floatBoxCss.left=self.position().left;
					} else {
						var floatBoxCss = {'position':'fixed'};
						if (f.browser.msie && Number(f.browser.version) < 7) {
							// <= 7
							floatBoxCss.position='absolute'; 
						}
					
						if (f.browser.msie && Number(f.browser.version) < 7) {
							//<= 7
							floatBoxCss.top = f(window).scrollTop();
						} else {
							floatBoxCss.top = 0;
						}
						floatBoxCss.left = self.offset().left - f(window).scrollLeft();
					}
					errorLine = 'return this.each.M';
					//interrogate(floatBoxCss,true,true);
					self.floatBox.css(floatBoxCss);
					//self.floatBox.css('left', self.scrollElement.left()-self.scrollElement.scrollLeft());			
					if (config.recalculate) {		
						recalculateColumnWidth(table, self, config);
					}
					errorLine = 'return this.each.N';
				}
				errorLine = 'return this.each.O';
			});

			/*
			* Unfortunately IE gets rather stroppy with the non-IE version,
			* constantly resizing, thus cooking your CPU with 100% usage whilest
			* the browser crashes. So, test for IE and add additional code.
			*/
			//if (table.children().length > 0) {
				//createFloater(table, self, config);
			//}
			if (f.browser.msie ) { //&& f.browser.version <= 7
				self.scrollElement.resize(function() {
					errorLineS = 'return this.each.P';
					// Check if the window size has changed ()
					if ((self.IEWindowWidth != f(this).width() ) || (self.IEWindowHeight != f(this).height() )) {
						// Update the client width and height with the Microsoft version.
						self.IEWindowWidth = f(this).width();
						self.IEWindowHeight = f(this).height();

						if (table.children().length > 0) {
							table.empty();
							createFloater(table, self, config);
						}
					}
					errorLineS = 'return this.each.Q';
				});
			} else {
				// bind to the resize event
				self.scrollElement.resize(function() {
					errorLineS = 'return this.each.R';
					// Only redo the header cells if we have created them already
					if (table.children().length > 0) {
						table.empty();
						createFloater(table, self, config);
					}
					errorLineS = 'return this.each.S';
				});
			};			

			// append the floatBox to the dom
			f(self).before(self.floatBox);
			table.empty();
					
			// connect some convenience callbacks
			this.fhRecalculate = function() {
				recalculateColumnWidth(table, self, config);
			};

			this.fhInit = function() {
				// Only redo the header cells if we have created them already
				if (table.children().length > 0) {
					table.empty();
					createFloater(table, self, config);
				}	
			};

			// Creating an alternative to the jquery empty() API that is optimized for cases where you know that there are not any event handlers left on the nodes in the container you are emptying
			// Otherwise, you could experience memory leaks.  empty() is very slow because it has to visit every DOM element and delete it individually.
			// This function will clear out all child elements using DOM APIs. Note:  you CANNOT use innerHTML = '' as a general solution because in IE innerHTML is read-only for many, many container nodes.
			f.fn.fastempty = function() {
				if (this[0]) {
					while (this[0].hasChildNodes()) {
						this[0].removeChild(this[0].lastChild);
					}
				}
				return this;
			};
		});
	};
	errorLine = '10839';
	/**
	* Copies the template and inserts each element into the target.
	*/
	function createFloater(target, template, config) {
		target.width(template.width());
		var items;
		if (!config.forceClass && template.children('thead').length > 0) {
			// set the template to the children of thead
			items = template.children('thead').eq(0).children();
			var thead = f("<thead/>");
			target.append(thead);
			target = thead;
		} else {
			// set the template to the class marking
			items = template.find('.'+config.markerClass);
		}		

		// iterate though each row that should be floating
		items.each(function() {
			var row = f(this);
			//var rowClone = row[0].cloneNode(false);  //config.cloneDataAndEvents,config.cloneDeepDataAndEvents
			var floatRow = f("<tr/>");
			//floatRow.empty();
			errorLine = 'createFloater.I';

			// adjust the column width for each header cell
			//alert('882 :: '+row.children().length);
			row.children().each(function() {
				var cell = f(this);
				//var floatCell = cell[0].cloneNode(config.cloneDataAndEvents,config.cloneDeepDataAndEvents);
				var floatCell = cell.clone(config.cloneDataAndEvents);
				if (floatCell.attr('id')) floatCell.attr('id',floatCell.attr('id')+'Clone');
				floatCell.width(cell.width());
				floatCell.height('auto'); // !important
				//alert('883 :: '+floatCell.html()+' - '+cell.html() );
				if (floatCell.html()!=cell.html()) {
					floatCell.html(cell.html());
				}
				floatRow.append(floatCell);
				
			});

			// append the row to the table
			target.append(floatRow);
		});	
	}
	errorLine = '10892';
	
	/**
	* Recalculates the column widths of the floater.
	*/
	function recalculateColumnWidth(target, template, config) {
		errorLine = 'recalculateColumnWidth.A';
		target.width(template.width());
		var src;
		var dst;
		if (!config.forceClass && template.children('thead').length > 0) {
			src = template.children('thead').eq(0).children().eq(0);
			dst = target.children('thead').eq(0).children().eq(0);
		} else {
			src = template.find('.'+config.markerClass).eq(0);
			dst = target.children().eq(0);
		}

		dst = dst.children().eq(0);
		src.children().each(function(index, element) {
			dst.width(f(element).width());			
			dst = dst.next();
		});
		errorLine = 'recalculateColumnWidth.B';
	}
	errorLine = '10917';
	
	/**
	* Determines if the element is visible
	*/
	function showHeader(element, floater) {
		var tf=true;
		var tfid = "";
		try {
		if (element.container) {
			if (element.scrollElement && element.scrollElement.scrollTop) {
				tf= (element.scrollElement.scrollTop() -floater.height() >=0); //
				tfid = "element.scrollElement.scrollTop";
			} else if (element.parent().scrollTop) {
				tf= (element.parent().scrollTop() -floater.height() >=0); //
				tfid = "element.parent().scrollTop";
			} else if (element.parent().top) {
				tf= (element.parent().top() -floater.height() >=0); //
				tfid = "element.parent().top";
			}
		} else {
			var elem = f(element);
			var top = f(window).scrollTop();
			var y0 = elem.offset().top;
			
			var height = elem.height()-floater.height();
			var foot = elem.children('tfoot');
			if (foot.length > 0) {
				height -= foot.height();
			}
			tf= y0 <= top && top <= y0 + height;
			tfid = "element";
		}
		} finally {
		//alert(tfid+ ' :: '+ tf);
		return tf;
		}
	}
	
})(jQuery);



/* GLOBAL CONSTANTS */
var minPasswordStrength = 0;

function y2k(number)    { return (number < 1000) ? number + 1900 : number; }

var today = new Date();
var day   = today.getDate();
var month = today.getMonth();
var year  = y2k(today.getYear());

function padout(number) { return (number < 10) ? '0' + number : number; }

function getInternetExplorerVersion() {
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer') {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

//Work with "required" fields array
//Javascript_Required_Fields
function fieldRequired( textObj ) {
	var tJRF = ","+Javascript_Required_Fields+",";
	var tFN = ","+textObj.name+",";
	var isRequired = tJRF.indexOf(tFN)>=0;
	if (isRequired) fieldNoReadOnly(textObj);
	return isRequired;
} //function fieldIsEmpty


function fieldExists( textObj ) {
	return (textObj!= undefined)
} //function fieldIsEmpty

function fieldExistsRequired(textObj) {
	if ( fieldExists(textObj) ) {
		return fieldRequired(textObj);
	}
	return false;
}

function fieldExistsRequiredEmpty( textObj ) {
	if ( fieldExistsRequired(textObj) ) {
		return fieldIsEmpty((textObj));

	} else return false;
}

function fieldIsEmpty( textObj ) {
	if (fieldExists(textObj)) {
		if ( (textObj.value==undefined) || (textObj.value == null) || (textObj.value=="") ){
			return true;
		}
		if ( textObj.value.length == 0 ) {
			return true ;
		} else {
			for ( var i = 0 ; i < textObj.value.length ; ++i ) {
				var ch = textObj.value.charAt(i) ;
				if ( ch != ' ' && ch != '\t' ) {
					return false ;
				}
			}
			return true ;
		}
	} else {
		//alert('sss');
	}
} //function fieldIsEmpty

function fieldNoReadOnly( textObj ) {
	if (textObj.disabled) {
		textObj.readonly = false;
		textObj.disabled = false;
		textObj.className="inputBox";
		doHighlightObject(textObj);
	}
}

function selectObjectIsEmpty( selectObj ) {
	if (fieldExists(textObj)) {
		if ( selectObj.selectedIndex == -1 )
			return true ;
		else
			return false ;
	}
} //function selectObjectIsEmpty

function formatPostalCodeByID( idObj, postalCodeFormatType ) {
	var textObj = document.getElementById(idObj);
	return formatPostalCode( textObj, postalCodeFormatType );
}
function formatPostalCode( textObj, postalCodeFormatType ) {
	var postalCodeFormat = '';
	if (postalCodeFormatType=='') {
		return true;
	} else if (postalCodeFormatType=='USCAN') {
		//US and Canada
		var postalCodeFormat = /^((\d{5}-\d{4})|(\d{5})|([AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]\d[A-Za-z]\s?\d[A-Za-z]\d))$/;
	} else if (postalCodeFormatType=='AR') {
		//Argentina
		postalCodeFormat = /^([A-HJ-TP-Z]{1}\d{4}[A-Z]{3}|[a-z]{1}\d{4}[a-hj-tp-z]{3})$/;
	} else if (postalCodeFormatType=='DM') {
		//Dutch
		postalCodeFormat = /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/;
	} else if (postalCodeFormatType=='UK') {
		//UK
		postalCodeFormat = /^[A-Za-z]{1,2}[\d]{1,2}([A-Za-z])?\s?[\d][A-Za-z]{2}$/;
	} else if (postalCodeFormatType=='DE') {
		//Germany
		postalCodeFormat = /\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b/;
	} else if (postalCodeFormatType=='USCANUK') {
		//US, Canada, UK
		postalCodeFormat = /^((\d{5}-\d{4})|(\d{5})|([AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]\d[A-Za-z]\s?\d[A-Za-z]\d)|([A-Za-z]{1,2}[\d]{1,2}([A-Za-z])?\s?[\d][A-Za-z]{2}))$/;
	}
	
	if (postalCodeFormat!='') {
		if (fieldIsEmpty(textObj)) {
			return true;
		} else if (postalCodeFormat.test(textObj.value)) {
			return true;
		} else {
			alert( langDic["Please type your postal / zip code."] );
			return false;
		}
	} else {
		return true;
	}
} //formatPostalCode




function formatPhoneNumberByID( idObj, fIsFaxNumber ) {
	var textObj = document.getElementById(idObj);
	return formatPhoneNumber( textObj, fIsFaxNumber );
}
function formatPhoneNumber( textObj, fIsFaxNumber ) {
	var  sDigitsOnly     = new String() ;
	var  sNewPhoneNumber = new String() ;
	if (textObj==undefined) return;
	if ( textObj.value==undefined) return;
	if ( textObj.value==null) return;
	if ( textObj.value.charAt(0) == "+" ) {
		return;
	}
	for ( var i = 0 ; i < textObj.value.length ; ++i ) {
		var  ch = textObj.value.charAt(i) ;
		if ( ch >= '0' && ch <= '9' )
			sDigitsOnly += ch ;
	}

	if (sDigitsOnly.substring( 0, 3 )=="011") {
		textObj.value = sDigitsOnly ;
		return
	}
	if (sDigitsOnly.substring(0,1)=="1") {
		sDigitsOnly=sDigitsOnly.substring(1,sDigitsOnly.length)
	}
	switch( sDigitsOnly.length ) {
		case 7: {
			var   sTmp = new String() ;
			sTmp = sDigitsOnly.substring( 0, 3 ) ;
			sNewPhoneNumber = sTmp + "-" + sDigitsOnly.substring( 3, 7 ) ;
		}
		break ;
		case 10: {
			var   sAreaCode = new String() ;
			var   sExchange = new String() ;
			sAreaCode = sDigitsOnly.substring( 0, 3 ) ;
			sExchange = sDigitsOnly.substring( 3, 6 ) ;
			sNewPhoneNumber = "(" + sAreaCode + ") " + sExchange + "-" + sDigitsOnly.substring( 6, 10 ) ;
		}
		break ;

		default:
			if ( sDigitsOnly.length < 10 ) {
				sNewPhoneNumber = sDigitsOnly ;
			} else if ( fIsFaxNumber == true ) {
				var   sAreaCode = new String() ;
				var   sExchange = new String() ;

				sAreaCode = sDigitsOnly.substring( 0,  3 ) ;
				sExchange = sDigitsOnly.substring( 3,  6 ) ;
				sNewPhoneNumber  = "(" + sAreaCode + ") " + sExchange + "-" ;
				sNewPhoneNumber += sDigitsOnly.substring( 6, sDigitsOnly.length + 1 ) ;
			} else {
				var   sAreaCode = new String() ;
				var   sExchange = new String() ;
				var   sLastFour = new String() ;

				sAreaCode = sDigitsOnly.substring( 0,  3 ) ;
				sExchange = sDigitsOnly.substring( 3,  6 ) ;
				sLastFour = sDigitsOnly.substring( 6, 10 ) ;

				sNewPhoneNumber  = "(" + sAreaCode + ") " + sExchange + "-" + sLastFour ;
				sNewPhoneNumber += " ext. " + sDigitsOnly.substring( 10, sDigitsOnly.length + 1 ) ;
			}
			break ;
	}
	textObj.value = sNewPhoneNumber ;
} //function formatPhoneNumber

function formatPhoneNumberAUSByID( idObj, fIsFaxNumber ) {
	var textObj = document.getElementById(idObj);
	return formatPhoneNumberAUS( textObj, fIsFaxNumber );
}
function formatPhoneNumberAUS( textObj, fIsFaxNumber ) {
	var  sDigitsOnly     = new String() ;
	var  sNewPhoneNumber = new String() ;

	for ( var i = 0 ; i < textObj.value.length ; ++i ) {
		var  ch = textObj.value.charAt(i) ;
		if ( ch >= '0' && ch <= '9' )
			sDigitsOnly += ch ;
	}

	if (sDigitsOnly.substring( 0, 3 )=="011") {
		textObj.value = sDigitsOnly ;
		return
	}
	if(sDigitsOnly.substring(0,1)=="1") {
		sDigitsOnly=sDigitsOnly.substring(1,sDigitsOnly.length)
	}

	switch( sDigitsOnly.length ) {

		case 7: {
			var   sTmp = new String() ;
			sTmp = sDigitsOnly.substring( 0, 3 ) ;
			sNewPhoneNumber = sTmp + "-" + sDigitsOnly.substring( 3, 7 ) ;
		}
		break ;

		case 10: {
			var   sAreaCode = new String() ;
			var   sExchange = new String() ;
			if ( textObj.name == "CellPhoneNumber") {
				//XXXX XXX XXX
				sAreaCode = sDigitsOnly.substring( 0, 4 ) ;
				sExchange = sDigitsOnly.substring( 4, 7 ) ;
				sNewPhoneNumber = sAreaCode + " " + sExchange + " " + sDigitsOnly.substring( 7, 10 ) ;
			} else {
				//(XX) XXXX XXXX
				sAreaCode = sDigitsOnly.substring( 0, 2 ) ;
				sExchange = sDigitsOnly.substring( 2, 6 ) ;
				sNewPhoneNumber = "(" + sAreaCode + ") " + sExchange + " " + sDigitsOnly.substring( 6, 10 ) ;
			}
		}
		break ;

		case 11: {
			var sIntCCode = new String() ;
			var sIntACode = new String() ;
			var sExchange = new String() ;
			if ( textObj.name == "HomePhoneNumber" || textObj.name == "BusinessPhoneNumber") {
				// +XX X  XXXX XXXX
				sIntCCode = sDigitsOnly.substring( 0, 2 ) ;
				sIntACode = sDigitsOnly.substring( 2, 3 ) ;

				sExchange = sDigitsOnly.substring( 3, 7 ) ;
				sNewPhoneNumber = "+" + sIntCCode + " " + sIntACode+ " " +sExchange + " " + sDigitsOnly.substring( 7, 11 ) ;
			} else {
				sNewPhoneNumber = sDigitsOnly;
			}
		}
		break ;

		case 12: {
			var sIntCCode = new String() ;
			var sIntACode = new String() ;
			var sExchange = new String() ;
			if ( textObj.name == "HomePhoneNumber" || textObj.name == "BusinessPhoneNumber") {
				// +xx xx xxxx xxxx
				sIntCCode = sDigitsOnly.substring( 0, 2 ) ;
				sIntACode = sDigitsOnly.substring( 2, 4 ) ;

				sExchange = sDigitsOnly.substring( 4, 8 ) ;
				sNewPhoneNumber = "+" + sIntCCode + " " + sIntACode+ " " +sExchange + " " + sDigitsOnly.substring( 8, 12 ) ;
			} else {
				sNewPhoneNumber = sDigitsOnly;
			}
		}
		break ;

		default:
			if ( sDigitsOnly.length < 10 ) {
				sNewPhoneNumber = sDigitsOnly ;
			} else if ( fIsFaxNumber == true ) {
				var   sAreaCode = new String() ;
				var   sExchange = new String() ;
				sAreaCode = sDigitsOnly.substring( 0,  3 ) ;
				sExchange = sDigitsOnly.substring( 3,  6 ) ;
				sNewPhoneNumber  = "(" + sAreaCode + ") " + sExchange + "-" ;
				sNewPhoneNumber += sDigitsOnly.substring( 6, sDigitsOnly.length + 1 ) ;
			} else {
				sNewPhoneNumber = sDigitsOnly ;
			}
		break ;
	}
	textObj.value = sNewPhoneNumber ;
} //function formatPhoneNumberAUS

function emailAddressValid( emailStr ) {
	//http://javascript.internet.com/forms/email-address-validation.html?email=larisa%40theshermans.name
	/* The following variable tells the rest of the function whether or not to verify that the address ends in a two-letter country or well-known TLD.  1 means check it, 0 means don't. */
	var checkTLD=1;
	/* The following is the list of known TLDs that an e-mail address must end with. */
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	/* The following pattern is used to check if the entered e-mail address fits the user@domain format.  It also is used to separate the username from the domain. */
	var emailPat=/^(.+)@(.+)$/;
	/* The following string represents the pattern for matching all special characters.  We don't want to allow special characters in the address. These characters include ( ) < > @ , ; : \ " . [ ] */
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	/* The following string represents the range of characters allowed in a username or domainname.  It really states which chars aren't allowed.*/
	var validChars="\[^\\s" + specialChars + "\]";
	/* The following pattern applies if the "user" is a quoted string (in which case, there are no rules about which characters are allowed and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")";
	/* The following pattern applies for domains that are IP addresses, rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	/* The following string represents an atom (basically a series of non-special characters.) */
	var atom=validChars + '+';
	/* The following string represents one word in the typical username. For example, in john.doe@somewhere.com, john and doe are words. Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")";
	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	/* The following pattern describes the structure of a normal symbolic domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	/* Begin with the coarse pattern to simply break up user@domain into different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		/* Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address. */
		//alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			//alert("Ths username contains invalid characters.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			//alert("Ths domain name contains invalid characters.");
			return false;
		}
	}

	// See if "user" is valid 
	if (user.match(userPat)==null) {
		// user is not valid
		//alert("The username doesn't seem to be valid.");
		return false;
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				//alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}

	// Domain is symbolic name.  Check if it's valid.
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			//alert("The domain name does not seem to be valid.");
			return false;
		}
	}

	/* domain name seems valid, but now make sure that it ends in a known top-level domain (like com, edu, gov) or a two-letter word, representing country (uk, nl), and that there's a hostname preceding  the domain or country. */
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	domArr[domArr.length-1].search(knownDomsPat)==-1) {
		//alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}

	// Make sure there's a host name preceding the domain.
	if (len<2) {
		//alert("This address is missing a hostname!");
		return false;
	}

	// If we've gotten this far, everything's valid!
	return true;
} //function emailAddressValid

//--------------

function validateFormSearch( formObj ) {
	rff = formObj.elements["rff"].value;
	if ((rff.length==0) || (rff=='')) {
		return true;
	} else {
		rff = ';' + rff + ';'

		var count = 0;
		for (i=0;i<formObj.length; i++) {
			if ( ((formObj.elements[i].name!='')||(formObj.elements[i].name.length>0)) && (rff.indexOf(';'+formObj.elements[i].name+';')>=0) ) {
				if (formObj.elements[i].type=='text') {
					//Remove * or %
					var rffv = formObj.elements[i].value;
					rffv = rffv.replace(/[ ]/g,'');
					rffv = rffv.replace(/[*]/g,'');
					rffv = rffv.replace(/[%]/g,'');
					formObj.elements[i].value = rffv;
					if ( (rffv.length=0) || (rffv=='') || (rffv = null) ) {
						formObj.elements[i].focus();
						
						alert(langDic['Please enter a value.']);
						return false;
					}
				} else if (formObj.elements[i].type=='select-multiple') {
					var rffv = formObj.elements[i].value;
					rffv = rffv.replace(/[ ]/g,'');
					rffv = rffv.replace(/[*]/g,'');
					rffv = rffv.replace(/[%]/g,'');
					if ( (rffv.length=0) || (rffv=='') || (rffv = null) ) {
						formObj.elements[i].focus();
						alert(langDic['Please select a value.']);
						return false;
					}
				}

			} //if
		} //for
	} //rff
	return true;
} //validateFormSearch

function validateFormData( formObj ) {
	formObjE = formObj.elements["FirstName"];
	if ( fieldExistsRequiredEmpty(formObjE) ) {
		alert(langDic["Please type your first name."]) ;
		formObjE.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.LastName) ) {
		alert( langDic["Please type your last name."] ) ;
		formObj.LastName.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.Address1) ) {
		alert( langDic["Please type your street address."] ) ;
		formObj.Address1.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.City) ) {
		alert( langDic["Please specify city."] ) ;
		formObj.City.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.Province) ) {
		alert( langDic["Please specify province / state / district."] ) ;
		formObj.Province.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.PostalCode) ) {
		alert( langDic["Please type your postal / zip code."] ) ;
		formObj.PostalCode.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.Country) ) {
		alert( langDic["Please specify country."] ) ;
		formObj.Country.focus() ;
		return false ;
	}

	if ( fieldExistsRequiredEmpty(formObj.HomePhoneNumber) ) {
		alert( langDic["Please type your home phone number."] ) ;
		formObj.HomePhoneNumber.focus() ;
		return false ;
	}
	
	if ( fieldExistsRequiredEmpty(formObj.BusinessPhoneNumber) ) {
		alert( langDic["Please type your business phone number."] ) ;
		formObj.BusinessPhoneNumber.focus() ;
		return false ;
	}
	if ( fieldExistsRequiredEmpty(formObj.CellPhoneNumber) ) {
		alert( langDic["Please type your mobile phone number."] ) ;
		formObj.CellPhoneNumber.focus() ;
		return false ;
	}
	
	if ( fieldExistsRequiredEmpty(formObj.HomePhoneNumber) && fieldExistsRequiredEmpty(formObj.CellPhoneNumber)) {
		alert(langDic["Please type either your home or mobile phone number."]);
		formObj.HomePhoneNumber.focus();
		return false;
	}

	if (!EmailAddressUnqiueChecker_TF) {
		alert(langDic["E-Mail address is invalid. Please type a valid e-mail address."]) ;
		formObj.EMailAddress.focus() ;
		return false ;
	}
	if ( fieldExistsRequiredEmpty(formObj.EMailAddress) ) {
		alert( langDic["Please type your e-mail address."] ) ;
		formObj.EMailAddress.focus() ;
		return false ;
	} else if ( fieldExists(formObj.EMailAddress) ) {if ( !emailAddressValid(formObj.EMailAddress.value) ) {
		alert( langDic["E-Mail address is invalid. Please type a valid e-mail address."] ) ;
		formObj.EMailAddress.focus() ;
		return false ;
	} }

	if ( fieldExistsRequiredEmpty(formObj.Origin2) ) {
		alert( langDic["Please specify how you found the site."] ) ;
		formObj.Origin2.focus() ;
		return false ;
	}

	
	//Education_Position_Required_Count
	//Education History #1
	var field_Suffix = '';

	if (typeof Education_Position_Required_Count=="number") for (var x = 1; x <= Education_Position_Required_Count; x++) {

		field_Suffix = '_' + x +'';
		formObjE = formObj.elements["Degree"+field_Suffix];
		if ((Education_Position_Required_Count==1) && (fieldExists(formObjE)==false)) {
			field_Suffix = '_';
		}

		formObjE = formObj.elements["Degree"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a degree type."] ) ;
			formObjE.focus() ;
			return false ;
		}

		formObjE = formObj.elements["DegreeName"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a degree name."] ) ;
			formObjE.focus() ;
			return false ;
		}

		formObjE = formObj.elements["Major"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a major."] ) ;
			formObjE.focus() ;
			return false ;
		}
		
		formObjE = formObj.elements["GPA"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify your GPA."] ) ;
			formObjE.focus() ;
			return false ;
		}

		formObjE = formObj.elements["GradDate"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify your graduation date."] ) ;
			formObjE.focus() ;
			return false ;
		}

		formObjE = formObj.elements["Institution"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a university."] ) ;
			formObjE.focus() ;
			return false ;
		}
	} // FOR - EDUCATION

	//Current Employment
	//Employment_Position_Required_Count
	var field_Suffix = '';
	if (typeof Employment_Position_Required_Count=="number") for (var x = 1; x <= Employment_Position_Required_Count; x++) {

		if (x==1) {
			field_Suffix = ''
		} else {
			field_Suffix = '_' + (x-1) +'';
		}

		/*
		field_Suffix = '_' + x +'';
		formObjE = formObj.elements["Degree"+field_Suffix];
		if ((Education_Position_Required_Count==1) && (fieldExists(formObjE)==false)) {
			field_Suffix = '_';
		}
		*/

		
		formObjE = formObj.elements["StartDateMonth"+field_Suffix];
		if ( fieldExistsRequired(formObjE) ) {
			if (fieldExistsRequiredEmpty(formObjE)) {
				alert( langDic["Please specify a month for your most recent position."]+" {StartDateMonth"+field_Suffix+"}" ) ;
				formObjE.focus() ;
				return false ;
			}
		}
		formObjE = formObj.elements["StartEmpYear"+field_Suffix];
		if ( fieldExistsRequired(formObjE) ){
			if (fieldExistsRequiredEmpty(formObjE)) {
				alert( langDic["Please specify a year for your most recent position."] ) ;
				formObjE.focus() ;
				return false ;
			}
		} else {
			formObjE = formObj.elements["StartEmpYear"+field_Suffix];
			if ( (fieldIsEmpty(formObjE)) && (fieldIsEmpty(formObj.elements["StartDateMonth"+field_Suffix])) ) {
				//Do nothing
			} else {
				if ( fieldExists(formObjE) ) {
					if (formObjE.value < 1900 || formObj.elements["StartEmpYear"].value > 2100){
						alert(langDic["Employment Start Date : Invalid date range."]);
						formObjE.focus();
						return false;
					}

					formObjE = formObj.elements["StartDate"+field_Suffix];
					if ( fieldExists(formObjE) ) {
					formObjE.value = formObj.elements["StartDateMonth"+field_Suffix].value + "/" +
						formObj.elements["StartDateDay"+field_Suffix].value + "/" + formObj.elements["StartEmpYear"+field_Suffix].value ;
					}
				}
			}
		}

		formObjE = formObj.elements["EndEmpYear"+field_Suffix];
		if ( fieldExistsRequired(formObjE) ) {
			if (formObjE.value < 1900 || formObjE.value > 2100){
				alert(langDic["Employment End Date : Invalid date range."]);
				formObjE.focus();
				return false;
			}
			//Check for endate
			formObjE = formObj.elements["EndDate"+field_Suffix];
			if ( fieldExists(formObjE) ) {
				if (formObj.elements["EndDateMonth"+field_Suffix].value == "" || formObj.elements["EndEmpYear"+field_Suffix].value == "") {
					formObjE.value = "";
				} else {
					formObjE.value = formObj.elements["EndDateMonth"+field_Suffix].value + "/" + formObj.elements["EndDateDay"+field_Suffix].value + "/" + formObj.elements["EndEmpYear"+field_Suffix].value;
				}
			}
		}

		formObjE = formObj.elements["PositionTitle"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a position title for your current position."] ) ;
			formObjE.focus() ;
			return false;
		}

		formObjE = formObj.elements["CompanyName"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a company name for your current position."] ) ;
			formObjE.focus() ;
			return false ;
		}

		formObjE = formObj.elements["RoleCode1"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify a Job Function."] ) ;
			formObjE.focus() ;
			return false ;
		}
		
		formObjE = formObj.elements["Salary"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify the Salary for the Position."] ) ;
			formObjE.focus() ;
			return false ;
		}
		formObjE = formObj.elements["PayRate"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify the Pay Rate for the Position."] ) ;
			formObjE.focus() ;
			return false ;
		}
		formObjE = formObj.elements["Bonus"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify the Bonus for the Position."] ) ;
			formObjE.focus() ;
			return false ;
		}
		formObjE = formObj.elements["BonusHigh"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify the Maximum Bonus for the Position."] ) ;
			formObjE.focus() ;
			return false ;
		}
		formObjE = formObj.elements["TotalCompensation"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify the Total Compensation for the Position."] ) ;
			formObjE.focus() ;
			return false ;
		}
		formObjE = formObj.elements["TotalCompHigh"+field_Suffix];
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please specify the Maximum Total Compensation for the Position."] ) ;
			formObjE.focus() ;
			return false ;
		}

	} //FOR - EMPLOYMENT

	if ( fieldExistsRequiredEmpty(formObj.ResumeDoc) ) {
		alert( langDic["Please provide a resume for upload to our site."] ) ;
		formObj.ResumeDoc.focus() ;
		return false ;
	} else {
		if ( (fieldExists(formObj.ResumeDoc)) && (fieldIsEmpty(formObj.ResumeDoc)==false) ) {
			if ( !resumeValid(formObj, formObj.ResumeDoc.value) ) {
				alert( resumeNotValidErrorMessage(formObj) );
				formObj.ResumeDoc.focus() ;
				return false ;
			}
		}
	}

	// Username - Passowrd
	formObjE = formObj.elements["LoginName"];
	if (formObjE!=undefined) {
		if ( fieldExistsRequiredEmpty(formObjE) ) {
			alert( langDic["Please type the Login Name to use to update your information."] ) ;
			formObjE.focus() ;
			return false ;
		}
	}
	formObjE1 = formObj.elements["Password"];
	if (formObjE1!=undefined) {
		if ( fieldExistsRequiredEmpty(formObjE1) ) {
			alert( langDic["Please type the Password to use to update your information."] ) ;
			formObjE1.focus() ;
			return false ;
		}
		if (minPasswordStrength>=0 && minPasswordStrength>getPasswordStrength( formObjE1.value ) ) {
			alert( langDic["The password provided is not strong enough.  Please add numbers and other non-alphabetical characters like !."] ) ;
			formObjE1.focus() ;
			return false ;
		}
		formObjE2 = formObj.elements["Password2"];
		if ( fieldExistsRequiredEmpty(formObjE2) ) {
			alert( langDic["Please re-type the Password to use to update your information."] ) ;
			formObjE2.focus() ;
			return false ;
		}
		if ( fieldExists(formObjE1) && fieldExists(formObjE2) ) {
			if (formObjE1.value!=formObjE2.value) {
				alert( langDic["Please verify that both Password values are identical."] ) ;
				formObjE2.focus();
				return false ;
			}
		}
	}
	if (fieldExists(formObj.waiver)) {
		if ( !formObj.waiver.checked ) {
			alert(langDic["This application will not be submitted unless you certify that you have read and understand all matters discussed in the Privacy Policy and User Terms and Conditions Agreement."] );
			return false;
		}
	}
	return true ;
}

function resumeValid(formObj, sResumeFileSpec ) {
	var  iExtensionPos = sResumeFileSpec.lastIndexOf( "." ) ;
	if ( iExtensionPos == -1 )
		return false ;

	var sExtension = new String() ;
	sExtension = sResumeFileSpec.substring(iExtensionPos, sResumeFileSpec.length + 1).toLowerCase() ;
	sValidExtensions = ".doc.docx.txt.rtf.pdf.htm.html.";
	if ( fieldExists( formObj.elements["Resume_FileExt_Type"]) ) {
		var resumeFileExtType = formObj.elements["Resume_FileExt_Type"].value;
		if (resumeFileExtType=="MSDOC")
			sValidExtensions = ".doc.docx.";
		else if (resumeFileExtType=="PDF")
			sValidExtensions = ".pdf.";
		else if (resumeFileExtType=="MSDOCPDF")
			sValidExtensions = ".doc.docx.txt.rtf.pdf.";
	}
	var resumeFileExtTF = ((sValidExtensions.indexOf(sExtension+"."))>=0);
	//if (!resumeFileExtTF) {
	//	alert('sValidExtensions:= '+sValidExtensions+' :: sExtension:= '+sExtension+'! ['+sValidExtensions.indexOf(sExtension+".")+']');
	//}
	return resumeFileExtTF;
}

function resumeNotValidErrorMessage(formObj) {
	resumeErrorStr = langDic["We only support resumes of the following format:"]+" .doc, .txt, .pdf, .htm, .html and .rtf.";
	if ( fieldExists( formObj.elements["Resume_FileExt_Type"]) ) {
		var resumeFileExtType = formObj.elements["Resume_FileExt_Type"].value;
		if (resumeFileExtType=="MSDOC")
			resumeErrorStr = langDic["We only support resumes of the following format:"]+" .doc.";
		else if (resumeFileExtType=="PDF")
			resumeErrorStr = langDic["We only support resumes of the following format:"]+" .pdf.";
		else if (resumeFileExtType=="MSDOCPDF")
			resumeErrorStr = langDic["We only support resumes of the following format:"]+" .doc, .txt, .rtf, .pdf";
	}
	return resumeErrorStr;
}


function onCheckNum(o,theMin, theMax) {
	if(isNaN(o.value)){
		alert(langDic["Please enter a numeric value."]); 
		o.value=""; 
		return false;
	}else if (parseFloat(o.value)<theMin || parseFloat(o.value)>theMax){
		alert(langDic["The value given is out of range of"]+" "+theMin+" - "+theMax+"!");
		if (parseFloat(o.value)<=theMin) o.value = theMin;
		if (parseFloat(o.value)>=theMax) o.value = theMax;
		return false;
	}
	var chkboxname = o.name.replace('SQ3','SQ1')+'';
	o.form.elements[chkboxname].checked = true;
	return true;
}


// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
	for (i = 0; i < s.length; i++){
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
} //function isInteger

function stripCharsInBag(s, bag){
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
} //function stripCharsInBag

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
	}
	return this
} //function DaysArray

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	mymonth=parseInt(strMonth)
	myday=parseInt(strDay)
	myyear=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert(langDic["The date format should be :"]+" mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || mymonth<1 || mymonth>12){
		alert(langDic["Please enter a valid month."])
		return false
	}
	if (strDay.length<1 || myday<1 || myday>31 || (mymonth==2 && myday>daysInFebruary(year)) || myday > daysInMonth[strMonth]){
		alert(langDic["Please enter a valid day."])
		return false
	}
	if (strYear.length != 4 || myyear==0 || myyear<minYear || myyear>maxYear){
		alert(langDic["Please enter a valid 4 digit year between"]+" "+minYear+" "+langDic["and"]+" "+maxYear+".")
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert(langDic["Please enter a valid date."])
		return false
	}
	return true
} //function isDate


function myForbidden() {
	document.applicationForm.StartDate.disabled=true;
	document.applicationForm.EndDate.disabled=true;
	document.applicationForm.FirstName.focus();
return true;
} //function myForbidden


/* ************************************************************
Created: 20060120Author:  Steve Moitozo <god at zilla dot us> -- geekwisdom.comDescription: This is a quick and dirty password quality meter written in JavaScript so that the password does not pass over the network.License: MIT License (see below)Modified: 20060620 - added MIT LicenseModified: 20061111 - corrected regex for letters and numbersThanks to Zack Smith -- zacksmithdesign.com---------------------------------------------------------------Copyright (c) 2006 Steve Moitozo <god at zilla dot us>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------------
************************************************************ */
function updateStrength(objP) {
	var pValue = 0;
	if (objP.value!=undefined) { 
		pValue = getPasswordStrength(objP.value); 
		//Now look up common field values
	}
	
	var pWidth = (100/40)*pValue;
	var objS = document.getElementById('psStrength'+objP.name+'');
	if (pWidth>= 100) pWidth = 100;
	objS.style.width = pWidth+'px';
	
	var objS = document.getElementById('psPercentValue'+objP.name+'');
	if (objS!=undefined) {
		objS.value = Math.round((pValue/50) * 100);
	}
	var objS = document.getElementById('psNumberValue'+objP.name+'');
	if (objS!=undefined) {
		if (pValue>50) pValue = 50;
		objS.value = pValue;
	}
	var objS = document.getElementById('psTextLabelValue'+objP.name+'');
	if (objS!=undefined) {
		objS.value = strVerdict;
	}
}
var intScore   = 0
var strVerdict = "weak"	
function getPasswordStrength(passwd){
	var strLog     = ""
	intScore   = 0
	strVerdict = "weak"	
	
	// PASSWORD LENGTH
	if (passwd.length==0)                         // length 4 or less
	{
	
	}
	else if (passwd.length<5)                         // length 4 or less
	{
		intScore = (intScore+3)
		strLog   = strLog + "3 points for length (" + passwd.length + ")\n"
	}
	else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
	{
		intScore = (intScore+6)
		strLog   = strLog + "6 points for length (" + passwd.length + ")\n"
	}
	else if (passwd.length>7 && passwd.length<16)// length between 8 and 15
	{
		intScore = (intScore+12)
		strLog   = strLog + "12 points for length (" + passwd.length + ")\n"
	}
	else if (passwd.length>15)                    // length 16 or more
	{
		intScore = (intScore+18)
		strLog   = strLog + "18 point for length (" + passwd.length + ")\n"
	}
	
	
	 // LETTERS
	if (passwd.match(/[a-z]/)) // [verified] at least one lower case letter
	{
	intScore = (intScore+1)
	} if (passwd.match(/[A-Z]/)) // [verified] at least one upper case letter
	{
	intScore = (intScore+5)
	} // NUMBERS
	if (passwd.match(/\d+/)) // [verified] at least one number
	{
	intScore = (intScore+5)
	} if (passwd.match(/(\d.*\d.*\d)/)) // [verified] at least three numbers
	{
	intScore = (intScore+5)
	} // SPECIAL CHAR
	if (passwd.match(/[!,@#$%^&*?_~]/)) // [verified] at least one special character
	{
	intScore = (intScore+5)
	} if (passwd.match(/([!,@#$%^&*?_~].*[!,@#$%^&*?_~])/)) // [verified] at least two special characters
	{
	intScore = (intScore+5)
	} // COMBOS
	if (passwd.match(/[a-z]/) && passwd.match(/[A-Z]/)) // [verified] both upper and lower case
	{
	intScore = (intScore+2)
	} if (passwd.match(/\d/) && passwd.match(/\D/)) // [verified] both letters and numbers
	{
	intScore = (intScore+2)
	} // [Verified] Upper Letters, Lower Letters, numbers and special characters
	if (passwd.match(/[a-z]/) && passwd.match(/[A-Z]/) && passwd.match(/\d/) && passwd.match(/[!,@#$%^&*?_~]/))
	{
	intScore = (intScore+2)
	}

	if (intScore>0 && checkFieldContent!=undefined) {
		if (checkFields='Y' && checkFieldContent!='') {
			fcA = checkFieldContent.split(',');
			var fcC = fcA.length;
			var fcWords = new Array();
			var fcWordsC = -1;
			for (var A = 0; A < fcC; A++) { 
				var objW = document.getElementById(fcA[A]);
				if (objW!=undefined) {
					var objWv = objW.value;
					if (objWv!='' && objWv!=null) {
						objWv = objWv.toLowerCase();
						fcWordsC = fcWordsC + 1;
						fcWords[fcWordsC] = '';
						for (var W = 0; W < objWv.length; W++) {
							if ((objWv[W]>='a' && objWv[W]<='z') || (objWv[W]>='0' && objWv[W]<='9')) {
								fcWords[fcWordsC] = fcWords[fcWordsC]+objWv[W];
							} else {
								fcWordsC = fcWordsC + 1;
								fcWords[fcWordsC] = '';
							} //if
						} //for
					} // null
				} // undefined
			} //loop
			var objPv = passwd;
			var objPv = objPv.toLowerCase();
			
			for (var W = 0; W < fcWords.length; W++) {
				if (objPv.indexOf(fcWords[W])>=0) {
					intScore = intScore - fcWords[W].length;
					if (objPv.indexOf(fcWords[W])==0) intScore = intScore - fcWords[W].length;
					if (objPv==fcWords[W]) intScore = 0;
					if (intScore<0) intScore = 0;
				}
			}
		}
	}
	
	if(intScore < 10)
	{
	   strVerdict = langDic["very weak"];
	}
	else if (intScore > 11 && intScore <= 17)
	{
	   strVerdict = langDic["weak"];
	}
	else if (intScore > 18 && intScore <= 25)
	{
	   strVerdict = langDic["mediocre"];
	}
	else if (intScore > 26 && intScore <= 34)
	{
	   strVerdict = langDic["strong"];
	}
	else if (intScore > 34 && intScore <= 45)
	{
	   strVerdict = langDic["stronger"];
	}
	else
	{
	   strVerdict = langDic["very strong"];
	}
	return intScore;
}	

function showNextPanelClick(panelType,panelID) {
	if (panelType=='edu') {
		var btn = document.getElementById('EducationShow'+panelID+'');
		btn.style.display='none';
		var pnl = document.getElementById('educationpanel_'+(panelID+1)+'');
		pnl.style.display='inline';
	} else if (panelType=='emp') {
		var btn = document.getElementById('EmploymentShow'+panelID+'');
		btn.style.display='none';
		var pnl = document.getElementById('employmentpanel_'+(panelID+1)+'');
		pnl.style.display='inline';
	}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


var EmailAddressUnqiueChecker_TF = true;
var EmailAddressUnqiue_RT = "";
var EmailAddressUnqiue_AN = "";
var EmailAddressUnqiue_WI = -1;
function EmailAddressUnqiueChecker() {
	var edtEM = document.getElementById('EMailAddress');
	if (edtEM==undefined) return false;
	if (fieldIsEmpty(edtEM)) return false;
	if  (document.getElementById('ajaxEmailAddressResults')!=undefined) return false;
	
	var divResult = document.createElement('div');
	divResult.setAttribute('id','ajaxEmailAddressResults');
	divResult.innerHTML = '';
	edtEM.parentNode.appendChild(divResult);
	
	jQuery("#EMailAddress").change(function() {
		ajaxEmailAddressUnqiueChecker();
	});
	/*
	if (document.addEventListener) {
		edtEM.addEventListener( 'change', ajaxEmailAddressUnqiueChecker, false );
		edtEM.addEventListener( 'blur', ajaxEmailAddressUnqiueChecker, false );
	} else {
		edtEM.attachEvent( 'onchange', ajaxEmailAddressUnqiueChecker, false );
		edtEM.attachEvent( 'onblur', ajaxEmailAddressUnqiueChecker, false );
	}
	*/
}
function ajaxEmailAddressUnqiueChecker() {
	//execute the AJAX code here
	e_url = "/_includes/client/_ajaxrequest.asp"
	e_form_params = "ajaxrequesttype="+EmailAddressUnqiue_RT+""+
		"&an="+EmailAddressUnqiue_AN+""+
		"&wi="+EmailAddressUnqiue_WI+""
	;
	var e_obj = document.getElementById('EMailAddress');
	if (e_obj!=undefined) e_form_params = e_form_params+'&ApplicationEmailAddress='+e_obj.value;
	
	var e_obj = document.getElementById('txtrq__LoginName');
	if (e_obj!=undefined) e_form_params = e_form_params+'&ApplicationLoginName='+e_obj.value;
	var e_obj = document.getElementById('entxt__LoginName');
	if (e_obj!=undefined) e_form_params = e_form_params+'&ApplicationLoginName='+e_obj.value;
	YAHOO.util.Connect.asyncRequest('POST', e_url, cbExistingEmailAddress,e_form_params);
	if(YAHOO.util.Connect.isCallInProgress(cbExistingEmailAddress)) {
		YAHOO.util.Connect.abort(cbExistingEmailAddress);
	}
	return false;
}

var cbExistingEmailAddress = { 
	success: ajaxEmailAddressUnqiue_success, 
	failure: ajaxEmailAddressUnqiue_failure, 
	argument:['wrkflw','web'],
	timeout: 50000
} 

function ajaxEmailAddressUnqiue_success(o) {
	if (o.responseText=='!') {
		ajaxEmailAddressUnqiue_failure(o);
		return false;
	}
	var divEmail = document.getElementById('ajaxEmailAddressResults');
	if (divEmail==undefined) return false;
	if (o.responseText=='OK') {
		divEmail.innerHTML='';
		EmailAddressUnqiueChecker_TF = true;
	} else {
		divEmail.innerHTML= o.responseText;
		EmailAddressUnqiueChecker_TF = false;
	}
}
function ajaxEmailAddressUnqiue_failure(o) { alert(langDic['Error in checking for duplicate email address.']); }


function doAutoHeight(e) {
	if(e.contentDocument){
		jQuery(e).height(e.contentDocument.body.offsetHeight + 35);
	} else {
		jQuery(e).height(e.contentWindow.document.body.scrollHeight)+35;
	}
}

function setResizeWidth() {
	//label.inputLabelRight,
	jQuery('.inputLabelRight,.inputBox:not(.resizeWidth,.inputSkill)').each(function(){
		var dW = jQuery(document).find("body").width();
		var t = jQuery(this);
		var selL = t.offset().left;
		var selW = t.width();
		//if (t.context && t.context.scrollWidth>selW) selW=t.context.scrollWidth;
		if (selL+selW>dW) {
			t.addClass('resizeWidth')
			t.attr('data-origSize',selW)
		}
	});
}

function setSovernXML() {
	var x = jQuery(jQuery("#iframeSovernUpload").contents().find("#wfi-SovernXML"));
	x.find('description').empty();
	jQuery('#FirstName').val( x.find('personname > givenname').html() );
	jQuery('#Initials').val( x.find('personname > middlename').html() );
	jQuery('#LastName').val( x.find('personname > familyname').html() );
	
	jQuery('#Address1').val( x.find('postaladdress > deliveryaddress > addressline').html() );
	jQuery('#City').val( x.find('postaladdress > municipality').html() );
	jQuery('#PostalCode').val( x.find('postaladdress > postalcode').html() );
	jQuery('#Country').val( x.find('postaladdress > countrycode').html() );
	jQuery('#Province').val( x.find('postaladdress > region').html() );
	
	jQuery('#EMailAddress').val( x.find('contactmethod > internetemailaddress').html() );
	var telA = ('HomePhoneNumber,BusinessPhoneNumber,CellPhoneNumber').split(',');
	x.find('contactmethod > telephone').each(function(i) {
		jQuery('#'+telA[i]+'' ).val( jQuery(this).find('formattednumber').html() );
	});
	
	var empA = (',_1,_2').split(',');
	x.find('employmenthistory > employerorg').each(function(i) {
		if (empA[i]==undefined) return;
		if (empA[i]==null) empA[i]='';
		var t=jQuery(this);
		jQuery('#CompanyName'+empA[i]).val( t.find('employerorgname').html() );
		var sD = new Date( t.find('startdate > anydate').html() );
		jQuery('select[name="StartDateMonth'+empA[i]+'"]').val( sD.getMonth()+'' );
		jQuery('input[name="StartEmpYear'+empA[i]+'"]').val( sD.getFullYear() );
		
		var eD = new Date( t.find('enddate > anydate').html() );
		jQuery('select[name="EndDateMonth'+empA[i]+'"]').val( eD.getMonth()+'' );
		jQuery('input[name="EndEmpYear'+empA[i]+'"]').val( eD.getFullYear() );
	});
	x.find('employmenthistory').empty();
	
	var eduA = ('_1,_2,_3').split(',');
	x.find('educationhistory > schoolorinstitution').each(function(i) {
		if (eduA[i]==undefined) return;
		var t=jQuery(this);
	
		jQuery('#Degree'+eduA[i]+'').val( t.find('degreename').html() );
		jQuery('#DegreeName'+eduA[i]+'').val(t.find('degreename').html() );
		jQuery('#Major'+eduA[i]+'').val( t.find('degreemajor > name').html() );
		jQuery('#GPA'+eduA[i]+'').val( t.find('measurevalue > stringvalue').html() );
		//jQuery('#GradDate'+eduA[i]+'').val(
		jQuery('#Institution'+eduA[i]+'').val( t.find('schoolname').html() );
		
	});
	x.find('educationhistory').empty();
	jQuery('#collapselabelresume').hide();
	jQuery('#collapsecomponentresume').hide();
	if ((','+Javascript_Required_Fields+',').indexOf(',ResumeDoc,')>=0) {
		Javascript_Required_Fields = (','+Javascript_Required_Fields+',').replace(',ResumeDoc,',',');
		Javascript_Required_Fields = Javascript_Required_Fields.substring(1,Javascript_Required_Fields.length-1);
		AJavascript_Required_Fields = Javascript_Required_Fields.split(',');
	}
	hideSovernUploadMask();
	//alert(jQuery("#iframeSovernUpload").contents().find("#wfi-SovernXML").html());
	
}

jQuery.fn.ie7fix = function(){
    if (!(jQuery.browser.msie && jQuery.browser.version == "7.0")) return jQuery(this);
    return jQuery(this).hide().show();
};
function hideSovernUploadMask() { if (jQuery.unmask) jQuery('#bodySovernUpload').unmask(); }
function showSovernUploadMask() { if (jQuery.mask) jQuery('#bodySovernUpload').mask(' '); }
	
jQuery(document).ready(function() {
	jQuery('.inputFloatLeft').css('float','left');
	jQuery('.labelFloatLeft').css('float','left');
	jQuery('.labelFloatLeft').css('position','inherit');
	jQuery('.labelFloatLeft').css('padding-left','5px');
	jQuery('.labelFloatLeft').css('padding-bottom','2px');
	jQuery('.inputLabelRight').css('float','left');
	
	jQuery(".wfi-tablefloatercontainer").each(function() {
		var fId = jQuery(this).attr('floatId');
		if (jQuery("#"+fId+"FloatHeaderClone" ).length==0) jQuery("#"+fId ).floatHeader({
			fadeIn: 250, fadeOut: 250,floatClass:'wfi-tablefloating', recalculate:true /* ,container: jQuery("#"+fId ).parent() */
		});
	});
	
	jQuery(".wfi-customfilterlayout-source").each(function() { 
		writeFilterLayout(this); 
		jQuery(this).empty(); 
		jQuery(this).removeClass('wfi-customfilterlayout-source'); 
	});
	
	if (jQuery('base').length>0) {
		jQuery('a[href*="mailto:"]').each(function() {
			var email = jQuery(this).attr('href').split('mailto:');
			jQuery(this).removeAttr('href')
				.attr('mailto',email[1])
				.attr('target','_blank')
			jQuery(this).click(function() { window.open( 'mailto:'+ jQuery(this).attr('mailto')); });
		});
		
		jQuery('a[href*="javascript:"]').each(function() {
			var js = jQuery(this).attr('href').split('javascript:');
			jQuery(this).attr('js',email[1])
				.removeAttr('href');
			if (js[1].indexOf('void')>=0) {
				jQuery(this).removeAttr('js');
			} else {
				jQuery(this).click(function() { eval( jQuery(this).attr('js') ); });
			}
		});
	}
	
	
	jQuery('iframe.iframe-embedded').load(function(){
		//alert('iframe loaded ::'+ jQuery(this).attr('wfi-target'));
		var h = jQuery(this).contents().find("div#workflow").clone(true);
		h.find("script").remove();
		
		h.find("form").each(function() {
			jQuery(this).attr('action', replaceAll(jQuery(this).attr('action'),"iframe","noiframe"));
			jQuery(this).find('input[name="iframe"]').remove();
		});
		var t = jQuery("#"+jQuery(this).attr('wfi-target'));
		t.hide();
		t.append(h);
		t.fadeIn('slow');
		//[name="FilterJobForm"]
		jQuery(this).hide();
		//t.append( jQuery(this).contents().find("div#workflow").html() );
		//wfi-target
	});

	if (jQuery("#linkedin-button-pre").length>0) {
		var linkedInTop = jQuery(".wfi-componentlinkedin:first").position().top+10;
			jQuery(".wfi-componentlinkedin").each(function() {
				linkedInTop+= jQuery(this).height();
			});
		jQuery("<style type='text/css'>.IN-canvas iframe,.IN-noshadow iframe {left:0 !important;top:"+linkedInTop+"px !important;}</style>").appendTo("head");
	}
	
	populateSovernUpload = function() {
		jQuery("#iframeSovernUpload").width( jQuery("#iframeSovernUpload").parentsUntil('table').parent().width() );
		jQuery('#iframeSovernUpload').contents().find('#handleSovernUpload').html( jQuery('#bodySovernUpload').html() );
		
		jQuery('#iframeSovernUpload').height( jQuery('#bodySovernUpload').height()+25 );
		jQuery('#bodySovernUpload').empty();
		jQuery('#iframeSovernUpload').show();
		
	};
	if (jQuery('#iframeSovernUpload').length>0) {
		
		if (jQuery('#bodySovernUpload').length>0) {
			if (jQuery('#iframeSovernUpload').contents().find('#handleSovernUpload').length>0) {
				populateSovernUpload();
			} else {
				jQuery('#iframeSovernUpload').load(populateSovernUpload);
			}
		}
	}
	
	if (jQuery('.menuss').length>0) {
		jQuery('.menuss').css('text-decoration','none');
		jQuery('.tableskillshide').each(function(index) {
			jQuery("#tableskills"+ jQuery(this).attr('parentId')+",#menuitem"+ jQuery(this).attr('parentId')+",#menuitembr"+ jQuery(this).attr('parentId') ).hide();
			/*
			#menuitem"+ jQuery(this).attr('parentId')+",#menuitembr"+ jQuery(this).attr('parentId')
			*/
		});
		
		jQuery('.menuskillshide').each(function(index) {
			jQuery("#menuitem"+ jQuery(this).attr('parentId')+",#menuitembr"+ jQuery(this).attr('parentId') ).hide();
		});
		
		
		
		if (jQuery('.menuss:visible').length==0) {
			jQuery('input:name["skillzUpdate"]').hide();
			jQuery('.wfi-skill-hr').hide();
		}
	}
	
	jQuery('td[nowrap]').each(function(index) {
		if (jQuery(this).find('p:first').length==1) {
			var html = jQuery(this).find('p:first').html();
			var pSiblings = jQuery(this).find('p:first').siblings();
			jQuery(this).empty('p:first');
			jQuery(this).prepend(html+"<span class='fieldsuffix'></span>");
			jQuery(this).find('.fieldsuffix').append(pSiblings);
			//jQuery(this).css('padding-top',3);
			//jQuery(this).css('display','table-cell');
			jQuery(this).css('vertical-align','top');
		}
	});
	
	if (jQuery.browser.msie && parent != self) {	
		jQuery(this).contents().find("body").bind("resize",function() {
			jQuery(parent.document).find('.autoHeight').height( jQuery(this).height()+35 );
		});
	}
	jQuery('.autoHeight').bind("load",function(){
		var iframeJQ =jQuery(this);
		var iframeBody = iframeJQ.contents().find("body");
		var iframeHeight = iframeBody.height()+35;
		if (!jQuery.browser.msie) { iframeBody.bind("resize",function() {
			var ownerFrame = null;
			if (this.ownerDocument && this.ownerDocument.defaultView && this.ownerDocument.defaultView.frameElement) {
				ownerFrame = this.ownerDocument.defaultView.frameElement;
			} else if (this.ownerDocument && this.ownerDocument.frames.frameElement) {
				ownerFrame = this.ownerDocument.frames.frameElement;
			}
			if (ownerFrame!=null) {
				var heightChange = (jQuery(this).height()) - jQuery(ownerFrame).height();
				jQuery(ownerFrame).height( jQuery(this).height()+35);
				if (ownerFrame.ownerDocument) {
					var ownerDoc = ownerFrame.ownerDocument;
					if (jQuery(ownerFrame).height()>jQuery(ownerDoc).height())
						jQuery(ownerDoc).height( jQuery(ownerDoc).height() + heightChange );
				}
			}
		});} else {
			//IE Match
		}
		iframeJQ.height(iframeHeight);
	})
	.each(function(){
		if(this.complete || (jQuery.browser.msie && parseInt(jQuery.browser.version) == 6)) {
			jQuery(this).trigger("load");
		}
	
	});

	var windowAfterReszie = function(){
		setResizeWidth();
		jQuery('.resizeWidth').each(function(){
			var dW = jQuery(document).find("body").width()-5;
			var t = jQuery(this);
			var selL = t.offset().left;
			var selW = t.width();
			if (t.attr('data-origSize')<dW - selL) {
				t.width(t.attr('data-origSize'));
				t.removeClass('resizeWidth');
			} else {
				t.width(dW - selL);
			}
			selW = t.width();
			t.parent('td').width( selW );
			//t.parent().parent().siblings().children('td').each(function() {
				
			//t.parent('table').width( t.parent('tr').width() );
			//:not(.componenttable,.componentpaneltable)
			
			//t.parents('table:not(.componenttable,.componentpaneltable)').each(function(){
			t.parentsUntil('#workflow').each(function(){
				if (jQuery(this).context.nodeName=='TABLE') jQuery(this).addClass('parentTableResize');
			});
		});
		
		jQuery('.parentTableResize').each(function(){
			var dW = jQuery(document).find("body").width();
			var cWidth = jQuery(this).width();
			if (jQuery(this).outerWidth()!=dW) jQuery(this).width(dW);
			if (cWidth == jQuery(this).width()) {
				//alert(jQuery(this).attr('id'));
			}
			if (Math.abs(jQuery(this).outerWidth()-dW)>10) {
				if (jQuery(this).find('tr:first').find('td').length==1){
					//jQuery(this).css({tableLayout:'fixed'}); //,width:'auto'
					jQuery(this).width(dW);
					jQuery(this).attr('border',0);
				} else {
					var thisWidths = [];
					var widthRatio = jQuery(this).outerWidth() / jQuery(document).find("body").width();
					jQuery(this).find('tr:first').find('td').each(function() {
						thisWidths.push(jQuery(this).width() / widthRatio);
					});
					jQuery(this).attr('border',0);
					//jQuery(this).css({tableLayout:'auto'});//,width:'100%'
					jQuery(this).find('tr:first').find('td').each(function(i,e) {
						jQuery(this).width(10); //Math.floor(thisWidths.indexOf(i))
					});
					
					jQuery(this).find('select.inputBox,select.resizeWidth').each(function(){
						var p = jQuery(this).parent('td');
						//&& jQuery(this).width()!=jQuery(this).attr('data-origSize')
						if (p.width()> jQuery(this).attr('data-origSize') ) {
							jQuery(this).width('100%'); //jQuery(this).attr('data-origSize')
						}
					});
				}
			}
		});
		
		
		jQuery('.parentTableResize:first').find('.parentTableResize').width('auto');
	};
	if (jQuery.prototype.jquery.indexOf("1.3")==0) {
		//Need something
	} else if (jQuery.prototype.jquery.indexOf("1.4")==0) {
		if (jQuery(window).afterresize!=undefined) jQuery(window).afterresize(function() { return windowAfterReszie();});
	}
	
	if (jQuery('base').length>0) {
		//window.location.href);
		var pathArray = window.location.href.split( '/' );
		var host = [ pathArray[0]+'', pathArray[1]+'', pathArray[2]+'' ].join('/');
		
		jQuery("#workflow a").each(function() {
			if (jQuery(this).attr('href')==undefined) return;
			if (jQuery(this).attr('href').substr(0,4)!='http'  && jQuery(this).attr('href').substr(0,1)!='#') {
				if (jQuery(this).attr('href').substr(0,1)=='/') jQuery(this).attr('href',host+jQuery(this).attr('href'));
				else jQuery(this).attr('href',host+'/'+jQuery(this).attr('href'));
			}
			
		});
		jQuery("#workflow form").each(function() {
			if (jQuery(this).attr('action')==undefined) return false;
			if (jQuery(this).attr('action').substr(0,4)!='http' && jQuery(this).attr('action').substr(0,1)!='#') {
				if (jQuery(this).attr('action').substr(0,1)=='/') jQuery(this).attr('action',host+jQuery(this).attr('action'));
				else jQuery(this).attr('action',host+'/'+jQuery(this).attr('action'));
			}
		});
		jQuery("#workflow img").each(function() {
			if (jQuery(this).attr('src')==undefined) return false;
			if (jQuery(this).attr('src').substr(0,4)!='http'  && jQuery(this).attr('src').substr(0,1)!='#') {
				if (jQuery(this).attr('src').substr(0,1)=='/') jQuery(this).attr('src',host+jQuery(this).attr('src'));
				else jQuery(this).attr('src',host+'/'+jQuery(this).attr('src'));
			}
		});
	}
});

function LinkedInTextReplace() {
	try {
	var errorLine="1944";
	var Farguments = arguments;
	
	errorLine="1945";
	if (jQuery('.IN-widget span:contains("'+jQuery(Farguments[0]).html()+'"):last').length==1) return false;
	errorLine="1946";
	
	if (jQuery('.IN-widget span:contains("'+Farguments[1]+'"):last').length==0) {
		errorLine="1948";
		setTimeout(function() {
			LinkedInTextReplace.apply( this, Farguments );
		},200);
		return;
	}
	errorLine="1949";
	jQuery('.IN-widget span:contains("'+Farguments[1]+'"):last').each(function() {
		errorLine="1950";
		var h = jQuery(this).html();
		errorLine="1951";
		jQuery(this).attr('Farguments','Y')
			.html( h.replace(Farguments[1]+'', jQuery(Farguments[0]).html()+'') );
		errorLine="1952";
		setTimeout(function() {
			LinkedInTextReplace.apply( this, Farguments );
		},200);
		errorLine="1953";
	});
	} catch(err) {
		//alert(errorLine +' :: '+err.description);
	}
}

function JSONtoApplicationForm(r) {
	if (r.event==undefined) return false;
	if (r.event=='click') {
		//Modify the visual
		//companyName, jobTitle 
	} else if (r.event=='success' && r.job && r.job.jobId) {
		var jobIdA = r.job.jobId.split('|');
		//testing
		//jobIdA[0]='2342323';
		//jobIdA[1]='485';
		jQuery('#linkedin-text-pre').hide();
		jQuery.ajax({url: '/_includes/api/linkedin.asp?a=load&sid='+jobIdA[0]+'&wjpid='+jobIdA[1]+'', dataType:'json',
			success: function( jdata ) {
				LinkedInTextReplace('#linkedin-button-text-success','You\'ve Applied!')
				jQuery('#linkedin-text-pre').hide();
				jQuery('#linkedin-text-post').show();
				
				jQuery("#FirstName").val(jdata.person.firstName);
				jQuery("#LastName").val(jdata.person.lastName);
				if (jdata.person.location) {
					jQuery("#PostalCode").val(jdata.person.location.postalCode);
					
					if (jdata.person.location.country && jdata.person.location.country.code) {
						jQuery("#Country").val(jdata.person.location.country.code.toUpperCase() );
					} else if (jdata.person.location.name.indexOf(',')>=0) {
						var locationNameA = jdata.person.location.name.split(',');
						locationNameA[0] = jQuery.trim(locationNameA[0]);
						locationNameA[1] = jQuery.trim(locationNameA[1]);
						jdata.person.location.name = locationNameA[0];
						if (locationNameA[1].indexOf('Area')>=0) locationNameA[1] = locationNameA[1].substr(0,locationNameA[1].indexOf('Area'));
						jQuery("#Country").val(locationNameA[1]);
					}
					jQuery("#City").val(jdata.person.location.name);
					
				}
				jQuery("#EMailAddress").val(jdata.person.emailAddress);
				jQuery("#PersonalHomePage").val(jdata.person.publicProfileUrl);
				jQuery("#Comments").val(jdata.coverLetter);
				
				var dksflwOrigin=null;
				if (jQuery("#Origin2").length==1)
					dksflwOrigin = jQuery("#Origin2");
				else if (jQuery("#Origin").length==1)
					dksflwOrigin = jQuery("#Origin");
				if (dksflwOrigin!=null) {
					dksflwOrigin.val("LinkedIn");
					if (dksflwOrigin.val()=='') 
						dksflwOrigin.append('<option value="LinkedIn" selected="selected">LinkedIn</option>');
				}
				
				var deskflowI=1;
				var field_Suffix='';
				if (jdata.person.positions && jdata.person.positions.values) for (var linkedI in jdata.person.positions.values) {
					if (deskflowI==1) {field_Suffix = ''} else {field_Suffix = '_' + (deskflowI-1) +'';} deskflowI++;
					if (jQuery('[name="PositionTitle'+field_Suffix+'"]').length==0) break;
					
					var p = jdata.person.positions.values[linkedI];
					if (p.startDate) {
						jQuery('[name="StartDateMonth'+field_Suffix+'"]').val(p.startDate.month);
						jQuery('[name="StartEmpYear'+field_Suffix+'"]').val(p.startDate.year);
					}
					if (p.endDate) {
						jQuery('[name="EndDateMonth'+field_Suffix+'"]').val(p.endDate.month);
						jQuery('[name="EndEmpYear'+field_Suffix+'"]').val(p.endDate.year);
					}
					jQuery('[name="PositionTitle'+field_Suffix+'"]').val(p.title);
					if (p.company) jQuery('[name="CompanyName'+field_Suffix+'"]').val(p.company.name);					
				}
				
				var deskflowI=1;
				var field_Suffix='';
				if (jdata.person.educations && jdata.person.educations.values) for (var linkedI in jdata.person.educations.values) {
					field_Suffix = '_' + (deskflowI) +''; deskflowI++;
					if (jQuery('[name="Institution'+field_Suffix+'"]').length==0) break;
					
					var p = jdata.person.educations.values[linkedI];
					if (p.endDate) {
						jQuery('[name="GradDate'+field_Suffix+'"]').val(p.endDate.year);
					}
					jQuery('[name="Institution'+field_Suffix+'"]').val(p.schoolName);
					if (jQuery('[name="Institution'+field_Suffix+'"]').val()=='') {
						jQuery('[name="Institution'+field_Suffix+'"]').append('<option value="'+p.schoolName+'" selected="selected">'+p.schoolName+'</option>');
					}
					
					jQuery('[name="Degree'+field_Suffix+'"]').val(p.degree);
					if (jQuery('[name="Degree'+field_Suffix+'"]').val()=='') {
						jQuery('[name="Degree'+field_Suffix+'"]').val(p.degree.toUpperCase() );
						if (jQuery('[name="Degree'+field_Suffix+'"]').val()=='') {
							jQuery('[name="Degree'+field_Suffix+'"]').append('<option value="'+p.degree+'" selected="selected">'+p.degree+'</option>');
						}
					}
					
					jQuery('[name="DegreeName'+field_Suffix+'"]').val(p.fieldOfStudy);
					jQuery('[name="Major'+field_Suffix+'"]').val(p.fieldOfStudy);
				}
				
				
				/*
				
				jdata.person.educations.values[]
					endDate.year
					fieldOfStudy
					degree
					schoolName
					
				*/
			}
		});
		
	} else {
		interrogate(r,true,true);
	}
	return true;
}
 
function writeFilterLayout(obj) {
	objJQ = jQuery(obj);
	objJQ.hide();
	var tfFL = false;
	try {
		displayJQ = objJQ.siblings(".wfi-customfilterlayout-display");
		if (displayJQ==null||displayJQ.length==0) {alert(1950); return false;}
		
		configJQ = objJQ.find(".wfi-customfilterlayout-config");
		if (configJQ==null||configJQ.length==0) {alert(1955); return false;}
		
		var layoutA = configJQ.find(".wfi-customfilterlayout").html();
		if (layoutA==null||layoutA==undefined) {alert(1960); return false;}
		layoutA = layoutA.split(',');
		
		var defaultLayout = configJQ.find(".wfi-customfilterfielddefault").html();
		
		var Layouts = {};
		var layoutsHTML = configJQ.find(".wfi-customfilterfieldlayout").html();
		if (layoutsHTML==null) return false;
		var layoutsA = layoutsHTML.split('|-|');
		for (var aI in layoutsA) {
			var l = (layoutsA[aI]+"").split('|');
			Layouts[ l[0] ] = {label:'top',css:{},attr:{},html:''};
			var P = (l[1]+"").split(';');
			for (var iP in P) {
				if (P[iP]=='' || P[iP]==null) {
					//do nothing
				} else {
					var p = (P[iP]+"").split(':');
					if (p[0]=='label') {
						Layouts[ l[0] ].label = p[1];
					} else if (p[0].indexOf('css-')==0) {
						Layouts[ l[0] ].css[p[0].substr(4,p[0].length)] = p[1];
					} else if (p[0].indexOf('attr-')==0) {
						Layouts[ l[0] ].attr[p[0].substr(5,p[0].length)] = p[1];
					}
				}
			}
			var L = Layouts[ l[0] ];
			var html ='';
			
			html+="<div style='";
			if (L.label=='top'||L.label=='left') html+= (L.label=='left'?'float:left;':'display:block;');
			for (var cI in L.css) html+=cI+':'+L.css[cI]+';';
			html+="'";
			for (var cI in L.attr) html+=' '+cI+':'+L.css[cI];
			html+=">";
			
			if (L.label=='top'||L.label=='left') html+="<div style='"+(L.label=='left'?'float:left;':'display:block;')+"'>##LABEL##</div>";
			html+="<div>##COMPONENT##</div>";
			if (L.label=='right') html+="<div style='float:left'>##LABEL##</div>";
			html+="</div>";
			Layouts[ l[0] ].html = html;
			
		}
		//DEF|label:top;css-align:left;|-|LEFT|label:left;css-align:left;|-|RIGHT|label:right;css-align:right;
		
		
		var html = "";
		
		for (var iA in layoutA) if ('string'==typeof(layoutA[iA])) {
			var l = ""+layoutA[iA]+"";
			var L = replaceAll(l,"##","");
			if (l.indexOf('##BUTTON.')==0) {
				var b = L.split('.')
				if (b[1]=='SEARCH') {
					if (b[2]==undefined) b[2]="h";
					b[2] = (""+b[2]+"").toLowerCase();
					if ( jQuery(".filterButton-"+b[2]).length>=1) {
						html+= jQuery(".filterButton-"+b[2])[0].innerHTML;
						jQuery(".filterButton-"+b[2]).remove();
					}
				} else {
					html+= "<div>1971.BUTTON:"+b[1]+"</div>";
				}
				
			} else if (l.indexOf('##FIELD')==0) {
				var F = {name:'',index:0,layout:''};
				var Fp = 'name';
				for (var lI in L) {
					if (L[lI]=='-') Fp = 'index';
					if (L[lI]=='|') Fp = 'layout';
					else F[Fp]+=L[lI]+'';
				}
				F['index'] = 'eq('+Number(F['index'])+')';
				if (F['layout']=='') F['layout'] = defaultLayout;
				
				var f = jQuery(".wfi-rowsfilterform.wfi-rowstr:"+F['index']);
				html+=  replaceAll(replaceAll(Layouts[ F['layout'] ].html,"##LABEL##", f.find('span.wfi-filterform-label:last').html() ),"##COMPONENT##", f.find('td.wfi-rowcomponent').html() );
				f.remove();
			} else if (l.indexOf("##")==0) {
				html+=  writeHTMLPound(l)
			} else {
				html+= l;
			}
			
		}
		displayJQ.append(html);
		displayJQ.find('input:not([type="submit"],[type="reset"])').width('auto');
	} finally {
		if (configJQ.find(".wfi-customfilterfieldhidehint").html()!='N') displayJQ.find('.wfi-filterline').hide();
		objJQ.find(".wfi-customfilterlayout-config").remove();
		if (!tfFL) objJQ.show();
		
	}

}

function appendFilterForm() {
	alert('appendFilterForm');
}

function writeHTMLPound() {
	var h = arguments[0];
	var html = "";
	if (h=='##TABLEOPEN##'||h=='##TABLEOPENTRTD##') html+="<table>";
	if (h=='##TABLEOPENTRTD##'||h=='##TRTD##'||h=='##TROPEN##') html+="<tr>";
	if (h=='##TABLEOPENTRTD##'||h=='##TRTD##'||h=='##TDOPEN##') html+="<td>";
	
	if (h=='##TDTD##') html+="</td><td>";
	if (h=='##TD-TD##') html+="</td><td>&nbsp;</td><td>";
	if (h=='##TABLE-TABLE##') html+="</table><table>";
	
	if (h=='##TABLECLOSETDTR##'||h=='##TDTR##'||h=='##TDCLOSE##') html+="</td>";
	if (h=='##TABLECLOSETDTR##'||h=='##TDTR##'||h=='##TRCLOSE##') html+="</tr>";
	if (h=='##TABLECLOSE##'||h=='##TABLECLOSETDTR##') html+="</table>";
	
	return html;
}

