function mktime () {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: baris ozdil
    // +      input by: gabriel paderni
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FGFEmperor
    // +      input by: Yannoo
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: jakes
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Marc Palau
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: 3D-GRAF
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: mktime(14, 10, 2, 2, 1, 2008);
    // *     returns 1: 1201871402
    // *     example 2: mktime(0, 0, 0, 0, 1, 2008);
    // *     returns 2: 1196463600
    // *     example 3: make = mktime();
    // *     example 3: td = new Date();
    // *     example 3: real = Math.floor(td.getTime()/1000);
    // *     example 3: diff = (real - make);
    // *     results 3: diff < 5
    // *     example 4: mktime(0, 0, 0, 13, 1, 1997)
    // *     returns 4: 883609200
    // *     example 5: mktime(0, 0, 0, 1, 1, 1998)
    // *     returns 5: 883609200
    // *     example 6: mktime(0, 0, 0, 1, 1, 98)
    // *     returns 6: 883609200

    var no=0, i = 0, ma=0, mb=0, d = new Date(), dn = new Date(), argv = arguments, argc = argv.length;

    var dateManip = {
        0: function (tt){ return d.setHours(tt); },
        1: function (tt){ return d.setMinutes(tt); },
        2: function (tt){ var set = d.setSeconds(tt); mb = d.getDate() - dn.getDate(); d.setDate(1); return set;},
        3: function (tt){ var set = d.setMonth(parseInt(tt, 10)-1); ma = d.getFullYear() - dn.getFullYear(); return set;},
        4: function (tt){ return d.setDate(tt+mb);},
        5: function (tt){
            if (tt >= 0 && tt <= 69) {
                tt += 2000;
            }
            else if (tt >= 70 && tt <= 100) {
                tt += 1900;
            }
            return d.setFullYear(tt+ma);
        }
        // 7th argument (for DST) is deprecated
    };

    for (i = 0; i < argc; i++){
        no = parseInt(argv[i]*1, 10);
        if (isNaN(no)) {
            return false;
        } else {
            // arg is number, let's manipulate date object
            if (!dateManip[i](no)){
                // failed
                return false;
            }
        }
    }
    for (i = argc; i < 6; i++) {
        switch (i) {
            case 0:
                no = dn.getHours();
                break;
            case 1:
                no = dn.getMinutes();
                break;
            case 2:
                no = dn.getSeconds();
                break;
            case 3:
                no = dn.getMonth()+1;
                break;
            case 4:
                no = dn.getDate();
                break;
            case 5:
                no = dn.getFullYear();
                break;
        }
        dateManip[i](no);
    }

    return Math.floor(d.getTime()/1000);
}


var Popup = {
  open: function(options)
  {
    this.options = {
      url: '#',
      width: 600,
      height: 500,
      name:"_blank",
      location:"no",
      menubar:"no",
      toolbar:"no",
      status:"no",
      scrollbars:"no",
      resizable:"yes",
      left:"",
      top:"",
      normal:false
    }
    Object.extend(this.options, options || {});

    if (this.options.normal){
        this.options.menubar = "yes";
        this.options.status = "yes";
        this.options.toolbar = "yes";
        this.options.location = "yes";
    }

    this.options.width = this.options.width < screen.availWidth?this.options.width:screen.availWidth;
    this.options.height=this.options.height < screen.availHeight?this.options.height:screen.availHeight;
    var openoptions = 'width='+this.options.width+',height='+this.options.height+',location='+this.options.location+',menubar='+this.options.menubar+',toolbar='+this.options.toolbar+',scrollbars='+this.options.scrollbars+',resizable='+this.options.resizable+',status='+this.options.status
    if (this.options.top!="")openoptions+=",top="+this.options.top;
    if (this.options.left!="")openoptions+=",left="+this.options.left;
    window.open(this.options.url, this.options.name,openoptions );
    return false;
  }
}


