var serverUrl = "http://epress.anu.edu.au/";
var bookDetailsUrl = serverUrl + "php/getBookDetails.php?ProposalsID=";
var serverURI = serverUrl + "php/addOrder.php"
var PostageServerURI = serverUrl + "php/getPostageInfoXml.php";
var cartServerUrl = serverUrl + "php/sCart.php";
var getformDataUrl = serverUrl + "php/getformData.php";
var saveformDataUrl = serverUrl + "php/saveformData.php";
var countryUrl = serverUrl + "php/getCountry.php";
var checkPasswordUrl = serverUrl + "php/CheckPassword.php";
var bookshopUrl = serverUrl + "php/getRegBookshop.php";


var req;
var reqa;
var reqb;
var reqc;
var reqd;
var theHttpRequest;
var eKey;
var numItems = 0;
var ordertype = '';

window.onload = checkCart;

///////////////////////////////////////////////////////////////
//Form Validator                             ///////////////////////////
//////////////////////////////////////////////////////////////

function checkCart(){
 
   numItems = GetCookie("numItems");
   
   if(GetCookie("numItems") == null){
	 //alert("(1) numItems == null "  + numItems);
     numItems= 0;
     SetCookie ("numItems", numItems , null, "/");
   }
   if(numItems > 0){
	  // alert("(2) numItems > 0 "  + numItems); 
	  show("cartMenuDiv");
		  
	  if(document.getElementById("ordertypefrm")!= null && GetCookie("ordertypeIndex") != null){
	     document.getElementById("ordertype").selectedIndex = GetCookie("ordertypeIndex");
	   	 //alert("hello1" + GetCookie("ordertypeIndex") + "mmm" + GetCookie("selbookshopIndex"));
	   	 
	     if(GetCookie("ordertypeIndex") == 1 && GetCookie("selbookshopIndex") != null){ 
		   //alert("hello");
	       mCshow("bookshop"); 
	       mCshow("selbookshop"); 
	       loadBookshop();
	     }
	     if(GetCookie("ordertypeIndex") == 1 && GetCookie("selbookshopIndex") == null){ 
		    SetCookie("selbookshopIndex", 0 , null, "/");
		    mCshow("bookshop"); 
		    mCshow("selbookshop"); 
		    loadBookshop();
		 }
		 if(GetCookie("ordertypeIndex") == 4 && GetCookie("AuthorPostage") != null){
		   document.getElementById("AuthorPostage").value = GetCookie("AuthorPostage");
		   mCshow("DivAuthorPostage");
	     }
	  }
      show("checkFrmBtn");
   }
   if(GetCookie("numItems") == 0 && document.getElementById("frmCheckOut") != null){
    //alert("(3)numItems == 0 && frmCheckOut != null"  + numItems);  
    hide("frmCheckOut");
    hide("cartContent");
    hide("deliveryDetails");
    hide("shoppingCartText");
    hide("checkOutText");
    show("keepShopping");
   }
   if(GetCookie("numItems") > 0 && document.getElementById("frmCheckOut") != null){
      //alert("(4) numItems > 0 && frmCheckOut != null"  + numItems);  
      document.getElementById("keepShopping").innerHTML = "";
      ordertype = document.getElementById("ordertype").value;
      loadCountries();
   }
   if(GetCookie("numItems") != null && isXMLHttpRequestSupported()){//test for Cookies...and && XMLHttpRequest()
      //alert("(5) numItems != null && isXMLHttpRequestSupported"  + numItems); 
      show("add2Cart");
      hide("orderPrintOnDemand");
   } 
}

