//******************************** manage.php ********************************

/* Assigns different view variable as get to form */

function mFormSubmit(form){
	
	form.submit(); 
}

function mDeleteRecord(object, action, id){
	 
	 //only call this function if we have selected a value
	 val = document.getElementById(id);
	 if (val && val.value != ""){
		 mAddElements(object, action);
		 document.manage.submit();
	 }
}

/* Clears form by changing location with no
	post or get variables */
function mCancel(){
	document.location = "manage.php"
}


function mAddElements(object, action){

	 var form = document.getElementById("manage");
	
	 var o = document.createElement("input");
	 o.type = "hidden";
	 o.name = "object";
	 o.value = object;
	 
	 var a = document.createElement("input");
	 a.type = "hidden";
	 a.name = "action";
	 a.value = action;

	form.appendChild(o);
	form.appendChild(a);

}

	
function mSaveRecord(object, action, element){

	var el = document.getElementById(element);

	if (el && el.value != ""){
		mAddElements(object, action);
		document.manage.submit(); 
	}
	else{
		var warned = document.getElementById('warned');
		if (!warned){
			var warning = document.createElement('b');
			if (object == "Category")
				var message = document.createTextNode('Please enter a Category');
			else if (object == "SubCategory")
				var message = document.createTextNode('Please enter a SubCategory');
			else
				var message = document.createTextNode('Please enter a value');
			warning.appendChild(message);
			warning.style.color = 'red';
			warning.setAttribute('id','warned');
			document.getElementById('warning').appendChild(warning);
		}
	}
	
}


function mEditRecord(form, type){
	
	//Only submit form if we have a value in the cat dropdown
	var cat_id = document.getElementById("cat_id");
	if (cat_id && cat_id.value != ""){
	
		if (type == "cat"){
			//get the category number we are looking for
			var val = document.getElementById("cat_id").value;
		}
		else if (type == "subcat"){
			//get the subcategory number we are looking for
			var val = document.getElementById("subcat_id").value;
			if (val && val == "NaN" || val == ""){
				var warned = document.getElementById('warned');
				if (!warned){
					var warning = document.createElement('b');
					var message = document.createTextNode('There are no service subcategories associated with this service category.');
					warning.appendChild(message);
					warning.style.color = 'red';
					warning.setAttribute('id','warned');
					document.getElementById('warning').appendChild(warning);
				}
				return;
			}
			
		}
		
		//dynamically add a hidden form element called
		//save so we can pick it up in our post vars
		//and alter our view accordingly
		 
		 var hidVal = document.createElement("input");
		 hidVal.type = "hidden";
		 hidVal.name = "save";
		 hidVal.value = true;
		 
		 form.appendChild(hidVal);
		 
		 //make the textarea usable again
		 if (document.getElementById("include"))
		 	document.getElementById("include").disabled = false;
		 
		 form.submit();
	}
	
}

function mGetSubCategory(value){
	
	if (value != ""){
		var myAjax = new Ajax.Request("Classes/functions/getSubCategory.php?cat_id=" + value,
		{method: 'post', parameters: "", onComplete: this.handleGetSubCategory.bindAsEventListener(this)});
	}
	else{
		var inc = document.getElementById("subcat_id");
		inc.length = 0;
		inc.options[0] = new Option("Select a subcategory", "");
	}
}

function handleGetSubCategory(response){
	
	var inc = document.getElementById("subcat_id");
	inc.length = 0;
	
	insert = response.responseText.split("\n");
	
	for (i = 0; i < insert.length - 1; i++){
		record = insert[i].split("||");
		inc.options[i] = new Option(record[0], record[1]);
	}
	
	//new Insertion.Bottom('subcat_id', response.responseText);
	
	//update the include text area with new current
	//subcat_id
	mGetIncludes(inc.value);
	
	//also delete the warning if there was one
	var warn = document.getElementById("warned");
	if (warn){
		parent = warn.parentNode;
		parent.removeChild(warn);
	}
		
}

function mGetIncludes(value){
	
	var myAjax = new Ajax.Request("Classes/functions/getIncludes.php?cat_id=" + value,
	{method: 'post', parameters: "", onComplete: this.handleGetIncludes.bindAsEventListener(this)});
}


