var popupRequest;
var curTabType = '';
var myTabs = new YAHOO.widget.TabView();

function savePromoBillbackRequest() {
	showLoading();
			
	var params = '&ajax=1';
	
	var formObject = document.getElementById('promoBillbackRequest'); 
	
	var callback = {
		success: function(o) {
			hideLoading();			
			var json_object = YAHOO.lang.JSON.parse(o.responseText);
	
			if (json_object.errors != null){
				var errors = ''
				for (var error in json_object.errors){		
					errors += json_object.errors[error] + "\r\n";
				}
				alert(errors);
			} else {
				alert("Your request has been submitted.");
				window.location = '/forms/promobillback/';
			}
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while sending the promo billback request. '+o.statusText);
		},
		argument: []
	}
	
	YAHOO.util.Connect.setForm(formObject); 
			
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom&ricp=promo_billback_request_save'+params, callback, null); 
}



function saveLiteratureRequest() {
	showLoading();		
	var params = '&ajax=1';	
	var formObject = document.getElementById('literatureRequest'); 	
	var callback = {
		success: function(o) {
			hideLoading();			
			var json_object = YAHOO.lang.JSON.parse(o.responseText);
	
			if (json_object.errors != null){
				var errors = ''
				for (var error in json_object.errors){		
					errors += json_object.errors[error] + "\r\n";
				}
				alert(errors);
			} else {
				alert("Your request has been submitted.");
				window.location = '/forms/literaturerequest/';
			}
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while sending the literature request. '+o.statusText);
		},
		argument: []
	}	
	YAHOO.util.Connect.setForm(formObject); 	
	var transaction = YAHOO.util.Connect.asyncRequest('GET', '/account/?action=custom&ricp=literature_request_save'+params, callback, null); 
}

function saveSpecialPricingRequest() {
	showLoading();		
	var params = '&ajax=1';	
	var formObject = document.getElementById('specialPricingRequest'); 	
	var callback = {
		success: function(o) {
			hideLoading();			
			var json_object = YAHOO.lang.JSON.parse(o.responseText);
	
			if (json_object.errors != null){
				var errors = ''
				for (var error in json_object.errors){		
					errors += json_object.errors[error] + "\r\n";
				}
				alert(errors);
			} else {
				alert("Your request has been submitted.");
				window.location = '/forms/specialpricing/';
			}
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while sending the special pricing request. '+o.statusText);
		},
		argument: []
	}	
	YAHOO.util.Connect.setForm(formObject); 	
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom&ricp=spt_request_save'+params, callback, null); 
}

function saveSampleRequest() {
	showLoading();		
	var params = '&ajax=1';	
	var formObject = document.getElementById('sampleRequest'); 	
	var callback = {
		success: function(o) {
			hideLoading();			
			var json_object = YAHOO.lang.JSON.parse(o.responseText);
	
			if (json_object.errors != null){
				var errors = ''
				for (var error in json_object.errors){		
					errors += json_object.errors[error] + "\r\n";
				}
				alert(errors);
			} else {
				alert("Your request has been submitted.");
				window.location = '/forms/samplerequest/';
			}
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while sending the sample request. '+o.statusText);
		},
		argument: []
	}	
	YAHOO.util.Connect.setForm(formObject); 	
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom&ricp=sample_request_save'+params, callback, null); 
}

// Save RSM or RSM Admin comments to request
function addComment(type,request_id,comment) {
	showLoading();		
	var params = '&ajax=1';	
	params += '&type=' + type;
	params += '&request_id=' + request_id;
	params += '&comment=' + escape(comment);
	var callback = {
		success: function(o) {
			hideLoading();			
			var json_object = YAHOO.lang.JSON.parse(o.responseText);
	
			if (json_object.errors != null){
				var errors = ''
				for (var error in json_object.errors){		
					errors += json_object.errors[error] + "\r\n";
				}
				alert(errors);
			} else {
				alert("Comment Saved.");
			}
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while adding a comment. '+o.statusText);
		},
		argument: []
	}	
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom&ricp=add_comment'+params, callback, null); 
}