function checkForm()  {
       if(document.getElementById("viewedTerms").checked){
         var bFormError = false;   
         var strErrorList = "";   
         var filter=/^.+@.+\..{2,3}$/;
         var filterName = /^[ a-zA-Z]+$/;
         var filterNumber = /^[ ()0-9]+$/;
         with (window.document.frmCheckOut){
         if(!filterName.test(firstname.value)){
           bFormError = true; 
           strErrorList += "First name letters only, ";
         }
         if(!filterName.test(lastname.value)){
           bFormError = true; 
           strErrorList += "Last name letters only, ";
         }
         if(!filterNumber.test(telephone.value)){
           bFormError = true; 
           strErrorList += "Telephone use numbers Only, ";
         }
         if(!filter.test(emailAddr.value)){
           bFormError = true; 
           strErrorList += "Email Address is Invalid, ";
         }
         if(firstname.value == '') {bFormError = true;  strErrorList += "First Name, ";}
         if(lastname.value == '') {bFormError = true;  strErrorList += "Last Name, ";}
         if(address.value == '') {bFormError = true;  strErrorList += "Address, ";}
         if(inState.value == '') {bFormError = true;  strErrorList += "State, ";}
         if(inCountry.value == '') {bFormError = true;  strErrorList += "Country, ";}
         if(postcode.value == '') {bFormError = true;  strErrorList += "Postcode, ";}
         if(telephone.value == '') {bFormError = true; strErrorList += "Telephone, ";}
         if(emailAddr.value == '') {bFormError = true;  strErrorList += "Email Address, ";}
         
         //if(ordertype == 2){//
         //  if(budgetcode.value == '') {bFormError = true;  strErrorList += "Budget Code, ";}//
         //  if(department.value == '') {bFormError = true;  strErrorList += "Department, ";}//
         //  if(delegatename.value == '') {bFormError = true;  strErrorList += "Delegate, ";}//
         //  if(approvalgranted.value == '') {bFormError = true;  strErrorList += "Approval Granted, ";}//
	     //} //
        }
        if( bFormError == true ){
           alert("You have one or more missing or invalid entries.\n"
                 +"Please check the following fields: \n\n"
                 +strErrorList
                 +"\n\n");
           return false;
        }else{  
		   //alert("I am here, start process order");	
           processOrder();      
        }
       }else{
        alert("Please read our Terms and Conditions before you continue");
    }
    return false;
} 


//////////////////////////////////////////////////////////////
//Form specific functions                                 ////////////////
/////////////////////////////////////////////////////////////

function AddToCart(thisForm){
     var url = cartServerUrl + "?task=add&item=" + thisForm.ID_NUM.value;
     //alert(url);
     loadBookXMLDoc(url);
}
function loadBookXMLDoc(url){
    if (window.XMLHttpRequest){
        req = new XMLHttpRequest();
        req.onreadystatechange = processBookDetails;
        req.open("GET", url, true);
        req.send(null);
    }else if (window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if(req){
          req.onreadystatechange = processBookDetails;
          req.open("GET", url, true);
          req.send();
        }
    }
}
function processBookDetails(){
    if(req.readyState == 4){
      if(req.status == 200){
       //alert(req.responseText);
		var response = req.responseXML.documentElement;
        alert(response.getElementsByTagName('return')[0].firstChild.nodeValue);  
        SetCookie ("numItems",response.getElementsByTagName('numItems')[0].firstChild.nodeValue , null, "/");
      }else{ alert("There was a problem retrieving the XML data:\n" + req.statusText);}
    }
    //alert("processBookDetails---- checkCart"  + numItems); //huimin's comment
    checkCart();
}
function saveFormData(){
   with (window.document.frmCheckOut){
    var formdataDoc = "<firstname>" + firstname.value + "</firstname>\n";
		formdataDoc += "<lastname>" +lastname.value + "</lastname>\n";
		formdataDoc += "<address>" + address.value + "</address>\n";
		formdataDoc += "<suburb>" + suburb.value + "</suburb>\n";
		formdataDoc += "<inState>" + inState.value + "</inState>\n";
		formdataDoc += "<inCountry>" + inCountry.value + "</inCountry>\n";
		formdataDoc += "<postcode>" + postcode.value + "</postcode>\n";
		formdataDoc += "<telephone>" + telephone.value + "</telephone>\n";
		formdataDoc += "<emailAddr>" + emailAddr.value + "</emailAddr>\n";
		if(email[0].checked){
		  formdataDoc += "<sendMail>0</sendMail>\n";
		}else{
		  formdataDoc += "<sendMail>1</sendMail>\n";
		}
		//if(ordertype == 2){
		//  formdataDoc += "<budgetcode>" + budgetcode.value + "</budgetcode>\n";
		//  formdataDoc += "<department>" + department.value + "</department>\n";
		//  formdataDoc += "<delegatename>" + delegatename.value + "</delegatename>\n";
		//  formdataDoc += "<approvalgranted>" + approvalgranted.value + "</approvalgranted>\n";
		//}
		formdataDoc += "<viewedTerms>"+ viewedTerms.checked+"</viewedTerms>\n";
   }
  //alert(formdataDoc);
  postFormXML(formdataDoc);
}
function postFormXML(xmlDoc) {
	if(window.XMLHttpRequest) req = new XMLHttpRequest();
	else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");
	else return; 
	req.open("POST", saveformDataUrl);
	req.setRequestHeader('content-type', 'text/xml');
	req.onreadystatechange = formxmlPosted;
	req.send(xmlDoc);
}