// el options //
// el:'Element To Load Content'
// loading_image:'Image Name'
// loading_text: 'Loading content Text'
////////////////
function yacjax(type, param, el){
	var width = null;
	var page = '';
	var loading_image = "http://clients.yourareacode.com/globals/images/modal/loading.gif";
	var loading_text = "Loading";
	var loading_EL = el;
	var ajax = true;
	
	if (el == null) {
		el = 'yacmodal_content';
		loading_EL = el;
	} else {
		if(typeof(el) == 'object') {
			obj = el;
			if (obj.el != null) {
				el = obj.el;
			} else {
				el = 'yacmodal_content';
			}
			
			if (obj.loading_image != null) {
				loading_image = obj.loading_image;		
			}
			
			
			if (obj.width != null) {
				width = obj.width;
			}
			
			
			if (obj.loading_text != null) {
				loading_text = obj.loading_text;
			}
			if (obj.loading_EL != null) {
				loading_EL = obj.loading_EL;
			} else {
				loading_EL = el;			
			}		
		}
	}
	
	if(loading_EL == 'yacmodal_content'){ facebox.reveal(); }
	if (width != null) {
	
	
		
	
	
		$(el).setStyle({width:width+'px'});
		var elt         = $('facebox');

		// retrieve required dimensions
		var eltDims     = elt.getDimensions();
		var pageScroll = document.viewport.getScrollOffsets();
		
		var browserDims = document.body.getDimensions();

		// calculate the center of the page using the browser and element dimensions
		var y  = pageScroll.top + (document.viewport.getHeight()/ 10);
		var x = String((document.viewport.getWidth()/2) - ($('facebox').getWidth()) + ($('facebox').getWidth()/2));

		// set the style of the element so it is centered
		var styles = { position : 'absolute',
			top      : y + 'px',
			left     : x + 'px' };
	
		elt.setStyle(styles);
		//elt.scrollTo();
	
	}
	

		switch (type)
		{
		case 'remote':
		  page = 'yaclib/ajax/ajax.php';
		  $(loading_EL).innerHTML = '<div id="yacjax_loading" style="text-align:center;"><div style="font-weight:bold;font-size:12pt;margin-bottom:8px;">'+loading_text+'</div><img src="'+loading_image+'"></div>';
		  break;
        case 'remote_root':
		  page = '/yaclib/ajax/ajax.php';
		  $(loading_EL).innerHTML = '<div id="yacjax_loading" style="text-align:center;"><div style="font-weight:bold;font-size:12pt;margin-bottom:8px;">'+loading_text+'</div><img src="'+loading_image+'"></div>';
		  break;
		case 'local':
		  page = param['page']+'.php';
		  $(loading_EL).innerHTML = '<div id="yacjax_loading" style="text-align:center;"><div style="font-weight:bold;font-size:12pt;margin-bottom:8px;">'+loading_text+'</div><img src="'+loading_image+'"></div>';
		  break;
		case 'print':
		  printContent(loading_EL, param);
		  ajax = false;
		  break;
		}
	
	if($('yac_loader')){ loading_EL = 'yac_loader';}
	
	
	if(ajax){
	new Ajax.Updater(el, page, {
		method: 'post',
		parameters: param,
		evalScripts:true,
		onComplete: function(transport){
			
			//alert(transport.responseText);
			
			
			
			if($('yac_loader')){ $('yac_loader').innerHTML = '';}
			if($('alertDiv')){ $('alertDiv').fade({duration:2.0});}
		}
	});
	}	
	return false;
}


function printContent(id, opts){
	str=document.getElementById(id).innerHTML
	defaultOptions = $H({
      url: '#',
      width: 600,
      height: 500,
      name:"_blank",
      title:"Print Page",
      location:"no",
      menubar:"no",
      toolbar:"no",
      status:"no",
      scrollbars:"yes",
      resizable:"yes",
      left:"",
      top:"",
      normal:false,
      printStyle:'css/print.css'
    });
    defaultOptions.update(opts);
    this.options = defaultOptions.toObject();
 
    
/*
  
	if (opts && opts.printStyle) {
		this.options.printStyle = opts.printStyle;
    }
    
    if (opts && opts.height) {
		this.options.height = opts.height;
    }
*/
	suppressLocation = (opts && opts.suppressLocation)
    
	this.options.width = this.options.width < screen.availWidth?this.options.width:screen.availWidth;
    this.options.height=this.options.height < screen.availHeight?this.options.height:screen.availHeight;
    var openoptions = 'width='+this.options.width+',height='+this.options.height+',location='+this.options.location+',menubar='+this.options.menubar+',toolbar='+this.options.toolbar+',scrollbars='+this.options.scrollbars+',resizable='+this.options.resizable+',status='+this.options.status
    if (this.options.top!="")openoptions+=",top="+this.options.top;
    if (this.options.left!="")openoptions+=",left="+this.options.left;
    newwin=window.open('', this.options.name,openoptions );
    newwin.document.write('<HTML>\n<HEAD>\n')
	newwin.document.write('<TITLE>' + this.options.title + '</TITLE>\n')
/* 	newwin.document.write('<link href="css/shop.css" rel="stylesheet" type="text/css" />\n') */
	
	//$$('head link[rel=stylesheet]').each(function(t) {
	//	newwin.document.write('<link href="'+t.getAttribute('href')+'" rel="stylesheet" type="text/css" />\n')
	//})
	
	
	newwin.document.write('<link href="' + this.options.printStyle + '" rel="stylesheet" type="text/css" />\n')
	newwin.document.write('</HEAD>\n')
	newwin.document.write('<BODY onload="window.print();" style="background:white;">\n')
	newwin.document.write('<div class="print">')
	newwin.document.write(str)
	if (!suppressLocation) {
		newwin.document.write(document.location.href)
	}
	newwin.document.write('</div>')
	newwin.document.write('</BODY>\n')
	newwin.document.write('</HTML>\n')
   
   	newwin.document.close();
	
	//return false;
}




