var featureList=[ "ajax2", "dialog", "calendar", "panelbar", "grid", "json" ];
var LI = new Array();
function PositionFooter(){
	 var flt = OAT.Dom.getLT( $( 'footer' ));
	 var fwh = OAT.Dom.getWH( $( 'footer' ));
	 var tclt = OAT.Dom.getLT( $( 'spacer' ));
	 var tcwh = OAT.Dom.getWH( $( 'spacer' ));
	 var tcBottom = tclt[1] + tcwh[1];
	 var vp = OAT.Dom.getViewport();
	 
	 if( tcBottom > vp[1] ){
		   OAT.Dom.moveBy( 'footer', 0, tcBottom - flt[1] + fwh[1] );
		   return;
		   }
	
	if( flt[ 1 ] != ( vp[ 1 ] - fwh[1] ) ){
		OAT.Dom.moveBy( 'footer', 0, vp[1] - ( fwh[1] * 2 ) - flt[1] );
		}
		
	}

function LoadContent( optObj ){	
		
	var options = {};
	
	for (var p in optObj) { options[p] = optObj[p]; }
	
	var ajxoptions = { 
		type: OAT.AJAX.TYPE_TEXT,
		onerror:function( request ){ alert( "request returned " + request.getStatus() ); }
			}
			
	function afterGet( request ){ 
		var content = request;
		var bodstart = 0;
		if( request.search( '<body>' )  >= 0 ){ 
			bodstart = request.search( '<body>' ) + 6;
			content = request.substr( bodstart, request.search( '</body>' ) - bodstart );
			}
			
		options.append ? options.el.innerHTML += content : options.el.innerHTML = content;
		
		if( options.afterInsert ){
			options.afterInsert( optObj );
			}
	}
		
	OAT.AJAX.GET( options.url, false, afterGet, ajxoptions );
}


function FillFormSelOpts( frm )
{
	var frmselopts = SDForm.Settings.getElementsByTagName( 'FormSelOpts'  )[0];
	var frmxml = frmselopts.getElementsByTagName( frm.name  )[0];
	if( ! frmxml ){ return; }
	var selxml = frmxml.childNodes;
	for( var i=0; i < selxml.length; ++i ){
		var el = frm.elements[ selxml[i].tagName ];
		if( el ){
			if( el.type === "select" || el.type === "select-one" ){
				SDForm.popSelectElement( selxml[i], el );
				}
			}
		}
}
function AddSplitCB( LI ){
	var cb = OAT.Dom.create( 'input' );
	cb.type = 'checkbox';
	cb.name="sdSplitProcess";
	cb.value = 'No';
	cb.checked = false;
	var s = OAT.Dom.create( 'span' );
	OAT.Style.apply( s, { font: 'menu' } );
	OAT.Dom.append( [ s, cb, OAT.Dom.text( 'Split Process' ) ] );
	OAT.Dom.append( [ LI.hostform, s ] );
}
function ToggleLineInputForm( cb, name ){

	if( cb.checked ){
	var frmdiv = OAT.Dom.create( 'div' );
	OAT.Dom.append( [ 'ProductionSpecifics', frmdiv ] );
	LoadContent( { el: frmdiv,
				   url: 'forms/' + name + '.htm', 
				   afterInsert: function( opt ){ 
								FillFormSelOpts( $F( name + 'Inputs' ) ); 
								LI[ name ] = new LineInputs( { 
										el: name + 's',
										hostform: name,
										inputsform: name + 'Inputs', 
										litype: name,
										inputsdlog: name + 'Dlog' } );
								OAT.Style.apply( LI[ name ].dlog.win.div.childNodes[0], { background: '#f7bb0a', color: 'black' } );
								LI[ name ].form.isempty = function(){ return( true ) };
								LI[ name ].dlog.show();
								},
					append: true
				   } );
	}else{
	  RmLineInputForm( LI[ name ] );
	  delete LI[ name ] ;
	}
}

function RmLineInputForm( Li ){
	if( Li.hostform ){ OAT.Dom.unlink( Li.hostform.parentNode ); }
	if( Li.form ){ OAT.Dom.unlink( Li.form.parentNode ); }
}