function formxmlPosted() {
	if(req.readyState != 4) return;
	if(req.status == 200){
    //alert(req.responseText);
    }else {}
}

function getFormdata(){
    var formdataDoc = "<?xml version='1.0' encoding='UTF-8'?><xml><getformData>please</getformData></xml>\n"
    if (window.XMLHttpRequest) reqa = new XMLHttpRequest();
	else if (window.ActiveXObject) reqa = new ActiveXObject("Microsoft.XMLHTTP");
	else return; 
	reqa.open("POST", getformDataUrl);
	reqa.setRequestHeader('content-type', 'text/xml');
	reqa.onreadystatechange = formreqPosted;
	//alert(formdataDoc); // Huimin
	reqa.send(formdataDoc);
}

function isXMLHttpRequestSupported(){
          if (window.XMLHttpRequest){return true;}
          if (window.ActiveXObject){return true;}
          else{return false;}
}

function formreqPosted() {
	if(reqa.readyState != 4) return;
	if(reqa.status == 200){
      //alert(reqa.responseText); // Huimin 
      var result = reqa.responseXML.documentElement;
      try{
          with(window.document.frmCheckOut){
             try{
                submited = result.getElementsByTagName('submited')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                firstname.value = result.getElementsByTagName('firstname')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                lastname.value = result.getElementsByTagName('lastname')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                address.value =result.getElementsByTagName('address')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                suburb.value =result.getElementsByTagName('suburb')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                inState.value =result.getElementsByTagName('inState')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                inCountry.value = result.getElementsByTagName('inCountry')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                postcode.value =result.getElementsByTagName('postcode')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                telephone.value =result.getElementsByTagName('telephone')[0].firstChild.nodeValue;
             }catch(e){}  
             try{
                emailAddr.value = result.getElementsByTagName('emailAddr')[0].firstChild.nodeValue;
             }catch(e){} 
             if(ordertype == 2){
               try{
			      budgetcode.value = result.getElementsByTagName('budgetcode')[0].firstChild.nodeValue;
               }catch(e){}  
               try{
			      department.value = result.getElementsByTagName('department')[0].firstChild.nodeValue;
               }catch(e){}  
               try{
			      delegatename.value = result.getElementsByTagName('delegatename')[0].firstChild.nodeValue;
               }catch(e){}  
               try{
			      approvalgranted.value = result.getElementsByTagName('approvalgranted')[0].firstChild.nodeValue;
               }catch(e){}  
		     }
          }
          if(result.getElementsByTagName('sendMail')[0].firstChild.nodeValue == "1"){
             document.getElementById("YesEmail").checked = true;
          }
          if(result.getElementsByTagName('viewedTerms')[0].firstChild.nodeValue == "true"){
             document.getElementById("viewedTerms").checked = true;
          }
        } catch(e){}   
        calculatePostage();   
    } else {}
}

function disableForm(){
try{
    with(window.document.frmCheckOut){
        NAME.value  = firstname.value + " " + lastname.value;
        ADDR1.value = address.value;
        CITY.value = suburb.value;
        STATE.value = inState.value;
        PCODE.value = postcode.value;
        COUNTRY.value = inCountry.value;
        firstname.disabled = true;
        lastname.disabled = true;
        address.disabled = true;
        suburb.disabled = true;
        inState.disabled = true;
        inCountry.disabled = true;
        postcode.disabled = true;
        telephone.disabled = true;
        emailAddr.disabled = true;
        if(ordertype == 2){
		  budgetcode.disabled = true;
		  department.disabled = true;
		  delegatename.disabled = true;
		  approvalgranted.disabled = true;
	    }
        viewedTerms.disabled = true;
    }     
   }
catch(e){}
document.getElementById("YesEmail").disabled = true;
document.getElementById("NoEmail").disabled = true;
}

function loadCountries()
{
  //alert("loading Countries");
  if (window.XMLHttpRequest) {
     reqc = new XMLHttpRequest();
     reqc.onreadystatechange = populateDropdown;
     reqc.open("GET", countryUrl, true);
     reqc.send(null);
  } else if (window.ActiveXObject) {
     reqc = new ActiveXObject("Microsoft.XMLHTTP");
     if (reqc) {
       reqc.onreadystatechange = populateDropdown;
       reqc.open("GET", countryUrl, true);
       reqc.send();
     }
  }
}