function numbersonly(e, decimal) {
	var key;
	var keychar;
	
	if (window.event) {
	   key = window.event.keyCode;
	}
	else if (e) {
	   key = e.which;
	}
	else {
	   return true;
	}
	keychar = String.fromCharCode(key);
	
	if ((key==null) || (key==0) || (key==8) ||  (key==9) || (key==13) || (key==27) ) {
	   return true;
	}
	else if ((("0123456789").indexOf(keychar) > -1)) {
	   return true;
	}
	else if (decimal && (keychar == ".")) { 
	  return true;
	}
	else
	   return false;
}

var startDownload = function(d, n) {
    
	var openoptions = 'width=400,height=300,location=0,menubar=0,toolbar=0,scrollbars=0,resizable=1,status=0';

	var newwin = window.open('', 'Download', openoptions );
	if ((newwin == null) || (typeof(newwin) == "undefined")) {
		alert('Please disable your pop-up blocker and click the link again.'); 	
	} else {
		with (newwin.document) {
			write('<HTML>\n<HEAD>\n');
			write('<TITLE>Your digital Download: '+n+'</TITLE>\n');
			write('<script type="text/javascript" language="JavaScript" src="https://clients.yourareacode.com/globals/js/prototype.js"></script>');
			write('<script type="text/javascript" language="JavaScript" src="https://clients.yourareacode.com/globals/js/scriptaculous.js"></script>');
			write('</HEAD>\n');
			write('<BODY style="background:white;">\n');
			write('<div id="onemoment" style="margin: 8px 0px 0px 8px;">Your download should begin shortly.</div>');
			write('<iframe id="downloadFrame" src="http://www.yourareacode.com/digitalDownload/'+d+'" style="border:none;width:100%;height:200px;" onload="$(\'onemoment\').hide();"></iframe>');
			write('</BODY>\n');
			write('</HTML>\n');
			close();
		}
	}
}

// ============================================================================================

var YacMaps = new Array();

YacMap = Class.create({

	directionDisplay:null,
	map:null,
	geocoder:null,
	infowindow:null,
	marker:null,
	selectedAddress:null,
	businesses:null,
	startMapCenter:null,
	mapDiv:null,

	initialize:function(bizs) {

		if (!(bizs instanceof Array)) {
			this.businesses = new Array();
			this.businesses.push(bizs);
		} else {
			this.businesses = bizs;
		}

		business = this.businesses[0];


		this.infowindow = new google.maps.InfoWindow();
		this.geocoder = new google.maps.Geocoder();

		this.startMapCenter = new google.maps.LatLng(business.latitude, business.longitude);
		var myOptions = {
			zoom: 7,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			center: this.startMapCenter
		}
		this.mapDiv = $("map_"+business.id);
		this.map = new google.maps.Map(this.mapDiv, myOptions);

		this.addMarker(business, true);

		this.businesses.without(business).each((function(b) {
			this.addMarker(b, false);
		}).bind(this));


		this.selectedAddress = business.address + ' ' + business.city + ' ' + business.state + ', ' + business.zip;

		YacMaps.push(this);
	},
	
	addMarker:function(business, open) {
		var latlng = new google.maps.LatLng(business.latitude, business.longitude);
		var marker = new google.maps.Marker({
			map: this.map,
			position: latlng
		});
		
		var infoText = '<p class="mark_info">'+business.name.gsub("'", "\'")+'<br>'+business.address+'<br>'+business.city+' '+business.state+', '+business.zip+'</p>';
		
		if (open) {
			this.infowindow.setContent(infoText);
			this.infowindow.open(this.map, marker);
		}
		google.maps.event.addListener(marker, "click", (function() {
			this.infowindow.setContent(infoText);
			this.infowindow.open(this.map, marker);
			this.selectedAddress = business.address + ' ' + business.city + ' ' + business.state + ', ' + business.zip;
		}).bind(this));
	
	}
});

