
// JavaScript Document

var webroot = '/';
//var webroot = '/trunk/';
//var webroot = '/myparttimepro/trunk/';

var jPPreview = {	
	formID: 'job_listing',
	formOBJ: '',
	currentAction: '',
	previewAction: webroot + 'job_detailsPREVIEW.cfm',
	
	actionID: 'Action',
	actionOBJ: '',
	
	previewButtonID: 'preview',
	previewButtonOBJ: '',
	
	init: function() {	
	
		if(document.getElementById(jPPreview.formID) && document.getElementById(jPPreview.previewButtonID)) {
			
			//set preview button and form objects
			jPPreview.previewButtonOBJ = document.getElementById(jPPreview.previewButtonID);
			jPPreview.formOBJ = document.getElementById(jPPreview.formID);
			jPPreview.actionOBJ = document.getElementById(jPPreview.actionID);
			jPPreview.currentAction = jPPreview.formOBJ.action;
			
			//maket sure button is displayed
			jPPreview.previewButtonOBJ.style.display = '';			
			addEvent(jPPreview.previewButtonOBJ,'click',jPPreview.previewPosting,false);
		}
		
	},
	
	previewPosting: function(e) {
		var local_target;
		var dummy_var;
		
		local_target=findTarget(e);
		
		if(!local_target)
			return;
			
		jPPreview.setForm(jPPreview.previewAction,'preview','_blank');		
		dummy_var = setTimeout("jPPreview.setForm(jPPreview.currentAction,'add','')",1500);		
	},
	
	setForm: function(formAct, actionValue,targetValue) {		
		jPPreview.formOBJ.action = formAct;
		jPPreview.actionOBJ.value = actionValue;
		jPPreview.formOBJ.target = targetValue;				
	}
	
}

var sP = {
	searchInputDefaultText: 'Enter Search Criteria Here',
	searchInputID: 'search_input',
	searchPaginationID: 'search_pagination',
	searchInputOBJ:	'',
	searchInputKeywords: '',
	pageNumber: 1,
	
	resultsID: 'search_results',
	resultsOBJ: '',	
	
	init: function() {	
		if(!document.getElementById(sP.searchInputID)) {
			return;	
		}		
		
		sP.searchInputOBJ = document.getElementById(sP.searchInputID);
		sP.searchInputOBJ.style.width = "725px";
		
		//kill search button
		if(document.getElementById('search_submit'))
			document.getElementById('search_submit').style.display = 'none';
		//add onfocus event to search input box	
		addEvent(sP.searchInputOBJ, 'focus', sP.killDefaultText, false);
		addEvent(sP.searchInputOBJ, 'blur', sP.makeAliveDefaultText, false);
		//add onkeyup event to search input box
		addEvent(sP.searchInputOBJ, 'keyup', sP.searchPostings, false);
		
		/* PAGINATION ONCLICK LINKS */
		sP.addLinkEvents();	
		
	},
	
	addLinkEvents: function (t) {	
		if(document.getElementById(sP.searchPaginationID)) {
			sP.searchPaginationOBJ = document.getElementById(sP.searchPaginationID);
			count = 0;
			searchLinkNodeARR = sP.searchPaginationOBJ.firstChild.childNodes;
			for(i=0; i < searchLinkNodeARR.length; i++) {			
				if(searchLinkNodeARR[i].nodeName == 'A') {					
					addEvent(searchLinkNodeARR[i], 'click', sP.grabPage, false);
					addEvent(searchLinkNodeARR[i], 'click', cancelClick, false);
					searchLinkNodeARR[i].onclick = cancelClickSafari;
				}			
			}	
		}
	},
	
	grabPage: function(e) {
		var local_target = findTarget(e);
		
		//travers to get to link node (Safari issue)
		local_target = linkTraverse(local_target);		
		
		if(local_target.nodeName.toLowerCase() == 'body') {
			return;	
		} else {
			pageLoc = local_target.href.indexOf("page") + 5;
			lastSlash = local_target.href.lastIndexOf("/");			
			sP.pageNumber = local_target.href.substr(pageLoc, (local_target.href.length - lastSlash));
			sP.searchPostings();			
		}
	},
	
	killDefaultText: function (e) {	
		sP.searchInputOBJ.value = sP.searchInputOBJ.value == sP.searchInputDefaultText? '' : sP.searchInputOBJ.value;
	},
	
	makeAliveDefaultText: function (e) {
		sP.searchInputOBJ.value = sP.searchInputOBJ.value? sP.searchInputOBJ.value : sP.searchInputDefaultText;
		
		// use ajax to record whatever they were searching on
		qs = 'keywords=' + sP.searchInputKeywords + '&page=' + sP.pageNumber;
		new Ajax.Request(webroot + 'searchAJAX_record.cfm',{method:'post', postBody:qs,asynchronous:true});	
	},
	
	searchPostings: function(e) {	
		var qs = '';	
		
		//if new text entered, reset page number in object
		if(e) 
			sP.pageNumber = 1;
		
		if(sP.searchInputOBJ.value != sP.searchInputDefaultText)
			sP.searchInputKeywords = sP.searchInputOBJ.value;	
			
		//build POST string
		qs = 'keywords=' + sP.searchInputKeywords + '&page=' + sP.pageNumber;
		
		new Ajax.Updater(sP.resultsID,webroot + 'searchAJAX.cfm',{method:'post', postBody:qs,asynchronous:true, onSuccess: setTimeout(sP.reInit,500)});		
		//alert(qs);
	},
	
	reInit: function() {
		sP.addLinkEvents();
		searchHigh.init();
	}
}