function populateDropdown()
{
  //alert(reqc.readyState + reqa.status);
  if(reqc.readyState == 4){
     //alert(reqc.responseText); // Huimin
     if(reqc.status == 200){
	   //alert("reqc.status == 200 pased");
       var countrySelect = document.getElementById("inCountry");
       var response = reqc.responseXML.documentElement;
       var countries = response.getElementsByTagName("item");
       
       for(var i = 0 ; i < countries.length ; i++){
          var CountryID = countries[i].getElementsByTagName("CountryID")[0];
          var CountryName = countries[i].getElementsByTagName("CountryName")[0];
          var eOption = document.createElement("option");
          
          //alert(countries[i].firstChild.nodeValue);
          //if(i == 12) alert(countries[i].firstChild.nodeValue); 
          
		  eOption.value = CountryID.firstChild.nodeValue;
          var optionText = document.createTextNode(CountryName.firstChild.nodeValue);
		  eOption.appendChild(optionText);
          countrySelect.appendChild(eOption);
       }
       loadCartContent(0); 

     } else { alert("200 There was a problem retrieving the Countries XML data:\n" + reqa.statusText);}
  } 
}

function processOrder(){
var orderRequestDoc = "<?xml version='1.0' encoding='UTF-8'?>\n";
    orderRequestDoc+= "<order>\n";
    orderRequestDoc+= "<PHperItem>" + document.getElementById("PHperItem").value + "</PHperItem>\n";
    orderRequestDoc+= "<customerInfo>\n";
    orderRequestDoc+= getCustomerInfo();
    orderRequestDoc+= "</customerInfo>\n";
    orderRequestDoc+= "</order>";
    //alert("order info" + orderRequestDoc); // Huimin
    postOrderXML(orderRequestDoc);
}

function getCustomerInfo(){
   var userInfoDoc = "";     
   with (window.document.frmCheckOut){
    userInfoDoc = "<firstname>" + firstname.value + "</firstname>\n";
    userInfoDoc += "<lastname>" + lastname.value + "</lastname>\n";
    userInfoDoc += "<address>" + address.value + "</address>\n";
    userInfoDoc += "<suburb>" + suburb.value + "</suburb>\n";
    userInfoDoc += "<state>" + inState.value + "</state>\n";
    userInfoDoc += "<country>" + inCountry.value + "</country>\n";
    userInfoDoc += "<postcode>" + postcode.value + "</postcode>\n";
    userInfoDoc += "<telephone>" + telephone.value + "</telephone>\n";
    userInfoDoc += "<emailAddr>" + emailAddr.value + "</emailAddr>\n";
    if(email[0].checked){
      userInfoDoc += "<sendMail>0</sendMail>\n";
    }else{
      userInfoDoc += "<sendMail>1</sendMail>\n";
    }
   
   }
   return userInfoDoc;
}

function postOrderXML(xmlDoc) {
	if (window.XMLHttpRequest) req = new XMLHttpRequest();
	else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");
	else return; 
	req.open("POST", serverURI);
	req.setRequestHeader('content-type', 'text/xml');
	req.onreadystatechange = orderPosted;
	req.send(xmlDoc);
}

function orderPosted() {
	if(req.readyState != 4) return;
	if(req.status == 200){
       //alert(req.responseText);
       var result = req.responseXML.documentElement;
             
       OrderNumber  = result.getElementsByTagName('OrderNumber')[0].firstChild.nodeValue;
       document.getElementById("REF1").value = result.getElementsByTagName('eOrderNumber')[0].firstChild.nodeValue;
       eKey  = result.getElementsByTagName('eKey')[0].firstChild.nodeValue;
       if(result.getElementsByTagName('success')[0].firstChild.nodeValue == '1'){
          document.getElementById("checkFrmBtn").innerHTML = "";
          disableForm();
          var printAnchor = document.getElementById("printBtn");
          printAnchor.setAttribute("href","OrderInfo.php?OrderID=" + OrderNumber +"&eKey="+ eKey); 
                             
          show("paymentOption");
          alert('Your order has been successfully submitted, Please continue by choosing payment method\n');

          dropCart();
       }else{
         alert("There was a problem submiting Your Order \nPlease print an Online Order form and submit your order by mail");
       }

	}else{
	  alert("There was a problem with Server \nPlease print an Online Order form and submit your order by mail");
	}
}