// Show a request details in a Popup
function showRequest(type,request_id, title, permission_level,status) {
	showLoading();	

	var params = '&ajax=1';
	if (request_id != null) params += '&request_id=' + request_id;	
	
	switch(type){
		case 'lit':    
				params += '&ricp=literature_request_view';
			break;
		case 'promo':  
				params += '&ricp=promo_billback_request_view';  
			break;
		case 'spt':    
				params += '&ricp=spt_request_view'; 
			break;
		case 'sample': 
				params += '&ricp=sample_request_view'; 
			break;
	}
	
	approveRequest = function() {
		reviewRequest(type,request_id,2,permission_level);
		if(permission_level > 3 && (type == 'spt' || type == 'promo')) window.open('/account/?action=custom'+params+'&print=1',type+'_'+request_id);
		this.cancel();
	}
	
	rejectRequest = function() {
		reviewRequest(type,request_id,-1,permission_level);
		this.cancel();
	}
	
	closeRequest = function() {
		this.cancel();
	}
	
	printRequest = function() {		
		window.open('/account/?action=custom'+params+'&print=1',type+'_'+request_id);
	}
	
	previewRequest = function() {		
		window.open('/account/?action=custom'+params+'&print=1&preview=1',type+'_'+request_id);
	}
	
	commentsPrompt = function() {		
		var comment = prompt("Add a comment:\r\n(Note: Comments will appear on the preview page and printed requests once request is approved or rejected)","");
		if (comment) addComment(type,request_id,comment);
	}
	
    var buttons = [];	
	if (permission_level != null && permission_level == 3 && status == 1){
		buttons.push({text: "Approve", handler: approveRequest, isDefault: false});
		buttons.push({text: "Reject", handler: rejectRequest, isDefault: false});	
		buttons.push({text: "Comment", handler: commentsPrompt, isDefault: false});	
	}
	if (permission_level != null && permission_level == 4 && status == 3 && type == 'spt'){
		buttons.push({text: "Approve", handler: approveRequest, isDefault: false});
		buttons.push({text: "Reject", handler: rejectRequest, isDefault: false});	
		buttons.push({text: "Comment", handler: commentsPrompt, isDefault: false});	
	}
	if (permission_level != null && permission_level == 4 && status == 3 && type == 'promo'){
		buttons.push({text: "Approve", handler: approveRequest, isDefault: false});
		buttons.push({text: "Reject", handler: rejectRequest, isDefault: false});	
		buttons.push({text: "Comment", handler: commentsPrompt, isDefault: false});	
	}
	buttons.push({text: "Preview", handler: previewRequest, isDefault: false});
	buttons.push({text: "Print", handler: printRequest, isDefault: false});	
	buttons.push({text: "Close", handler: closeRequest, isDefault: false});	
	var callback = {
		success: function(o) {
			hideLoading();
			//subscriptionDetails = showPopup('subscriptionDetails','Subscription Details for '+s_id,o.responseText,'650px','340px',false,false,false,{text: "Close", handler: closeSubscriptionDetails, isDefault: false})
			
			popupRequest = showPopup('showRequest', title, o.responseText, '550px', '470px',false,false,false, buttons ); //ok_callback, save_callback, show_cancel, extra_buttons
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while loading the request: '+o.statusText);
		},
		argument: []
	}			
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom'+params, callback, null); 
}

// Send status update to request, will returns errors from perl if user does not have permission.
function reviewRequest(type,request_id,status,permission_level){
	
	var params = '&ajax=1'+'&request_id='+request_id+'&status='+status;

	var rsm_comments = prompt("Please enter any comments:","");
	if (rsm_comments != null && rsm_comments != ''){
		params += '&rsm_comments='+rsm_comments;
	}

	switch(type){
		case 'lit':    
				params += '&ricp=literature_request_review';
			break;
		case 'promo':  
				params += '&ricp=promo_billback_request_review';  
			break;
		case 'spt':    
				params += '&ricp=spt_request_review'; 
			break;
		case 'sample': 
				params += '&ricp=sample_request_review'; 
			break;
	}

	var callback = {
		success: function(o) {
			var json_object = YAHOO.lang.JSON.parse(o.responseText);
	
			if (json_object.errors != null){
				var errors = ''
				for (var error in json_object.errors){		
					errors += json_object.errors[error] + "\r\n";
				}
				alert(errors);				
			} else {
				if(document.getElementById(type+"_tab")){
					getForms(my_user_id,type,permission_level);
					switch(type){
						case 'lit':    myTabs.selectTab(0);		break;
						case 'promo':  myTabs.selectTab(1);		break;
						case 'spt':    myTabs.selectTab(2); 	break;
						case 'sample': myTabs.selectTab(3); 	break;
					}
				}
				popupRequest.cancel();			
			}
		},
		failure: function(o) {
			alert('An error occured while sending the sample request review. '+o.statusText);
		},
		argument: []
	}
				
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom'+params, callback, null); 
}