var creditChange = {
	totalCost: 0.00,
	totalCredits: 0,
	spanID: 'creditsT',
	selectID: 'credits',
	firstMonthID: 'firstMonth',
	
	totalCostOBJ: '',
	creditsSelectOBJ: '',	
	
	init: function() {	
		
		if(document.getElementById(creditChange.selectID) && document.getElementById(creditChange.spanID)) {			
			creditChange.creditsSelectOBJ = document.getElementById(creditChange.selectID);
			creditChange.totalCostOBJ = document.getElementById(creditChange.spanID);			
			creditChange.totalCredits = creditChange.creditsSelectOBJ.options[creditChange.creditsSelectOBJ.selectedIndex].value;
			
			//update total for back button folks
			creditChange.updateTotal(creditChange.totalCredits);
			
			//add onchange event to selectOBJ
			addEvent(creditChange.creditsSelectOBJ, 'change', creditChange.updateTotalEVENT, false);			
		}		
	},
	
	updateTotalEVENT: function (e) {
		var local_target = findTarget(e);
		var cost = 0.00;
		
		//get current credits
		creditChange.totalCredits = local_target.options[local_target.selectedIndex].value;		
		
		//call updateTotal() function to change total price in span
		creditChange.updateTotal(creditChange.totalCredits);		
				
	},
	
	/*updateTotal: function(credits) {
		
		if(document.getElementById(creditChange.firstMonthID).value == 0) {
			if(credits == '') {			
				cost = 0.00;
			} else {
				if(credits >= 1 && credits <= 4) {
					cost = 39.00;			
				} else if(credits >= 5 && credits <= 9) {
					cost = 35.00;				
				} else if(creditChange.totalCredits >= 10 && credits <= 24) {
					cost = 30.00;										
				} else if(credits >= 25) {
					cost = 25.00;	
				}
			}
		}
		else {
			cost = 39.00;
		}	
		
		creditChange.totalCostOBJ.firstChild.nodeValue = "$"+(credits * cost).toFixed(2);		
	}*/
	updateTotal: function(credits) {
	
		var req = new Ajax.Updater(
			{ success: 'creditsT'},
			  'purchase_credits.cfm',
			  {
				  method: 'get',
				  parameters: 'ajax=true&credits='+credits
			  });		
	}
}


var searchHigh = {
	
	init: function() {		
	  if (!document.getElementsByTagName) return;
	 
	  if(document.getElementById('search') && document.getElementById('search').nodeName == 'TABLE') {	  	
		  var all_cells = document.getElementsByTagName('td');
		  for (var i = 0; i < all_cells.length; i++) {			
			addEvent(all_cells[i], 'mouseover', searchHigh.hi_cell, false);
			addEvent(all_cells[i], 'mouseout', searchHigh.lo_cell, false);
		  }
		  
		  var all_th = document.getElementsByTagName('th');
		  for (var i = 0; i < all_th.length; i++) {			  
			addEvent(all_th[i], 'mouseover', searchHigh.hi_cell, false);
			addEvent(all_th[i], 'mouseout', searchHigh.lo_cell, false);
		  }
	  
	  }
		
	},
	
	hi_cell: function(e) {
		var el;
		
		el = findTarget(e);			
		
		el = ascendDOM(el, 'td');
		
		if(el == null) return;		
		
		var parent_row = ascendDOM(el, 'tr');
		if (parent_row == null) return;
		
		var parent_table = ascendDOM(parent_row, 'table');
		if (parent_table == null) return;
		
		// row styling
		parent_row.className += ' hi';					
	},
	
	lo_cell: function(e) {
		var el;
		
		el =  findTarget(e)
		
		if(el == null) return;	
		
		var parent_row = ascendDOM(el, 'tr');
		if (el == null) return;
		
		var parent_table = ascendDOM(parent_row, 'table');
		if (el == null) return;
		
		// row de-styling
		parent_row.className = parent_row.className.replace(/\b ?hi\b/, '');
		
	}
}

