kenexa 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "kenexa/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "kenexa"
7
+ s.version = Kenexa::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Michael Guterl"]
10
+ s.email = ["michael@recruitmilitary.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{A simple ruby wrapper for the Kenexa API}
13
+ s.description = %q{A simple ruby wrapper for the Kenexa API}
14
+
15
+ s.rubyforge_project = "kenexa"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency 'nokogiri'
23
+
24
+ s.add_development_dependency 'minitest'
25
+ s.add_development_dependency 'webmock'
26
+ end
@@ -0,0 +1,9 @@
1
+ module Kenexa
2
+ # Your code goes here...
3
+ end
4
+
5
+ require 'kenexa/client'
6
+ require 'kenexa/job'
7
+ require 'kenexa/job_detail_parser'
8
+ require 'kenexa/job_collection_proxy'
9
+ require 'kenexa/job_parser'
@@ -0,0 +1,53 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'open-uri'
4
+ require 'erb'
5
+ require 'date'
6
+ require 'nokogiri'
7
+
8
+ module Kenexa
9
+
10
+ class Client
11
+
12
+ DEFAULT_ENDPOINT = 'http://import.brassring.com/WebRouter/WebRouter.asmx/route'
13
+
14
+ TEMPLATE_PATH = File.dirname(__FILE__) + "/templates"
15
+
16
+ def initialize(endpoint = DEFAULT_ENDPOINT)
17
+ @uri = URI.parse(endpoint)
18
+ end
19
+
20
+ def jobs(options = {})
21
+ page = options[:page] || 1
22
+ template = ERB.new(File.read(TEMPLATE_PATH + "/request.erb"))
23
+ inputXml = template.result(binding)
24
+ response = Net::HTTP.post_form(@uri, "inputXml" => inputXml)
25
+ doc = Nokogiri::XML response.body
26
+
27
+ # i'm not sure what is up with the response that comes back, but
28
+ # it appears to be an escaped string of XML. We need to get that
29
+ # string an parse it with Nokogiri to be able to parse the
30
+ # interesting pieces.
31
+ envelope = Nokogiri::XML doc.children.first.text
32
+
33
+ JobCollectionProxy.new(envelope)
34
+ end
35
+
36
+ def each_job
37
+ page = 1
38
+ loop {
39
+ jobs = jobs(:page => page)
40
+ max_pages ||= jobs.max_pages
41
+
42
+ jobs.each { |job|
43
+ yield job
44
+ }
45
+
46
+ page += 1
47
+ break if page > max_pages
48
+ }
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,24 @@
1
+ module Kenexa
2
+
3
+ class Job < Struct.new(:title, :url, :city, :state, :internal_id, :last_updated)
4
+
5
+ def initialize(attributes = {})
6
+ attributes.each do |attribute, value|
7
+ send("#{attribute}=", value)
8
+ end
9
+ end
10
+
11
+ def description
12
+ @description ||= begin
13
+ doc = Nokogiri::HTML(open(url))
14
+
15
+ parser = JobDetailParser.new
16
+ details = parser.parse(doc)
17
+
18
+ details['Job Description']
19
+ end
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,26 @@
1
+ module Kenexa
2
+
3
+ class JobCollectionProxy
4
+
5
+ instance_methods.each { |m| undef_method m unless m =~ /(^__|^send$|^object_id$)/ }
6
+
7
+ def initialize(envelope)
8
+ @envelope = envelope
9
+ @jobs = JobParser.new.parse(envelope)
10
+ end
11
+
12
+ def total
13
+ @total ||= @envelope.at("//OtherInformation/TotalRecordsFound").text.to_i
14
+ end
15
+
16
+ def max_pages
17
+ @max_pages ||= @envelope.at("//OtherInformation/MaxPages").text.to_i
18
+ end
19
+
20
+ def method_missing(meth, *args, &block)
21
+ @jobs.send(meth, *args, &block)
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,14 @@
1
+ module Kenexa
2
+
3
+ class JobDetailParser
4
+
5
+ def parse(doc)
6
+ fields = doc.search(".Fieldlabel").map &:text
7
+ values = doc.search(".TEXT").map &:text
8
+
9
+ Hash[fields.zip(values)]
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,47 @@
1
+ module Kenexa
2
+
3
+ class JobParser
4
+
5
+ QUESTION_MAP = {
6
+ :title => 7996,
7
+ :city => 15615,
8
+ :state => 15616,
9
+ :internal_id => 7972,
10
+ }.freeze
11
+
12
+ def parse(envelope)
13
+ envelope.search("//Job").map { |node|
14
+ attributes = {
15
+ :url => extract_text(node, ".//JobDetailLink"),
16
+ :last_updated => extract_date(node, ".//LastUpdated"),
17
+ }
18
+
19
+ QUESTION_MAP.keys.each do |attribute|
20
+ attributes[attribute] = extract_question(node, attribute)
21
+ end
22
+
23
+ Job.new(attributes)
24
+ }
25
+ end
26
+
27
+ private
28
+
29
+ def extract_date(node, name)
30
+ Date.parse extract_text(node, name)
31
+ end
32
+
33
+ def extract_question(node, name)
34
+ if question_id = QUESTION_MAP[name]
35
+ extract_text(node, ".//Question[@Id='#{question_id}']")
36
+ else
37
+ raise ArgumentError, "missing question mapping for #{name}"
38
+ end
39
+ end
40
+
41
+ def extract_text(node, xpath)
42
+ node.at(xpath).text.strip
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -0,0 +1,49 @@
1
+ <Envelope version="01.00">
2
+ <Sender>
3
+ <Id>12345</Id>
4
+ <Credential>25152</Credential>
5
+ </Sender>
6
+ <TransactInfo transactId="1" transactType="data">
7
+ <TransactId>01/27/2010</TransactId>
8
+ <TimeStamp>12:00:00 AM</TimeStamp>
9
+ </TransactInfo>
10
+ <Unit UnitProcessor="SearchAPI">
11
+ <Packet>
12
+ <PacketInfo packetType="data">
13
+ <packetId>1</packetId>
14
+ </PacketInfo>
15
+ <Payload>
16
+ <InputString>
17
+ <ClientId>25152</ClientId>
18
+ <SiteId>5244</SiteId>
19
+ <PageNumber><%= page %></PageNumber>
20
+ <OutputXMLFormat>0</OutputXMLFormat>
21
+ <AuthenticationToken/>
22
+ <HotJobs/>
23
+ <ProximitySearch>
24
+ <Distance/>
25
+ <Measurement/>
26
+ <Country/>
27
+ <State/>
28
+ <City/>
29
+ <zipCode/>
30
+ </ProximitySearch>
31
+ <JobMatchCriteriaText/>
32
+ <SelectedSearchLocaleId/>
33
+ <Questions>
34
+ <Question Sortorder="ASC" Sort="No">
35
+ <Id>7982</Id>
36
+ <Value><![CDATA[TG_SEARCH_ALL]]></Value>
37
+ </Question>
38
+ </Questions>
39
+ <Questions>
40
+ <Question Sortorder="ASC" Sort="No">
41
+ <Id>15616</Id>
42
+ <Value><![CDATA[TG_SEARCH_ALL]]></Value>
43
+ </Question>
44
+ </Questions>
45
+ </InputString>
46
+ </Payload>
47
+ </Packet>
48
+ </Unit>
49
+ </Envelope>
@@ -0,0 +1,3 @@
1
+ module Kenexa
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,62 @@
1
+ inputXml = <<-EOF
2
+ <Envelope version="01.00">
3
+ <Sender>
4
+ <Id>12345</Id>
5
+ <Credential>25152</Credential>
6
+ </Sender>
7
+ <TransactInfo transactId="1" transactType="data">
8
+ <TransactId>01/27/2010</TransactId>
9
+ <TimeStamp>12:00:00 AM</TimeStamp>
10
+ </TransactInfo>
11
+ <Unit UnitProcessor="SearchAPI">
12
+ <Packet>
13
+ <PacketInfo packetType="data">
14
+ <packetId>1</packetId>
15
+ </PacketInfo>
16
+ <Payload>
17
+ <InputString>
18
+ <ClientId>25152</ClientId>
19
+ <SiteId>5244</SiteId>
20
+ <PageNumber>1</PageNumber>
21
+ <OutputXMLFormat>0</OutputXMLFormat>
22
+ <AuthenticationToken/>
23
+ <HotJobs/>
24
+ <ProximitySearch>
25
+ <Distance/>
26
+ <Measurement/>
27
+ <Country/>
28
+ <State/>
29
+ <City/>
30
+ <zipCode/>
31
+ </ProximitySearch>
32
+ <JobMatchCriteriaText/>
33
+ <SelectedSearchLocaleId/>
34
+ <Questions>
35
+ <Question Sortorder="ASC" Sort="No">
36
+ <Id>7982</Id>
37
+ <Value><![CDATA[TG_SEARCH_ALL]]></Value>
38
+ </Question>
39
+ </Questions>
40
+ <Questions>
41
+ <Question Sortorder="ASC" Sort="No">
42
+ <Id>15616</Id>
43
+ <Value><![CDATA[TG_SEARCH_ALL]]></Value>
44
+ </Question>
45
+ </Questions>
46
+ </InputString>
47
+ </Payload>
48
+ </Packet>
49
+ </Unit>
50
+ </Envelope>
51
+ EOF
52
+
53
+ require "net/http"
54
+ require "uri"
55
+
56
+ uri = URI.parse('http://import.brassring.com/WebRouter/WebRouter.asmx/route')
57
+
58
+ # Shortcut
59
+ response = Net::HTTP.post_form(uri, "inputXml" => inputXml)
60
+
61
+ doc = Nokogiri::XML response.body
62
+ envelope = Nokogiri::XML doc.children.first.text
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <string xmlns="http://integrationuri.org/">&lt;Envelope version="01.00"&gt;&lt;Sender&gt;&lt;Id&gt;12345&lt;/Id&gt;&lt;Credential&gt;25152&lt;/Credential&gt;&lt;/Sender&gt;&lt;TransactInfo transactType="response" transactId="3c464e3b-5889-473f-8aa2-22d17c619fd7"&gt;&lt;TransactId&gt;01/27/2010&lt;/TransactId&gt;&lt;TimeStamp&gt;12:00:00 AM&lt;/TimeStamp&gt;&lt;/TransactInfo&gt;&lt;Unit UnitProcessor="SearchAPI"&gt;&lt;Packet&gt;&lt;PacketInfo packetType="data" encrypted="no"&gt;&lt;packetId&gt;1&lt;/packetId&gt;&lt;/PacketInfo&gt;&lt;Payload&gt;&lt;InputString&gt;&lt;ClientId&gt;25152&lt;/ClientId&gt;&lt;SiteId&gt;5244&lt;/SiteId&gt;&lt;PageNumber&gt;4&lt;/PageNumber&gt;&lt;OutputXMLFormat&gt;0&lt;/OutputXMLFormat&gt;&lt;AuthenticationToken /&gt;&lt;HotJobs /&gt;&lt;ProximitySearch&gt;&lt;Distance /&gt;&lt;Measurement /&gt;&lt;Country /&gt;&lt;State /&gt;&lt;City /&gt;&lt;zipCode /&gt;&lt;/ProximitySearch&gt;&lt;JobMatchCriteriaText /&gt;&lt;SelectedSearchLocaleId /&gt;&lt;Questions&gt;&lt;Question Sortorder="ASC" Sort="No"&gt;&lt;Id&gt;7982&lt;/Id&gt;&lt;Value&gt;TG_SEARCH_ALL&lt;/Value&gt;&lt;/Question&gt;&lt;/Questions&gt;&lt;Questions&gt;&lt;Question Sortorder="ASC" Sort="No"&gt;&lt;Id&gt;15616&lt;/Id&gt;&lt;Value&gt;TG_SEARCH_ALL&lt;/Value&gt;&lt;/Question&gt;&lt;/Questions&gt;&lt;/InputString&gt;&lt;ResultSet&gt;&lt;Jobs /&gt;&lt;OtherInformation&gt;&lt;TotalRecordsFound&gt;103&lt;/TotalRecordsFound&gt;&lt;MaxPages&gt;3&lt;/MaxPages&gt;&lt;StartDoc&gt;151&lt;/StartDoc&gt;&lt;PageNumber&gt;4&lt;/PageNumber&gt;&lt;/OtherInformation&gt;&lt;/ResultSet&gt;&lt;/Payload&gt;&lt;Status&gt;&lt;Code&gt;200&lt;/Code&gt;&lt;ShortDescription&gt;Successful Search API Call&lt;/ShortDescription&gt;&lt;LongDescription&gt;The Search API call has been successfully completed and returned with results.&lt;/LongDescription&gt;&lt;/Status&gt;&lt;/Packet&gt;&lt;Status&gt;&lt;Code&gt;200&lt;/Code&gt;&lt;ShortDescription&gt;Successful Search API Call&lt;/ShortDescription&gt;&lt;LongDescription&gt;The Search API call has been successfully completed and returned with results.&lt;/LongDescription&gt;&lt;/Status&gt;&lt;/Unit&gt;&lt;Status&gt;&lt;Code&gt;200&lt;/Code&gt;&lt;ShortDescription&gt;Success&lt;/ShortDescription&gt;&lt;LongDescription&gt;All units are processed with success codes&lt;/LongDescription&gt;&lt;/Status&gt;&lt;/Envelope&gt;</string>
@@ -0,0 +1,1900 @@
1
+
2
+
3
+ <SCRIPT LANGUAGE="javascript">
4
+ var MSG_DifferentLocaleSubmission= "You have selected jobs in different languages. Please limit your selection to one language at a time. \n\rAfter submitting, you can select jobs from a different language and submit."
5
+ var MSG_SiteSwitch= "Recruitment for the selected job(s) will be in the language of the job posting(s). To continue, the language of this site will change to match the language of the selected job(s). You will need to provide your resume/CV in the language of the selected job(s) in order to maximize your visibility to the recruitment personnel."
6
+ </SCRIPT>
7
+
8
+ <META name="keywords" content="brassring, job search, job fairs, tech job, it, information technology, employment, resume, monster, headhunter, computer, listing, opening, description, bank, career, internship, opportunity, employment opportunities, classified ads, engineering, search engine, telecommunication, free agent, internet, dice.com, full time, freelance, executive, graphic design, vacancy, executive, part time, classified ads, technology, programmer, post resume, professional, computer work, technical recruiter, project management, research companies, web developer, board, database, Westech, networking, manager, computer, technical writing, engineer, professionals, application, posting, hightech, hiring, interview, expos, employer, qa, consulting, semiconductor, consultant, computing, hardware, help wanted, technologies, analyst, administrative, administrator, industry">
9
+
10
+ <META name="description" content="Search information technology and Internet job openings. Locate job fairs and career events. Post resumes to high tech employers.">
11
+
12
+
13
+
14
+ <SCRIPT LANGUAGE="javascript">
15
+ var MSG_cim_jobdetail_JobCart="The job cart contains a maximum of 50 jobs. Please delete jobs from your cart in order to add new ones.";</SCRIPT>
16
+ <NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT>
17
+
18
+
19
+
20
+ <SCRIPT LANGUAGE="JavaScript">
21
+ var MSG_ConfirmMismatch= "Entry does not match for [QUESTION]";
22
+ var MSG_GEN_EntValdEmlAddr="Please enter a valid e-mail address.\nDelete all the invalid characters, including spaces, from your e-mail address.";
23
+ var MSG_GEN_PlsEntValdEmlAddr="Please enter a valid e-mail address.";
24
+ var MSG_GEN_PlsDelPrdFrmEndOfYrEmlAddr="Please delete the period from the end of your e-mail address.";
25
+ var MSG_GEN_PlsDelPrdFrmBgnOfYrEmlAddr="Please delete the period from the beginning of your e-mail address.";
26
+ var MSG_GEN_PlsRmDblQut="Please remove the ' DOUBLE QUOTE (\") ' you have entered.";
27
+ var MSG_GEN_PlsEntValdDate="Please enter a valid date.";
28
+ var MSG_GEN_EnterVal= "Please enter a value for |QUESTION|";
29
+ var MSG_GEN_PlsEntVldYear="Please enter a valid year. The start year should be less than the end year.";
30
+ var MSG_GEN_PlsEntVldSSN="Please enter a valid SSN.";
31
+ var MSG_GEN_SSNFormat="The SSN should be in xxx-xx-xxxx format.";
32
+ var MSG_GEN_FromToDate="The From date should be less than the To date.";
33
+ var MSG_GEN_EntValdPasswd="Spaces are not allowed in the e-mail or in the password field. Please remove the spaces and try again.";
34
+ var MSG_GEN_PlsEntVldNumber="Please enter a valid number.";
35
+ var MSG_GEN_PlsEntComDot="Comma and period values cannot be the last character in numeric value fields.";
36
+ var MSG_GEN_PlsEntComma="Comma values cannot be the first character in numeric value fields";
37
+ var MSG_GEN_EnterValRange= "Please enter a value for |QUESTION| between |MIN| and |MAX|.";
38
+ var MSG_TSV_EnterValidInputText= "This entry should contain valid HTML characters. Please reference the help file for a list of basic valid HTML tags.";
39
+ var MSG_TSV_EnterValidInputTextArea= "This entry should contain valid HTML characters. Please reference the help file for a list of basic valid HTML tags.";
40
+ var MSG_TSV_EnterValidInputSearchFields= "This entry should contain valid HTML characters. Please reference the help file for a list of basic valid HTML tags.";var MSG_GEN_UserNameLen="Please enter a valid username.";
41
+ var MSG_GEN_UserNameInvalidChars="The username must not include the following characters: < >";var MSG_GEN_UserNameSpaces="The username must not include any spaces.";
42
+ var MSG_GEN_EnterValidPassword="Please enter a valid password.\nDelete all the invalid characters, including spaces, from your password.";var MSG_GEN_UserNameLength="The username must be less than 100 characters.";
43
+ var MSG_InputValidationFail= "[QUESTION] requires a valid entry.";</SCRIPT>
44
+
45
+ <NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT>
46
+
47
+ <script language="JavaScript1.2">
48
+ // ---------------------------- //
49
+ // General JavaScript Library: //
50
+ // Author : Beji Joseph //
51
+ // ---------------------------- //
52
+ var subwindow;
53
+ var lnk;
54
+
55
+ function showHelp(lnk)
56
+ {
57
+ if (!subwindow || subwindow.closed)
58
+ {
59
+ subwindow = window.open(lnk,"help","height=400,width=450,menubar=no,toolbar=no,resizable=no,scrollbars=yes,alwaysRaised");
60
+ if (!subwindow.opener)
61
+ {
62
+ subwindow.opener = window;
63
+ }
64
+ }
65
+ else
66
+ {
67
+ subwindow.focus();
68
+ window.open(lnk,"help");
69
+ }
70
+ }
71
+
72
+ function inValidChar(passedVal)
73
+ {
74
+ if (passedVal == "\f")
75
+ return true;
76
+ else
77
+ {
78
+ if (passedVal == "\n")
79
+ return true;
80
+ else
81
+ {
82
+ if(passedVal == "\r")
83
+ return true;
84
+ else
85
+ {
86
+ if(passedVal == "\t")
87
+ return true;
88
+ }
89
+ }
90
+ }
91
+ return false;
92
+ }
93
+
94
+ function hasValue(passedVal, bInValidCharCheck)
95
+ {
96
+ var charHold;
97
+
98
+ if (ReplaceInString(passedVal, " ", "") == '') return false;
99
+ if (ReplaceInString(ReplaceInString(ReplaceInString(ReplaceInString(passedVal, "\f", ""), "\r", ""), "\n", ""), "\t", "") == '') return false;
100
+
101
+ if(bInValidCharCheck)
102
+ for (i=0; i<passedVal.length; i++)
103
+ {
104
+ charHold = passedVal.charAt(i);
105
+ if (inValidChar(charHold)) return false;
106
+ }
107
+ return true;
108
+ }
109
+
110
+ // C:173 start Added these functions for controlling the Hover texts DIV tags
111
+ function getLayer(SRC,displayLength,strHoverFieldlength)
112
+ {
113
+ displayLength = displayLength * 1;
114
+ strHoverFieldlength = strHoverFieldlength * 1;
115
+
116
+ // Make hidden all divs into the page first
117
+ var divs = document.getElementsByTagName('div'); // all divs
118
+ for (var i = 0; i < divs.length; i++)
119
+ {
120
+ var el= divs.item(i);
121
+ var str=el.id;
122
+ if (str.indexOf('TGHover') != -1)
123
+ {
124
+ var tDIV2 = document.getElementById(str);
125
+ tDIV2.style.visibility = "hidden";
126
+ }
127
+
128
+ }
129
+ var tDIV = document.getElementById("TGHover" + SRC) ;
130
+ var displayValue = document.getElementById("TGHoverVal" + SRC).value ;
131
+ displayValue += document.getElementById("TGHoverClick" + SRC).value ;
132
+
133
+ // Hide the div where string contains blank value or none
134
+ if ( displayLength < 1)
135
+ {
136
+ tDIV.style.visibility = "hidden";
137
+ return;
138
+ }
139
+ // Calculate the width to be displayed
140
+ var widthofDiv ;
141
+ if (displayLength > strHoverFieldlength )
142
+ {
143
+ widthofDiv = strHoverFieldlength * 6;
144
+ }
145
+ else
146
+ {
147
+ widthofDiv = displayLength * 6;
148
+ }
149
+ // Get the exact width of the main table.
150
+ var ExactDivWidth = ( document.getElementById("MainTable").clientWidth - 120 ) * 1;
151
+
152
+ if (widthofDiv < 250 )
153
+ widthofDiv = 250
154
+ else if ( displayLength > 65 && displayLength < 150 )
155
+ widthofDiv = ( ExactDivWidth < 400 ) ? ExactDivWidth : 400 // This is the maximum width to be displayed.
156
+ else if ( displayLength > 150 && displayLength < 300)
157
+ widthofDiv = ( ExactDivWidth < 500 ) ? ExactDivWidth : 500 // This is the maximum width to be displayed.
158
+ else if ( displayLength > 300)
159
+ widthofDiv = ExactDivWidth; // This is the maximum width to be displayed.
160
+
161
+ // Make visible the selected one.
162
+ tDIV.style.width = widthofDiv;
163
+ tDIV.style.cursor = "hand";
164
+ tDIV.style.visibility = "visible";
165
+ tDIV.innerHTML = displayValue;
166
+ }
167
+
168
+ function stringTrim (str) {
169
+ str = str.replace(/^\s+/, '');
170
+ for (var i = str.length - 1; i <= 0; i--) {
171
+ if (/\S/.test(str.charAt(i))) {
172
+ str = str.substring(0, i + 1);
173
+ break;
174
+ }
175
+ }
176
+ return str;
177
+ }
178
+
179
+ function floatLayer(SRC,e)
180
+ {
181
+
182
+ var tDIV = document.getElementById("TGHover" + SRC);
183
+ var TotaltableHeight;
184
+
185
+ var divHeight = ( document.getElementById("TGHover" + SRC).clientHeight ) * 1;
186
+ var tableHeight = ( document.getElementById("MainTable").clientHeight + document.body.scrollTop ) * 1;
187
+ TotaltableHeight = tableHeight ;
188
+
189
+ //if (document.getElementById("MenuTable").clientHeight != null )
190
+ // TotaltableHeight += ( document.getElementById("MenuTable").clientHeight ) * 1;
191
+
192
+ if (document.getElementById("TitleCriteriaTable") != null )
193
+ TotaltableHeight += ( document.getElementById("TitleCriteriaTable").clientHeight ) * 1;
194
+
195
+ if (document.getElementById("PagingTable") != null)
196
+ TotaltableHeight += ( document.getElementById("PagingTable").clientHeight ) * 1;
197
+
198
+ if (document.getElementById("ButtonTable") != null)
199
+ TotaltableHeight += ( document.getElementById("ButtonTable").clientHeight ) * 1;
200
+
201
+
202
+ // Just set the left position. No need to set the top position.
203
+ if(navigator.appName.indexOf("Microsoft") != -1)
204
+ {
205
+ var leftStyle = ( e.x + document.body.scrollLeft + 25 ) * 1;
206
+ var topStyle = ( e.y + document.body.scrollTop ) * 1;
207
+ var correctPosition = ( topStyle + divHeight ) ;
208
+ e = (e) ? e : window.event;
209
+ var element1 = (e.target) ? e.target: e.srcElement;
210
+ if (correctPosition > TotaltableHeight )
211
+ {
212
+ tDIV.style.marginTop = ( (-1*divHeight + element1.parentNode.clientHeight) + 'px');
213
+ tDIV.style.left = leftStyle;
214
+ }
215
+ else
216
+ {
217
+ tDIV.style.left = leftStyle;
218
+ }
219
+ }
220
+ else // For all other browsers use this.
221
+ {
222
+ var leftStyle = ( e.layerX + 25 ) * 1;
223
+ var topStyle = ( e.layerY + document.body.scrollTop ) * 1;
224
+ var correctPosition = ( topStyle + divHeight );
225
+
226
+ e = (e) ? e : window.event;
227
+ var element2 = (e.target) ? e.target: e.srcElement;
228
+
229
+ if (correctPosition > TotaltableHeight )
230
+ {
231
+ tDIV.style.marginTop = ( (-1*divHeight + element2.parentNode.clientHeight) + 'px');
232
+ tDIV.style.left = leftStyle;
233
+ }
234
+ else
235
+ {
236
+ tDIV.style.left = leftStyle;
237
+ }
238
+ }
239
+ }
240
+ function hideLayer(SRC)
241
+ {
242
+ var tDIV = document.getElementById(SRC)
243
+ tDIV.style.visibility='hidden'
244
+ }
245
+ function hideAllLayer()
246
+ {
247
+ // Make hidden all divs into the page first
248
+ var divs = document.getElementsByTagName('div'); // all divs
249
+ for (var i = 0; i < divs.length; i++)
250
+ {
251
+ var el= divs.item(i);
252
+ var str=el.id;
253
+ if (str.indexOf('TGHover') != -1)
254
+ {
255
+ var tDIV2 = document.getElementById(str)
256
+ tDIV2.style.visibility = "hidden"
257
+ }
258
+ }
259
+ }
260
+ //C:173 end till here added these fucntions.
261
+
262
+ function emailCheck(emailField)
263
+ {
264
+ if(emailField.value.replace(/ /g, "").length != 0)
265
+ {
266
+ var RegExp1 = new RegExp('^[a-zA-Z0-9ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ!#$%&\'/*/+-///=/?/^_`{|}~]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$', 'g'); // Regular Expression for Email
267
+ if (!emailField.value.match(RegExp1))
268
+ {
269
+ alert(MSG_GEN_EntValdEmlAddr);
270
+ emailField.focus();
271
+ return false;
272
+ }
273
+ }
274
+
275
+ if (!checkDBQuote(emailField))
276
+ {
277
+ return false;
278
+ }
279
+
280
+ return true;
281
+ }
282
+
283
+ function checkDBQuote(refControl){
284
+ if (refControl.value.indexOf('"') != -1) {
285
+ alert(MSG_GEN_PlsRmDblQut);
286
+ refControl.focus();
287
+ return false;
288
+ }
289
+ else
290
+ return true;
291
+
292
+ }
293
+ function isChecked(refCtrl)
294
+ {
295
+ if(refCtrl.checked == true)
296
+ {
297
+ return true;
298
+ }
299
+ else
300
+ {
301
+ if (refCtrl.length >0)
302
+ {
303
+ for(var i=0;i<refCtrl.length;i++){
304
+ if(refCtrl[i].checked)
305
+ return true;
306
+ }
307
+ }
308
+ else
309
+ {
310
+ return false;
311
+ }
312
+ }
313
+ return false;
314
+ }
315
+ function validUploadFile(refControl){
316
+ var defFileTypes = new Array("doc","rtf","txt");
317
+ var strCompare = new String(validUploadFile.arguments[1]);
318
+ var arrExtn = new Array();
319
+ strCompare = strCompare.toLowerCase();
320
+ if (!hasValue(refControl.value)){
321
+ return false;
322
+ }
323
+ if (!checkDBQuote(refControl)){
324
+ return false;
325
+ }
326
+ if (validUploadFile.arguments.length > 1){
327
+ if (strCompare.indexOf(",") != -1){
328
+ arrExtn = strCompare.split(",");
329
+ }
330
+ else
331
+ {
332
+ arrExtn[0] = strCompare;
333
+ }
334
+ // return compareExtn(refControl,arrExtn);
335
+ }
336
+ else {
337
+ arrExtn = defFileTypes;
338
+ // return compareExtn(refControl,arrExtn);
339
+ }
340
+ return compareExtn(refControl,arrExtn);
341
+ }
342
+ function compareExtn(refControl,arrExtn){
343
+ var strFile = new String(refControl.value);
344
+ var intBegPos,intEndPos;
345
+
346
+ strFile = strFile.toLowerCase();
347
+ for (var i=0;i < arrExtn.length ;i++ ){
348
+ intBegPos = strFile.length - arrExtn[i].length;
349
+ intEndPos = strFile.length;
350
+ if ("." + strFile.substring(intBegPos ,intEndPos) == ("." + arrExtn[i] )){
351
+ return true;
352
+ }
353
+ }
354
+ return false;
355
+ }
356
+
357
+ function XmlEncode(sText) {
358
+ var intTextlength = 0;
359
+ var strOneChar = "";
360
+ var strNewText = "";
361
+
362
+ intTextlength = sText.length;
363
+
364
+ for (var i=0;i < intTextlength; i++)
365
+ {strOneChar = sText.charAt(i);
366
+ if (sText.charAt(i) == "&")
367
+ strOneChar = "&amp;";
368
+ if (sText.charAt(i) == "<")
369
+ strOneChar = "&lt;";
370
+ if (sText.charAt(i) == ">")
371
+ strOneChar = "&gt;";
372
+ if (sText.charAt(i) == '"')
373
+ strOneChar = "&quot;";
374
+ // if (sText.charAt(i) == "'")
375
+ // strOneChar = "&apos;";
376
+
377
+ strNewText = strNewText + strOneChar;
378
+ }
379
+
380
+ //sText = sText.replace("&", "&amp;")
381
+ //sText = sText.replace("<", "&lt;")
382
+ //sText = sText.replace(">", "&gt;")
383
+ //sText = sText.replace("'", "&apos;")
384
+
385
+ return strNewText;
386
+ }
387
+
388
+ // Function to determine if value is in acceptable range for this application.
389
+ function inRange(inputStr, min, max){
390
+ var num = parseInt(inputStr, 10);
391
+ if (num < min || num > max){
392
+ return false;
393
+ }
394
+ return true;
395
+ }
396
+
397
+ // Added by RamS for Date Handling //
398
+ function formatDateValuesStoreAndValidate(frmToCheck)
399
+ {
400
+ var lngIdx;
401
+ var lngControlCount;
402
+ var elements;
403
+ var strCtrlName;
404
+ var strQuestionId;
405
+ var dtCtrl;
406
+ var quesCtrl;
407
+ var strTemp;
408
+ var strJobId ="empty";
409
+ var strFromattedDate;
410
+ elements = frmToCheck.elements;
411
+
412
+ lngControlCount = elements.length;
413
+
414
+ for (lngIdx = 0; lngIdx < lngControlCount; lngIdx++)
415
+ {
416
+ strJobId= "" ;
417
+ strCtrlName = elements[lngIdx].name;
418
+
419
+ if (strCtrlName.indexOf("Question_") != -1 || (strCtrlName.indexOf("Question") != -1 && strCtrlName.indexOf("_") != -1))
420
+ {
421
+ if (strCtrlName.indexOf("|") != -1)
422
+ {
423
+ strTemp = strCtrlName.split("|");
424
+ strCtrlName = strTemp[0];
425
+ strJobId = "|" + strTemp[1];
426
+ }
427
+ /*36727 - JSQ dates are not being captured
428
+ adding in a check for $ instead of |*/
429
+ if (strCtrlName.indexOf("$") != -1)
430
+ {
431
+ strTemp = strCtrlName.split("$");
432
+ strCtrlName = strTemp[0];
433
+ strJobId = "$" + strTemp[1];
434
+ }
435
+ strTemp = strCtrlName.split("_");
436
+ if (strTemp[0] != "Question")
437
+ {
438
+ strQuestionId = strTemp[0].substring(8);
439
+ }
440
+ else
441
+ {
442
+ strQuestionId = strTemp[1];
443
+ }
444
+
445
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_Y" + strJobId);
446
+
447
+ //TD41839 - isNaN function is having problems with the variable in NS6.2
448
+ //if ((dtCtrl) && isNaN(dtCtrl))
449
+ if ((dtCtrl) && (eval("frmToCheck.Date_" + strQuestionId + "_Y" + strJobId))) // Do only if the question is of type Date
450
+ {
451
+ quesCtrl = elements[lngIdx];
452
+ strFromattedDate = dtCtrl.options[dtCtrl.selectedIndex].value;
453
+
454
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_M" + strJobId);
455
+ strFromattedDate = strFromattedDate + "-" + dtCtrl.options[dtCtrl.selectedIndex].value;
456
+
457
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_D" + strJobId);
458
+ strFromattedDate = strFromattedDate + "-" + dtCtrl.options[dtCtrl.selectedIndex].value;
459
+
460
+ if (validateFormattedDate(strFromattedDate))
461
+ {
462
+ if (strFromattedDate == '--') strFromattedDate = '';
463
+ quesCtrl.value = strFromattedDate;
464
+ }
465
+ else
466
+ {
467
+
468
+ alert(MSG_GEN_PlsEntValdDate);
469
+
470
+ dtCtrl.focus();
471
+ return false;
472
+ }
473
+ }
474
+ }
475
+
476
+ }
477
+
478
+ return true;
479
+ }
480
+
481
+ function validateFormattedDate(strFormattedDate, bFutureDateCheck)
482
+ {
483
+ var lngDay;
484
+ var lngMonth;
485
+ var lngYear;
486
+ var strTemp;
487
+
488
+ strTemp = strFormattedDate.split("-");
489
+
490
+ if(strFormattedDate == "--") return true;
491
+ if (strTemp.length != 3) return false;
492
+ if (strTemp[0] == '' && strTemp[1] == '' && strTemp[2] == '') return true;
493
+ if (strTemp[0] == '' || strTemp[1] == '' || strTemp[2] == '') return false;
494
+
495
+ lngYear = strTemp[0];
496
+ switch(strTemp[1])
497
+ {
498
+ case 'Jan': lngMonth = 1; break;
499
+ case 'Feb': lngMonth = 2; break;
500
+ case 'Mar': lngMonth = 3; break;
501
+ case 'Apr': lngMonth = 4; break;
502
+ case 'May': lngMonth = 5; break;
503
+ case 'Jun': lngMonth = 6; break;
504
+ case 'Jul': lngMonth = 7; break;
505
+ case 'Aug': lngMonth = 8; break;
506
+ case 'Sep': lngMonth = 9; break;
507
+ case 'Oct': lngMonth = 10; break;
508
+ case 'Nov': lngMonth = 11; break;
509
+ case 'Dec': lngMonth = 12; break;
510
+ case '1': lngMonth = 1; break;
511
+ case '2': lngMonth = 2; break;
512
+ case '3': lngMonth = 3; break;
513
+ case '4': lngMonth = 4; break;
514
+ case '5': lngMonth = 5; break;
515
+ case '6': lngMonth = 6; break;
516
+ case '7': lngMonth = 7; break;
517
+ case '8': lngMonth = 8; break;
518
+ case '9': lngMonth = 9; break;
519
+ case '10': lngMonth = 10; break;
520
+ case '11': lngMonth = 11; break;
521
+ case '12': lngMonth = 12; break;
522
+ default: return false;
523
+ }
524
+ lngDay = strTemp[2];
525
+ switch(lngMonth)
526
+ {
527
+ case 1:
528
+ case 3:
529
+ case 5:
530
+ case 7:
531
+ case 8:
532
+ case 10:
533
+ case 12:
534
+ break;
535
+ case 4:
536
+ case 6:
537
+ case 9:
538
+ case 11:
539
+ if (lngDay == 31) return false;
540
+ break;
541
+ case 2:
542
+ if (lngDay > 29) return false;
543
+ if (lngDay <= 28) break;
544
+ if (!(lngDay == '29' && lngYear % 4 == 0 && (lngYear % 100 != 0 || lngYear % 400 == 0))) return false;
545
+ break;
546
+ default:
547
+ return false;
548
+ }
549
+ //TD#105467
550
+ if (typeof(bFutureDateCheck) != 'undefined')
551
+ if (bFutureDateCheck== true)
552
+ {
553
+ var today = new Date;
554
+ var selectedDate = new Date;
555
+ selectedDate .setDate(Number(lngDay));
556
+ selectedDate .setMonth(Number(lngMonth) - 1); // January = 0
557
+ selectedDate .setFullYear(Number(lngYear));
558
+ if(selectedDate > today)
559
+ return false;
560
+ else
561
+ return true;
562
+ }
563
+
564
+
565
+ return true;
566
+ }
567
+ // Added by RamS for Date Handling - End //
568
+
569
+ // Added by RamS for Blank value checking //
570
+ function alertIfBlank(ctrlName, strCtrlType, strCtrlText, strDateCtrlPrefix)
571
+ {
572
+ var strCtrlTypeFormatted;
573
+ var iIdx;
574
+ var iCount;
575
+ var bBlank;
576
+ var dtCtrl;
577
+ var Msg;
578
+ var checkedCount;
579
+ var iCtrarray;
580
+ var iCtrarray2;
581
+ var iCtrarray3;
582
+
583
+ strCtrlTypeFormatted = strCtrlType.toUpperCase();
584
+ bBlank = false;
585
+ switch(strCtrlTypeFormatted)
586
+ {
587
+ case 'MULTI-SELECT':
588
+ iCount = ctrlName.length;
589
+ for(iIdx = 0; iIdx < iCount; iIdx++)
590
+ if (ctrlName[iIdx].selected == true)break;
591
+ if (iIdx == iCount) bBlank = true;
592
+ break;
593
+ case 'SINGLE-SELECT':
594
+ if (ctrlName.selectedIndex < 1) bBlank = true;
595
+ break;
596
+ case 'SCALESELECT':
597
+ if (ctrlName.value.toUpperCase().trim() == '') bBlank = true;
598
+ iCtrarray=ctrlName.value.toUpperCase().trim().split(',');
599
+ iCount = iCtrarray.length;
600
+ if (iCount == 0) bBlank = true;
601
+ for(iIdx = 0; iIdx < iCount; iIdx++)
602
+ iCtrarray2=iCtrarray[0].split('%%%');
603
+ iCtrarray3=iCtrarray2[0].split('&=');
604
+ if (iCtrarray3[1]=='|0|') bBlank = true;
605
+ break;
606
+ case 'RADIO':
607
+ case 'CHECKBOX':
608
+ case 'GRID':
609
+ // TD 17005 Madhava -- Handling for only one checkbox
610
+ if (ctrlName)
611
+ {
612
+ checkedCount = 0;
613
+ if (ctrlName.length ) {iCount = ctrlName.length;}
614
+ else {iCount=1;}
615
+ for(iIdx = 0; iIdx < iCount; iIdx++)
616
+ if (iCount==1)
617
+ {
618
+ if (ctrlName.checked == true){checkedCount=checkedCount+1;break;}
619
+ }
620
+ else
621
+ {
622
+ if (ctrlName[iIdx].checked == true){checkedCount=checkedCount+1;break;}
623
+ }
624
+ if (checkedCount==0) bBlank = true;
625
+ if (iCount>1){ctrlName = ctrlName[0]; }
626
+ }
627
+ break;
628
+ case 'EMAIL':
629
+ case 'SSN':
630
+ case 'TEXT':
631
+ case 'NUMERIC':
632
+ case 'TEXTAREA':
633
+ if (ctrlName.value == '') bBlank = true;
634
+ if (ctrlName.value.replace(/ /g, "").length == 0) bBlank = true;
635
+ break;
636
+ case 'DATE':
637
+ var bSelYear = false;
638
+ var bSelMon =false;
639
+ var bSelDay = false;
640
+ var strTemp;
641
+ var strJobId ="";
642
+ if (strDateCtrlPrefix.indexOf("$") != -1)
643
+ {
644
+ strTemp = strDateCtrlPrefix.split("$");
645
+ strDateCtrlPrefix= strTemp[0];
646
+ strJobId = "&" + strTemp[1];
647
+ }
648
+ dtCtrl = eval(strDateCtrlPrefix + "Y" + strJobId);
649
+ if (dtCtrl.selectedIndex == 0) bSelYear = true;
650
+
651
+ dtCtrl = eval(strDateCtrlPrefix + "M" + strJobId);
652
+ if (dtCtrl.selectedIndex == 0) bSelMon = true;
653
+
654
+ dtCtrl = eval(strDateCtrlPrefix + "D" + strJobId);
655
+ if (dtCtrl.selectedIndex == 0) bSelDay = true;
656
+ if (bSelDay == true || bSelMon == true || bSelYear == true) bBlank= true;
657
+ ctrlName = dtCtrl;
658
+ break;
659
+ }
660
+
661
+ if (bBlank)
662
+ {
663
+ Msg = ReplaceInString(MSG_GEN_EnterVal, "|QUESTION|", "\"" + DecodeQuotes(strCtrlText).trim() + "\"");
664
+ alert(Msg);
665
+ if (strCtrlTypeFormatted != 'SCALESELECT') ctrlName.focus();
666
+ return false;
667
+ }
668
+
669
+ return true;
670
+ }
671
+ // Added by RamS for Blank value checking - End //
672
+
673
+ // Added by RamS //
674
+ function isValidName(strName)
675
+ {
676
+ var strInValidChars = "!\"#$%&*/:;?@[\]_{|}~+<=>0123456789";
677
+ var iIdx = 0;
678
+ for (; iIdx < strName.length; iIdx++)
679
+ {
680
+ if (strInValidChars.indexOf(strName.charAt(iIdx), 0) != -1) return false;
681
+ }
682
+ return true;
683
+ }
684
+
685
+ function isValidNumber(strNumber)
686
+ {
687
+ var strValidChars = "0123456789";
688
+ var iIdx = 0;
689
+
690
+ for (; iIdx < strNumber.length; iIdx++)
691
+ {
692
+ if (strValidChars.indexOf(strNumber.charAt(iIdx), 0) == -1) return false;
693
+ }
694
+
695
+ return true;
696
+ }
697
+
698
+ function isValidPhoneNumber(strNumber)
699
+ { //Added "/" character by RamS TD#30075
700
+ var strValidChars = "0123456789- X()+./";
701
+ var iIdx = 0;
702
+
703
+ if ((strNumber.length < 5) && (strNumber.length != 0)) return false;
704
+ for (; iIdx < strNumber.length; iIdx++)
705
+ {
706
+ if (strValidChars.indexOf(strNumber.charAt(iIdx), 0) == -1) return false;
707
+ }
708
+
709
+ return true;
710
+ }
711
+
712
+ function isValidWebAddress(strAddress)
713
+ {
714
+ if (strAddress.length == 0) return true;
715
+ if (strAddress.indexOf("http://") == -1)
716
+ {
717
+ if (strAddress.indexOf("https://") == -1) return false;
718
+ }
719
+ if (strAddress.indexOf(".") == -1) return false;
720
+
721
+ return true;
722
+ }
723
+
724
+ function isValidYear(strYear)
725
+ {
726
+ var strValidChars = "0123456789";
727
+ var iIdx = 0;
728
+
729
+ if ((strYear.length != 4) && (strYear.length != 0)) return false;
730
+ for (; iIdx < strYear.length; iIdx++)
731
+ {
732
+ if (strValidChars.indexOf(strYear.charAt(iIdx), 0) == -1) return false;
733
+ }
734
+
735
+ return true;
736
+ }
737
+
738
+ function ReplaceInString(str, strFind, strReplace)
739
+ {
740
+ // Replaces strFind in str with strReplace and returns replaced text string
741
+ // 04-04-2003 Venkat
742
+
743
+ var returnStr = str;
744
+ var start = returnStr.indexOf(strFind);
745
+ while (start>=0)
746
+ {
747
+ returnStr = returnStr.substring(0,start) + strReplace + returnStr.substring(start+strFind.length,returnStr.length);
748
+ start = returnStr.indexOf(strFind,start+strReplace.length);
749
+ }
750
+ return returnStr;
751
+ }
752
+ // Added by RamS - End //
753
+
754
+ //Added by B.M.Hariharan
755
+
756
+ function formatTextBoxValuesStoreAndValidate(frmToCheck)
757
+ {
758
+ var lngIdx;
759
+ var lngControlCount;
760
+ var strCtrlName ;
761
+ var strTypeName;
762
+
763
+ elements = frmToCheck.elements;
764
+
765
+ lngControlCount = elements.length;
766
+ for (lngIdx = 0; lngIdx < lngControlCount; lngIdx++)
767
+ {
768
+ strCtrlName = elements[lngIdx].name;
769
+ strTypeName = elements[lngIdx].type;
770
+ if (strCtrlName.indexOf("Question_") != -1 || (strCtrlName.indexOf("Question") != -1 && strCtrlName.indexOf("_") != -1))
771
+ {
772
+
773
+ if(elements[lngIdx].type == "text" || elements[lngIdx].type == "textarea")
774
+ {
775
+ if (strCtrlName.toUpperCase().indexOf("CODEQUESTION_YES") !=-1)
776
+ {
777
+ elements[lngIdx].value = elements[lngIdx].value.replace(/\//g,",");
778
+
779
+ }
780
+
781
+ //we will do this on the other side so this ugly formatting goes away
782
+ //elements[lngIdx].value = elements[lngIdx].value.replace(/,/g,"\=#|");
783
+
784
+
785
+
786
+ }
787
+ }
788
+ }
789
+
790
+ }
791
+
792
+ //Added by B.M.Hariharan - END
793
+
794
+
795
+ //Added by Hari to Trim blank spaces
796
+ function checkBlank(ctrlName,strAlertMsg)
797
+ {
798
+ var bBlank;
799
+ bBlank = false;
800
+
801
+ if (ctrlName.value == '') bBlank = true;
802
+ if (ctrlName.value.replace(/ /g, "").length == 0) bBlank = true;
803
+ if (bBlank)
804
+ {
805
+ alert (strAlertMsg);
806
+ ctrlName.focus();
807
+ return false;
808
+ }
809
+ return true;
810
+ }
811
+ // End
812
+
813
+
814
+ function containsNonPrintableChars(strPassedVal)
815
+ {
816
+ return false; // Please remove this line when this functionality required..
817
+ var iIdx, iCount;
818
+ var iChar;
819
+ var cChar;
820
+ var strNonPrintableList = "☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼";
821
+
822
+ for (iIdx = 0, iCount = strPassedVal.length; iIdx < iCount; iIdx++)
823
+ {
824
+ cChar = strPassedVal.charAt(iIdx);
825
+ if (strNonPrintableList.indexOf(cChar) >= 0) break;
826
+ }
827
+
828
+ if (iIdx != iCount) return true;
829
+ return false;
830
+ }
831
+ //Added by RamS for TD#20492 to validate year in Addschool and Addjob pages
832
+ function validateYear(startYear,endYear)
833
+ {
834
+ if (startYear > endYear)
835
+ {
836
+ return false;
837
+ }
838
+ return true;
839
+ }
840
+
841
+ //Added By B.M.Hariharan -17FEB2003 - TD 21423
842
+
843
+ function isValidSSN(strSSNField)
844
+ {
845
+
846
+ var strValidChars = "0123456789-";
847
+ var strHyphen = "-";
848
+ var iIdx = 0;
849
+ var lCount=0;
850
+ var strSSN = strSSNField.value;
851
+
852
+ for (; iIdx < strSSN.length; iIdx++)
853
+ {
854
+ if (strValidChars.indexOf(strSSN.charAt(iIdx), 0) == -1)
855
+ {
856
+ alert(MSG_GEN_PlsEntVldSSN);
857
+ strSSNField.focus();
858
+ return;
859
+ }
860
+
861
+ if (strHyphen.indexOf(strSSN.charAt(iIdx), 0) >-1) lCount=lCount + 1;
862
+
863
+ }
864
+
865
+ if (lCount !=2)
866
+ {
867
+ alert(MSG_GEN_PlsEntVldSSN);
868
+ strSSNField.focus();
869
+ return;
870
+ }
871
+
872
+
873
+ if ((strSSN.length != 11) )
874
+ {
875
+
876
+ alert(MSG_GEN_SSNFormat);
877
+ strSSNField.focus();
878
+ return;
879
+ }
880
+
881
+ if ((strSSN.charAt(3) != "-") || (strSSN.charAt(6) != "-"))
882
+ {
883
+ alert(MSG_GEN_PlsEntVldSSN);
884
+ strSSNField.focus();
885
+ return;
886
+ }
887
+
888
+
889
+ return true;
890
+
891
+ }
892
+ //Added By B.M.Hariharan -17FEB2003-END
893
+
894
+
895
+ //Added By B.M.Hariharan -10MAY2003 - TD 29479
896
+
897
+ function isNumeric(numField)
898
+ {
899
+ var RegExp1 = new RegExp('^[-]?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9]*)?$', 'g');
900
+ if (!numField.value.match(RegExp1))
901
+ {
902
+ alert(MSG_GEN_PlsEntVldNumber);
903
+ numField.focus();
904
+ return;
905
+ }
906
+
907
+ return true;
908
+
909
+ }
910
+ //Added By B.M.Hariharan -10MAY2003 ,TD 29479-END
911
+
912
+ // TD 23997 - Date Handling in Search page - Venkat //
913
+ function formatSearchDateValuesStoreAndValidate(frmToCheck)
914
+ {
915
+ var lngIdx;
916
+ var lngControlCount;
917
+ var elements;
918
+ var strCtrlName;
919
+ var strQuestionId;
920
+ var dtCtrl;
921
+ var quesCtrl;
922
+ var strTemp;
923
+ var strJobId ="empty";
924
+ var strFromattedDate;
925
+ var lngCtrlIdx;
926
+ var strFromDate;
927
+ var strToDate;
928
+
929
+ elements = frmToCheck.elements;
930
+
931
+ lngControlCount = elements.length;
932
+
933
+ for (lngIdx = 0; lngIdx < lngControlCount; lngIdx++)
934
+ {
935
+ strJobId= "" ;
936
+ strCtrlName = elements[lngIdx].name;
937
+ if (strCtrlName.indexOf("Question_") != -1 || (strCtrlName.indexOf("Question") != -1 && strCtrlName.indexOf("_") != -1))
938
+ {
939
+ if (strCtrlName.indexOf("|") != -1)
940
+ {
941
+ strTemp = strCtrlName.split("|");
942
+ strCtrlName = strTemp[0];
943
+ strJobId = "|" + strTemp[1];
944
+ }
945
+ strTemp = strCtrlName.split("_");
946
+ if (strTemp[0] != "Question")
947
+ {
948
+ strQuestionId = strTemp[0].substring(8);
949
+ }
950
+ else
951
+ {
952
+ strQuestionId = strTemp[1];
953
+ }
954
+
955
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_Y" + strJobId);
956
+
957
+ //TD41839 - isNaN function is having problems with the variable in NS6.2
958
+ //if ((dtCtrl) && isNaN(dtCtrl))
959
+ if ((dtCtrl) && (eval("frmToCheck.Date_" + strQuestionId + "_Y" + strJobId))) // Do only if the question is of type Date
960
+ {
961
+ quesCtrl = elements[lngIdx];
962
+ quesCtrl.value = '';
963
+
964
+ for (lngCtrlIdx = 0; lngCtrlIdx < dtCtrl.length ; lngCtrlIdx++)
965
+ {
966
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_Y" + strJobId);
967
+ strFromattedDate = dtCtrl[lngCtrlIdx].options[dtCtrl[lngCtrlIdx].selectedIndex].value;
968
+
969
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_M" + strJobId);
970
+
971
+ strFromattedDate = strFromattedDate + "-" + dtCtrl[lngCtrlIdx].options[dtCtrl[lngCtrlIdx].selectedIndex].value;
972
+
973
+ dtCtrl = eval("frmToCheck.Date_" + strQuestionId + "_D" + strJobId);
974
+
975
+ strFromattedDate = strFromattedDate + "-" + dtCtrl[lngCtrlIdx].options[dtCtrl[lngCtrlIdx].selectedIndex].value;
976
+
977
+ if (validateFormattedDate(strFromattedDate))
978
+ {
979
+ if (strFromattedDate == '--')
980
+ strFromattedDate = '';
981
+
982
+ //Hari - validation for Date FROM < TO if FROM,TO <> ""
983
+ if ( strFromattedDate != '')
984
+ {
985
+ if (lngCtrlIdx == 0 )
986
+ {
987
+ strFromDate = strFromattedDate;
988
+ strFromDate = getUTC(strFromDate);
989
+ }
990
+ else
991
+ {
992
+ strToDate = strFromattedDate;
993
+ strToDate = getUTC(strToDate);
994
+ }
995
+ if(strFromDate > strToDate)
996
+ {
997
+ alert(MSG_GEN_FromToDate);
998
+ dtCtrl[0].focus();
999
+ return false;
1000
+ }
1001
+ }
1002
+
1003
+ if (quesCtrl.value == '')
1004
+ {
1005
+ quesCtrl.value = " AnswerName&=|" + strFromattedDate + "=X|%%%AnswerValue&=|" + strFromattedDate + "=X|%%%GDEAnswerValue&=|=X|???,";
1006
+ }
1007
+ else
1008
+ {
1009
+ quesCtrl.value = quesCtrl.value + " " +" AnswerName&=|" + strFromattedDate + "=X|%%%AnswerValue&=|" + strFromattedDate + "=X|%%%GDEAnswerValue&=|=X|???";
1010
+ }
1011
+
1012
+ }
1013
+ else
1014
+ {
1015
+
1016
+ alert(MSG_GEN_PlsEntValdDate);
1017
+
1018
+ dtCtrl[lngCtrlIdx].focus();
1019
+ return false;
1020
+ }
1021
+ }
1022
+ }
1023
+
1024
+ }
1025
+
1026
+ }
1027
+
1028
+
1029
+ return true;
1030
+ }
1031
+
1032
+ function passwdCheck(passwdField)
1033
+ {
1034
+ var spaceChars = " ";
1035
+
1036
+ var strPasswdText;
1037
+
1038
+ strPasswdText= passwdField.value;
1039
+
1040
+ if (strPasswdText.indexOf(spaceChars,0) > -1)
1041
+ {
1042
+ alert(MSG_GEN_EnterValidPassword);
1043
+ passwdField.focus();
1044
+ return false;
1045
+ }
1046
+
1047
+ var RegExp1 = new RegExp('^[\u0020-\u007e\u00a0-\uffff\s]+$', 'g');
1048
+ if (!passwdField.value.match(RegExp1))
1049
+ {
1050
+ alert(MSG_GEN_EnterValidPassword);
1051
+ passwdField.focus();
1052
+ return false;
1053
+ }
1054
+
1055
+ return true;
1056
+
1057
+ }
1058
+
1059
+
1060
+
1061
+ //Returns the number of milliseconds for given Date String since January 1, 1970, 00:00:00, //Universal Coordinated Time (GMT). Takes Date string parameter in the format YYYY-MMM-DD. //Calculates an year Offset based on 1900, Converts the month name string in the format MMM //e.g., apr into equivalent month number. Fits that month number into a 0-11 format.
1062
+ //Finally, uses UTC method of date object and returns.
1063
+ //Venkat 04-15-2003 for TD 23997
1064
+ function getUTC(strDate)
1065
+ {
1066
+
1067
+ var lngMonth;
1068
+ var strMonthName;
1069
+ var lngYear;
1070
+
1071
+ var arrDt = strDate.split("-");
1072
+
1073
+ lngYear = arrDt[0];
1074
+ lngYear = lngYear - 1900 ; //Date Offset
1075
+
1076
+ strMonthName = arrDt[1];
1077
+
1078
+ switch(strMonthName)
1079
+ {
1080
+ case 'Jan': lngMonth = 1; break;
1081
+ case 'Feb': lngMonth = 2; break;
1082
+ case 'Mar': lngMonth = 3; break;
1083
+ case 'Apr': lngMonth = 4; break;
1084
+ case 'May': lngMonth = 5; break;
1085
+ case 'Jun': lngMonth = 6; break;
1086
+ case 'Jul': lngMonth = 7; break;
1087
+ case 'Aug': lngMonth = 8; break;
1088
+ case 'Sep': lngMonth = 9; break;
1089
+ case 'Oct': lngMonth = 10; break;
1090
+ case 'Nov': lngMonth = 11; break;
1091
+ case 'Dec': lngMonth = 12; break;
1092
+ case '1': lngMonth = 1; break;
1093
+ case '2': lngMonth = 2; break;
1094
+ case '3': lngMonth = 3; break;
1095
+ case '4': lngMonth = 4; break;
1096
+ case '5': lngMonth = 5; break;
1097
+ case '6': lngMonth = 6; break;
1098
+ case '7': lngMonth = 7; break;
1099
+ case '8': lngMonth = 8; break;
1100
+ case '9': lngMonth = 9; break;
1101
+ case '10': lngMonth = 10; break;
1102
+ case '11': lngMonth = 11; break;
1103
+ case '12': lngMonth = 12; break;
1104
+ default: return false;
1105
+ }
1106
+ lngMonth = lngMonth - 1;
1107
+
1108
+ return (Date.UTC(lngYear , lngMonth , arrDt[2]));
1109
+ }
1110
+
1111
+
1112
+
1113
+
1114
+ // Added by WMF for Numeric Field Range checking //
1115
+ function alertIfOutOfRange(ctrlName, strCtrlText, strMinValue, strMaxValue)
1116
+ {
1117
+
1118
+ var bOutOfRange;
1119
+ var num;
1120
+ bOutOfRange = false;
1121
+
1122
+ if (!isValidNumber(ctrlName.value))
1123
+ {
1124
+ alert(MSG_GEN_PlsEntVldNumber);
1125
+ ctrlName.focus();
1126
+ return false;
1127
+ }
1128
+
1129
+ if ( strMinValue == strMaxValue )
1130
+ {
1131
+ if ( strMinValue == 0 )
1132
+ {
1133
+ return true;
1134
+ }
1135
+
1136
+ }
1137
+
1138
+ num = parseInt(ctrlName.value,10);
1139
+
1140
+
1141
+ if (num < strMinValue || num > strMaxValue)
1142
+ {
1143
+ bOutOfRange = true;
1144
+ }
1145
+
1146
+ if (bOutOfRange)
1147
+ {
1148
+ Msg = ReplaceInString(MSG_GEN_EnterValRange, "|QUESTION|", "\"" + strCtrlText + "\"");
1149
+ Msg = ReplaceInString(Msg, "|MIN|", strMinValue );
1150
+ Msg = ReplaceInString(Msg, "|MAX|", strMaxValue );
1151
+ alert(Msg);
1152
+ ctrlName.focus();
1153
+ return false;
1154
+ }
1155
+
1156
+ return true;
1157
+ }
1158
+
1159
+ // Added by WMF for Numeric Field Range checking - End //
1160
+
1161
+
1162
+ // Added by ADK for decoding XML on the client - Begin //
1163
+
1164
+ function XmlDecode(sText) {
1165
+ sText = sText.replace(/\&amp;/g,"&");
1166
+ sText = sText.replace(/\&lt;/g,"<");
1167
+ sText = sText.replace(/\&gt;/g,">");
1168
+ //sText = sText.replace(/\&apos;/g,"'");
1169
+ sText = sText.replace(/\&quot;/g,'"');
1170
+ return sText;
1171
+ }
1172
+
1173
+ // Added by ADK for decoding XML on the client - End //
1174
+
1175
+
1176
+ // Added by WMF 11/05/2003--to read query string values from client side //
1177
+ //
1178
+ // QueryString
1179
+ //
1180
+
1181
+ function QueryString(key)
1182
+ {
1183
+ var value = null;
1184
+ for (var i=0;i<QueryString.keys.length;i++)
1185
+ {
1186
+ if (QueryString.keys[i]==key)
1187
+ {
1188
+ value = QueryString.values[i];
1189
+ break;
1190
+ }
1191
+ }
1192
+ return value;
1193
+ }
1194
+
1195
+ QueryString.keys = new Array();
1196
+ QueryString.values = new Array();
1197
+
1198
+ function QueryString_Parse()
1199
+ {
1200
+ var query = window.location.search.substring(1);
1201
+ var pairs = query.split("&");
1202
+
1203
+ for (var i=0;i<pairs.length;i++)
1204
+ {
1205
+ var pos = pairs[i].indexOf('=');
1206
+ if (pos >= 0)
1207
+ {
1208
+ var argname = pairs[i].substring(0,pos);
1209
+ var value = pairs[i].substring(pos+1);
1210
+ QueryString.keys[QueryString.keys.length] = argname;
1211
+ QueryString.values[QueryString.values.length] = value;
1212
+ }
1213
+ }
1214
+
1215
+ }
1216
+
1217
+ QueryString_Parse();
1218
+
1219
+
1220
+ function getCookie(cookieName)
1221
+ {
1222
+ var cookieValue = null;
1223
+ if(document.cookie) //only if exists
1224
+ {
1225
+ var arr = document.cookie.split((escape(cookieName) + '='));
1226
+ if(2 <= arr.length)
1227
+ {
1228
+ var arr2 = arr[1].split(';');
1229
+ cookieValue = unescape(arr2[0]);
1230
+ }
1231
+ }
1232
+ return cookieValue;
1233
+ }
1234
+
1235
+
1236
+ function getLocaleId(strSiteId,arrSiteLocaleLangList)
1237
+ {
1238
+ var arr1 = arrSiteLocaleLangList.split('||');
1239
+ var strTempSiteId;
1240
+ var arr2;
1241
+ var arr3;
1242
+
1243
+ arr2 = arr1[0].split(',');
1244
+ arr3 = arr1[2].split(',');
1245
+ for (var lIdx = 0; lIdx < arr2.length; lIdx++)
1246
+ {
1247
+ if (strSiteId == arr2[lIdx])
1248
+ {
1249
+ return arr3[lIdx];
1250
+ }
1251
+ }
1252
+ }
1253
+
1254
+ // Added by ADK for trimming whitespace - Begin //
1255
+
1256
+ function strtrim()
1257
+ {
1258
+ return this.replace(/^\s+/,'').replace(/\s+$/,'');
1259
+ }
1260
+
1261
+ String.prototype.trim = strtrim;
1262
+
1263
+ // Added by ADK for trimming whitespace - End //
1264
+
1265
+ function DecodeQuotes(sText) {
1266
+ sText = sText.replace(/\&quot;/g,'"');
1267
+
1268
+ return sText;
1269
+ }
1270
+
1271
+ function DecodeSingleQuotes(sText) {
1272
+ sText = sText.replace(/\&apos;/g,'"');
1273
+
1274
+ return sText;
1275
+ }
1276
+
1277
+ function EncodeComma(sText) {
1278
+ var intTextlength = 0;
1279
+ var strOneChar = "";
1280
+ var strNewText = "";
1281
+
1282
+ intTextlength = sText.length;
1283
+
1284
+ for (var i=0;i < intTextlength; i++)
1285
+ {strOneChar = sText.charAt(i);
1286
+ if (sText.charAt(i) == ",")
1287
+ strOneChar = "&comma;";
1288
+
1289
+ strNewText = strNewText + strOneChar;
1290
+ }
1291
+ return strNewText;
1292
+ }
1293
+
1294
+ function userNameCheck(usernameField) {
1295
+ if (usernameField.value.length > 100)
1296
+ {
1297
+ alert(MSG_GEN_UserNameLength);
1298
+ usernameField.focus();
1299
+ return false;
1300
+ }
1301
+
1302
+ if (usernameField.value.indexOf(' ') > 0)
1303
+ {
1304
+ alert(MSG_GEN_UserNameSpaces);
1305
+ usernameField.focus();
1306
+ return false;
1307
+ }
1308
+ var RegExp1 = new RegExp('^[\u0021-\u003b=\u003f-\u007e\u009f-\uffff\s]+$', 'g'); // Regular Expression for UserName
1309
+ if (!usernameField.value.match(RegExp1))
1310
+ {
1311
+ alert(MSG_GEN_UserNameInvalidChars);
1312
+ usernameField.focus();
1313
+ return false;
1314
+ }
1315
+
1316
+
1317
+ return true;
1318
+ }
1319
+
1320
+ function XmlEncodeForEduExp(sText) {
1321
+ var intTextlength = 0;
1322
+ var strOneChar = "";
1323
+ var strNewText = "";
1324
+
1325
+ intTextlength = sText.length;
1326
+
1327
+ for (var i=0;i < intTextlength; i++)
1328
+ {strOneChar = sText.charAt(i);
1329
+ if (sText.charAt(i) == "&")
1330
+ strOneChar = "__AMP__";
1331
+ if (sText.charAt(i) == "<")
1332
+ strOneChar = "__LT__";
1333
+ if (sText.charAt(i) == ">")
1334
+ strOneChar = "__GT__";
1335
+ if (sText.charAt(i) == '"')
1336
+ strOneChar = "__QUOT__";
1337
+ if (sText.charAt(i) == "'")
1338
+ strOneChar = "__APOS__";
1339
+
1340
+ strNewText = strNewText + strOneChar;
1341
+ }
1342
+ return strNewText;
1343
+ }
1344
+
1345
+ function XmlDecodeForEduExp(sText) {
1346
+ var intTextlength = 0;
1347
+ var strOneChar = "";
1348
+ var strNewText = "";
1349
+
1350
+ intTextlength = sText.length;
1351
+
1352
+ sText = sText.replace("__AMP__","&");
1353
+ sText = sText.replace("__LT__","<");
1354
+ sText = sText.replace("__GT__",">");
1355
+ sText = sText.replace('__QUOT__','"');
1356
+ strNewText = sText.replace("__APOS__","'");
1357
+
1358
+ return strNewText;
1359
+ }
1360
+
1361
+ function emailCheckNew(emailField,switchTo)
1362
+ {
1363
+ var bInValidEmail;
1364
+ bInValidEmail = false;
1365
+
1366
+ if(emailField.value.replace(/ /g, "").length != 0)
1367
+ {
1368
+
1369
+ var RegExp1 = new RegExp('^[a-zA-Z0-9ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ!#$%&\'/*/+-///=/?/^_`{|}~]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$', 'g'); // Regular Expression for Email
1370
+ if (!emailField.value.match(RegExp1))
1371
+ {
1372
+ bInValidEmail = true;
1373
+ }
1374
+ }
1375
+
1376
+
1377
+ if (!checkDBQuoteNew(emailField))
1378
+ {
1379
+ bInvalidEmail = true;
1380
+ }
1381
+ if ( bInValidEmail )
1382
+ {
1383
+ switchIt(document.getElementById(switchTo));
1384
+ alert(MSG_GEN_EntValdEmlAddr);
1385
+ emailField.focus();
1386
+ return false;
1387
+ }
1388
+
1389
+ return true;
1390
+ }
1391
+
1392
+ // clear all field values
1393
+ function _ClearAllFields(formName)
1394
+ {
1395
+ with (document.forms[formName])
1396
+ {
1397
+ var n;
1398
+ for (n=0; n<elements.length; n++)
1399
+ {
1400
+ if (elements[n].type != 'hidden' && elements[n].type != 'button')
1401
+ {
1402
+ if (elements[n].type != 'radio' && elements[n].type != 'checkbox')
1403
+ elements[n].value = '';
1404
+ else
1405
+ {
1406
+ if (elements[n].checked == true)
1407
+ elements[n].checked = false;
1408
+ }
1409
+ }
1410
+ }
1411
+ }
1412
+ }
1413
+
1414
+ function containsNonHTMLTag(strPassedVal)
1415
+ {
1416
+ if (strPassedVal.indexOf("<") >= 0 || strPassedVal.indexOf(">") >=0) return true;
1417
+ return false;
1418
+ }
1419
+
1420
+ //RDP-413 following function is added for input validation of form fields
1421
+ function alertIfInputValidationFails(ctrlName, strCtrlText, strRegx)
1422
+ {
1423
+ //if candidate is not entered any data, don't aplly validation logic. Exit from here
1424
+ if(ctrlName.value == '' || ctrlName.value.replace(/ /g, "").length == 0)
1425
+ {
1426
+ return true;
1427
+ }
1428
+ var Msg;
1429
+ var valueToValidate = ctrlName.value;
1430
+
1431
+ var RegExp1 = new RegExp(strRegx);
1432
+ //var RegExp1 = new RegExp('^[a-zA-Z]+$'); //only chars
1433
+ //var RegExp1 = new RegExp('^[0-9]+$'); //only numbers
1434
+
1435
+ if (valueToValidate.match(RegExp1) == null)
1436
+ {
1437
+ Msg = ReplaceInString(MSG_InputValidationFail, "[QUESTION]", "\"" + DecodeQuotes(strCtrlText) + "\"");
1438
+ alert(Msg);
1439
+ ctrlName.focus();
1440
+ return false;
1441
+ }
1442
+
1443
+ return true;
1444
+ }
1445
+
1446
+ </script>
1447
+ <script language="JavaScript" type="text/javascript" src="../../../Template/Scripts/TSValidate.js"></script>
1448
+ <style type="text/css">
1449
+ <!--
1450
+ .PBnbspSize { font-size: 15px;}
1451
+ .PBdashSize { font-size: 16px; }
1452
+ .PBwingdingsSize1 { font-size: 18px; }
1453
+ .PBwingdingsSize3 { font-size: 24px; }
1454
+ .PBSectionImgSize { }
1455
+ .PBSeparatorImgSize { height: 10px; width: 100%; }
1456
+ -->
1457
+ </style>
1458
+
1459
+
1460
+ <script></script>
1461
+ <NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT>
1462
+ <html>
1463
+ <head>
1464
+ <title>Archstone - Job details</title><META name='description' content='Search information technology and Internet job openings. Locate job fairs and career events. Post resumes to high tech employers.' </META>
1465
+
1466
+
1467
+ <script language="JavaScript" type="text/javascript" src="../../../Template/Scripts/windows.js"></script>
1468
+ <NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT>
1469
+ <script language="JavaScript" type="text/javascript" src="/css/Partner_25152_5244.js"></script>
1470
+ <NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT><NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT><NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT>
1471
+ <script language="JavaScript">
1472
+ function getWidth()
1473
+ {
1474
+ if (document.layers)
1475
+ {
1476
+ var w = window.innerWidth;
1477
+ var n = w - 180;
1478
+ var theimage = "<img src='../../images/pixel.gif' alt='' height=1 width=" + n +"border=1>";
1479
+ return theimage;
1480
+ }
1481
+ }
1482
+
1483
+ //Following Function Added by UmaShankar on 11/29/2001
1484
+ function goToSearchPage()
1485
+ {
1486
+ document.frmSearch.submit();
1487
+ }
1488
+ function showjob(lngNewSelection)
1489
+ {
1490
+ //''"RDP 294: Added amp; replace.
1491
+ document.frmJobDetail.action = "cim_jobdetail.asp?partnerid=25152&siteid=5244&jobid=217790";
1492
+ document.frmJobDetail.CurSel.value= lngNewSelection;
1493
+ document.frmJobDetail.submit();
1494
+ }
1495
+ function sendToFriend()
1496
+ {
1497
+ openWindow3('about:blank?sessionid=7B640F670E2DDAA02D48D02D8EBD2DA6B37A4EEB657D');
1498
+ document.frmSendToFriend.submit();
1499
+ }
1500
+
1501
+ function launchSocialMedia()
1502
+ {
1503
+ openWindow1('about:blank?sessionid=7B640F670E2DDAA02D48D02D8EBD2DA6B37A4EEB657D');
1504
+ document.frmSocialMedia.submit();
1505
+ }
1506
+
1507
+ function saveToJobCart()
1508
+ {
1509
+ var strTemp;
1510
+ var lIdx;
1511
+ var lLen;
1512
+ var arrSubInfo;
1513
+
1514
+ if (document.frmJobDetail.jobcartcnt.value > 50)
1515
+ alert (MSG_cim_jobdetail_JobCart);
1516
+ else
1517
+ {
1518
+ document.frmSaveToCart.chkJobClientIds.value = ReplaceInString(document.frmSaveToCart.chkJobClientIds.value, "%%", "");
1519
+ arrSubInfo = document.frmSaveToCart.chkJobClientIds.value.split("|");
1520
+ //09-09-02 GTG - Added JobReqLang - Venkat
1521
+
1522
+ if(arrSubInfo.length != 3)
1523
+ {
1524
+ strTemp = arrSubInfo[0] + "|" + arrSubInfo[1];
1525
+ document.frmSaveToCart.chkJobClientIds.value = strTemp;
1526
+ }
1527
+
1528
+ openWindow3('about:blank?sessionid=7B640F670E2DDAA02D48D02D8EBD2DA6B37A4EEB657D');
1529
+ document.frmSaveToCart.submit();
1530
+ }
1531
+ }
1532
+
1533
+ // Following function added by Sathyanarayanan K on 04/20/2005 for Selectedjobs
1534
+ function ApplyJobNow(strLocale)
1535
+ {
1536
+ var strGQId;
1537
+ var iLen, iIndx;
1538
+ var arrGQId;
1539
+ var arrGQIds;
1540
+ var lngNewSelection = 0;
1541
+ var lngSiteLocale = "1033"
1542
+ strGQId = "0"; // from Querystring
1543
+
1544
+ var lngSelect = 1;
1545
+ if (strGQId == '')
1546
+ {
1547
+ strGQId= document.frmJobDetail.JobInfo.value;
1548
+ arrGQId = (strGQId.substring(2, strGQId.length - 2)).split("%%");
1549
+ iLen = arrGQId.length;
1550
+ arrGQIds = arrGQId[lngSelect-1].split('|');
1551
+ if (arrGQIds[2] != 0)
1552
+ {
1553
+ if (strLocale == lngSiteLocale)
1554
+ {
1555
+ openWindow11("/" + strLocale + "/asp/tg/GQLogin.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&fjd=true&referer=&gqid="+ arrGQIds[2] + "&jobinfo=__" + arrGQId[lngSelect-1] + "__&applycount=1&type=search_jobdetail");
1556
+ }
1557
+ else
1558
+ {
1559
+ document.frmMassApply.GQID.value = arrGQIds[2];
1560
+
1561
+ document.frmMassApply.action= "/" + strLocale + "/asp/tg/apply.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&src=jd&qs=partnerid%3D25152%26siteid%3D5244%26jobid%3D217790";
1562
+
1563
+ document.frmMassApply.submit();
1564
+ }
1565
+ }
1566
+ else
1567
+ {
1568
+ document.frmMassApply.action= "/" + strLocale + "/asp/tg/apply.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4";
1569
+ document.frmMassApply.submit();
1570
+ }
1571
+ }
1572
+ else
1573
+ {
1574
+
1575
+ if (strGQId != 0)
1576
+ {
1577
+ if (strLocale == lngSiteLocale)
1578
+ {
1579
+ openWindow11("/" + strLocale + "/asp/tg/GQLogin.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&fjd=true&referer=&gqid=" + document.frmMassApply.GQID.value + "&jobinfo=__217790|1|0__&applycount=1&type=search_jobdetail");
1580
+ }
1581
+ else
1582
+ {
1583
+
1584
+ document.frmMassApply.action= "/" + strLocale + "/asp/tg/apply.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&src=jd&qs=partnerid%3D25152%26siteid%3D5244%26jobid%3D217790";
1585
+
1586
+ document.frmMassApply.submit();
1587
+ }
1588
+ }
1589
+ else
1590
+ {
1591
+ document.frmMassApply.action = "/" + strLocale + "/asp/tg/Apply.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4";
1592
+ document.frmMassApply.submit();
1593
+ }
1594
+ }
1595
+ }
1596
+ // End
1597
+
1598
+ function ApplyAsRegularJob()
1599
+ {
1600
+ document.frmMassApply.target = "_self";
1601
+ document.frmMassApply.GQID.value = "0";
1602
+ document.frmMassApply.action = "apply.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4";
1603
+ document.frmMassApply.submit();
1604
+ }
1605
+
1606
+ // TD:74615 : Added by Sathyanarayanan K on 29.07.2005
1607
+ function reload(sParam)
1608
+ {
1609
+ if (typeof(sParam) != 'undefined')
1610
+ {
1611
+ if (sParam == 'ApplyAsRegularJob')
1612
+ ApplyAsRegularJob();
1613
+ return;
1614
+ }
1615
+ var sGQId = "0";
1616
+ var arrGQId;
1617
+ var iLen = 0;
1618
+ if (sGQId == '' )
1619
+ {
1620
+ sGQId= document.frmJobDetail.JobInfo.value;
1621
+ arrGQId = (sGQId.substring(2, sGQId.length - 2)).split("%%");
1622
+ iLen = arrGQId.length;
1623
+ }
1624
+
1625
+ if ((iLen == 1) || (sGQId != ''))
1626
+ {
1627
+
1628
+ document.frmJobDetail.target = "_self";
1629
+ document.frmJobDetail.CurSel.value = "";
1630
+ document.frmJobDetail.action = "Logout.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&gqclose=yes&crl=yes&Exit=^kOrPIAkw5kv7mKe0ExOmHdsKEKIlMJ7VkD4PEWtcjpPDzsG/yfceIuN1BjnrYlozOeRWq/do6xCKGjNaWnNI4ux/wZJyGbF3r1T49vrjefamFgXwYsbzdCg3M6XYcviRr+oQkbYohmBOVbJuGZhWX6XatvDNr/jAuUeNHkJ1yU2eZBe9UP/u45/O/Cedx9F/saQpwDdcCy+k1I+1ootvXSQW2Nx7shM7tZv/XXQbiwjj9IZiUNmVy4lkoZ1NJ49AjaW9Tgc8q54/mIFW699j7Z8tTFRNa5Vg4onefixVFDaWjsY7eFuWCw==";
1631
+ document.frmJobDetail.submit();
1632
+ }
1633
+ }
1634
+
1635
+ //Following function Added by UmaShankar on 12/26/2001 for Mass apply from jobdetail
1636
+ function ApplyNow()
1637
+ {
1638
+ // Start of changes TD 35552 .. 7/22/2003
1639
+ var ApplyURL = "";
1640
+
1641
+ if (ApplyURL=="-1" ) ApplyURL= "";
1642
+ if (ApplyURL.length>0 )
1643
+ {
1644
+
1645
+ window.location.href=ApplyURL;
1646
+ }
1647
+ else
1648
+ //In case GTG if the job siteid is different than the current siteid
1649
+ //display warning pop-up to confirm site switched to job site
1650
+ {
1651
+
1652
+
1653
+
1654
+ ApplyJobNow('1033');
1655
+
1656
+ }
1657
+
1658
+ // End of Changes
1659
+ }
1660
+ //End Add
1661
+
1662
+ </script>
1663
+ <NOSCRIPT>In order to access this site, you need to enable Javascript. To change this setting, please refer to your browser's documentation.</NOSCRIPT>
1664
+ </head>
1665
+ <body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" >
1666
+
1667
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
1668
+ <tr>
1669
+ <td align="center" width="100%">
1670
+ <table border="0" cellspacing="0" cellpadding="0" > <tr><td><img src="/img/images_25152_5244/F_CL5244.gif"/></td></tr></table>
1671
+ </td>
1672
+ </tr>
1673
+ </table>
1674
+
1675
+
1676
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
1677
+ <tr>
1678
+
1679
+ <td valign="top" height ="100%">
1680
+
1681
+ </td>
1682
+
1683
+ <td width="8">
1684
+ <!-- spacer -->
1685
+ <img src="../../images/pixel.gif" alt="" width="10">
1686
+ </td>
1687
+
1688
+
1689
+ <!--Begin-->
1690
+ <td valign="top" align="left" width="100%">
1691
+
1692
+
1693
+ <a name="top">
1694
+
1695
+
1696
+ <form name="frmSearch" method="post" action="cim_searchresults.asp?ref=4132011153437&SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&referer=search">
1697
+ <input TYPE="HIDDEN" NAME="recordstart" VALUE="1">
1698
+
1699
+ <input TYPE="HIDDEN" NAME="JobInfo" VALUE="">
1700
+
1701
+ <input TYPE="HIDDEN" NAME="CartJobInfo" VALUE="%%217790|1|0%%">
1702
+
1703
+ <input TYPE="HIDDEN" NAME="JMSimilarJobCriteria2" VALUE=' <#AND> <LIKE>("{217790-25152-5244}")'>
1704
+
1705
+ <input TYPE="HIDDEN" NAME="JMSimilarJobCriteria" VALUE=''>
1706
+
1707
+ </form>
1708
+
1709
+
1710
+
1711
+ <form name="frmSendToFriend" method="post" action="cim_pop_emailtofriend.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4" target="7B640F670E2DDAA02D48D02D8EBD2DA6B37A4EEB657D">
1712
+ <input type="hidden" name="JobInfo" value="%%217790|1|0%%">
1713
+ <input type="hidden" name="VerityQuery" value="( PartnerId=25152 )&lt;#AND&gt;( SiteId=5244 ) &lt;#AND&gt;(dateopen &lt;= 2011/04/13)&lt;#AND&gt;(dateclosed &gt;= 2011/04/13 15:34:37)">
1714
+ <input type="hidden" name="JobSiteInfo" value="217790_5244">
1715
+ </form>
1716
+ <form name="frmSaveToCart" method="post" action="cim_pop_savejobs.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4" target="7B640F670E2DDAA02D48D02D8EBD2DA6B37A4EEB657D">
1717
+ <input type="hidden" name="chkJobClientIds" value="%%217790|1|0%%">
1718
+ <input TYPE="HIDDEN" NAME="JobSiteInfo" VALUE="217790_5244,">
1719
+ </form>
1720
+ <form name="frmSocialMedia" method="post" action="SocialMedia_pop.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4" target="7B640F670E2DDAA02D48D02D8EBD2DA6B37A4EEB657D">
1721
+ <input type="hidden" name="jobid" value="217790">
1722
+ </form>
1723
+ <form name="frmMassApply" method="post">
1724
+ <input TYPE="HIDDEN" NAME="JobInfo" VALUE="%%217790|1|0%%">
1725
+ <input TYPE="HIDDEN" NAME="jv_JobInfo" VALUE="">
1726
+ <input TYPE="HIDDEN" NAME="recordstart" VALUE="1">
1727
+ <input TYPE="HIDDEN" NAME="CurSel" VALUE="1">
1728
+ <input TYPE="HIDDEN" NAME="JobSiteInfo" VALUE="217790_5244">
1729
+ <input TYPE="HIDDEN" NAME="type" VALUE="search_jobdetail">
1730
+ <input TYPE="HIDDEN" NAME="GQID" VALUE="0">
1731
+ <input TYPE="HIDDEN" NAME="ApplyCount" VALUE="1">
1732
+
1733
+
1734
+ </form>
1735
+
1736
+
1737
+
1738
+
1739
+ <form name="frmJobDetail" method="post">
1740
+ <input type="hidden" name="jobcartcnt" value="0">
1741
+
1742
+ <input TYPE="HIDDEN" NAME="JobInfo" VALUE="">
1743
+ <input TYPE="HIDDEN" NAME="JobSiteInfo" VALUE="217790_5244">
1744
+ <input TYPE="HIDDEN" NAME="recordstart" VALUE="1">
1745
+ <input TYPE="HIDDEN" NAME="CurSel" VALUE="1">
1746
+
1747
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
1748
+
1749
+
1750
+ <tr>
1751
+ <td vAlign=top align=left width="80%">
1752
+ <table border="0" cellspacing="0" cellpadding="0" class="breadcrumbtable"><tr><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td width="%" align="center" nowrap valign="bottom"><font class="PBwingdingsSize1" face="Wingdings 2" color="#3D5D9C">Å</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" align="center" nowrap valign="bottom"><font class="PBwingdingsSize1" face="Wingdings 2" color="#3D5D9C">Å</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" align="center" nowrap valign="bottom"><font class="PBwingdingsSize1" face="Wingdings 2" color="#3D5D9C">Å</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" valign="middle"><font class="PBdashSize" face="Courier" color="#3D5D9C">▬</font></td><td width="%" align="center" nowrap valign="bottom"><font class="PBwingdingsSize1" face="Wingdings 2" color="#3D5D9C">›</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td><td valign="middle"><font class="PBnbspSize" face="Courier">&nbsp;</font></td></tr><tr><td valign="top" align="center" resize="no" nowrap="no" colspan="9"><span class="COOKIEcrumbtext"><a href="cim_home.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4">Home</a></span></td><td valign="top" align="center" resize="no" nowrap="no" colspan="9"><span class="COOKIEcrumbtext"><a href="cim_advsearch.asp?SID=^VtH0CBvCjkxO6g3hj_slp_rhc_lOJM2pC44NdeHCnh8FDZCdtbYyFkrCA9ezUEqXfXTnNMS4&ref=4132011153437">Search <br> openings</a></span></td><td valign="top" align="center" resize="no" nowrap="no" colspan="9"><span class="COOKIEcrumbtext"><a href="javascript:void(0);goToSearchPage();">Search <br> results</a></span></td><td valign="top" align="center" resize="no" nowrap="no" colspan="9"><span class="COOKIEcrumbtext">Job <br> details</span></td></tr><tr><td colspan="100">&nbsp;</td></tr></table>
1753
+
1754
+ <!-- cookie crumbs -->
1755
+ <!--
1756
+ <table class="COOKIEcrumbs" border="0" cellpadding="0" cellspacing="0" width="100%">
1757
+ <tr><td height="3" colspan="5" class="COOKIEcrumbback"><img height="3" alt="" src="../../images/pixel.gif"></td></tr>
1758
+ <tr>
1759
+ <td width="10" class="COOKIEcrumbback"><img src="../../images/pixel.gif" alt="" width="10"></td>
1760
+ <td width="90%" class="COOKIEcrumbback"><span class="COOKIEcrumbtext"><a href="cim_home.asp">Home</a> &gt;
1761
+
1762
+ <a href="cim_advsearch.asp?ref=4132011153437">Search openings</a> &gt; <a href="javascript:void(0);goToSearchPage();">Search results</a> &gt; Job details
1763
+ </td>
1764
+ <td align="right" nowrap="nowrap" class="COOKIEcrumbback"><a href="javascript:openWindow6('help/TG_help.asp?&type=help%23cim_jobdetail_help');" title="View help for this window"><img src="../../images/icon_help_small.gif" alt="View help for this window" valign="bottom" border="0"></a></td>
1765
+ <td align="left" nowrap="nowrap" class="COOKIEcrumbback"><a href="javascript:openWindow6('help/TG_help.asp?&type=help%23cim_jobdetail_help');" title="View help for this window" class="HELPlink">Help</a></td>
1766
+ <td width="10" class="COOKIEcrumbback"><img src="../../images/pixel.gif" alt="" width="10"></td>
1767
+ <tr><td colspan="5" class="COOKIEcrumbback"><img src="../../images/pixel.gif" alt="" height="10" width="1"></td></tr>
1768
+ <tr><td colspan="5"><img src="../../images/pixel.gif" alt="" height="10" width="1"></td></tr>
1769
+ </tr>
1770
+ </table>
1771
+ -->
1772
+
1773
+ </td>
1774
+ <td width="20%">
1775
+
1776
+ <table class="COOKIEcrumbs" border="0" cellpadding="0" cellspacing="0" width="100%">
1777
+ <tr>
1778
+ <td align="right" nowrap="nowrap" class="COOKIEcrumbback"><a href="javascript:openWindow6('help/TG_help.asp?&type=help%23cim_jobdetail_help');" title="View help for this window"><img src="../../images/icon_help_small.gif" alt="View help for this window" valign="bottom" border="0"></a></td>
1779
+ <td align="left" nowrap="nowrap" class="COOKIEcrumbback"><a href="javascript:openWindow6('help/TG_help.asp?&type=help%23cim_jobdetail_help');" title="View help for this window" class="HELPlink">Help</a></td>
1780
+ <td width="10" class="COOKIEcrumbback"><img src="../../images/pixel.gif" alt="" width=10></td>
1781
+ <td colspan="5" class="COOKIEcrumbback"><img src="../../images/pixel.gif" alt="" height="10" width="1"></td>
1782
+ </tr>
1783
+ </table>
1784
+
1785
+ </td>
1786
+ </tr>
1787
+
1788
+
1789
+ <tr>
1790
+ <td valign="top" width="80%">
1791
+
1792
+ <!--begin primary content of page-->
1793
+ <table width="92%" border="0" cellpadding="0" cellspacing="0" align="center">
1794
+
1795
+
1796
+ <tr>
1797
+ <td class="PAGEtitleTabback" width="10" height="20" nowrap="nowrap" valign="abstop"><img src="../../images/left_tab_inactive.gif" alt="" width="10" height="20" /></td>
1798
+ <td class="PAGEtitleTabback" nowrap><span class="PAGEtitleTabtext">Job details</span></td>
1799
+ <td class="PAGEtitleTabback" width="10" height="20" nowrap="nowrap" align="right" valign="abstop"><img src="../../images/right_tab_inactive.gif" alt="" width="10" height="20" /></td>
1800
+ <td width="90%" valign="bottom">&nbsp;</td>
1801
+ </tr>
1802
+ <tr>
1803
+ <td height="1" colspan="3" class="PAGEtitleTabback"><img src="../../images/pixel.gif" alt="" height="2"></td>
1804
+ <td width="90%"><img src="../../images/pixel.gif" alt="" height="1"></td>
1805
+ </tr>
1806
+
1807
+ <tr><td height="0" colspan="4" class="BRANDINGdom2dark"><img src="../../images/pixel.gif" alt="" height="1"></td></tr>
1808
+ </table>
1809
+
1810
+ <table width="92%" border="0" cellPadding="2" cellSpacing="0" align="center">
1811
+ <tr><td colSpan="5"><img height="2" alt="" src="../../images/pixel.gif"></td></tr>
1812
+ <tr>
1813
+
1814
+ <!-- <td width="10%">&nbsp; </td>-->
1815
+
1816
+
1817
+ <td colspan="5" align="center" valign="middle" nowrap class="SMALLtext" ><b>
1818
+ Job 1</b> of 1 </td>
1819
+
1820
+
1821
+ <!--<td width="10%">&nbsp; </td>-->
1822
+
1823
+ </tr>
1824
+
1825
+ <tr><td colSpan="5"><img height="4" alt="" src="../../images/pixel.gif"></td></tr>
1826
+ </table>
1827
+ <table width="92%" border="0" cellPadding="3" cellSpacing="0" align="center">
1828
+ <tr>
1829
+ <td align="center" nowrap>
1830
+
1831
+ <label for="button1"></label><input type="button" class="REGbutton" value="Apply to Job(s)" id=button1 name=button1 onClick="javascript:ApplyNow();"> &nbsp;&nbsp;
1832
+
1833
+ <label for="button2"></label><input type="button" class="REGbutton" value="Send to friend" id=button2 name=button2 onClick="javascript:sendToFriend();"> &nbsp;&nbsp;
1834
+
1835
+ <label for="button3"></label><input type="button" class="REGbutton" value="Save to cart" id=button3 name=button3 onClick="javascript:saveToJobCart();"> &nbsp;&nbsp;
1836
+
1837
+ <label for="button4"></label><input type="button" class="REGbutton" value="View similar jobs" id=button4 name=button4 onClick="javascript: frmSearch.JMSimilarJobCriteria.value = frmSearch.JMSimilarJobCriteria2.value; goToSearchPage();"> &nbsp;&nbsp;
1838
+
1839
+ <!--RDP 294:Start-->
1840
+
1841
+ </td>
1842
+ </tr>
1843
+ </table>
1844
+
1845
+ <table width="92%" border="0" cellPadding="3" cellSpacing="0" align="center">
1846
+
1847
+
1848
+ <tr><td colspan="2"><IMG alt="" height="4" src="../../images/pixel.gif"></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Job Title">Job Title</label></span></td><td width="80%" align="left"><span class="TEXT" id="Job Title">Door Attendant</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Job Description">Job Description</label></span></td><td width="80%" align="left"><span class="TEXT" id="Job Description">&nbsp;&nbsp;<font size=2>Looking for a stable position with flexible shifts at one of America's most respected apartment companies? Our Full-time Door Attendant position is a perfect opportunity for someone who enjoys the balance between customer service and periods of quiet. This job can be a great first step to a bright future, or it can be a perfect job for anyone looking for a friendly, low-stress job.&nbsp;<br><strong><br>Job Description</strong>&nbsp;<br>Responsibilities include opening the door for all residents and guests; warmly greeting everyone entering and leaving the building; hailing taxi cabs; answering resident questions; helping elderly or others in need of assistance into cars or taxi cabs; maintaining a clean front entry to the building; notifying residents of the arrival of cars, packages or visitors; preventing unwelcome individuals from entering the building; and any other services required for maintaining a first-class level of resident service, care and safety. Must enjoy helping people. A professional, friendly attitude is important.&nbsp;<strong><br><br>Requirements</strong> <br><ul><br><li>Be willing to join the local union <br><li>Exceptional communication and people skills (you love interacting with a range of personalities!) <br><li>Friendly, polite personality <br><li>Self-motivated; can work independently <br><li>Willingess to join local union <br><li>Must be willing and able to work the following schedule: Saturday/Sunday 6:30 a.m. - 3:00 p.m., Monday/Tuesday 2:30 p.m. - 11:00 p.m., Wednesday 10:30 p.m. - 7:00 a.m.</li></ul><strong>Why You'd Want This Job</strong> <br><ul><br><li>Low stress, steady work with set shifts <br><li>Great benefits, including excellent health care and paid vacation <br><li>Opportunities for advancement with a well-respected national company (One of America's Most Admired Companies - Fortune magazine 2004) </li></ul>To learn more about Archstone, visit our website at <A href="http://www.archstoneapartments.com/" target=_blank>ArchstoneApartments.com</A>.&nbsp;<br><br>Archstone is an Equal Opportunity Employer. As a condition of employment, a satisfactory hair follicle drug test and background check are required. <br><CENTER><strong><br>Make your talents known! Apply today!</strong></CENTER></font>&nbsp;&nbsp;</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Market">Market</label></span></td><td width="80%" align="left"><span class="TEXT" id="Market">New York</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Location Name">Location Name</label></span></td><td width="80%" align="left"><span class="TEXT" id="Location Name">Archstone Midtown West</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Department">Department</label></span></td><td width="80%" align="left"><span class="TEXT" id="Department">Archstone Midtown West</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Location: City">Location: City</label></span></td><td width="80%" align="left"><span class="TEXT" id="Location: City">New York</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Location: State">Location: State</label></span></td><td width="80%" align="left"><span class="TEXT" id="Location: State">New York</span></td></tr><tr><td valign="top"><span class="Fieldlabel"><label for="Auto req ID">Auto req ID</label></span></td><td width="80%" align="left"><span class="TEXT" id="Auto req ID">14879BR</span></td></tr></table>
1849
+ <table width="92%" border="0" cellPadding="3" cellSpacing="0" align="center">
1850
+ <tr>
1851
+ <td align="center" nowrap>
1852
+
1853
+ <label for="button1"></label><input type="button" class="REGbutton" value="Apply to Job(s)" id=button1 name=button1 onClick="javascript:ApplyNow();"> &nbsp;&nbsp;
1854
+
1855
+ <label for="button2"></label><input type="button" class="REGbutton" value="Send to friend" id=button2 name=button2 onClick="javascript:sendToFriend();"> &nbsp;&nbsp;
1856
+
1857
+ <label for="button3"></label><input type="button" class="REGbutton" value="Save to cart" id=button3 name=button3 onClick="javascript:saveToJobCart();"> &nbsp;&nbsp;
1858
+
1859
+ <label for="button4"></label><input type="button" class="REGbutton" value="View similar jobs" id=button4 name=button4 onClick="javascript: frmSearch.JMSimilarJobCriteria.value = frmSearch.JMSimilarJobCriteria2.value; goToSearchPage();"> &nbsp;&nbsp;
1860
+
1861
+ <!--RDP 294:Start-->
1862
+
1863
+ </td>
1864
+ </tr>
1865
+ </table>
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+ </table>
1872
+ </form>
1873
+ <br><Div align='center'><img alt="Powered by Kenexa" src=../../images/powered_by.gif border=0></Div>
1874
+
1875
+ </tr>
1876
+
1877
+
1878
+ </table>
1879
+
1880
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
1881
+ <tr>
1882
+ <td align="center" width="100%">
1883
+ <script type="text/javascript">
1884
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
1885
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
1886
+ </script>
1887
+ <script type="text/javascript">
1888
+ try {
1889
+ var pageTracker = _gat._getTracker("UA-12492436-1");
1890
+ pageTracker._trackPageview();
1891
+ } catch(err) {}</script>
1892
+ </td>
1893
+
1894
+ </tr>
1895
+ </table>
1896
+
1897
+ <!--LDP014 SEO-->
1898
+ <span id="IndexMonitor" style="display:none"> Index Monitor </span>
1899
+ </body>
1900
+ </html>