function initFormReview(user_id,permission_level,start_tab){
	
	if ( user_id == null) return;
	
	if (permission_level == null) permission_level = '';
	
	if (start_tab == null || start_tab == '') start_tab = 'promo';
	
	my_user_id = user_id;	
	
	var tabOn = {lit:false,promo:false,spt:false,sample:false}; 
	
	tabOn[start_tab] = true;
	
	var myLit = new YAHOO.widget.Tab({ 
		label: 'Literature Requests', 
		content: '<form id="filterLitForm" name="filterLitForm" onsubmit="return false;">'+
                 '<input id="status_id" name="status_id" type="hidden" value="1" />'+
                 '<table style="padding:0px 10px 10px">'+
                 '	<tr>'+
                 '    <td align="left" width="80">Filter: </td>'+
                 '    <td align="left"> Broker Name: </td>'+
                 '    <td align="left" width="150px"> <input type="text" name="broker_name" size="12" /></td>'+        
				 '	  <!--<td align="left"> Buys Direct: </td>'+
				 '	  <td align="left"> <input type="radio" name="buys_direct" size="12" /></td>-->'+
				 '    <td align="left"> Created Date: </td>'+
				 '	  <td align="left"> <input type="text" name="date_from" id="date_from_lit" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_from_lit\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="date_to" id="date_to_lit" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_to_lit\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
                 '	<tr>'+
                 '    <td align="left"></td>'+
                 '    <td align="left"> Customer Name: </td>'+
                 '    <td align="left"> <input type="text" name="customer_name" size="12" /></td>'+
                 '  </tr>'+
				 '	<tr>'+
                 '    <td align="left">ID: <input type="text" name="id" size="3" /></td>'+
                 '    <td align="left"> State: </td>'+
                 '    <td align="left"> <input type="text" name="state" size="12" /></td>'+
                 '    <td align="left"> </td>'+
                 '    <td align="right"> <input type="submit" name="submit" onclick="getForms('+my_user_id+',\'lit\','+permission_level+'); return false;" value=" Apply Filter " /></td>'+
				 '  </tr>'+
				 '</table>'+
                 '</form>'+
				 '<div id="lit_tab"></div>',
			active: tabOn.lit
	})
	
	var myPromo = new YAHOO.widget.Tab({ 
		label: 'Promo / Billback Requests', 
		content: '<form id="filterPromoForm" name="filterPromoForm" onsubmit="return false;">'+
                 '<input id="status_id" name="status_id" type="hidden" value="1" />'+
                 '<table style="padding:0px 10px 10px">'+
                 '	<tr>'+
                 '    <td align="left" width="80">Filter: </td>'+
                 '    <td align="left" nowrap="nowrap"> Broker Name: </td>'+
                 '    <td align="left" width="150px"> <input type="text" name="broker_name" size="12" /></td>'+
				 '    <td align="left"> Created Date: </td>'+
				 '	  <td align="left" nowrap="nowrap"> <input type="text" name="date_from" id="date_from_promo" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_from_promo\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="date_to" id="date_to_promo" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_to_promo\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
                 '	<tr>'+
                 '    <td align="left"> </td>'+
                 '    <td align="left" nowrap="nowrap"> Account Contact: </td>'+
                 '    <td align="left"> <input type="text" name="contact" size="12" /></td>'+
                 '    <td align="left"> Promotion Dates: </td>'+
				 '	  <td align="left" nowrap="nowrap"> <input type="text" name="promo_date_from" id="promo_date_from_promo" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'promo_date_from_promo\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="promo_date_to" id="promo_date_to_promo" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'promo_date_to_promo\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
				 '	<tr>'+
                 '    <td align="left">ID: <input type="text" name="id" size="3" /></td>'+
                 '    <td align="left" nowrap="nowrap"> Customer Name: </td>'+
                 '    <td align="left"> <input type="text" name="customer_name" size="12" /></td>'+
                 '    <td align="left"> Buys Direct: </td>'+
                 '    <td align="left"> <input name="buys_direct" type="radio" value="1" /> Yes <input name="buys_direct" type="radio" value="0" /> No '+
				 '	  <div align="right" style="float:right;"><input type="submit" name="submit" onclick="getForms('+my_user_id+',\'promo\','+permission_level+'); return false;" value=" Apply Filter " /></div></td>'+
				 '  </tr>'+
				 '</table>'+
                 '</form>'+
				 '<div id="promo_tab"></div>', 
		active: tabOn.promo 
	})
	
	var mySPT = new YAHOO.widget.Tab({ 
		label: 'SPT Requests', 
		content: '<form id="filterSPTForm" name="filterSPTForm" onsubmit="return false;">'+
                 '<input id="status_id" name="status_id" type="hidden" value="1" />'+
                 '<table style="padding:0px 10px 10px">'+
                 '	<tr>'+
                 '    <td align="left" width="80">Filter: </td>'+
                 '    <td align="left" nowrap="nowrap"> Broker Name: </td>'+
                 '    <td align="left" width="150px"> <input type="text" name="broker_name" size="12" /></td>'+ 
				 '    <td align="left"> Created Date: </td>'+
				 '	  <td align="left" nowrap="nowrap"> <input type="text" name="date_from" id="date_from_spt" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_from_spt\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="date_to" id="date_to_spt" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_to_spt\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
                 '	<tr>'+
                 '    <td align="left"></td>'+
                 '    <td align="left" nowrap="nowrap"> Account Contact: </td>'+
                 '    <td align="left"> <input type="text" name="contact" size="12" /></td>'+
                 '    <td align="left"> Promotion Dates: </td>'+
				 '	  <td align="left" nowrap="nowrap"> <input type="text" name="promo_date_from" id="promo_date_from_spt" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'promo_date_from_spt\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="promo_date_to" id="promo_date_to_spt" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'promo_date_to_spt\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
				 '	<tr>'+
                 '    <td align="left">ID: <input type="text" name="id" size="3" /></td>'+
                 '    <td align="left" nowrap="nowrap"> Customer Name: </td>'+
                 '    <td align="left"> <input type="text" name="customer_name" size="12" /></td>'+
                 '    <td align="left"></td>'+
				 '    <td align="right"><input type="submit" name="submit" onclick="getForms('+my_user_id+',\'spt\','+permission_level+'); return false;" value=" Apply Filter " /></td>'+
				 '  </tr>'+
				 '</table>'+
                 '</form>'+
				 '<div id="spt_tab"></div>',
			active: tabOn.spt
	})
	
	var mySample = new YAHOO.widget.Tab({ 
		label: 'Sample Requests', 
		content: '<form id="filterSampleForm" name="filterSampleForm" onsubmit="return false;">'+
                 '<input id="status_id" name="status_id" type="hidden" value="1" />'+
                 '<table style="padding:0px 10px 10px">'+
                 '	<tr>'+
                 '    <td align="left" width="80">Filter: </td>'+
                 '    <td align="left"> Broker Name: </td>'+
                 '    <td align="left" width="150px"> <input type="text" name="broker_name" size="12" /></td>'+        
				 '	  <!--<td align="left"> Buys Direct: </td>'+
				 '	  <td align="left"> <input type="radio" name="buys_direct" size="12" /></td>-->'+
				 '    <td align="left"> Created Date: </td>'+
				 '	  <td align="left"> <input type="text" name="date_from" id="date_from_sample" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_from_sample\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="date_to" id="date_to_sample" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'date_to_sample\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
                 '	<tr>'+
                 '    <td align="left"></td>'+
                 '    <td align="left"> Request From: </td>'+
                 '    <td align="left"> <input type="text" name="request_from" size="12" /></td>'+
				 '	  <td align="left"> Arrival Date: </td>'+
				 '	  <td align="left"> <input type="text" name="arrival_date_from" id="arrival_date_from_sample" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'arrival_date_from_sample\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/>'+
                 '      to <input type="text" name="arrival_date_to" id="arrival_date_to_sample" size="12" />'+
                 '      <input border="0" type="image" onclick="displayCalendar(\'arrival_date_to_sample\',\'mm/dd/yyyy\',this); return false;" size="16" value="Choose Date" src="/js/calendar/calendar_edit.png"/></td>'+
                 '  </tr>'+
                 '  </tr>'+
				 '	<tr>'+
                 '    <td align="left">ID: <input type="text" name="id" size="3" /></td>'+
                 '    <td align="left"> Customer PO: </td>'+
                 '    <td align="left"> <input type="text" name="customer_po_number" size="12" /></td>'+
                 '    <td align="left"> State: </td>'+
                 '    <td align="left"> <input type="text" name="state" size="12" /> '+
				 '	  <div align="right" style="float:right;"><input type="submit" name="submit" onclick="getForms('+my_user_id+',\'sample\','+permission_level+'); return false;" value=" Apply Filter " /></div></td>'+
				 '  </tr>'+
				 '</table>'+
                 '</form>'+
				 '<div id="sample_tab"></div>',
			active: tabOn.sample
	})
	 
	function handleClickLit(e) 	{ getForms(user_id,'lit',permission_level); } 	
	function handleClickPromo(e) 	{ getForms(user_id,'promo',permission_level); } 	
	function handleClickSPT(e) 	{ getForms(user_id,'spt',permission_level); }	
	function handleClickSample(e) 	{ getForms(user_id,'sample',permission_level); }
	 
	myLit.addListener('click', handleClickLit);
	myPromo.addListener('click', handleClickPromo); 
	mySPT.addListener('click', handleClickSPT);
	mySample.addListener('click', handleClickSample);
	
	myTabs.addTab(myLit ); 
	myTabs.addTab(myPromo );
	myTabs.addTab(mySPT );
	myTabs.addTab(mySample );
	 
	myTabs.appendTo('forms_table'); 
	
	getForms(user_id,start_tab,permission_level);

}