function ClearServices(){
	frm = $F( 'Services' );
	els = frm.elements;
	for( var i = 0; i < els.length; ++i ){
		if( els[i].type == "checkbox" ){
			els[i].checked = false;
			}
		}
	for (var i in LI){
		RmLineInputForm( LI[i] );
		delete LI[i];
		}
	}


function AddSearchBtns(){

	BillToCache = new FormCache( { Form: 'BillTo',
							Input: 'Name',
							Launch: 'SearchBillToBtn',
							Fields: [ "Name", "Phone", "EmailAddr", "Company", "Addr1", "Addr2", "City", "State", "Zip" ],
							Max: 50,
							DlogWH: [ 525, 100 ],
							Match: function( a, b ){ var astr = new String( a.Name + a.EmailAddr ); var bstr = new String( b.Name + b.EmailAddr ); if( bstr.toUpperCase() === astr.toUpperCase() ){ return( true ); } return( false ); },
							DialogTitle: 'Bill To History',
							DialogTitleStyle: { background: '#f7bb0a', color: 'blue' }
						  } );	
	
	if( SDForm.GetCookieWCL() == 'l' ){
		OAT.Dom.show( 'SearchWhoBtn' );
		ContactCache = new FormCache( { Form: 'Contact',
							Input: 'Name',
							Launch: 'SearchWhoBtn',
							Fields: [ "Name", "Phone", "EmailAddr", "Company", "Addr1", "Addr2", "City", "State", "Zip" ],
							Max: 50,
							DlogWH: [ 525, 100 ],
							Match: function( a, b ){ var astr = new String( a.Name + a.EmailAddr ); var bstr = new String( b.Name + b.EmailAddr ); if( bstr.toUpperCase() === astr.toUpperCase() ){ return( true ); } return( false ); },
							DialogTitle: 'Contact History',
							DialogTitleStyle: { background: '#f7bb0a', color: 'blue' }
						  } );	
						  
		OAT.Dom.show( 'SearchCoBtn' );			  
		CompanyCache = new FormCache( { Form: 'Contact',
							Input: 'Company',
							Launch: 'SearchCoBtn',
							LoadUrl: '/_sd/php/ClientList.php',
							Fields: [ "Company", "Addr1", "Addr2", "City", "State", "Zip" ],
							Max: 50,
							DlogWH: [ 525, 100 ],
							DialogTitle: 'Company Accounts List',
							DialogTitleStyle: { background: '#f7bb0a', color: 'blue' }
						  } );
						  
		OAT.Dom.show( 'SearchBillToCoBtn' );			  
		setTimeout( function(){ BillToCompanyCache = new FormCache( { Form: 'BillTo',
							Input: 'Company',
							Launch: 'SearchBillToCoBtn',
							Data: CompanyCache.Data,
							Fields: [ "Company", "Addr1", "Addr2", "City", "State", "Zip" ],
							Max: 50,
							DlogWH: [ 525, 100 ],
							DialogTitle: 'Company Accounts List',
							DialogTitleStyle: { background: '#f7bb0a', color: 'blue' }
						  } ) }, 2000 );
	
	}
}
function InitSetisReady(){
	
	AddPanelBarSection( { title: 'Contact', name : 'Contact', formUrl: 'forms/Contact.htm' } );
	AddPanelBarSection( { title: 'Bill To ( if not same as Contact )', name : 'BillTo', formUrl: 'forms/BillTo.htm' } );
	AddPanelBarSection( { title: 'Services', name : 'Services', formUrl: 'forms/Services.htm', isempty: function(){ return( true );} } );
	pb.go( 0 );
	
	
	for( i = 0; i < document.forms.length;++i ){
		FillFormSelOpts( document.forms[i] );
	}
	
	// remove the Hardcopy selection if form is viewed from the Internet
	if( SDForm.GetCookieWCL() == 'i' ){ 
		var el = $( 'Source' );
		for( var i = 0; i < el.options.length; ++i ){
			if( el.options[i].text.search( 'Hardcopy' ) >= 0 ){
				el.remove( i );
				}
			}
	}
	
	setTimeout( function(){ AddSearchBtns(); setDeliverables(); HandleSourceSelection(); }, 2000 );
	
	
}

