/**
** JS : Ajax manager
** Date  : Feb 22, 2007
** Author: Andy Mao
**/

var dom = (!document.all && document.getElementById);


function ajaxManager() {
	var args = ajaxManager.arguments;
	var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP"): new XMLHttpRequest();
	
//alert(args[2]);
	switch (args[0]) {
		case "load_content":
			if (x) {
				x.onreadystatechange = function() {
					if(x.readyState == 1 || x.readyState == 2 || x.readyState == 3) {
						document.getElementById(args[2]).innerHTML = '<p>processing...</p>';
					}
					if (x.readyState == 4 && x.status == 200) {
										
						if (args[3] && args[3]== "autocomplete") {
							document.getElementById('error_text').innerHTML = "";
							if (document.getElementById('tempId')) document.getElementById('tempId').value ="";
							doc = x.responseText;
							prefix = "<select size=\"10\" class=\"green\" name=\"result_list\" id=\"result_list\" onchange=\"copy_to_text(\'search_text\', this);\">";
							postfix = "</select>";							
							document.getElementById(args[2]).innerHTML = prefix + doc + postfix;
							
							if (doc != "" ) {
								//document.getElementById(args[2]).style.visibility = "visible";
								document.getElementById(args[2]).style.display = "block";
							} else {
								//document.getElementById(args[2]).style.visibility = "hidden";
								document.getElementById(args[2]).style.display = "none";
							}	
							if (document.getElementById('result_list').options.length > 10) {
								
								document.getElementById('result_list').size = 10;
							} else {
								document.getElementById('result_list').size = document.getElementById('result_list').options.length + 1;
							}						
						} else if (args[3]&&args[3]=='show_province_search') {
							doc = x.responseText;
							document.getElementById(args[2]).innerHTML = doc;
							document.fExplore.address_province.selectedIndex = 0;
							//call ajax again to narrow down search result;						
							ajaxManager('find_search','search_result','1', document.fExplore);
							
						}else if (args[2] == 'search_result') {
							doc = x.responseText;
							document.getElementById(args[2]).innerHTML = doc;
							FixColumnHeight('l_SearchResults', 'l_SearchResultLeft', 'l_SearchResultMiddle', 'l_SearchResultRight');
							scroll(0,0);
						}else if (args[2]=='resend'){
							window.location.href="../reg/resend_confirmation.php";							
						}else if (args[2] == 'inbox_item_search_result') {
							//alert(args[2]);
							doc = x.responseText;
							document.getElementById(args[2]).innerHTML = doc;
							
						}else {
							doc = x.responseText;			
							//alert(doc);			
							document.getElementById(args[2]).innerHTML = doc;
						}
							
					}
				}
								
				x.open("GET", args[1], true);
				//x.setRequestHeader('content-type', 'text/xml');
				x.send(null);
			}
			break;
			
		case "make_post_request":
			if (x) {
			
				if (args[1] == 'saveImageOrder') {			
					myform = args[3];					
					poststr =  "orderStr=" + encodeURI( myform.orderStr.value ) ;	
				}

				if (args[1] == 'checklogin') {			
					myform = args[3];					
					poststr =  "loginEmail=" + encodeURI( myform.loginEmail.value ) + "&loginPassword=" +  encodeURI( myform.loginPassword.value );	
				}


				if (args[1] == 'checklogin_splash') {			
					myform = args[3];					
					poststr =  "loginEmail=" + encodeURI( myform.loginEmail.value ) + "&loginPassword=" +  encodeURI( myform.loginPassword.value );	

				}
				if (args[1] == 'checkcontact') {			
					myform = args[3];					
					poststr =  "contactName=" + encodeURI( myform.contactName.value ) + "&contactEmail=" +  encodeURI( myform.contactEmail.value )+ "&contactSubject=" +  encodeURI( myform.contactSubject.value ) + "&contactComments=" +  encodeURI( myform.contactComments.value );	

				}	
				if (args[1] == 'checkadvertise') {			
					myform = args[3];
					adDate = myform.adYear.value+"-"+myform.adMonth.value+"-"+myform.adDay.value;
					
					poststr =  "adFirstName=" + encodeURI( myform.adFirstName.value ) 
						+ "&adLastName=" +  encodeURI( myform.adLastName.value )
						+ "&adCompanyName=" +  encodeURI( myform.adCompanyName.value ) 
						+ "&adWebsite=" +  encodeURI( myform.adWebsite.value ) 
						+ "&adEmail=" +  encodeURI( myform.adEmail.value ) 
						+ "&adPhone=" +  encodeURI( myform.adPhone.value ) 
						+ "&adCity=" +  encodeURI( myform.adCity.value ) 
						+ "&adCountry=" +  encodeURI( myform.adCountry.value ) 
						+ "&adProvince=" +  encodeURI( myform.adProvince.value ) 						
						+ "&adIndustry=" +  encodeURI( myform.adIndustry.value ) 
						+ "&adProvince=" +  encodeURI( myform.adProvince.value ) 
						+ "&adDate=" +  encodeURI( adDate ) 
						+ "&adComments=" +  encodeURI( myform.adComments.value );	
				
				}
				if (args[1] == 'deleteWoof') {			
					woof_id = args[3];					
					poststr = "action=" + encodeURI( 'delete_woof' )+  "&woof_id=" + encodeURI( woof_id );	
					
				}
				if (args[1] == 'woofs') {			
					myform = args[3];					
					poststr = "action=" + encodeURI( 'add_woof' )+  "&form_woof_content=" + encodeURI( myform.woof_content.value ) + "&form_from_member_id=" +  encodeURI( myform.from_member.options[myform.from_member.selectedIndex].value )+ "&form_to_member_id=" +  encodeURI( myform.to_member_id.value );	
					
				}
				if (args[1] == 'invitation') {			
					myform = args[3];					
					poststr = "inviteEmail=" + encodeURI(myform.inviteEmail.value )+  "&inviteMsg=" + encodeURI( myform.inviteMsg.value );	
					
				}
				if (args[1] == 'acctPart1') {
					myform = args[3];
					if (myform.hideemail.checked) {
						hideemail = 1;
					} else {
						hideemail = 0;
					}		
					if (myform.hidedob.checked) {
						hidedob = 1;
					} else {
						hidedob = 0;
					}			
					dobyear = myform.dobyear[myform.dobyear.selectedIndex].value;					
					dobmonth = myform.dobmonth[myform.dobmonth.selectedIndex].value;
					dobday = myform.dobday[myform.dobday.selectedIndex].value;
					dob = dobyear+"-"+dobmonth+"-"+dobday;					
					poststr = "hideemail=" + encodeURI(hideemail)+ "&hidedob=" + encodeURI(hidedob)+ "&dob=" + encodeURI(dob);
					
				}
				if (args[1] == 'acctPart2') {
					myform = args[3];	
					poststr = "newpwd=" + encodeURI(myform.cfmNewPwd.value);					
				}
				x.onreadystatechange = function() {
					if(x.readyState == 1 || x.readyState == 2 || x.readyState == 3) {
						if (document.getElementById('error_text')) {
							document.getElementById('error_text').innerHTML = 'Submitting...';						
						}
					}
					if (x.readyState == 4 && x.status == 200) {								
						doc = x.responseText;
						if (document.getElementById('error_text')) document.getElementById('error_text').innerHTML = '';						
						if (args[1] == 'checklogin') {
							if (doc == 1) {							
								var errorMsg_pre="<span>The following errors have been found:</span><br/>";
								document.getElementById('error_text').innerHTML = errorMsg_pre + "Invalid E-mail and Password combination.<br/>Please re-enter.";
								document.getElementById('error_text').style.display = "block";
							} else if (doc == 2) {
								//var errorMsg_pre="<span>The following errors have been found:</span><br/>";
								//document.getElementById('error_text').innerHTML = errorMsg_pre + "Your account has not yet been activated. <br/>Please click here to have the activation email sent to you again, or click <a href='../'>here</a> to go back to the main page.";
								//document.getElementById('error_text').style.display = "block";
								window.location.href="../reg/login.php?error=e2";
							} else if (doc == 0) {
								document.getElementById('error_text').innerHTML = "<!-- -->";	
								window.location.href = "../myhome/";							
							} else {
								/*var errorMsg_pre="<span>The following errors have been found:</span><br/>";
								document.getElementById('error_text').innerHTML = errorMsg_pre + "Unknown server error, please re-try.";
								document.getElementById('error_text').style.display = "block";*/
								
								document.getElementById('error_text').innerHTML = "<!-- -->";	
								window.location.href = doc;							
							}
						}
						if (args[1] == 'checklogin_splash') {
							if (doc == 1) {			
								window.location.href = "reg/login.php?error=e1";							
							} else if (doc == 2) {
								window.location.href = "reg/login.php?error=e2";
							} else if (doc == 0) {							
								//document.getElementById('error_text').innerHTML = "<!-- -->";	
								window.location.href = "myhome/";							
							} 
						}
						if (args[1] == 'saveImageOrder') {
							if (doc == 1) {	
								//alert("yes");
								//window.location.href = "reg/login.php?error=e1";							
							} 
						}	

						if (args[1] == 'checkcontact') {
							if (doc == "succeed") {			
								var msg="<span>Your message has been sent successfully. Please wait at least 24 hours for one of our representatives to get back to you with a response. Thank you for your time!</span>";
								document.getElementById('error_text').innerHTML = msg;
								document.getElementById('error_text').style.display = "block";				
								
							} else {
								var errorMsg="<span>There is an error while sending your requst, please resend.</span><br/>";
								document.getElementById('error_text').innerHTML = errorMsg;
								document.getElementById('error_text').style.display = "block";
							} 
						}
						if (args[1] == 'checkadvertise') {
							if (doc == "succeed") {			
								var msg="<span>Your request has been sent successfully. Please wait at least 24 hours for one of our representatives to get back to you with a response. Thank you for your time!</span>";
								document.getElementById('error_text').innerHTML = msg;
								document.getElementById('error_text').style.display = "block";				

							} else {
								//alert(doc);
								var errorMsg="<span>There is an error while sending your requst, please resend.</span><br/>";
								document.getElementById('error_text').innerHTML = errorMsg;
								document.getElementById('error_text').style.display = "block";
							} 
						}	
						if (args[1] == 'invitation') {
							if (doc == "succeed") {			
								var errorMsg="Your invitation has been sent.<br/>";
								myform.inviteEmail.value = "";
								myform.inviteMsg.value = "";
								document.getElementById('error_text').innerHTML = errorMsg;
								document.getElementById('error_text').style.display = "block";					
								
							} else {
								var errorMsg="<span>There is an error while sending your invitation, please re-send.</span><br/>";
								document.getElementById('error_text').innerHTML = errorMsg;
								document.getElementById('error_text').style.display = "block";
							}
						}
						if (args[1] == 'woofs') {
							if (doc == "succeed") {			
								myform = args[3];					
								myform.woof_content.value = "";
								page_member_id =  myform.to_member_id.value;	
								ajaxManager('display_woof','woofs',page_member_id);
							} else {
								var errorMsg="<span>There is an error while submitting your woof, please resubmit.</span><br/>";
								document.getElementById('error_text').innerHTML = errorMsg;
								document.getElementById('error_text').style.display = "block";
							}
						}
						if (args[1] == 'deleteWoof') {
							if (doc == "succeed") {			
								page_member_id = args[4];													
								ajaxManager('display_woof','woofs',page_member_id);
							}
						}	
						if (args[1] == 'acctPart1') {
							if (doc == "succeed") {			
								var confirmMsg="Your change has been submitted.<br/>";								
								document.getElementById('confirm_text1').innerHTML = confirmMsg;
							} else {
								var errorMsg="There is an error while submitting, please re-submit.<br/>";
								document.getElementById('error_text1').innerHTML = errorMsg;								
							}
						}
						if (args[1] == 'acctPart2') {
							if (doc == "succeed") {			
								var confirmMsg="Your password has been changed.<br/>";								
								document.getElementById('confirm_text2').innerHTML = confirmMsg;
							} else {
								var errorMsg="There is an error while submitting, please re-submit.<br/>";
								document.getElementById('error_text2').innerHTML = errorMsg;								
							}
						}
					}
				}

			    x.open('POST', args[2], true);
			    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			    x.setRequestHeader("Content-length", poststr.length);
			    x.setRequestHeader("Connection", "close");
			    x.send(poststr);
			}
			break;
	
		case "load_xml":
			if (x) {
				x.onreadystatechange = function() {
					if(x.readyState == 1 || x.readyState == 2 || x.readyState == 3) {
						//document.getElementById('labs_username').value = 'loading...';
						
					}
					if (x.readyState == 4 && x.status == 200) {
						var doc = x.responseXML;	

						//checkemail
						if (args[1] == 'checkemail') {

							var result = doc.getElementsByTagName('checkemailresult')[0].firstChild.nodeValue;	
							
							if (result=='exists') {
								var errorMsg_pre="<span>The following errors have been found:</span><br/>";
								var errorMsg = 'Email address already exists, please input another one';
								document.getElementById('error_text').innerHTML = errorMsg_pre + errorMsg;
								document.getElementById('error_text').style.display = 'block';			
													
							}  else {
								var myform = args[3];								
								myform.submit();
							}
						}
						
						
					}
									 
				}
				
				x.open("GET", args[2], true);
				x.setRequestHeader('content-type', 'text/xml');
				x.send(null);
			}
			break;
		
		
		case "checkemail":			
			var myform = args[1];
			var email = myform.regEmail.value.trim();
			//alert(window.location.href);
			var target = '../control/do_function.php?action=checkemail&email=' + email;		
			
			ajaxManager('load_xml', 'checkemail', target, myform);
			break;
		
		case "checklogin":
			var myform = args[1];
			//alert(window.location.href);
			var target = '../control/do_login.php';		
			
			ajaxManager('make_post_request', 'checklogin', target, myform);
			break;
		case "saveImageOrder":
			var myform = args[1];
			//alert(window.location.href);
			var target = '../control/do_saveImageOrder.php';	
			
			ajaxManager('make_post_request', 'saveImageOrder', target, myform);
			break;

		case "checklogin_splash":
			var myform = args[1];
			//alert(window.location.href);
			var target = 'control/do_login.php';		
			
			ajaxManager('make_post_request', 'checklogin_splash', target, myform);
			break;
		case "checkcontact":
			var myform = args[1];
			var target = '../control/do_contactus.php';					
			ajaxManager('make_post_request', 'checkcontact', target, myform);
			break;
		case "checkadvertise":
			var myform = args[1];
			var target = '../control/do_advertise.php';					
			ajaxManager('make_post_request', 'checkadvertise', target, myform);
			break;
		case "submit_woof":
			var myform = args[1];
			var target = '../control/do_woofs.php';
			ajaxManager('make_post_request', 'woofs', target, myform);			
			break;
		case "acctPart1":
			var myform = args[1];
			var target = '../control/do_acctPart1.php';
			ajaxManager('make_post_request', 'acctPart1', target, myform);			
			break;
		case "acctPart2":
			var myform = args[1];
			var target = '../control/do_acctPart2.php';
			ajaxManager('make_post_request', 'acctPart2', target, myform);			
			break;		
		case "send_invitation":
			var myform = args[1];
			var target = '../control/do_invitation.php';
			ajaxManager('make_post_request', 'invitation', target, myform);			
			break;		
		case "delete_woof":
			var woof_id = args[1];
			var member_id = args[2];
			var target = '../control/do_woofs.php';
			ajaxManager('make_post_request', 'deleteWoof', target, woof_id,member_id);			
			break;	
		case "display_woof":
			var content_id = args[1];
			var member_id = args[2];
			var target = '../include/woofs_details.php?member='+member_id;
			ajaxManager('load_content', target, content_id);			
			break;		
		case "showProvince":			
			var content_id = args[1];
			if (args[2] == "CA") {
				var target = "../include/ca_provinces.php?address_province="+args[3];
			} 
			if (args[2] == "US"){				
				var target = "../include/us_states.php?address_province="+args[3];
			}		
			
			//alert(target);
			ajaxManager('load_content', target, content_id);
			break;	
		case "showProvince_search":
			var content_id = args[1];
			var target = "../include/state_province.php?country="+args[2];
			
			ajaxManager('load_content', target, content_id,'show_province_search');
			break;	
		case "findBreed":		
			var content_id = args[1];
			var target = "../function/find_breed.php?breed="+args[2];
			ajaxManager('load_content', target, content_id, 'autocomplete');
			break;		
		case "find_msg_receiver":
			var content_id = args[1];
			var target = "../function/find_msg_receiver.php?fname="+args[2];			
			ajaxManager('load_content', target, content_id, 'autocomplete');			
			break;			
		case "resend":
			var family_id = args[1];
			var content_id = "error_text";
			var target="../control/do_resend.php?f="+family_id;
			ajaxManager('load_content', target, "resend");			
			break;
		case "find_search":
			var content_id = args[1];
			var page_no = args[2];	
			if (args[3]&&args[3]=="pagination"){
				var target="../include/search_result.php?action=usetemp&page=" + page_no;
			} else if (args[3]&&args[3]!="pagination") { 
				//var target="../include/find_search.php?page=" + page_no;
				//create a temp session based on narrow form
				var target="../include/search_result.php?action=createtemp&page=" + page_no;
				var narrowForm = args[3];
				//get member type
				for (i=0;i<narrowForm.rAnimal.length;i++) {
      				if (narrowForm.rAnimal[i].checked) {
             			member_type = narrowForm.rAnimal[i].value;
             		}
      			}
      			target+="&member_type="+member_type;
      			//get address_country
      			address_country = narrowForm.address_country.options[narrowForm.address_country.selectedIndex].value;
      			target+="&address_country="+address_country;      			
      			//get address province/state      			
      			address_province = narrowForm.address_province.options[narrowForm.address_province.selectedIndex].value;
      			target+="&address_province="+address_province;      			
      			
      			//get dog's information
				//if (member_type!=0) {
					//get dog gender
				for (i=0;i<narrowForm.rGender.length;i++) {
      				if (narrowForm.rGender[i].checked) {
             			dog_gender = narrowForm.rGender[i].value;
             		}
      			}
      			target+="&dog_gender="+dog_gender;						      			
      				
				//}
				//get dog age range
      			dog_age_from = narrowForm.sAgeRangeLow.options[narrowForm.sAgeRangeLow.selectedIndex].value;
      			dog_age_to = narrowForm.sAgeRangeHigh.options[narrowForm.sAgeRangeHigh.selectedIndex].value;
      			
      			target+="&dog_age_from="+dog_age_from+"&dog_age_to="+dog_age_to;						      			
      			
      			//get dog size
      			dog_size = narrowForm.sSize.options[narrowForm.sSize.selectedIndex].value;      			
      			target+="&dog_size="+dog_size;
      			//get dog traits
      			dog_traits = narrowForm.sActivityLevel.options[narrowForm.sActivityLevel.selectedIndex].value;      			
      			target+="&dog_traits="+dog_traits;     			
      			//get dog breeds
      			dog_breeds_id = "";
      			if (narrowForm.sBreeds.options.length>0){
      				for (i=0;i<narrowForm.sBreeds.options.length;i++) {
      					dog_breeds_id+=narrowForm.sBreeds.options[i].value+",";
      				}
      			}
      			//alert(dog_breeds_id);
      			target+="&dog_breeds_id="+dog_breeds_id;
    			
				//get human's information
				//get human gender
				for (i=0;i<narrowForm.rHumanGender.length;i++) {
      				if (narrowForm.rHumanGender[i].checked) {
             			human_gender = narrowForm.rHumanGender[i].value;
             		}
      			}
      			target+="&human_gender="+human_gender;						      			
      			//get human age range
      			human_age_from = narrowForm.sHumanAgeRangeLow.options[narrowForm.sHumanAgeRangeLow.selectedIndex].value;
      			human_age_to = narrowForm.sHumanAgeRangeHigh.options[narrowForm.sHumanAgeRangeHigh.selectedIndex].value;
      			
      			target+="&human_age_from="+human_age_from+"&human_age_to="+human_age_to;						      			
      			
      			searchBy = narrowForm.sSearchBy.options[narrowForm.sSearchBy.selectedIndex].value;
      			searchByValue = narrowForm.sSearchField.value;
      			target+="&searchBy="+searchBy+"&searchByValue="+searchByValue;
      			//alert(target);
      			
			} else {			
				//var target="../include/find_search.php?page=" + page_no;
				//reload data from db and store into session and create a temp session 
				var target="../include/search_result.php?action=refresh&page=" + page_no;
			}
			ajaxManager('load_content', target, content_id);
			break;	
			
			case "find_search_sent_item":
			var content_id = args[1];
			var page_no = args[2];	
			var queryStr = args[4];
			if (args[3]&&args[3]=="pagination"){
				var target="../include/sent_item_search_result.php?action=usetemp&page=" + page_no;				
				target+=queryStr;
			} else if (args[3]&&args[3]!="pagination") { 
				//var target="../include/find_search.php?page=" + page_no;
				//create a temp session based on narrow form
				var target="../include/sent_item_search_result.php?action=createtemp&page=" + page_no;
				var narrowForm = args[3];
				searchBy = narrowForm.sSearchBy.options[narrowForm.sSearchBy.selectedIndex].value;
      			searchByValue = narrowForm.sSearchField.value;
      			target+="&searchBy="+searchBy+"&searchByValue="+searchByValue;

				var narrowForm = args[3];
				//get member type
				
			} else {			
				//var target="../include/find_search.php?page=" + page_no;
				//reload data from db and store into session and create a temp session 
				var target="../include/sent_item_search_result.php?action=refresh&page=" + page_no;
			}
			ajaxManager('load_content', target, content_id);
			break;	
			
			case "find_search_inbox_item":
			var content_id = args[1];
			var page_no = args[2];	
			var queryStr = args[4];
			if (args[3]&&args[3]=="pagination"){
				var target="../include/inbox_item_search_result.php?action=usetemp&page=" + page_no;
				target+=queryStr;
			} else if (args[3]&&args[3]!="pagination") { 
				//var target="../include/find_search.php?page=" + page_no;
				//create a temp session based on narrow form
				var target="../include/inbox_item_search_result.php?action=createtemp&page=" + page_no;
				var narrowForm = args[3];
				searchBy = narrowForm.sSearchBy.options[narrowForm.sSearchBy.selectedIndex].value;
      			searchByValue = narrowForm.sSearchField.value;
      			target+="&searchBy="+searchBy+"&searchByValue="+searchByValue;

				var narrowForm = args[3];
				//get member type
				
			} else {			
				//var target="../include/find_search.php?page=" + page_no;
				//reload data from db and store into session and create a temp session 
				var target="../include/inbox_item_search_result.php?action=refresh&page=" + page_no;
			}
			ajaxManager('load_content', target, content_id);
			break;	
			
			case "find_search_del_item":
			var content_id = args[1];
			var page_no = args[2];	
			var queryStr = args[4];
			if (args[3]&&args[3]=="pagination"){
				var target="../include/del_item_search_result.php?action=usetemp&page=" + page_no;				
				target+=queryStr;
			} else if (args[3]&&args[3]!="pagination") { 
				//var target="../include/find_search.php?page=" + page_no;
				//create a temp session based on narrow form
				var target="../include/del_item_search_result.php?action=createtemp&page=" + page_no;
				var narrowForm = args[3];
				searchBy = narrowForm.sSearchBy.options[narrowForm.sSearchBy.selectedIndex].value;
      			searchByValue = narrowForm.sSearchField.value;
      			target+="&searchBy="+searchBy+"&searchByValue="+searchByValue;

				var narrowForm = args[3];
				//get member type
				
			} else {			
				//var target="../include/find_search.php?page=" + page_no;
				//reload data from db and store into session and create a temp session 
				var target="../include/del_item_search_result.php?action=refresh&page=" + page_no;
			}
			ajaxManager('load_content', target, content_id);
			break;	
		
	}
}