///////////////////////////////////////////////////////////
// Cart functions                                  ///  /////////
/////////////////////////////////////////////////////////

function RemoveFromCart(OrderNum) {
  if (confirm("Click 'Ok' to remove this product from your shopping cart.")) {
     getAXAH(cartServerUrl+"?editable=yes&item="+OrderNum+"&task=del", "cartContent");
     numItems = parseInt(GetCookie("numItems"));
     SetCookie ("numItems", numItems-1 , null, "/");
  }
}

function dropCart() {
     SetCookie ("numItems", 0 , null, "/");
     hide("cartMenuDiv");
}

function UpdateQuantity(OrderNum) {
  var quantity = parseInt(CKquantity(document.getElementById("QUANTITY_" + OrderNum).value)); 
  if(quantity >0){
    getAXAH(cartServerUrl+"?editable=yes&item="+OrderNum+"&task=upd&qty="+quantity, "cartContent");
  }
  else{ RemoveFromCart(OrderNum);}
}

function loadCartContent(editable){
   if(editable){
	  getAXAH(cartServerUrl+"?editable=yes&ordertype="+ordertype, "cartContent");
   }else{
      getAXAH2(cartServerUrl+"?editable=no", "cartContent");
   }
}

function loadCartContentfrm(editable){
   if(editable){
      try{
	  	   if(document.getElementById("ordertype")){
		     ordertype = document.getElementById("ordertype").value;
		     //alert("what's ordertype "+ ordertype);  
		     		     
		     SetCookie("ordertypeIndex", document.getElementById("ordertype").selectedIndex , null, "/"); 	
		     //alert("I am in loadCartContentfrm:" +  ordertypeIndex );
		   		   
           }
	  	   	      	      
	       if(ordertype == '4')
	       {
	 	     //alert("we are in loadCartContentfrm: ordertype == 4");
	 	     mCshow("pwd");
	 	     mChide("proceed_btn");
	 	     mChide("bookshop");
	 	     mChideSelect("selbookshop");
	 	     mChide("DivAuthorPostage");
	 	     mCshow("keepShopping");

 	       }
 	       else if(ordertype == '5')
		   {
		     //alert("we are in loadCartContentfrm: ordertype == 5 ");
		     mCshow("pwd");
		     mChide("proceed_btn");
		   	 mChide("bookshop");
		   	 mChideSelect("selbookshop");
		   	 mChide("keepShopping");
		   	 getAXAH(cartServerUrl+"?editable=yes&ordertype="+ordertype, "cartContent");
		   }
 	       else if(ordertype == '1')
 	       {
		     //alert("we are in loadCartContentfrm: ordertype == 1 ");
		     mCshow("proceed_btn");	     
		     mCshow("bookshop");
		     mCshow("selbookshop");
		     mChide("pwd");
		     mChide("DivAuthorPostage");
		     mCshow("keepShopping");
		     loadBookshop();
		  	 getAXAH(cartServerUrl+"?editable=yes&ordertype="+ordertype, "cartContent");
		   }
 	       else if(ordertype != '4' && ordertype != '1' && ordertype != '5')
 	       {
			 mCshow("proceed_btn");
			 mChide("pwd");
			 mChide("bookshop");
			 mChideSelect("selbookshop");
			 mChide("DivAuthorPostage");
			 mCshow("keepShopping");
			 getAXAH(cartServerUrl+"?editable=yes&ordertype="+ordertype, "cartContent");
		   }else{
		       var inputWord = document.getElementById("pwd").value;
	           alert("inputWord" + inputWord);
	           if(inputWord != passwd){
	             document.getElementById("ordertype").selectedIndex = 0;
	             alert(" It's not Epress password");
	           }else{
			     alert("Please proceed with book launch order");
			     ordertype = '4';
			     getAXAH(cartServerUrl+"?editable=yes&ordertype="+ordertype, "cartContent");
			   }
		   }
           
	    }catch(e){ ordertype = '3'; }
	     
   }else{
      getAXAH2(cartServerUrl+"?editable=no", "cartContent");
   }
}
function validateAuthorPostage()
{
  var bFormError = false;   
  var strErrorList = "";  
  var filterNumber = /^\d+$/;
  var filterNumberDecimal = /^\d+\.\d\d$/;
  
  //alert("show what is inside:" + document.getElementById("AuthorPostage").value);
  
  var testAuthorPostage = document.getElementById("AuthorPostage").value;
   
  if((!filterNumberDecimal.test(testAuthorPostage)) && (!filterNumber.test(testAuthorPostage)))
  {
	 bFormError = true; 
     strErrorList = "Postage has to be this format: 34.35 or this format: 12 ";
     mChide("proceed_btn");
  }else{
	 SetCookie("AuthorPostage", testAuthorPostage, null, "/"); 
	 mCshow("proceed_btn");
  }
     
  if( bFormError == true ){
     alert( strErrorList +"\n\n");
     return false;
  }
}