function handleGetIncludes(response){
	
	//Clear the former contents and add what we found
	var inc = document.getElementById("include");
	
	//get rid of <br> tags for display purposes
	var includes = response.responseText.replace(/&lt;br&gt;/g,"");
	inc.value = includes;
}

//******************Edit form  *****************************

/* Clears form by changing location with no
	post or get variables */
function eCancel(){
	document.location = "edit.php"
}


/* Assigns different view variable as get to form */
function eFormSubmit(form){
	
	//get the service value we are looking for
	s = form.service.value;

	form.action = "edit.php?service=" + s;
	
	//dynamically add a hidden form element called
	//search so we can pick it up in our post vars
	//and alter our view accordingly
	 
	 var hidVal = document.createElement("input");
	 hidVal.type = "hidden";
	 hidVal.name = "search";
	 hidVal.value = true;
	 
	 form.appendChild(hidVal);
	 form.submit();

}

function eEditRecord(form,id){
	
	 var hidVal = document.createElement("input");
	 hidVal.type = "hidden";
	 hidVal.name = "id";
	 hidVal.value = id;
	 
	 document.lookup.appendChild(hidVal);
	 
	 form.action = "form.php";
	 form.submit();
	
	
}

//****************** form.php *****************************

function fSubmit(method,action,ra){

	if (formCheck()){
		var f = document.getElementById("entryForm");
		f.action = "form.php?method=" + method + "&action=" + action + "&ra=" + ra;
		f.submit();
	}
	
}

function fConfirm(action,id){
	
	if (formCheck()){
		var f = document.getElementById("entryForm");
		f.action = "confirm.php?action=" + action + "&id=" + id;
		f.submit();
	}
	
}

function fPreview(method){
	
	if (formCheck()){
		var f = document.getElementById("entryForm");
		f.action = "preview.php?method=" + method;
		f.submit();
	}
	
}

function fGetSubCategory(value){
	if (value != ""){
		var myAjax = new Ajax.Request("Classes/functions/getSubCategory.php?cat_id=" + value,
		{method: 'post', parameters: "", onComplete: this.handlefGetSubCategory.bindAsEventListener(this)});
	}
	else{
		var inc = document.getElementById("subcat_id");
		inc.options[0] = new Option("Select a subcategory", "");
	}
	
}

function handlefGetSubCategory(response){
	
	var inc = document.getElementById("subcat_id");
	inc.length = 0;
	
	insert = response.responseText.split("\n");
	
	for (i = 0; i < insert.length - 1; i++){
		record = insert[i].split("||");
		inc.options[i] = new Option(record[0], record[1]);
	}
	
	//new Insertion.Bottom('subcat_id', response.responseText);
	
	//update the question area with any include info we have
	fdisplayQuestion(inc.value);
	
}

function fdisplayQuestion(subcat_id){
	
	if (subcat_id != ""){
		var myAjax = new Ajax.Request("Classes/functions/displayQuestions.php?subcat_id=" + subcat_id,
		{method: 'post', parameters: "", onComplete: this.handledisplayQuestions.bindAsEventListener(this)});
	}
	else{
		var old = document.getElementById("includes");
		var header = document.getElementById("considerHeader");
		if (old)
			removeOldList(old);
		if(header)
			document.getElementById("questions").removeChild(header);
	}
}

function removeOldList(list){
    list.parentNode.removeChild(list);
}

