	dojo.require("dojo.parser");
	dojo.require("dojox.collections.ArrayList");
	dojo.require("dijit.form.ValidationTextBox");
	dojo.require("dijit.form.Button");
	dojo.require("dijit.form.Form");
	dojo.require("dijit.form.FilteringSelect");

	var i = 0;
	function updatePhone(ph) {
		var p = dojo.byId(ph);

		var len = p.value.length;
		if (i <= len || len == 0) { // we're adding chars to field
			var lastchar = p.value.charAt(len-1); 
			if (lastchar == '(' || lastchar == ')' || lastchar == '-') { // last char entered
				p.value = p.value.substring(0,len-1);
			}
			switch(len) {
				case 0: p.value = '(';break;
				case 4: p.value += ') ';break;
				case 5: p.value += ' ';break;
				case 9: p.value += ' - ';break;
			}
		}
		if (p.value.substring(0,1)!='(') { p.value = '('+p.value; }
		i = len;
	}
			
	function outputForm(ordername) {
		return '<p>Please fill out this form to start the process of ordering this service. A service representative may contact you to confirm your order.</p>' +
'		     <div dojoType="dijit.form.Form" name="'+ordername+'_Form" id="'+ordername+'_Form" method="post" onSubmit="submitOrder(\''+ordername+'\', \''+ordername+'_Form\');" action="http://www.brandenburgtelecom.com/cgi-bin/form.cgi" style="color:#000;"> ' +
' ' +
'<input name="recipient" value="btelecom@bbtel.com,kellymattingly@bbtel.com" type="hidden" />'+
'               <input name="subject" value="Service Request: '+ordername+'" type="hidden" />'+
'	       <input name="required" value="Account_Number, Callback_Number, Service_Name, Requested_By, Email_Address" type="hidden" />'+
'	       <input type="hidden" name="Service_Requested" value="'+ordername+'" /> '+
''+
''+
'			<table>'+
'				<tr>'+
'					<th>Account Number:</th>'+
'					<td><input type="text" class="account" name="Account_Number1" dojoType="dijit.form.ValidationTextBox" regExp="\\d{1,6}" style="width:75px;height:15px;" required="true" invalidMessage="Please enter a valid account number." trim="true" />'+

' - <input type="text" name="Account_Number2" dojoType="dijit.form.ValidationTextBox" regExp="\\d{1,3}" style="width:40px;height:15px;" required="true" invalidMessage="Please enter a valid account number." class="account" trim="true" /></td>'+

'				</tr>'+
'				<tr>'+
'					<th>What number can we reach you at?</th>'+
'					<td><input type="text" name="Callback_Number" id="'+ordername+'_Phone" dojoType="dijit.form.ValidationTextBox" regExp="\\(\\d{3}\\)\\s\\d{3}\\s-\\s\\d{4}" style="height:15px;" required="true" onKeyUp="updatePhone(\''+ordername+'_Phone\');" onKeyPress="updatePhone(\''+ordername+'_Phone\');" invalidMessage="Please enter a number where we can reach you" trim="true" /></td>'+
'				</tr>'+
'<tr>'+
'					<th>What is the service name on the account?</th>'+
'					<td><input type="text" name="Service_Name" dojoType="dijit.form.ValidationTextBox" regExp="^([a-zA-Z.\\s]+)$"  style="height:15px;" required="true" invalidMessage="Please enter the name on your account" trim="true" /></td>'+
'				</tr>'+
'<tr>'+
'					<th>Requested By:</th>'+
'					<td><input type="text" name="Requested_By" dojoType="dijit.form.ValidationTextBox" regExp="^([a-zA-Z.\\s]+)$"  style="height:15px;" required="true" invalidMessage="Please enter your name" trim="true" /></td>'+
'				</tr>'+

'				<tr>'+
'					<th>Email Address:</th>'+
'					<td><input type="text" name="Email_Address" dojoType="dijit.form.ValidationTextBox" required="true" regExp=".+@.+\..+" style="height:15px;" promptMessage="" invalidMessage="Please enter a valid Email Address." trim="true" /></td>'+
'				</tr>'+
'				<tr>'+
'<td colspan="2" style="text-align:center;">'+
'<button type="button" onClick="submitOrder(\''+ordername+'\',\''+ordername+'_Button\');" dojoType="dijit.form.Button">'+
'Submit'+
'</button></td>'+
'				</tr>'+
''+
''+
'				</table>'+
'		     </div>';
	}

	function addMovieDropDown(num) {
		var ret = "";
		var i = 1;
		while (i <= num) {
		ret +=  '<tr style="color:#000;">'+
			'  <th>Movie Package '+i+':</th>' +
			'  <td> '+
			'    <select dojoType="dijit.form.FilteringSelect" required="true" invalidMessage="Please choose a movie package." style="color:inherit;" id="'+num+'_Movie_Package_'+i+'" name="'+num+'_Movie_Package_'+i+'" class="movie">'+
			'      <option value="Showtime_Package">Showtime Package</option>' +
			'      <option value="Starz_Encore_Package">Starz and Encore</option>' +
			'      <option value="Cinemax_Package">Cinemax Package</option>' +
			'      <option value="HBO_Package">HBO Package</option>' +
			'    </select>' +
			'  </td> '+
			'</tr>';
			i++;
		}
		return ret;
	}

	function addMovies(o, num) {
		var t = dojo.query('table', o)[0];

		dojo.place(addMovieDropDown(num), t, 'first')[0];
		dojo.parser.parse(o);
	}

	function toggleOrder(order, button) {
		var o = dojo.byId(order);
		if (o.style.display == 'block') {
			o.style.display = 'none'; // hide the order box
			button.innerHTML = 'Order'; 
		} else {
			o.style.display = 'block';
			if (o.innerHTML.length < 10) {
				o.innerHTML = outputForm(order);
				dojo.parser.parse(o);
			}	
			button.innerHTML = 'Cancel';
		}
	}

	function toggleMoviePackageOrder(order, button, moviePackageNum) {
		toggleOrder(order, button);
		if (dojo.query('.movie', order).length < 1) {
			var o = dojo.byId(order);
			addMovies(o, moviePackageNum);
		}
	}

	function submitOrder(order, button) {
		var p = dojo.query("p",order)[0];
		var form = order+'_Form';
		if (dijit.byId(form).validate()==false) {	
			p.innerHTML = 'Please complete all fields before submitting.';
			return;

		} else {
			var b = new dojox.collections.ArrayList();
			dojo.query('#'+order+' .account').forEach(function(node){ 
				var a = dojo.query('input', node)[0].value;
				if (a != null && a != "" && a != " ")
					b.add(a); 
				dojo.destroy(node);
			     } );

			var a = b.item(0) + ' - ' + b.item(1);

			var account = dojo.doc.createElement('input');
			dojo.attr(account, 'type', 'hidden');
			dojo.attr(account, 'value', a);
			dojo.attr(account, 'name', 'Account_Number');
			dojo.place(account, form);
			
			var b = dojo.byId(button);
			dojo.attr(b,"disabled","disabled");
			b.innerHTML = "Submitting";
			var b2 = dojo.query("button",order);

			var f = order + "_Form";
			dojo.xhrPost({
			    url: "http://www.brandenburgtelecom.com/cgi-bin/form.cgi",
			    load: function(response, ioArgs){
			    		p.innerHTML = "Thank you. A customer care representative may contact you shortly.";
					b.innerHTML = "Ordered";
					dojo.place("<button type=\"button\" onClick=\"dojo.byId('"+order+"').style.display='none';\" name=\""+order+"_CloseBtn\">Close</button>", dojo.byId(order));
					dojo.destroy(dojo.byId(order+'_Form'));
	   		   		return response;
	    		       	},
	    		    error: function(response, ioArgs){
      					p.innerHTML = "An error occurred while processing your form. Please contact a customer care representative to purchase this service.";
      					return response;
    				},
   	 
    				//Setting the 'form' parameter to the ID of a form on the page
    				//submits that form to the specified URL
    				form: f
  			});
			
		}

	}