function loadBookshop()
{
  //alert("loading Bookshop");
  if(window.XMLHttpRequest)
  {
    reqd = new XMLHttpRequest();
    reqd.onreadystatechange = populateDropdownBookshop;
    reqd.open("GET", bookshopUrl, true);
    reqd.send(null);
  }else if(window.ActiveXObject)
  {
    reqd = new ActiveXObject("Microsoft.XMLHTTP");
    if(reqd){
      reqd.onreadystatechange = populateDropdownBookshop;
      reqd.open("GET", bookshopUrl, true);
      reqd.send();
    }
  }
}

function saveSelbookshopIndex(){	
	//alert("setting " + document.getElementById("selbookshop").selectedIndex);
    selbookshopIndexValue = document.getElementById("selbookshop").selectedIndex;	 			 			 		     
	SetCookie("selbookshopIndex", selbookshopIndexValue , null, "/"); 	
}

function setSelbookshopIndex(){	
       if(GetCookie("selbookshopIndex") != null){	
		 document.getElementById("selbookshop").selectedIndex = GetCookie("selbookshopIndex");
	   }else{
		 document.getElementById("selbookshop").selectedIndex = 0;  		   
	   }
}

function populateDropdownBookshop()
{
  //alert(reqd.readyState + reqa.status);
  if(reqd.readyState == 4)
  {
     if(reqd.status == 200)
     {
	   //alert("I am here: reqd.status == 200 pased");
       var bookshopSelect = document.getElementById("selbookshop");
       while(bookshopSelect.hasChildNodes())
	   {
         bookshopSelect.removeChild(bookshopSelect.childNodes[0]);
	   }
       var response = reqd.responseXML.documentElement;
       var bookshops = response.getElementsByTagName("item");
       
       for(var i = 0 ; i < bookshops.length ; i++)
       {
          var BookshopID = bookshops[i].getElementsByTagName("BookshopID")[0];
          var BookshopName = bookshops[i].getElementsByTagName("BookshopName")[0];
          var eOption = document.createElement("option");
         
		  eOption.value = BookshopID.firstChild.nodeValue;
          var optionText = document.createTextNode(BookshopName.firstChild.nodeValue);
		  eOption.appendChild(optionText);
          bookshopSelect.appendChild(eOption);
       }
       // need to wait untill IE completes the select box....
       setTimeout( "setSelbookshopIndex()", 5 );
     }else{ alert("200 There was a problem retrieving the Bookshop XML data:\n" + reqa.statusText);}
  } 
}

function checkPassword(thisForm){
   var url = checkPasswordUrl + "?pwd=" + thisForm.pwd.value;
   loadPasswordXMLDoc(url);
       
}
function loadPasswordXMLDoc(url){
    if (window.XMLHttpRequest){
        req = new XMLHttpRequest();
        req.onreadystatechange = processPasswordDetails;
        req.open("GET", url, true);
        req.send(null);
    }else if (window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if(req){
          req.onreadystatechange = processPasswordDetails;
          req.open("GET", url, true);
          req.send();
        }
    }
}

function processPasswordDetails(){
    if(req.readyState == 4){
      if(req.status == 200){
        //alert(req.responseText);
		var response = req.responseXML.documentElement;
        //alert(response.getElementsByTagName('return')[0].firstChild.nodeValue); 
        var returnString = response.getElementsByTagName('return')[0].firstChild.nodeValue;
        //alert("returnString"+ returnString);
        if(returnString.match("Go ahead"))
        {        
		   //alert("what in ordertype:" + ordertype);
		   alert("Password accepted");
		   //document.getElementById("proceed_btn").setAttribute("value", "Submit");
		   mChide("pwd");
		   mCshow("proceed_btn");
		   SetCookie("ordertypeIndex", 4 , null, "/");
		   ordertype = document.getElementById("ordertype").value;
		   SetCookie("ordertypeIndex", 3 , null, "/");
		   if(ordertype == '5'){
			   SetCookie("ordertypeIndex", 4 , null, "/");
			   mCshow("DivAuthorPostage");
			   }
	    } else { 
		   alert("Check your password" );
		   document.ordertypefrm.pwd.value = "";
		   SetCookie("ordertypeIndex", 0 , null, "/");
	    }
        
      } else { alert("There was a problem retrieving the XML data:\n" + req.statusText);}
    }
}