function handledisplayQuestions(response){
	
	//if we have already created a ul and header delete them
	var old = document.getElementById("includes");
	var header = document.getElementById("considerHeader");
	
	if (old)
		removeOldList(old);
	
	
	//set up the pointers we need and create the necessary nodes
	var q = document.getElementById("questions");
	
	if(header)
		q.removeChild(header);
	
	
	
	var ul = document.createElement("ul");
	ul.setAttribute("id", "includes");
	ul.setAttribute("style", "margin-top:0em; width:360px;");
	
	

	r = response.responseText.replace(/&#039;/g,"'");
	r = r.replace(/&quot;/g,'"');

	insert = r.split("&lt;br&gt;");
	
	//loop through the responses and add li elements for 
	//unique ones. Watch out for lf chr(32) and 0 length 
	//strengths
	for (i = 0; i < insert.length; i++){
		if (parseInt(insert[i].length) != 0){
			if (insert[i].charCodeAt(1) != 32 ){
				if (insert[i].charCodeAt(0) != 32){
					var li = document.createElement("li");
					li.setAttribute("style","font-weight:normal; width:360px;");

					insert[i] = insert[i].replace(/&lt;/g,'<');
					insert[i] = insert[i].replace(/&gt;/g,'>');


					var txt = document.createTextNode(insert[i]);


					li.appendChild(txt);
					ul.appendChild(li);
				}
			}
		}
	}
	
	//adjust style of parent div if we have somthing to add
	if (insert[0].length != 0){
		q.setAttribute("style", "font-weight:normal; margin-top:.2em;width:365px");
		//write the bulleted list header in bold
		var newBoldText = document.createElement("b");
		newBoldText.setAttribute("id", "considerHeader");
		newBoldText.appendChild(document.createTextNode("Things to Consider in Service Description:")); 
		q.appendChild(newBoldText);
	}
	else
		q.setAttribute("style", "font-weight:normal; margin-top:0;width:365px");
	
	
	

	
	//append the new ul to the target div and display
	//what we have done
	q.appendChild(ul);
	
}

function fFormSubmit(form){

	form.action = "Classes/Driver.php"
	from.submit();

}

function fDeleteRecord(form){
	
	//update the object we are acting on
	var hidVal = document.createElement("input");
	hidVal.type = "hidden";
	hidVal.name = "object";
	hidVal.value = "ServiceList";
	form.appendChild(hidVal);
	
	//update the immediate desired action
	var hidVal = document.createElement("input");
	hidVal.type = "hidden";
	hidVal.name = "action";
	hidVal.value = "save";
	form.appendChild(hidVal);
	
	//update the ultimate desired action with this record
	var rec_ac = document.getElementById("record_action");
	rec_ac.value = "delete";
	
	form.action = "Classes/Driver.php"
	form.submit();

}


//****************** preview.php ***************************

function pSubmit(method,action,ra){
	var f = document.getElementById("preview");
	f.action = "form.php?method=" + method + "&action=" + action + "&ra=" + ra;
	f.submit();
}

function pEditEntry(method){

	var f = document.getElementById("preview");
	f.action = "form.php?method=" + method;
	f.submit(); 
	
}


function pSubmitEntry(form){

	var hidVal = document.createElement("input");
	hidVal.type = "hidden";
	hidVal.name = "action";
	hidVal.value = "save";
	 
	form.appendChild(hidVal);
	
	form.action = "Classes/Driver.php";
	form.submit();
}

//******************* confirm.php *****************************

function cEditRecord(form,id){
	
	 var hidVal = document.createElement("input");
	 hidVal.type = "hidden";
	 hidVal.name = "id";
	 hidVal.value = id;
	 
	 form.appendChild(hidVal);
	 
	 form.action = "confirmPreview.php";
	 form.submit();
	
	
}

//*********************** index.php *****************************

function iSubmit(){
	
	var form = document.getElementById('searchFM');
	var srv_1 = document.getElementById('srv_1');
	var srv_2 = document.getElementById('srv_2');
	
	srv_1.name += "[]";
	srv_2.name += "[]";
	
	}	

function iGetSubCategory(value){
	if (value != ""){
		var myAjax = new Ajax.Request("Classes/functions/getSubCategory.php?cat_id=" + value,
		{method: 'post', parameters: "", onComplete: this.handleiGetSubCategory.bindAsEventListener(this)});
	}
	else{
		var inc = document.getElementById("subcat_id");
		inc.length = 0;
		inc.options[0] = new Option("Select a service subcategory...", "");
		inc.options[1] = new Option("View All","All");
	}
	
}

function handleiGetSubCategory(response){
	
	var inc = document.getElementById("subcat_id");
	inc.length = 0;
	
	inc.options[0] = new Option("Select a Subcategory...", "");
	inc.options[1] = new Option("View All", "All");
	
	insert = response.responseText.split("\n");
	
	for (i = 0; i < insert.length - 1; i++){
		record = insert[i].split("||");
		inc.options[i + 2] = new Option(record[0], record[1]);
	}
	
}

function openWin(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=1,scrollbars=2,location=1,statusbar=1,menubar=1,resizable=1,width=785,height=490');");
}

function clearDefault(keyword){
	if (keyword.value == "Enter optional keyword(s)")
		keyword.value = "";
}

//******************************* results.php **************************


function refineSearch(form){

	form.action = "index.php"
	form.submit();

}


//////////////////////////////////ERROR DISPLAY FUNCTION//////////////////////////
function displayWarning(msg){
	
	var warned = document.getElementById('warned');
	
	if(!warned){
		var warning = document.createElement('b');
		var message = document.createTextNode(msg);
		warning.appendChild(message);
		warning.style.color = 'red';
		warning.setAttribute('id','warned');
		document.getElementById('warningBox').appendChild(warning);
	}
	else{
		removeWarning();
		var warning = document.createElement('b');
		var message = document.createTextNode(msg);
		warning.appendChild(message);
		warning.style.color = 'red';
		warning.setAttribute('id','warned');
		document.getElementById('warningBox').appendChild(warning);
	}	
	return;
}

function removeWarning(){

	var w = document.getElementById("warned");
	w.parentNode.removeChild(w);

}

function formCheck(){
//before data is even processed, submit to preview page

	var form = document.getElementById("entryForm");
	
	//error checking:
	var error = false;//is there an error? no.
	var GoodChars = "0123456789()- ";
	
	//check for required fields
	if(form.prv_name.value == '' || form.prv_email.value == '' ||
	   form.prv_phone.value == '' || form.prv_organization.value == '' ||
	   form.prv_provider.value == '' || form.srv_email.value == '' ||
	   form.srv_phone.value == '' || form.prv_location.value == '' ||
	   form.srv_contact.value == '' || form.srv_description.value == '' ){
			error = true;
			displayWarning("Please complete all fields.");
	}
	

	if(!error){//if there is no error still...
		//check the phone numbers
		var i = 0;
		for (i =0; i <= form.srv_phone.value.length -1; i++) {
			if (GoodChars.indexOf(form.srv_phone.value.charAt(i)) == -1) {
				error = true;
				break;
			} 
		} 
		for (i =0; i <= form.prv_phone.value.length -1; i++) {
			if (GoodChars.indexOf(form.srv_phone.value.charAt(i)) == -1) {
				error = true;
				break;
			} 
		}
		
		if(error) displayWarning("Phone numbers may contain only 14 characters");
		
	}
	
	if(!error){
		//check for valid email addresses
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!(filter.test(form.prv_email.value)) ){
			error = true;
			displayWarning("Please provide valid email addresses");
		}	
	}
	
	if(!error){//check for a category
		
		if(document.getElementById('cat_id').value == "" || 
		   document.getElementById('subcat_id').value == ""){
			error = true;
		}
		
		if(error) displayWarning("Please choose a Category and Subcategory...");
	}
	
	if(!error){
		//check for at least one option selected
		var clientsChecked = true;
		var levelsChecked = true;
		 
			for(i=0; i<4; i++){
				id = "srv_level" + i;
				 if(document.getElementById(id).checked){
					 levelsChecked = false;
				 }
			}
			
			for(i=0; i<6; i++){
				id = "srv_clients" + i;
				 if(document.getElementById(id).checked){
					 clientsChecked = false;
				 }
			}
			
		if(clientsChecked || levelsChecked){
			displayWarning("Please specify Service Type and Service Provided To options");
			error = true;
		}
	}
	
	return !error;

}

/////manage.php
function showNextStep(val){

	if (val.value != ""){
		var step2and3 = document.getElementById("step2");	
		var cat = document.getElementById('cat_id');
		
		if(cat.selectedIndex != 0){
			step2and3.style.display = "block";
		}
	}
}

