// remote scripting library
// (c) copyright 2005 modernmethod, inc
// heavily modified by Joshua Bates @ studiox, santa fe nm 7/2005
function rs_init_object() {	
	var A;
	try {
		A=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			A=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (oc) {
			A=null;
		}
	}
	if(!A && typeof XMLHttpRequest != "undefined")
		A = new XMLHttpRequest();
	return A;
}

// wrapper for get_day
function x_get_calendar_data(params) {
	var i, x;
	var url = "http://arkbooks.com/cgi-bin/bookman/calendar.cgi?d=1;p=ajax_calendar_controller" 
	
	for ( var par in params ) {
		if (par == 'replace') {
			continue; 
		} else if (par == 'p') {
          continue;
        }
		url = url + "&" + par + "=" + escape( params[par] );
	}
	
	url = url.replace( /[+]/g, '%2B'); // fix the unescaped plus signs 
	x = rs_init_object();
	x.open("GET", url, true);
	x.onreadystatechange = function() {
	    if (x.readyState != 4) 
		return;
	    
	    var status;
	    var data;
	    status = x.responseText.charAt(0);
	    data = x.responseText.substring(2);  
		document.getElementById(params.replace).innerHTML = data;
	}
	x.send(null);
    }

function get_cost() {
  params = new Object();
  params.action = 'ajax_calculate_cost';
  params.dates = get_all_start_dates();
  params.replace = 'cost';
  x_get_calendar_data(params);
}

function get_week(start_date, replace) {
  params = new Object();
  params.action = 'ajax_get_week'
  params.start_date = start_date
  params.replace = replace
  x_get_calendar_data(params);
}

function get_day(series, replace) {
  params = new Object();
  params.action = 'ajax_get_day'
  params.series = series
  params.replace = replace
  x_get_calendar_data(params);
}

function get_event(event_id, replace) {
  params = new Object();
  params.action = 'ajax_get_event'
  params.event_id = event_id
  params.replace = replace
  x_get_calendar_data(params);
}


function newWindow(Detailed) {
	Detailed = window.open(Detailed, "Detailed", "width=590,height=400,scrollbars=yes,resizable=yes,status=yes,toolbar=yes,menubar=yes,location=no,left=300,top=100,screenX=300,screenY=100")
	Detailed.focus()
}

function switchstyle () {
	var x = document.getElementById('calendars');
	var y = document.getElementById('switchstyle');
    if (x.className == 'tabular') {  
        x.className = 'list';
        y.value = "view as calendar";
    }   else {
        x.className = 'tabular';
        y.value = "view as list";
    }
  }

function cal_venues(form,replace) {
  var myindex=form.vid.selectedIndex

  params = new Object();
  params.action = 'venue_calendar'
  params.series =(form.series.value);
  params.vid = (form.vid.options[myindex].value);
  params.Type = (form.Type.value);
  params.replace = 'calendars'
  x_get_calendar_data(params);
  document.getElementById('contents').style.height = "100%";
  setTimeout('document.getElementById("contents").style.height = "auto"', 1000);
}

function cal_types(form,replace) {
  var myindex=form.Type.selectedIndex
  params = new Object();
  params.action = 'venue_calendar'
  params.series =(form.series.value);
  params.vid =(form.vid.value);
  params.Type = (form.Type.options[myindex].value);

  params.replace = 'calendars'
  x_get_calendar_data(params);
  document.getElementById('contents').style.height = "100%";
  setTimeout('document.getElementById("contents").style.height = "auto"', 1000);
}


function select_venues(form) {
  var myindex=form.Event_VenuesID.selectedIndex
  var venue_id =(form.Event_VenuesID.options[myindex].value);
  var replace = 'venues'
  params = new Object();
  params.action = 'price_form'
  params.vid = venue_id
  params.replace = replace
  x_get_calendar_data(params);
  document.getElementById('body').style.height = "100%";
  setTimeout('document.getElementById("body").style.height = "auto"', 1000);
}

function modify_venues(form) {
  var myindex=form.Event_VenuesID.selectedIndex
  var venue_id =(form.Event_VenuesID.options[myindex].value);
  var event_id =(form.ID.value);
  var replace = 'venues'
  params = new Object();
  params.action = 'price_form'
  params.vid = venue_id
  params.ID = event_id
  params.replace = replace
  x_get_calendar_data(params);
}


function load_location(form) {
  var myindex=form.Event_VenuesID.selectedIndex
  var venue_id =(form.Event_VenuesID.options[myindex].value);
//  var event_id =(form.ID.value);
  var replace = 'venues'
  params = new Object();
  params.action = 'venue_form'
  params.vid = venue_id
//  params.ID = event_id
  params.replace = replace
  x_get_calendar_data(params);
}


function add_venues(form) {
  var event_id =(form.ID.value);
  var replace = 'venue_prices'
  params = new Object();
    for (var i = form.elements.length - 1; i >= 0; i--) {
        if (form.elements[i].value) {
            if (form.elements[i].name.match (/-/)    ) {
               continue
            }
            var fname = form.elements[i].name;
            if (fname) {
              eval('params.'+fname+' = form.elements[i].value');
            } else {
              continue
            }
        }
    }
  params.action = 'venue_modify_now'
  params.ID = event_id

  params.replace = replace
  x_get_calendar_data(params);
}


function new_consumer_section(form,row_num,row_replace) {
  var event_id =(form.ID.value);
  var replace = row_replace;
  var row = row_num;
  params = new Object();
    for (var i = form.elements.length - 1; i >= 0; i--) {
        if (form.elements[i].value) {
//            if (form.elements[i].name.match (/-/)    ) {
  //             continue
    //        }
            var fname = form.elements[i].name;
			eval('params.'+"fname"+' = form.elements[i].value');
        }
    }
  params.action = 'cal_consumer_section_new'
  params.ID = event_id
  params.row = row
  params.replace = replace
  x_get_calendar_data(params);
}

function frequency_changed(value) {
  switch(value) {
    case 'Once':
      Element.hide('Last_Date');
      Element.hide('Frequency_Exception');
      break;

    case 'Daily':
      Element.show_row('Last_Date');
      Element.show_row('Frequency_Exception');
      break;

    case 'Weekly':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    case 'Monthly-Date':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    case 'Monthly-Day':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;

    case 'Yearly-Date':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    case 'Yearly-Day':
      Element.show_row('Last_Date');
      Element.hide('Frequency_Exception');
      break;
    default:
      return true;
  }
}

// From Prototype library
//
// Shortcut for accessing elements with $(id) instead of documet.getElementById(id)
function $() {
  var elements = new Array();
  
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;
      
    elements.push(element);
  }
  
  return elements;
}

var Element = {
  toggle: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = 
        (element.style.display == 'none' ? '' : 'none');
    }
  },

  hide: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = 'none';
    }
  },

  show: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      element.style.display = '';
    }
  },

  show_row: function() {
    for (var i = 0; i < arguments.length; i++) {
      var element = $(arguments[i]);
      try {
        element.style.display = 'table-row';
      } catch( expError ) {
        element.style.display = 'block';
      }
    }
  },

  remove: function(element) {
    element = $(element);
    element.parentNode.removeChild(element);
  }
}