function checkPasswordOldKeep(){
   try{
 	 alert("we are at checkPassword function:   ordertype == 4 && pwd == yes");
     ordertype = document.getElementById("ordertype").value;
     alert("what's ordertype"+ ordertype);
     var inputWord = document.getElementById("pwd").value;
	 alert("inputWord" + inputWord);
	 if(inputWord != passwd){
	    document.getElementById("ordertype").selectedIndex = 0;
	    alert(" It's not Epress password");
	 }else{
		alert("Please proceed with book launch order");
		ordertype = '4';
		document.getElementById("ordertype").selectedIndex = 2;
	 }
 	 
   }catch(e){ ordertype = '3';}
     
}

function getAXAH(url, elementContainer)
{
   theHttpRequest = getNewHttpObject();
   theHttpRequest.onreadystatechange = function(){processAXAH(elementContainer);};
   theHttpRequest.open("GET", url);
   theHttpRequest.send(false);
}
function getAXAH2(url, elementContainer)
{
   theHttpRequest = getNewHttpObject();
   theHttpRequest.onreadystatechange = function(){processAXAH2(elementContainer);};
   theHttpRequest.open("GET", url);
   theHttpRequest.send(false);
}
function processAXAH(elementContainer)
{
   if (theHttpRequest.readyState == 4){
      if(theHttpRequest.status == 200){
        document.getElementById(elementContainer).innerHTML = theHttpRequest.responseText;
      }
   }
}
function processAXAH2(elementContainer)
{
   if (theHttpRequest.readyState == 4){
      if (theHttpRequest.status == 200){
        document.getElementById(elementContainer).innerHTML = theHttpRequest.responseText;
       document.getElementById("inCountry").selectedIndex = 11;
       getFormdata(); 
       }
   }
}
function getNewHttpObject()
{
   var objType = false;
   try{
      objType = new ActiveXObject('Msxml2.XMLHTTP');
   }
   catch(e){
      try{
         objType = new ActiveXObject('Microsoft.XMLHTTP');
      }
      catch(e){
         objType = new XMLHttpRequest();
      }
   }
   return objType;
}


///////////////////////////////////////////////////////////
// Postage Calculator functions                             /////////
/////////////////////////////////////////////////////////

function calculatePostage(){
    //alert(document.getElementById("inCountry").value);
    var postageRequestDoc = "<?xml version='1.0' encoding='UTF-8'?>\n";
        postageRequestDoc+= "<postageRequest>\n";
        postageRequestDoc+= "<country>" + document.getElementById("inCountry").value + "</country>\n";
        postageRequestDoc+= "<total>"+ document.getElementById("inTotal").value + "</total>\n";
        postageRequestDoc+= "<numBooks>"+ document.getElementById("numBooks").value +"</numBooks>\n";
        postageRequestDoc+= "</postageRequest>";
        //alert(postageRequestDoc); // Huimin
        getPostageQuoteFromServer(postageRequestDoc);  
}

function getPostageQuoteFromServer(xmlDoc) {
	if (window.XMLHttpRequest) reqb = new XMLHttpRequest();
	else if (window.ActiveXObject) reqb = new ActiveXObject("Microsoft.XMLHTTP");
	else return; 
	//alert(PostageServerURI);
	reqb.open("POST", PostageServerURI);
	reqb.setRequestHeader('content-type', 'text/xml');
	reqb.onreadystatechange = processPostageQuote;
	reqb.send(xmlDoc);
}