function AddPanelBarSection( optObj ){
	
	var tb = OAT.Dom.create( 'div' );
	tb.id = optObj.name;
	
	tb.innerHTML = '<img src="images/checkok.png"></img>' + optObj.title;
	
	$( "OrderdByToBillTo" ).appendChild( tb );
				
	var seldiv = OAT.Dom.create( 'div' );
	seldiv.id = optObj.name + "_Content";
	
	$( "OrderdByToBillTo" ).appendChild( seldiv );
	var frm = OAT.Dom.create( "form" );
	frm.name = optObj.name;
	frm.action = '#';
	frm.method = 'POST';
	if( optObj.isempty ){ 
		frm.isempty = optObj.isempty;
	}else{ 
		frm.isempty = function(){  els = this.elements; 
								for( var i=0; i< els.length; ++i ) {
									switch ( els[i].type) { 
											case "text": case "hidden": case "password": case "textarea":
												if( els[i].value != '' ){ return( false ); }
												break; 
											case "checkbox": 
												if( els[i].checked ){ return( false ); } 
												break;
											case "SELECT": case "select-one":  
												if( els[i].selectedIndex != 0 ){ return( false ); } 
												break; 
										} 
									}
								return( true );
							}
	}
	if( optObj.formUrl ){
	LoadContent( { el: frm, 
				   url: optObj.formUrl, 
				   afterInsert: function( opt ){ FillFormSelOpts( opt.el ); SDForm.SetFormDefaults( opt.el ); } 
				   } );
		}
	OAT.Dom.append( [ seldiv, frm ] );
	pb.addPanel( tb.id, seldiv.id );
		
}
	

function mPrintWorkOrder(){
	var self = this;
	var o = SDForm.Order.getElementsByTagName( 'Order' );
	self.wourls = new Array();
	
	for( i = 0; i < o.length; ++i ){
		self.wourls.push( "/OM/WOCache/" + o[i].getAttribute( 'id' )  + '_WorkOrder.html' );
		}
		
	
		function PrintIt(){
			
			//var printwin = window.open( self.wourls[0],'','toolbar=no,scrollbars=no,status=no,scrollbar=no,resizable=no,width=506,height=480');
			//printwin.window.focus();
			
			if( OAT.Browser.isGecko ){
				for( var i = 0; i < self.wourls.length; ++i ){
					var printwin = window.open( self.wourls[i],'','toolbar=no,scrollbars=no,status=no,scrollbar=no,resizable=no,width=506,height=480');
					printwin.focus();
					printwin.onload = function(){
						this.print();
						this.close();
						}	
				}
					
			}
			
			if( OAT.Browser.isWebKit ){
				
				for( var i = 0; i < self.wourls.length; ++i ){
					var printwin = window.open( '','print','toolbar=no,scrollbars=no,status=no,scrollbar=no,resizable=no,width=506,height=480');
					printwin.location.href = self.wourls[i];
					printwin.focus();
					printwin.print();
					printwin.close();
				}	
			}
				
				
			if( OAT.Browser.isIE ){
				var printwin = [];
				for( var i = 0; i < self.wourls.length; ++i ){
					printwin[i] = window.open( self.wourls[i],'','toolbar=no,scrollbars=no,status=no,scrollbar=no,resizable=no,width=506,height=480');
					printwin[i].print();	
				}
				
				}
		}
		
	var options = { 
		type: OAT.AJAX.TYPE_TEXT,
		onerror:function( request ){ alert( "request returned " + request.getStatus() ); mPrintWorkOrder(); }
		}
			
		
	OAT.AJAX.GET( self.wourls[0], '', PrintIt, options );	
}

function JavaAvailable(){
	if( OAT.Browser.isIE ){
		return( window.IeJavaEnabled );
		}
	if( navigator.javaEnabled() ){
		return( true );
		}
	return( false );
}


function setDeliverables(){
	
	frm = $F( 'Deliverables' );
	if( $( 'Return' ).value.search( 'Me' ) >= 0 ){
		if( ! OAT.Dom.isClass( frm.elements[ 'Via' ], 'reqd') ){
			OAT.Dom.addClass( frm.elements[ 'Via' ], 'reqd');
			frm.elements[ 'Via' ].disabled = false;
			}
		}
	else{
		if( OAT.Dom.isClass( frm.elements[ 'Via' ], 'reqd') ){
			OAT.Dom.removeClass( frm.elements[ 'Via' ], 'reqd');
			frm.elements[ 'Via' ].disabled = true;
			frm.elements[ 'Via' ].selectedIndex = 0;
			}
		}
}