// This function gets a list of messages given a user.  Data is returned as JSON and handled.

function getForms(user_id,type,permission_level){
	
	showLoading();
	var params = '&user_id='+user_id;
	var formObject ; 
	
	if (permission_level == 4){
		if (document.getElementById('status').value && document.getElementById('status').value != '')
			params += '&status='+document.getElementById('status').value;
	}
	curTabType = type;
	switch(type){
		case 'lit':    
				params += '&ricp=literature_request_list';
				formObject = document.getElementById('filterLitForm'); 
			break;
		case 'promo':  
				params += '&ricp=promo_billback_request_list'; 
				formObject = document.getElementById('filterPromoForm'); 
			break;
		case 'spt':    
				params += '&ricp=spt_request_list'; 
				formObject = document.getElementById('filterSPTForm'); 
			break;
		case 'sample': 
				params += '&ricp=sample_request_list'; 
				formObject = document.getElementById('filterSampleForm'); 
			break;
	}
	
	var callback = {
		success: function(o) {
			hideLoading();
			handleGetForms(o,type,permission_level);
		},
		failure: function(o) {
			hideLoading();
			alert('An error occured while retrieving forms. '+o.statusText);	  
		},
		argument: []
	}
	YAHOO.util.Connect.setForm(formObject); 
	var transaction = YAHOO.util.Connect.asyncRequest('POST', '/account/?action=custom' + params,  callback, null);
}

	
// This will be a callback function which will receive the results from the Perl
// creates a table of users.  THis function also handles errors returned from the perl code.
function handleGetForms(o,type,permission_level){
	
	var json_object = YAHOO.lang.JSON.parse(o.responseText);
	//alert ('dih!');
	if (json_object.errors != null){
		var errors = ''
		for (var error in json_object.errors){		
			errors += json_object.errors[error] + "\r\n";
		}
		alert(errors);
		
	} else if (json_object.forms != null){		
		//alert ('trying '+json_object.messages.length)
		var myResponse;	
		
		myResponse = json_object.forms;		
		// Yahoo Line Chart	
		myDataSource = new YAHOO.util.DataSource(myResponse); 
				
		var myFormatAction;
		// Yahoo Table
		var myColumnDefs = [ 
				{key:"id", label:"Id", sortable:true}
			];
		
		switch(type){			
			case 'lit':
				myFormatAction = function(elCell, oRecord, oColumn, oData) { 
					var data = YAHOO.lang.JSON.parse( oData);
					elCell.innerHTML = '<a href="#" onclick="showRequest(\'lit\',' + data.id  + ', \'Literature Request\',' + permission_level+ ','+data.status+');">View</a>'; 
				}; 
				myColumnDefs.push({key:"created", label:"Date Sent", sortable:true, formatter: myFormatDate}); 
				myColumnDefs.push({key:"workflow_state_desc", label:"Status", sortable:true}); 
				myColumnDefs.push({key:"broker", label:"Broker", sortable:true});
				myColumnDefs.push({key:"need_by", label:"Need By",sortable:true, formatter: myFormatDate});
				myColumnDefs.push({key:"action_data", label:"Actions",formatter: myFormatAction});
				break;
			case 'promo':    
				myFormatAction = function(elCell, oRecord, oColumn, oData) { 
					var data = YAHOO.lang.JSON.parse( oData);
					elCell.innerHTML = '<a href="#" onclick="showRequest(\'promo\',' + data.id  + ', \'Promo Billback Request\',' + permission_level+ ','+data.status+');">View</a> | <a href="/?action=custom&ajax=1&request_id='+ data.id  +'&ricp=promo_billback_request_view&print=1" target="_blank">Print</a>'; 
				}; 
				myColumnDefs.push({key:"customer_name", label:"Cust Name", sortable:true}); 
				myColumnDefs.push({key:"total_cost", label:"Total Cost", sortable:true, formatter: "currency"}); 
				myColumnDefs.push({key:"created", label:"Date Sent", sortable:true, formatter: myFormatDate}); 
				myColumnDefs.push({key:"workflow_state_desc", label:"Status", sortable:true}); 
				myColumnDefs.push({key:"broker", label:"Broker", sortable:true});
				//myColumnDefs.push({key:"promotion_dates_from", label:"Promotion Start",sortable:true, formatter: myFormatDate});
				//myColumnDefs.push({key:"promotion_dates_to", label:"Promotion End",sortable:true,  formatter: myFormatDate});
				myColumnDefs.push({key:"action_data", label:"Actions",formatter: myFormatAction});
				break;
			case 'spt':
				myFormatAction = function(elCell, oRecord, oColumn, oData) { 
					var data = YAHOO.lang.JSON.parse( oData);
					elCell.innerHTML = '<a href="#" onclick="showRequest(\'spt\',' + data.id  + ', \'Special Pricing / Term Request\',' + permission_level+ ','+data.status+');">View</a> | <a href="/?action=custom&ajax=1&request_id='+ data.id  +'&ricp=spt_request_view&print=1" target="_blank">Print</a>'; 
				}; 
				myColumnDefs.push({key:"customer_name", label:"Cust Name", sortable:true}); 
				myColumnDefs.push({key:"total_cost", label:"Total Cost", sortable:true, formatter: "currency"}); 
				//myColumnDefs.push({key:"promotion_dates_from", label:"Promotion Start",sortable:true, formatter: myFormatDate});
				//myColumnDefs.push({key:"promotion_dates_to", label:"Promotion End",sortable:true,  formatter: myFormatDate});
				myColumnDefs.push({key:"created", label:"Date Sent", sortable:true, formatter: myFormatDate}); 
				myColumnDefs.push({key:"workflow_state_desc", label:"Status", sortable:true}); 
				myColumnDefs.push({key:"broker", label:"Broker", sortable:true});
				myColumnDefs.push({key:"action_data", label:"Actions",formatter: myFormatAction});
				break;
			case 'sample':
				myFormatAction = function(elCell, oRecord, oColumn, oData) { 
					var data = YAHOO.lang.JSON.parse( oData);
					elCell.innerHTML = '<a href="#" onclick="showRequest(\'sample\',' + data.id  + ', \'Sample Request\',' + permission_level+ ','+data.status+');">View</a> | <a href="/?action=custom&ajax=1&request_id='+ data.id  +'&ricp=sample_request_view&print=1" target="_blank">Print</a>'; 
				}; 
				myColumnDefs.push({key:"created", label:"Date Sent", sortable:true, formatter: myFormatDate}); 
				myColumnDefs.push({key:"workflow_state_desc", label:"Status", sortable:true}); 
				myColumnDefs.push({key:"broker", label:"Broker", sortable:true});
				myColumnDefs.push({key:"arrival_date", label:"Arrival Date",sortable:true, formatter: myFormatDate});
				myColumnDefs.push({key:"action_data", label:"Actions",formatter: myFormatAction});
				break;
		}
		
		
			
		var myConfigs = null;
		
		if (json_object.forms.length > 11){
			myConfigs = { 
				paginator : new YAHOO.widget.Paginator({ 
					rowsPerPage    : 9 
				}) 
			};
		}
	
		// DataTable constructor syntax 
		var myDataTable = new YAHOO.widget.DataTable(type+"_tab", myColumnDefs, myDataSource, myConfigs); 
				
	} else {
		alert("Unable to get list of forms.")	
	}
}