/*
var addOnChange = {
	totalCost: 0.00,
	extensionSubTotal: 0.00,
	marketSubTotal: 0.00,
	totalMarkets: 0,
	extensionBOOL: 0,
	
	marketCost: 19.00,
	extensionCost: 19.00,
	
	extensionSpanID: 'ExtendPostingT',
	marketSpanID: 'MarketIDT',
	totalCostSpanID: 'total_costT',
	
	extensionSpanOBJ: '',
	marketSpanOBJ: '',
	totalCostSpanOBJ: '',
	
	extensionCheckboxID: 'extend_posting',
	marketSelectID: 'additional_markets',	
		
	extensionCheckboxOBJ: '',
	marketSelectOBJ: '',	
	
	init: function() {	

		if(document.getElementById(addOnChange.extensionCheckboxID)) {	
		
	  //if(document.getElementById(addOnChange.extensionCheckboxID) && document.getElementById(addOnChange.marketSelectID)) {			
			
			//get Extension Checkbox node
			addOnChange.extensionCheckboxOBJ = document.getElementById(addOnChange.extensionCheckboxID);	
			
			//get Market Select node
			//addOnChange.marketSelectOBJ = document.getElementById(addOnChange.marketSelectID);
			
			//get span update nodes
			addOnChange.extensionSpanOBJ = document.getElementById(addOnChange.extensionSpanID);
			//addOnChange.marketSpanOBJ = document.getElementById(addOnChange.marketSpanID);			
			addOnChange.totalCostSpanOBJ = document.getElementById(addOnChange.totalCostSpanID);				
			
			//add onclick event to extension checkbox OBJ
			addEvent(addOnChange.extensionCheckboxOBJ, 'click', addOnChange.checkTotals, false);
			//add onclick event to market select OBJ
			//addEvent(addOnChange.marketSelectOBJ, 'click', addOnChange.checkTotals, false);
		}		
	},
	
	checkTotals: function() {
		var counter = 0;
		var SubTotal = 0.00;
		
		//check checkbox 
		if(addOnChange.extensionCheckboxOBJ.checked) {			
			addOnChange.extensionSubTotal = addOnChange.extensionCost;
		} else {
			addOnChange.extensionSubTotal = 0.00;
		}
			
		//addOnChange.marketSubTotal = SubTotal;
		//addOnChange.totalMarkets = counter;
		
		addOnChange.updateTotalCost();
	},
	
	updateTotalCost: function() {
		addOnChange.totalCost = addOnChange.extensionSubTotal // + addOnChange.marketSubTotal;
		
		addOnChange.extensionSpanOBJ.firstChild.nodeValue = "$"+(addOnChange.extensionSubTotal).toFixed(2);
		//addOnChange.marketSpanOBJ.firstChild.nodeValue = "$"+(addOnChange.marketSubTotal).toFixed(2);
		addOnChange.totalCostSpanOBJ.firstChild.nodeValue = "$"+(addOnChange.totalCost).toFixed(2);		
	}	
}*/


var addOnChange = {
	
	extensionCheckboxID: 'extend_posting',
	
	init: function() {
		if(document.getElementById(addOnChange.extensionCheckboxID)) {
			addOnChange.extensionCheckboxOBJ = document.getElementById(addOnChange.extensionCheckboxID);
			addEvent(addOnChange.extensionCheckboxOBJ, 'click', addOnChange.updateTotal, false);
		}
	},
	
	updateTotal: function() {
		if(addOnChange.extensionCheckboxOBJ.checked) {
			var req = new Ajax.Updater(
				{ success: 'ExtendPostingT'},
				  'purchase_addons.cfm',
				  {
					  method: 'get',
					  parameters: 'ajax=true'
				  });
			var req = new Ajax.Updater(
				{ success: 'total_costT'},
				  'purchase_addons.cfm',
				  {
					  method: 'get',
					  parameters: 'ajax=true'
				  });
		} else {
			$('ExtendPostingT').update('$0.00');
			$('total_costT').update('$0.00');
		}
	}	
}

function viewResumes(formElement) {
	var PostingID = '';
	
	/*
	for(i = 0; i < formElement.options.length; i++) {
		if(formElement.options[i].selected && formElement.options[i].value != '') {
			PostingID = formElement.options[i].value;
			break;
		}
	}
	
	if(PostingID != '') {
		//document.getElementById('viewResumes').href = document.getElementById('viewResumes').href.replace(/\.cfm(.*)/,".cfm?PostingID=" + PostingID);
		document.getElementById('viewResumesCont').style.display = 'inline';
		//Element.show('viewResumesCont');
	} else {
		//document.getElementById('viewResumes').href = document.getElementById('viewResumes').href.replace(/\.cfm(.*)/,".cfm");
		Element.hide('viewResumesCont');
	}
	*/
}

addEvent(window, 'load', jPPreview.init, false);
addEvent(window, 'load', addOnChange.init, false);
addEvent(window, 'load', sP.init, false);
addEvent(window, 'load', searchHigh.init, false);
addEvent(window, 'load', creditChange.init, false);