function processPostageQuote() {
	if(reqb.readyState != 4) return;
	if(reqb.status == 200){
      //alert(reqb.responseText); // Huimin
      var result = reqb.responseXML.documentElement;
      document.getElementById("total").innerHTML = "$" + result.getElementsByTagName('total')[0].firstChild.nodeValue;
      document.getElementById("subtotal").innerHTML = "$" + result.getElementsByTagName('subtotal')[0].firstChild.nodeValue;
      document.getElementById("fullAmount").innerHTML = "$" + result.getElementsByTagName('fullAmount')[0].firstChild.nodeValue;
      document.getElementById("AMOUNT").value = result.getElementsByTagName('fullAmount')[0].firstChild.nodeValue;
      document.getElementById("gstText").innerHTML = result.getElementsByTagName('gstText')[0].firstChild.nodeValue;
      if(result.getElementsByTagName('gstText')[0].firstChild.nodeValue == 'Price excludes GST '){
        document.getElementById("TRAN-NO").value = "99";
        document.getElementById("gstAmount").innerHTML = " $" + result.getElementsByTagName('gstAmount')[0].firstChild.nodeValue;
        document.getElementById("NogstAmount").innerHTML = "$" + result.getElementsByTagName('gstAmount')[0].firstChild.nodeValue;
        document.getElementById("subtotal").innerHTML = "$" + result.getElementsByTagName('subtotal')[0].firstChild.nodeValue;
      }else{
        document.getElementById("TRAN-NO").value = "98";
        document.getElementById("gstAmount").innerHTML = "$" + result.getElementsByTagName('gstAmount')[0].firstChild.nodeValue;
        document.getElementById("NogstAmount").innerHTML = "";
        document.getElementById("subtotal").innerHTML = "";
      }
      document.getElementById("PHperItem").value = result.getElementsByTagName('postagePerItem')[0].firstChild.nodeValue;
      document.getElementById("postage").innerHTML = "$" + result.getElementsByTagName('postage')[0].firstChild.nodeValue;
    }else{}
}

///////////////////////////////////////////////////////////
// Cookie functions                                              /////////
/////////////////////////////////////////////////////////

function FixCookieDate (date) {
        var base = new Date(0);
        var skew = base.getTime();
        date.setTime (date.getTime() - skew);
}

function getCookieVal (offset) {
        var endstr = document.cookie.indexOf (";", offset);
        if (endstr == -1)
                endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
        var arg = name + "=";
        var alen = arg.length;
        var clen = document.cookie.length;
        var i = 0;
        while (i < clen)
                {
                var j = i + alen;
                if (document.cookie.substring(i, j) == arg) return getCookieVal (j);
                i = document.cookie.indexOf(" ", i) + 1;
                if (i == 0) break;
                }
        return null;
}

function SetCookie (name,value,expires,path,domain,secure) {
	
        document.cookie = name + "=" + escape (value) +
                        ((expires) ? "; expires=" + expires.toGMTString() : "") +
                        ((path) ? "; path=" + path : "") +
                        ((domain) ? "; domain=" + domain : "") +
                        ((secure) ? "; secure" : "");
                        
}


function DeleteCookie (name,path,domain) {
      if (GetCookie(name)) {
       document.cookie = name + "=" +
       ((path) ? "; path=" + path : "") +
       ((domain) ? "; domain=" + domain : "") +
       "; expires=Thu, 01-Jan-70 00:00:01 GMT";
      }
}
////////////////////////////////////////////////////
//other misc. functions                   /////////////////
///////////////////////////////////////////////////
function CKquantity(checkString) {

        var strNewQuantity = "";    // String Adjusted Item Quantity
        var count     = 0;          // Generic Loop Counter

        for (var i = 0; i < checkString.length; i++) {
                ch = checkString.substring(i, i+1);

                if ((ch >= "0" && ch <= "9") || (ch == '.')) {
                        strNewQuantity += ch;
                }
        }

        if (strNewQuantity.length < 1)
                strNewQuantity = "0";

        return strNewQuantity;
}


function show(elemId){
  try{
     var elem = document.getElementById(elemId);
     elem.style.visibility="visible";
    }
  catch(e){}
}

function hide(elemId){
  try{
    var elem = document.getElementById(elemId);
    elem.style.visibility="hidden";
    }
  catch(e){}
}

function mCshow(elemId){
  try{
     var elem = document.getElementById(elemId);
     elem.attributes['class'].value ="show";
    }
  catch(e){}
}
function mChide(elemId){
  try{
    var elem = document.getElementById(elemId);
    elem.attributes['class'].value = "hide";
    }
  catch(e){}
}

function mChideSelect(elemId){
  try{
    var elem = document.getElementById(elemId);
    elem.attributes['class'].value = "hideSelect";
    }
  catch(e){}
}