function isblank(afield){
	return ((afield) ? false : true);	
}

function validateSPTRequest(form){
	
	var errors = [];

	if (isblank(form.contact.value)) errors.push("- Please enter a value for the field 'Contact'."); 
	if (isblank(form.customer_name.value)) errors.push("- Please enter a value for the field 'Customer Name'."); 
	if (isblank(form.promotion_dates_from.value)) errors.push("- Please enter a value for the field 'Promotion Date Start'."); 
	if (isblank(form.promotion_dates_to.value)) errors.push("- Please enter a value for the field 'Promotion Date End'."); 
	if (isblank(form.total_cost.value)) errors.push("- Please enter a value for the field 'Total Cost'."); 
	
	if (!isblank(form.spt_bags_off_invoice_amount.value) || !isblank(form.spt_bags_net_price_quoted.value) || !isblank(form.spt_bags_effective_date.value) || !isblank(form.spt_bags_cancel_date.value)) {
		if (isblank(form.spt_bags_off_invoice_amount.value) || isblank(form.spt_bags_net_price_quoted.value) || isblank(form.spt_bags_effective_date.value) || isblank(form.spt_bags_cancel_date.value)) {
			errors.push("- Please enter a value for each field for 'Bags'."); 
		}
	}
	
	if (!isblank(form.spt_sticks_off_invoice_amount.value) || !isblank(form.spt_sticks_net_price_quoted.value) || !isblank(form.spt_sticks_effective_date.value) || !isblank(form.spt_sticks_cancel_date.value)) {
		if (isblank(form.spt_sticks_off_invoice_amount.value) || isblank(form.spt_sticks_net_price_quoted.value) || isblank(form.spt_sticks_effective_date.value) || isblank(form.spt_sticks_cancel_date.value)) {
			errors.push("- Please enter a value for each field for 'Sticks'."); 
		}
	}
	
	if (!isblank(form.spt_refreshers_off_invoice_amount.value) || !isblank(form.spt_refreshers_net_price_quoted.value) || !isblank(form.spt_refreshers_effective_date.value) || !isblank(form.spt_refreshers_cancel_date.value)) {
		if (isblank(form.spt_refreshers_off_invoice_amount.value) || isblank(form.spt_refreshers_net_price_quoted.value) || isblank(form.spt_refreshers_effective_date.value) || isblank(form.spt_refreshers_cancel_date.value)) {
			errors.push("- Please enter a value for each field for 'Refreshers'."); 
		}
	}
	
	if (!isblank(form.spt_mints_off_invoice_amount.value) || !isblank(form.spt_mints_net_price_quoted.value) || !isblank(form.spt_mints_effective_date.value) || !isblank(form.spt_mints_cancel_date.value)) {
		if (isblank(form.spt_mints_off_invoice_amount.value) || isblank(form.spt_mints_net_price_quoted.value) || isblank(form.spt_mints_effective_date.value) || isblank(form.spt_mints_cancel_date.value)) {
			errors.push("- Please enter a value for each field for 'Mints'."); 
		}
	}
	
	if (!isblank(form.spt_shippers_off_invoice_amount.value) || !isblank(form.spt_shippers_net_price_quoted.value) || !isblank(form.spt_shippers_effective_date.value) || !isblank(form.spt_shippers_cancel_date.value)) {
		if (isblank(form.spt_shippers_off_invoice_amount.value) || isblank(form.spt_shippers_net_price_quoted.value) || isblank(form.spt_shippers_effective_date.value) || isblank(form.spt_shippers_cancel_date.value)) {
			errors.push("- Please enter a value for each field for 'Shippers'."); 
		}
	}
	
	if (!isblank(form.spt_other_off_invoice_amount.value) || !isblank(form.spt_other_net_price_quoted.value) || !isblank(form.spt_other_effective_date.value) || !isblank(form.spt_other_cancel_date.value)) {
		if (isblank(form.spt_other_off_invoice_amount.value) || isblank(form.spt_other_net_price_quoted.value) || isblank(form.spt_other_effective_date.value) || isblank(form.spt_other_cancel_date.value)) {
			errors.push("- Please enter a value for each field for 'Other'."); 
		}
	}
	
	if (!isblank(form.spt_other1_off_invoice_amount.value) || !isblank(form.spt_other1_net_price_quoted.value) || !isblank(form.spt_other1_effective_date.value) || !isblank(form.spt_other1_cancel_date.value)) {
		if (isblank(form.spt_other1_off_invoice_amount.value) || isblank(form.spt_other1_net_price_quoted.value) || isblank(form.spt_other1_effective_date.value) || isblank(form.spt_other1_cancel_date.value)) {
			+errors.push("- Please enter a value for each field for 'Other' (second)."); 
		}
	}
	
	if (isblank(form.spt_bags_off_invoice_amount.value) && isblank(form.spt_bags_net_price_quoted.value) && isblank(form.spt_bags_effective_date.value) && isblank(form.spt_bags_cancel_date.value)
	&& isblank(form.spt_sticks_off_invoice_amount.value) && isblank(form.spt_sticks_net_price_quoted.value) && isblank(form.spt_sticks_effective_date.value) && isblank(form.spt_sticks_cancel_date.value)
	&& isblank(form.spt_refreshers_off_invoice_amount.value) && isblank(form.spt_refreshers_net_price_quoted.value) && isblank(form.spt_refreshers_effective_date.value) && isblank(form.spt_refreshers_cancel_date.value)
	&& isblank(form.spt_mints_off_invoice_amount.value) && isblank(form.spt_mints_net_price_quoted.value) && isblank(form.spt_mints_effective_date.value) && isblank(form.spt_mints_cancel_date.value)
	&& isblank(form.spt_shippers_off_invoice_amount.value) && isblank(form.spt_shippers_net_price_quoted.value) && isblank(form.spt_shippers_effective_date.value) && isblank(form.spt_shippers_cancel_date.value)
	&& isblank(form.spt_other_off_invoice_amount.value) && isblank(form.spt_other_net_price_quoted.value) && isblank(form.spt_other_effective_date.value) && isblank(form.spt_other_cancel_date.value)
	&& isblank(form.spt_other1_off_invoice_amount.value) && isblank(form.spt_other1_net_price_quoted.value) && isblank(form.spt_other1_effective_date.value) && isblank(form.spt_other1_cancel_date.value)) {
			errors.push("- Please enter special prices and terms for at least one of Bags, Sticks, Refreshers, Mints, Shippers, or other."); 
	}
	
	if (errors.length > 0){
		alert(errors.join('\r\n'));
		return false;
	}
	
	return true;
	
}