function PlaceAnotherOrder(){
	SDForm.OrderAgain();
	ClearServices();
	$F( 'BillTo' ).reset(); $F( 'Due' ).reset(); $F( 'Accounting' ).reset();
	$F( 'Payment' ).reset(); $F( 'Deliverables' ).reset();//$F( 'Originals' ).reset();
	$F( 'Special' ).reset();
	pb.go( 0 );
}

function isDigitalOrder(){
	if( $('Source').options[ $('Source').options.selectedIndex ].name.search( /Archived/i ) > -1 ){ return( true ); }
	if( $('Source').options[ $('Source').options.selectedIndex ].name.search( /attached/i ) > -1 ){ return( true ); }
	return( false );
}

function HandleSourceSelection(){
	
	if( $('Source').options[ $('Source').options.selectedIndex ].name.search( 'attached' ) >= 0 ){
		var Up = SDForm.Settings.getElementsByTagName( 'Upload' )[0];
		Up.setAttribute( 'RequireUploads', "Yes" );
		OAT.Dom.show( 'attached' ); 
		if( UC.client.insert ){ SDForm.ClearActivity(); }
		SDForm.LogActivity( "Loading Upload Client. <br><b>May take a while the first time.</b>" );
		UC.InsertComplete = function(){ SDForm.LogActivity( "Upload client loaded!." );
										 setTimeout( LoadDlog.hide, 2 * 1000 );	
										}
		UC.Insert();
		}
	else{
		var Up = SDForm.Settings.getElementsByTagName( 'Upload' )[0];
		Up.setAttribute( 'RequireUploads', "No" );
		OAT.Dom.hide( 'attached' );
		UC.Remove();
		if( LoadDlog.isVisible ){ LoadDlog.hide(); }
		}
					
}

function init(){
	
	// this form uses the OAT framework
	OAT.Preferences.showAjax = false;
	OAT.Preferences.imagePath = "/_sd/images/oat/";	
	
	// Check to see if the user is on FireFox Mac
	if( OAT.Browser.isMac && OAT.Browser.isGecko ){
		var NoMacFF = new OAT.Dialog(  'Attention....' , 'MacFF', {modal:1, buttons:0, width:OAT.Dom.getWH( 'MacFF' )[0] + 20});
		NoMacFF.show();
		return;
		} 
	// Make sure the user has Java available
	if( JavaAvailable() != true ){
		NoJavaDlog = new OAT.Dialog(  'No Java....' , 'NoJava', {modal:1, buttons:0,width:OAT.Dom.getWH( 'NoJava' )[0] + 20});
		NoJavaDlog.show();
		}
		
	pb = new OAT.Panelbar( "OrderdByToBillTo", 20 );
	
	
	// if the user is using Opera hide the footer
	if( OAT.Browser.isOpera ){ OAT.Dom.hide( 'footer' ); }
	
	// Allocate a dialog to show loading process
	LoadDlog = new OAT.Dialog(  'Progress....' , 'Activity', {modal:1, buttons:0,width:OAT.Dom.getWH( 'Activity' )[0] + 20});
	LoadDlog.show(); // display it
	
	// Allocate an order complete dialog
	OrdComplete = new OAT.Dialog(  'Order Status....' , 'OrderComplete', { modal:1, 
																			buttons:0,
																			width:OAT.Dom.getWH( 'OrderComplete' )[0] + 20
																			});
	
	// the footer needs to be re-positioned when the window is resized
	OAT.Event.attach( window, 'resize', PositionFooter );
		
		
	 // use OAT's calander function for date picking in datedue filed
	tDate = new Date();	
	var c = new OAT.Calendar();
	c.weekStartIndex = 6;
	window.cal = c;
	var openRef = function(event) {
      var callback = function(date) { $("DateDue").value = date[1]+"/"+date[2]+"/"+date[0]; }
		
      var coords = OAT.Dom.position("DateDue");
      var y = OAT.Browser.isIE ? tDate.getYear() : tDate.getYear() + 1900;
      c.show(coords[0],coords[1]+30,callback, [ y, tDate.getMonth() + 1 , tDate.getDate() ] );
	}
	OAT.Dom.attach("DateDue","click",openRef);
	OAT.Dom.attach("DateDue","keyup",function(){ $('DateDue').value = ''; openRef(); } );
	
 
  // insert the Masthead
	LoadContent( { el: $( 'masthead' ), url: "/_sd/Custom/Masthead.html" } );
	
  // insert the footer
   //LoadContent( { el: $( 'footer' ), url: "/_sd/Custom/Footer.html" } );
	
  // Safari needs this call
	PositionFooter();
	
  // initialize the form library
    SDForm.addInitForms =  [ 'Contact', 'BillTo' ];
	SDForm.init();

	// allow options for people on facility network
	if( SDForm.GetCookieWCL() == 'l' ){ 
			OAT.Dom.show( 'OrderClear' ); 
			OAT.Dom.show( "reproformopts" );
			}
	
	//OAT.Event.attach( 'submitjob', 'click', function(){ WhoCache.UpdateCache(); SDForm.SubmitDoc(); WhoCache.SaveCache(); } ); 
	
	OAT.Event.attach( 'submitjob', 'click', function(){
														//verify services have been added
														var servicesAdded = false;
														for (var l in LI){
															if( LI[ l ].isEmpty && l != 'ShipTo' ){
																servicesAdded = true;
																if( LI[ l ].isEmpty() ){
																	alert( l + ' is empty. Please click the Add to add lines or uncheck it in Services.' );
																	return;
																	}
																}
															}
														if( ! servicesAdded ){ 
															alert( 'No services have been added.  Please add services from the left before submitting a job.' );
															pb.go( 2 );
															return;
															}
															
														
														if( isDigitalOrder() && LI[ 'MountLam' ] ){
															var hasprime = false;
															var primes = [ 'LargeFormatBW', 'SmallFormat', 'LargeFormatColor' ]
															for( var i = 0; i < primes.length; ++ i ){
																if( LI[ primes[ i ] ] ){ hasprime = true; }
																}
															if( ! hasprime ){
																alert( "Mounting and Laminiation of attached or archived files requrie printing instructions.\n Please select one of the other servies to tell us how your files sould be printed prior to mounting and lamination." );
																return;
																}
															
															}
															
														if( window.ContactCache ){ ContactCache.UpdateCache(); }
														if( window.BillToCache ){ BillToCache.UpdateCache(); }
														if( window.CompanyCache ){ CompanyCache.UpdateCache(); }
														
														
														var g = SDForm.Settings.getElementsByTagName( 'General' )[0];
															g.setAttribute( 'To', $v( 'Source' ) );
															
														SDForm.SubmitDoc(); 
														
														if( window.ContactCache ){ ContactCache.SaveCache(); }
														if( window.BillToCache ){ BillToCache.SaveCache(); }
														if( window.CompanyToCache ){ CompanyCache.SaveCache(); }
														} ); 
	
	// apply events based on the source 
	OAT.Event.attach("Source","change", HandleSourceSelection );
					
	// attach to the clear form button 
	OAT.Event.attach( 'clearform', 'click', function(){
						ClearServices();
						SDForm.ClearDoc();
						pb.go( 0 );
						} );
						
	// attach to the clear form button 
	OAT.Event.attach( 'Confirmation', 'click', function(){
						frm = $F( 'Contact' );
						if( $( 'Confirmation' ).checked ){
							if( ! OAT.Dom.isClass( frm.elements[ 'EmailAddr' ], 'reqd') ){
								OAT.Dom.addClass( frm.elements[ 'EmailAddr' ], 'reqd');
								}
							}
						else{
							if( OAT.Dom.isClass( frm.elements[ 'EmailAddr' ], 'reqd') ){
								OAT.Dom.removeClass( frm.elements[ 'EmailAddr' ], 'reqd');
								}
							}
						var g = SDForm.Settings.getElementsByTagName( 'General' )[0];
						$('Confirmation').checked ? g.setAttribute( 'Confirm', "Yes" ) : g.setAttribute( 'Confirm', "No" ); 	
						} );
	
	OAT.Event.attach( 'Return', 'change', setDeliverables );


}