function validateSampleRequest(form){
	
	var errors = [];

	if (isblank(form.request_from.value)) errors.push("- Please enter a value for the field 'Request From'."); 
	if (isblank(form.customer_po_number.value)) errors.push("- Please enter a value for the field 'Customer PO Number'."); 
	if (isblank(form.arrival_date.value)) errors.push("- Please enter a value for the field 'Arrival Date'."); 
	if (isblank(form.address1.value)) errors.push("- Please enter a value for the field 'Address'."); 
	if (isblank(form.city.value)) errors.push("- Please enter a value for the field 'City'."); 
	if (isblank(form.state.value)) errors.push("- Please enter a value for the field 'State'."); 
	if (isblank(form.zip.value)) errors.push("- Please enter a value for the field 'Zip'."); 
	
	if (errors.length > 0){
		alert(errors.join('\r\n'));
		return false;
	}
	
	return true;
	
}


function validatePromoBillbackRequest(form){
	
	var errors = [];

	if (isblank(form.contact.value)) errors.push("- Please enter a value for the field 'Contact'."); 
	if (isblank(form.customer_name.value)) errors.push("- Please enter a value for the field 'Customer Name'."); 
	if (isblank(form.promotion_dates_from.value)) errors.push("- Please enter a value for the field 'Promotion Date Start'."); 
	if (isblank(form.promotion_dates_to.value)) errors.push("- Please enter a value for the field 'Promotion Date End'."); 
	if (isblank(form.total_cost.value)) errors.push("- Please enter a value for the field 'Total Cost'."); 
	if (!valbutton(form.activity)) errors.push("- Please select an 'Activity'."); 



	//-- REBATES -- 
	if (form.rb_items.value == 'Other' && isblank(form.rb_items_other.value)) {
		errors.push("- Please enter a value for Rebates / Billbacks: Other Items(s).\r\n"); 
	}

	//-- RESET/PLANOGRAM --
	if (form.rs_items.value == 'Other' && isblank(form.rs_items_other.value)) {
		errors.push("- Please enter a value for Reset/Planogram: Other Items(s).\r\n"); 
	}

	//-- RETAIL ADS --
	if (form.rac_items.value == 'Other' && isblank(form.rac_items_other.value)) {
		errors.push("- Please enter a value for Retail Ads/Circulars: Other Items(s).\r\n"); 
	}

	//-- SECONDARY PLACEMENT --
	if (form.sp_items.value == 'Other' && isblank(form.sp_items_other.value)) {
		errors.push("- Please enter a value for Secondary Placement: Other Items(s).\r\n"); 
	}

	//-- SLOTTING --
	if (form.sl_items.value == 'Other' && isblank(form.sl_items_other.value)) {
		errors.push("- Please enter a value for Slotting: Other Items(s).\r\n"); 
	}

	//-- SPIFF --
	//if (form.s_items.value == 'Other' && isblank(form.s_items_other.value)) {
	//	errors.push("- Please enter a value for Spiff: Other Items(s).\r\n"); 
	//}
	
	//-- TPR --
	if (form.tpr_items.value == 'Other' && isblank(form.tpr_items_other.value)) {
		errors.push("- Please enter a value for TPR: Other Items(s).\r\n"); 
	}
	
	if (errors.length > 0){
		alert(errors.join('\r\n'));
		return false;
	}
	return true;
}

function valbutton(thisradio) {
	// place any other field validations that you require here
	// validate myradiobuttons
	myOption = -1;
	for (i=thisradio.length-1; i > -1; i--) {
		if (thisradio[i].checked) {
			myOption = i; i = -1;
		}
	}
	if (myOption == -1) {
		return false;
	}
	return true;
}
