
var myCalendar;

var ModalView = function(e,callback){
    var self=this;
    var link = e;
    var slider1;
    
    this.visible = false;
    this.hasoverlay = true;
    this.id = 'modal_' + YAHOO.util.Dom.generateId(link);
    this.overlay_id = 'overlay_' + YAHOO.util.Dom.generateId(link);
    
    if(YAHOO.util.Dom.hasClass(link,'blue')){
        this.color = 'blue';
    }
    if(YAHOO.util.Dom.hasClass(link,'white')){
        this.color = 'white';
    }
    if(YAHOO.util.Dom.hasClass(link,'nooverlay')){
        this.hasoverlay = false;
    }
    
    var createElement = function(tag,attr,inner){
        var e = document.createElement(tag);
                
        if(typeof(attr) != "undefined"){
            for(key in attr){
                a = document.createAttribute(key);
                a.value = attr[key];
                e.setAttributeNode(a);
            }
        }
        
        switch(typeof(inner)){
            case "string":
                t = document.createTextNode(inner);
                e.appendChild(t);
            break;
            case "object":
                e.appendChild(inner);
            break;
        }
        
        return e;
    }

    var buildOverlay = function(callback){
        var o = createElement('div',{'class':'modal_overlay','id':self.overlay_id});
            o.style.visibility = 'hidden';
            document.body.appendChild(o);
        
        self.o = YAHOO.util.Dom.get(self.overlay_id);

        YAHOO.util.Event.addListener(self.o,'click',function(event){
            YAHOO.util.Event.preventDefault(event);            
            //self.hide();
        });
        
        if(typeof(YAHOO.util.Anim) != "undefined" && !navigator.userAgent.match("MSIE")){
            YAHOO.util.Dom.setStyle(self.o,'opacity',0);
            self.o.style.visibility = "";
            
            var anim = new YAHOO.util.Anim(self.overlay_id);
                anim.attributes.opacity = {
                    from: 0,
                    to: 0.25
                };
                anim.duration = 0.25;
                anim.totalFrames = 20;
                anim.method = YAHOO.util.Easing.easeBoth;
                anim.onComplete.subscribe(function(){
                    buildModal(callback);
                });
                anim.animate();
        } else {
            YAHOO.util.Dom.setStyle(self.o,'opacity',0.25);
            self.o.style.visibility = "";
            buildModal(callback);
        }
    }

    // move into build modal
    this.loadAjaxIntoDiv = function(div_id, ajax_url){
        var request1 = YAHOO.util.Connect.asyncRequest('GET', ajax_url,{
            success: function(o1){
                if(o1.responseText !== undefined){                	
                    document.getElementById(div_id).innerHTML = o1.responseText;
                }
            },
            failure: function(o1){
                if(o1.responseText !== undefined)
                    alert('could not load');
            }
        });
    }    
    
    var buildModal = function(callback){
        var m = createElement('div',{'class':'modal','id':self.id});
            m.style.visibility = "hidden";
        var s_top = createElement('div',{'class':'shadow top'});
            s_top.appendChild(createElement('div',{'class':'corner ul'}));
            s_top.appendChild(createElement('div',{'class':'bar'}));
        
        var s_sides = createElement('div',{'class':'shadow sides'});
        
        var w_top = createElement('div',{'class':'wrap top'});
            w_top.appendChild(createElement('div',{'class':'corner ul'}));
            w_top.appendChild(createElement('div',{'class':'bar'}));
        
        var m_content = createElement('div',{'class':'modal_content'});

        var w_bottom = createElement('div',{'class':'wrap bottom'});
            w_bottom.appendChild(createElement('div',{'class':'corner lr'}));
            w_bottom.appendChild(createElement('div',{'class':'bar'}));
        
            s_sides.appendChild(w_top);                    
            s_sides.appendChild(m_content);                    
            s_sides.appendChild(w_bottom);

        var s_bottom = createElement('div',{'class':'shadow bottom'});
            s_bottom.appendChild(createElement('div',{'class':'corner lr'}));
            s_bottom.appendChild(createElement('div',{'class':'bar'}));

            m.appendChild(s_top);
            m.appendChild(s_sides);
            m.appendChild(s_bottom);
            m.appendChild(createElement('a',{'href':'#close','class':'modal_close','id':'close_'+self.id},"close"));
            
        document.body.appendChild(m);
        
        self.m = document.getElementById(self.id);
        
        if(typeof(self.color) != "undefined"){
            self.m.className = self.m.className + " " + self.color;
        }
        
        YAHOO.util.Event.addListener('close_'+self.id,'click',function(event){
            YAHOO.util.Event.preventDefault(event);
            
            self.hide();
        });
        
        var keyHide = function(event){        
            if(event.keyCode == 27){            	
                self.hide();
            }
        };
        
        var enterCapture = function(event){
        	if(event.keyCode == 13){
        		YAHOO.util.Event.preventDefault(event);
        		return false;
        	}
        }
        
        YAHOO.util.Event.addListener(document,'keyup',keyHide);
       
        /***************************************************************/
    	
        
        YAHOO.util.Event.addListener('calendar','click',function(event){
        	YAHOO.util.Event.preventDefault(event);
        	var xy = YAHOO.util.Dom.getXY(this);
        	var xy_off = YAHOO.util.Dom.getXY(link);        	        	
        	var x = xy[0] - xy_off[0] - 215;
        	var y = xy[1] - xy_off[1] + 245;
        	showcal(event,this,75,'', '', 0,'cal2Container',x,y);
        });
        
        
    	YAHOO.util.Event.addListener('modal_save','click',function(event){
            YAHOO.util.Event.preventDefault(event);            
            this.form.submit();            
        });
    	
        YAHOO.util.Event.addListener('cancel','click',function(event){
            YAHOO.util.Event.preventDefault(event);
            self.hide();            
        });
            
        /************************** IMPORT CONTACTS ********************/
        /***************************************************************
        YAHOO.util.Event.addListener('call_import','click',function(event){
            YAHOO.util.Event.preventDefault(event);
            
            var email = 'email='+document.getElementById('email').value;
            var pass = 'password='+document.getElementById('pass').value;
            
            var elems = document.getElementsByName('email_provider');            
            var type;
            for(var i =0; i < elems.length; i++){            
                if(elems[i].checked == true)
                    type = 'email_provider='+elems[i].value;
            }            
            
            var param = '?'+email+'&'+pass+'&'+type;            
            self.loadAjaxIntoDiv('import_contacts_section',this.href+param);           
        });
                      
        ***************************************************************/
        
            
        self.updateContent(callback);
        
    }
    
    this.checkTicketForm = function(){
    
	    var _fTicketName   = document.ticketForm.ticket_name.value;
		var _fTicketPrice  = document.ticketForm.ticket_price.value;
		var _fQuantity 	   = document.getElementById('quantity_available').value;
		var _fStartHour    = document.ticketForm.starthr.value;
		var _fStartMin     = document.ticketForm.startmin.value;
		var _fStartAMPM    = document.ticketForm.startampm.value;
		var _fEndHour      = document.ticketForm.endhr.value;
		var _fEndMin       = document.ticketForm.endmin.value;
		var _fEndAMPM      = document.ticketForm.endampm.value;
		var _fEndBackDays  = document.ticketForm.sales_end_days_before_event.value;
		var _fEndBackHours = document.ticketForm.sales_end_hours_before_event.value;
		
		var _fOrderMin	   = document.ticketForm.min_tickets_per_order;
		var _fOrderMax     = document.ticketForm.max_tickets_per_order;
		
		//var _fMinTeamNum   = document.ticketForm.min_team_num;
		//var _fMaxTeamNum   = document.ticketForm.max_team_num;
		
	    var idx  = document.ticketForm.start_on_this_end_date.selectedIndex;
	    var _fStartOnEndDate = document.ticketForm.start_on_this_end_date.options[idx].value;
		
		var regDate = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
		
		var _fStartDate = document.ticketForm.startdate.value;
		var _fEndDate  = document.ticketForm.enddate.value;
		
		var _fStartRadio = document.ticketForm.startsalesvalue;
		var _fEndRadio   = document.ticketForm.endsalesvalue;
		var _fIncludeFeeRadio = document.ticketForm.include_fee;
		
		if(_fTicketName == ""){
			document.ticketForm.ticket_name.focus();
			alert("Please enter the ticket name for this ticket type..");
			return false;
		}
		
		if(_fTicketPrice == ""){
			document.ticketForm.ticket_price.focus();
			alert("Please enter the ticket price for this ticket type.  Enter 0 for free events.");
			return false;
		}
			
		if(_fQuantity == "Infinite"){
			;//_fQuantity 	   = document.getElementById('quantity_available').value = -1;
		}else if (_fQuantity == ""  || isNaN(_fQuantity)){
			document.ticketForm.quantity_available.focus();
			alert("Please enter the quantity of tickets available for this ticket type.");
			return false;
		}
		
		var startDate = "";
		var startDateStr = "";
		if(_fStartRadio[0].checked && _fStartRadio[0].value == '0'){
			if (regDate.test(_fStartDate)){		
				if (navigator.appVersion.indexOf("Mac")==-1){
					startDateStr = _fStartDate + ' ' + 
								   _fStartHour + ':' + 
								   _fStartMin + ':00 ' +
								   _fStartAMPM;
				}else{
					startDateStr = _fStartDate;
				}
				startDate = new Date(startDateStr);
			}else{
				document.ticketForm.startdate.focus();
				alert('Invalid Start Date');
				return false;
			}
		}else if (_fStartRadio[1].checked && _fStartRadio[1].value == '1'){
			if(_fStartOnEndDate == "0"){
				alert('Please select Ticket Type.');
				return false;
			}
		}else{
			;// doesn't need a start date method			
		}

		var endDateStr = "";
		var endDate = "";
		if(_fEndRadio[0].checked && _fEndRadio[0].value == '0'){
			if (regDate.test(_fEndDate)){
				if (navigator.appVersion.indexOf("Mac")==-1){
					endDateStr = _fEndDate + ' ' + 
								   _fEndHour + ':' + 
								   _fEndMin + ':00 ' +
								   _fEndAMPM;
				}else{
					endDateStr = _fEndDate;
				}
				endDate = new Date(endDateStr);
			}else{
				document.ticketForm.enddate.focus();
				alert('Invalid End Date');
				return false;
			}
		}else if (_fEndRadio[1].checked && _fEndRadio[1].value == '1'){
			;//alert('second is checked');
		}else{
			; // doesn't need a end date method
		}
		
		var now = new Date();
		if (endDate != "" && endDate < now) {
			if (!confirm('The end sales date for this event is set in the past.  Do you wish to continue?'))
				return false;
		}

		if (startDate != "" && endDate != "" && startDate > endDate) {
			alert('The end sales date is set before the start sales date.  Please modify the end date to continue.');
			return false;
		}

		var orderMinIndex = _fOrderMin.selectedIndex;        
        var orderMinOption = _fOrderMin.options[orderMinIndex];        
        var order_min = orderMinOption.value;
        
        var orderMaxIndex = _fOrderMax.selectedIndex;        
        var orderMaxOption = _fOrderMax.options[orderMaxIndex];        
        var order_max = orderMaxOption.value;
        
		if (order_max < order_min) {
			alert("The maximum tickets per order cannot be less than the minimum tickets per Order.");
			document.ticketForm.min_tickets_per_order.focus();
			return false;
		}

		/*
		var teamMinIndex = _fMinTeamNum.selectedIndex;        
        var teamMinOption = _fMinTeamNum.options[teamMinIndex];        
        var team_min = parseInt(teamMinOption.value);
        
        var teamMaxIndex = _fMaxTeamNum.selectedIndex;        
        var teamMaxOption = _fMaxTeamNum.options[teamMaxIndex];        
        var team_max = parseInt(teamMaxOption.value);
              
        if (team_max < team_min) {
			alert("The maximum team or group size cannot be less than the minimum team or group size.");
			document.ticketForm.min_team_num.focus();
			return false;
		}
		*/
	  return true;
    	
    }
    
    YAHOO.util.Event.addListener("import_contacts_save",'click',function(event){
    	YAHOO.util.Event.preventDefault(event);
    	var add_back = document.getElementById('add_to_quicklist').checked;
    	saveImportContacts(add_back);
    	self.hide();    	
    });
    
    YAHOO.util.Event.addListener("quickadd_contacts_save",'click',function(event){
    	
    	YAHOO.util.Event.preventDefault(event);    
    	var add_back = document.getElementById('add_to_quicklist').checked;
    	saveContacts(add_back);
    	self.hide();
    });
    
    YAHOO.util.Event.addListener("quickadd_supporters_save_btn",'click',function(event){
    	
    	YAHOO.util.Event.preventDefault(event);    	    	
    	saveCharityContacts();
    	self.hide();
    });
    
    this.adjustSize = function(resize,ticket){
        this.m_content.style.height = "";
        var region = YAHOO.util.Dom.getRegion(this.m_content);

        this.m.style.width = region.width + 20 + "px";
        this.m.style.height = region.height + 20 + "px";
        this.m.style.marginLeft = 0 - Math.floor(region.width/2) + "px";
        
        this.m_content.style.width = region.width + "px";
        this.m_content.style.height = region.height + "px";
        region = YAHOO.util.Dom.getRegion(this.m_content);
            
        if(region.height+20 < YAHOO.util.Dom.getViewportHeight()*.8){
            this.m.style.marginTop = 0 - Math.floor(region.height/2) + "px";
            this.m.style.top = "";
            this.m.style.position = "";            
        } else {
            this.m.style.marginTop = 0;
            this.m.style.position = "absolute";
            this.m.style.top = "";
            
            var offset = 0;
            
            if(ticket == true){
            	var xy = YAHOO.util.Dom.getXY(link); 
            	offset = xy[1] - 450;
            	if (offset < 0){ offset = 0;}
            }else{                  
	            var offset = YAHOO.util.Dom.getDocumentScrollTop(document) + 50;
	            if((offset + region.height + 100) > YAHOO.util.Dom.getDocumentHeight()) {            
	                offset = YAHOO.util.Dom.getDocumentHeight() - region.height - 100;
	            }
            }
            
            this.m.style.top = offset + "px";
            
        }

        if(typeof(resize) != "boolean"){
            resize = false;
        }
        
        if(typeof(YAHOO.util.Anim) != "undefined" && !navigator.userAgent.match("MSIE") && resize === false){
            YAHOO.util.Dom.setStyle(this.m,'opacity',0);
            this.m.style.visibility = "";
            
            var anim = new YAHOO.util.Anim(self.id);
                anim.attributes.opacity = {
                    from: 0,
                    to: 1
                };
                anim.duration = 0.25;
                anim.animate();
        } else {
            this.m.style.visibility = "";
        }
 
    }
    
    this.updateContent = function(callback){
    	
        YAHOO.util.Connect.asyncRequest('GET',link.href,{
            success: function(data){
        	
                self.content = data.responseText;
                
                self.m_content = YAHOO.util.Dom.getElementsByClassName('modal_content','div',self.m)[0];
                
                self.m_content.innerHTML = self.content;                
            
                //self.appendSlider();
                                              
                
                /*
                if (link.href.indexOf("login-popup")>=0)
                {
                    YAHOO.util.Event.removeListener('login_button','click'); 
                    YAHOO.util.Event.addListener('login_button','click',function(event){
                        YAHOO.util.Event.preventDefault(event);
                        var login_email = document.getElementById('login_email_pop').value;
                        var login_pass = document.getElementById('login_password_pop').value;
                        YAHOO.util.Connect.asyncRequest(
                            'GET','/login/login-success?login_email=' + login_email + '&login_pass=' + login_pass,
                            { 
                                success: function(data){
                                    if(data.responseText == "success")
                                    {
                                        self.hideLoginReload();
                                    }
                                    else
                                    {
                                        link.href = '/login/login-popup?err=' + data.responseText;
                                        self.updateContent();
                                    }
                                },
                                failure: function(data){
                                    if(typeof(console) != "undefined"){
                                        if(typeof(console.error) != "undefined"){
                                            console.error(data.status + " " + data.statusText);
                                        }
                                    } else {
                                        alert(data.status + " " + data.statusText);
                                    }
                                },
                                timeout: 20000
                        });
                    });
                }
                */
                
                if (link.href.indexOf("add-friend-req")>=0)
                {
                    YAHOO.util.Event.removeListener('send_button','click'); 
                    YAHOO.util.Event.addListener('send_button','click',function(event){
                        YAHOO.util.Event.preventDefault(event);
                        var mid = document.getElementById('mid').value;
                        var from = document.getElementById('from').value;
                        var message = document.getElementById('message').value;
                        YAHOO.util.Connect.asyncRequest(
                            'GET','/member/add-friend-process?mid=' + mid + '&message=' + message,
                            { 
                                success: function(data){
                                    if(data.responseText.substring(0,7) == "success")
                                    {
                                        self.hideFriendPopReload(mid,from);
                                    }
                                    else
                                    {
                                        link.href = '/member/add-friend-req?err=' + data.responseText + '&mid=' . mid;
                                        self.updateContent();
                                    }
                                },
                                failure: function(data){
                                    if(typeof(console) != "undefined"){
                                        if(typeof(console.error) != "undefined"){
                                            console.error(data.status + " " + data.statusText);
                                        }
                                    } else {
                                        alert(data.status + " " + data.statusText);
                                    }
                                },
                                timeout: 5000
                        });
                    });
                }
                
                if (link.href.indexOf("send-message-pop")>=0)
                {
                    YAHOO.util.Event.removeListener('send_button','click'); 
                    YAHOO.util.Event.onDOMReady(function(){
	                	YAHOO.friends.ItemSelectHandler = function() {
	                	    // Use a LocalDataSource
	                		
	                	    var oDS = new YAHOO.util.LocalDataSource(friends);
	                	 
	                	    oDS.responseSchema = {fields : ["name", "id"]};
	                	 
	                	    // Instantiate the AutoComplete
	                	    var oAC = new YAHOO.widget.AutoComplete("search_field", "myFriends", oDS);
	                	    oAC.resultTypeList = false;
	                	    oAC.queryMatchContains = true;
	                	    oAC.maxResultsDisplayed = 200;
	                	    
	                	    // Define an event handler to populate a hidden form field
	                	    // when an item gets selected
	                	    var myHiddenField = YAHOO.util.Dom.get("mid");
	                	    
	                	    var myHandler = function(sType, aArgs) {
	                	        var myAC = aArgs[0]; // reference back to the AC instance
	                	        var elLI = aArgs[1]; // reference to the selected LI element
	                	        var oData = aArgs[2]; // object literal of selected item's result data
	
	                			// update hidden form field with the selected item's ID
	                	        myHiddenField.value = oData.id;	    	
	                	
	                	        document.getElementById('mid').value = oData.id;
	                	        
	                	    };
	
	                	    oAC.itemSelectEvent.subscribe(myHandler);
	
	                	    return {
	                	        oDS: oDS,
	                	        oAC: oAC
	                	    };
	                	    
	                	}();
                    });
                    YAHOO.util.Event.addListener('send_button','click',function(event){
                        YAHOO.util.Event.preventDefault(event);
                        var mid = document.getElementById('mid').value;
                        var cid = document.getElementById('cid').value;
                        var m_type = document.getElementById('m_type').value;
                        var subject = document.getElementById('subject').value;
                        var message = document.getElementById('message').value;
                        YAHOO.util.Connect.asyncRequest(
                            'GET','/member/send-message-process?mid=' + mid + '&cid=' + cid + '&m_type=' + m_type + '&subject=' + subject + '&message=' + message,
                            { 
                                success: function(data){
                                    if(data.responseText.substring(0,7) == "success")
                                    {
                                        //self.hideMessagePopReload(mid);
                                    	//self.showMessageSentSuccess(mid);
                                        link.href = '/member/send-message-success';
                                        self.updateContent();
                                        link.href = '/member/send-message-pop?mid=' + mid;
                                    }
                                    else
                                    {
                                        link.href = '/member/send-message-pop?err=' + data.responseText + '&mid=' . mid;
                                        self.updateContent();
                                    }
                                },
                                failure: function(data){
                                    if(typeof(console) != "undefined"){
                                        if(typeof(console.error) != "undefined"){
                                            console.error(data.status + " " + data.statusText);
                                        }
                                    } else {
                                        alert(data.status + " " + data.statusText);
                                    }
                                },
                                timeout: 5000
                        });
                    });
                }
                
                self.adjustSize();
                
                if(typeof(callback) != "undefined"){
                    if(typeof(callback) == "function"){
                        callback(self);
                    }
                }
            },
            failure: function(data){
                if(typeof(console) != "undefined"){
                    if(typeof(console.error) != "undefined"){
                        console.error(data.status + " " + data.statusText);
                    }
                } else {
                    alert(data.status + " " + data.statusText);
                }
            },
            timeout: 5000
        });
    }
        
    this.setModalOnload = function(){ }
    
    this.show = function(callback){
        this.visible = true;
        if(!document.getElementById(this.id)){
            if(this.hasoverlay == true){
                buildOverlay(callback);
            } else {
                buildModal(callback);
            }
        }
    }
    
	this.hideLoginReload = function(){
		this.m.parentNode.removeChild(this.m);
		if(this.hasoverlay){
			this.o.parentNode.removeChild(this.o);			
		}
		if(parent.location.href != "http://www.stayclassy.org/" && parent.location.href != "http://stayclassy.org/" && parent.location.href != "http://www.stayclassy.org" && parent.location.href != "http://stayclassy.org")
		{
			parent.location.reload(1);
		}
		else
		{
			parent.location.href = "http://www.stayclassy.org/member/my-profile";
		}
		this.visible = false;
	}
	
	this.hideFriendPopReload = function(mid,from){
        YAHOO.util.Connect.asyncRequest(
            'GET','/member/add-friend-success?from=' + from + '&mid=' + mid,
            { 
                success: function(data){
                	var updateElementId = "member" + mid;
                	parent.document.getElementById(updateElementId).innerHTML = data.responseText;
                },
                failure: function(data){
                    if(typeof(console) != "undefined"){
                        if(typeof(console.error) != "undefined"){
                            console.error(data.status + " " + data.statusText);
                        }
                    } else {
                        alert(data.status + " " + data.statusText);
                    }
                },
                timeout: 5000
        });
		this.m.parentNode.removeChild(this.m);
		if(this.hasoverlay){
			this.o.parentNode.removeChild(this.o);		
		}
		this.visible = false;
	}
	this.showMessageSentSuccess = function(mid){
        YAHOO.util.Connect.asyncRequest(
            'GET','/member/send-message-success?mid=' + mid,
            { 
                success: function(data){
                },
                failure: function(data){
                    if(typeof(console) != "undefined"){
                        if(typeof(console.error) != "undefined"){
                            console.error(data.status + " " + data.statusText);
                        }
                    } else {
                        alert(data.status + " " + data.statusText);
                    }
                },
                timeout: 5000
        });
	}
    this.hide = function(){

        if (document.getElementById('cal1Container')){  
    		calendar1 = document.getElementById('cal1Container');  
    		calendar1.style.visibility = "hidden";
      		calendar1.style.display = "none";
    	}
        
        if (document.getElementById('cal2Container')){  
    		calendar1 = document.getElementById('cal2Container');  
    		calendar1.style.visibility = "hidden";
      		calendar1.style.display = "none";
    	}
        
        if (myCalendar != undefined){
        	myCalendar = null;
        }
        
        YAHOO.util.Event.addListener(link,'click',function(event){
            YAHOO.util.Event.preventDefault(event);        
        	YAHOO.util.Event.removeListener(link,'click');    	
    	    if(self.visible == false ){
    	        self.show(callback);
    	    } else {
    	        self.hide();
    	    }    	
        });
    	
    	if(this.m != undefined){
	        this.m.parentNode.removeChild(this.m);
	        if(this.hasoverlay){
	            this.o.parentNode.removeChild(this.o);	            
	        }       
	        this.visible = false;
    	}
    }

    YAHOO.util.Event.addListener(link,'click',function(event){
        YAHOO.util.Event.preventDefault(event);


        if (document.getElementById('cal1Container')){  
    		calendar1 = document.getElementById('cal1Container');  
    		calendar1.style.visibility = "hidden";
      		calendar1.style.display = "none";
    	}
        
        if (document.getElementById('cal2Container')){  
    		calendar1 = document.getElementById('cal2Container');  
    		calendar1.style.visibility = "hidden";
      		calendar1.style.display = "none";
    	}
        
        if (myCalendar != undefined){
        	myCalendar = null;
        }
                
    	YAHOO.util.Event.removeListener(link,'click');
    	
	    if(self.visible == false ){
	        self.show(callback);
	    } else {
	        self.hide();
	    }    	
    });
};


function topLogin() {
	if (document.getElementById('login_email')) {
		var login_email = document.getElementById('login_email').value;
        var login_pass = document.getElementById('login_password').value;
        YAHOO.util.Connect.asyncRequest(
            'GET','/login/login-success?login_email=' + login_email + '&login_pass=' + login_pass,
            { 
                success: function(data){
                    if(data.responseText == "success")
                    {
                    	if(location.href=="http://www.stayclassy.org" || location.href=="http://www.stayclassy.org/" || location.href=="http://stayclassy.org" || location.href=="http://stayclassy.org/" || location.href=="http://stayclassy.org/#nav_login_container" || location.href=="http://www.stayclassy.org/#nav_login_container")
                    	{
                    		location.href="/member/my-profile";
                    	}
                    	else
                    	{
                    		location.reload(1);
                    	}
                    }
                    else
                    {
                    	document.getElementById('loginErr').innerHTML = data.responseText;
                    }
                },
                failure: function(data){
                    if(typeof(console) != "undefined"){
                        if(typeof(console.error) != "undefined"){
                        	document.getElementById('loginErr').innerHTML = data.statusText;
                        }
                    } else {
                    	document.getElementById('loginErr').innerHTML = data.statusText;
                    }
                },
                timeout: 20000
        });
	}
}


var DOMUtilities = {
    path: "",
    stripForm: function(oForm){
        
        var oForm;
        var oElement, oName, oValue, oDisabled,
            hasSubmit = false,
            data = [], item = 0,
            i,len,j,jlen,opt;
        
        //var oForm = document.ticketForm;
        var params = '';
        
        for (i=0,len=oForm.elements.length; i<len; ++i){
            oElement  = oForm.elements[i];
            oDisabled = oElement.disabled;
            oName     = oElement.name;
                
            // Do not submit fields that are disabled or
            // do not have a name attribute value.
            if(!oDisabled && oName)
            {
                oName  = encodeURIComponent(oName)+'=';
                oValue = encodeURIComponent(oElement.value);
                
                switch(oElement.type)
                {
                    // Safari, Opera, FF all default opt.value from .text if
                    // value attribute not specified in markup
                    case 'select-one':
                        if (oElement.selectedIndex > -1) {
                            opt = oElement.options[oElement.selectedIndex];
                            data[item++] = oName + encodeURIComponent(
                                (opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
                        }
                        break;
                    case 'select-multiple':
                        if (oElement.selectedIndex > -1) {
                            for(j=oElement.selectedIndex, jlen=oElement.options.length; j<jlen; ++j){
                                opt = oElement.options[j];
                                if (opt.selected) {
                                    data[item++] = oName + encodeURIComponent(
                                        (opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
                                }
                            }
                        }
                        break;
                    case 'radio':
                    case 'checkbox':
                        if(oElement.checked){
                            data[item++] = oName + oValue;
                        }
                        break;
                    case 'file':
                        // stub case as XMLHttpRequest will only send the file path as a string.
                    case undefined:
                        // stub case for fieldset element which returns undefined.
                    case 'reset':
                        // stub case for input type reset button.
                    case 'button':
                        // stub case for input type button elements.
                        break;
                    case 'submit':
                        if(hasSubmit === false){
                            if(this._hasSubmitListener && this._submitElementValue){
                                data[item++] = this._submitElementValue;
                            }
                            else{
                                data[item++] = oName + oValue;
                            }    
                            hasSubmit = true;
                        }
                        break;
                    default:
                        data[item++] = oName + oValue;
                }
            }
        }
        
        params = data.join('&');    

        return params;
        
    },    
    getPath: function(){
        for(var i=0,path,scripts=YAHOO.util.Selector.query('head script'); i<scripts.length; i++){
            var s = scripts[i];
            if(s.src.match('application.js')){
                path = s.src.replace("/javascripts/application.js","");
            }
        }
        return path;
    },
    linkTargets: function(c){
        YAHOO.util.Dom.setAttribute(YAHOO.util.Selector.query(this.context + ' a[rel*="external"]'),'target','_blank');
        return this;
    },
    rollOvers: function(c){
        var elems = YAHOO.util.Selector.query(this.context + ' img.rollOver, ' + this.context + ' input[type="image"].rollOver');
        YAHOO.util.Event.addListener(elems,'mouseover',function(){
            this.src = this.src.replace("_i.", "_o.");
        })
        YAHOO.util.Event.addListener(elems,'mouseout',function(){
            if (this.src.indexOf("_o.") != -1) {
                this.src = this.src.replace("_o.", "_i.");
            } else if (this.src.indexOf("_a.") != -1) {
                this.src = this.src.replace("_a.", "_i.");
            }
        });
        YAHOO.util.Event.addListener(YAHOO.util.Selector.query(this.context + ' input[type="image"]'),'mousedown',function(){
            this.src = this.src.replace("_o.","_a.");
        });
        return this;
    },
    autoReplaceInputs: function(c){
        var elems = YAHOO.util.Selector.query(this.context + ' input.autoReplace, ' + this.context + ' textarea.autoReplace');
        YAHOO.util.Dom.addClass(elems,'empty');
           YAHOO.util.Event.addListener(elems,'focus',function(){
            YAHOO.util.Dom.addClass(this,'focus');
            YAHOO.util.Dom.removeClass(this,'empty');
            if(this.value == this.defaultValue){
                this.value = "";
            }
        });
        YAHOO.util.Event.addListener(elems,'blur',function(){
            if(this.value.trim() == ""){
                this.value = this.defaultValue;
                YAHOO.util.Dom.addClass(this,'empty');
            }
            YAHOO.util.Dom.removeClass(this,'focus');
        });
        return this;
    },
    setContext: function(c){
        if(typeof(c) != "undefined"){
            this.context = c;
        }
        return this;
    },
    initialize: function(c){
        this.path = this.getPath();
        if(typeof(c) == "undefined"){
            c = 'body';
        }
        this.setContext(c).linkTargets().rollOvers().autoReplaceInputs();
    }
};


var HeaderSearch = {
    ids: {
        options: "header_search_options",
        filter: "header_search_filter",
        q: "header_search_q"
    },
    elements: {},
    
    getElements: function(){
        if(document.getElementById(this.ids.options)){
            for(i in this.ids){
                this.elements[i] = YAHOO.util.Dom.get(this.ids[i]);
            }
            this.elements.filters = this.elements.options.getElementsByTagName('a');
            
            return true;
        } else {
            return false;
        }
    },
    
    updateFilter: function(e){
        YAHOO.util.Event.preventDefault(e);
        YAHOO.util.Dom.removeClass(this.elements.filters,'active');
        YAHOO.util.Dom.addClass(e.target,'active');
        
        var val = e.target.href.split("#").last();
        var strVal = "Search Stay Classy";
        if(val != "all"){
            strVal+= " " + val.replace(val.substr(0,1),val.substr(0,1).toUpperCase());
        }
        
        this.elements.filter.value = val;
        
        this.elements.q.defaultValue = strVal;
        this.elements.q.value = strVal;
        
        this.elements.q.focus();
    },
    
    initialize: function(){
        var self = this;

        if (this.getElements()) {
            YAHOO.util.Event.addListener(this.elements.filters, 'click', function(event){
                self.updateFilter(event);
            });
        } else {
            return false;
        }
    }
};

var HomeTabs = {
	content_id: "tab_content",
	elements: {},

	loadTab: function(el){
		var self = this;
		
		var proteges = YAHOO.util.Dom.getAncestorByTagName(el,'ul').getElementsByTagName('a');
		YAHOO.util.Dom.removeClass(proteges,'active');
		YAHOO.util.Dom.addClass(el,'active');
		
		YAHOO.util.Connect.asyncRequest('GET',el.href,{
			success: function(data){
			document.getElementById('event_home').innerHTML = data.responseText;
			Cufon.refresh();
			DOMUtilities.setContext('#'+self.content_id).linkTargets().rollOvers().autoReplaceInputs();
			for(var i=0, modalLinks=YAHOO.util.Selector.query('#' + self.content_id + ' a.modal_link'); i<modalLinks.length; i++){
				new ModalView(modalLinks[i]);
			}
			},
			failure: function(data){
				if(typeof(console) != "undefined"){
					if(typeof(console.error) != "undefined"){
						console.error(data.status + " " + data.statusText);
					}
				} else {
					alert(data.status + " " + data.statusText);
				}
			},
			timeout: 5000
		});
	},
	
	initialize: function(){
		var self = this;
		
		this.elements.tabs = YAHOO.util.Selector.query('#col_left .tab_navigation a');
		this.elements.content = YAHOO.util.Dom.get(this.content_id);
		
		YAHOO.util.Event.addListener(this.elements.tabs, 'click', function(event){
			YAHOO.util.Event.preventDefault(event);
			self.loadTab(this);
		});
		
	}
};

var AjaxTabs = function(tabs,content_id){
    var self = this;
    this.elements = {};
    this.content_id = content_id;
    this.elements.tabs = YAHOO.util.Selector.query(tabs);
    this.elements.content = YAHOO.util.Dom.get(this.content_id);
    
    this.initSubNavigation = function(){
        this.elements.subtabs = YAHOO.util.Selector.query('.tab_subnavigation .navigation a',this.elements.content);
        
        YAHOO.util.Event.addListener(this.elements.subtabs, 'click', function(event){
            YAHOO.util.Event.preventDefault(event);
            self.loadTab(this);
        });
    }

    this.loadTab = function(el){
        var proteges = YAHOO.util.Dom.getAncestorByTagName(el,'ul').getElementsByTagName('a');
        YAHOO.util.Dom.removeClass(proteges,'active');
        YAHOO.util.Dom.addClass(el,'active');
        
        YAHOO.util.Connect.asyncRequest('GET',el.href,{
            success: function(data){
                self.elements.content.innerHTML = data.responseText;
                self.initSubNavigation();
                Cufon.refresh();
                DOMUtilities.setContext('#'+self.content_id).linkTargets().rollOvers().autoReplaceInputs();
                for(var i=0, modalLinks=YAHOO.util.Selector.query('#' + self.content_id + ' a.modal_link'); i<modalLinks.length; i++){
                    new ModalView(modalLinks[i]);
                }
            },
            failure: function(data){
                if(typeof(console) != "undefined"){
                    if(typeof(console.error) != "undefined"){
                        console.error(data.status + " " + data.statusText);
                    }
                } else {
                    alert(data.status + " " + data.statusText);
                }
            },
            timeout: 5000
        });
    }
    
    YAHOO.util.Event.addListener(this.elements.tabs, 'click', function(event){
        YAHOO.util.Event.preventDefault(event);
        self.loadTab(this);
    });
    
    this.initSubNavigation();
};

ClassySwitcher = function(){
    var self = this;
    var slides = YAHOO.util.Selector.query('#overlay ol li');
    var images = YAHOO.util.Selector.query('#care_about_images li');
    var currentSlide = 0;
    
    
    // initiate the slides, position and display
    for (var i=0; i<slides.length; i++) {
        if(i != 0){
            slides[i].style.display = 'none';
        }
        //slides[i].style.position = 'absolute';
    };
    
    this.switchItem = function(direction){        
        if(direction == 'next'){
            slides[currentSlide].style.display = 'none'
            slides[currentSlide + 1].style.display = 'block'
            images[currentSlide].style.display = 'none'
            images[currentSlide + 1].style.display = 'block'
            currentSlide += 1;
        }
        if(direction == 'prev'){
            slides[currentSlide].style.display = 'none'
            slides[currentSlide - 1].style.display = 'block'
            images[currentSlide].style.display = 'none'
            images[currentSlide - 1].style.display = 'block'
            currentSlide -= 1;
        }
        this.updateControls();
    }
    
    this.updateControls = function(){
        var nextButton = YAHOO.util.Selector.query('#overlay .slider_controls a.slider_next');
        var prevButton = YAHOO.util.Selector.query('#overlay .slider_controls a.slider_prev');
        
        if(currentSlide < (slides.length - 1)){
            //can go forward
            YAHOO.util.Dom.removeClass(nextButton, 'disabled')
        }else{
            // can't go forward
            YAHOO.util.Dom.addClass(nextButton, 'disabled')
        }
        if((currentSlide > 0)){
            // can go back
            YAHOO.util.Dom.removeClass(prevButton, 'disabled')
        }else{
            // can't go back
            YAHOO.util.Dom.addClass(prevButton, 'disabled')
        }
    }
    
    
    YAHOO.util.Event.addListener(YAHOO.util.Selector.query('#overlay a.slider_prev, #overlay a.slider_next'),'click',function(event){
        YAHOO.util.Event.preventDefault(event);
        if((this.className == 'slider_next') && (currentSlide < slides.length)){
            self.switchItem('next');
        }
        if((this.className == 'slider_prev') && (currentSlide > 0)){
            self.switchItem('prev');
        }
    });
    this.updateControls();
}

ClassySlider = function(slidesParent, slides){
    var self = this;
    var animating = false;
    var currentSlide = 0;
    var visibleSlides = 4;
    var currentLocation = 0;
    var slidesParentWidth = YAHOO.util.Dom.getRegion(YAHOO.util.Selector.query(slidesParent[0])).width;
    var slides = YAHOO.util.Selector.query(slides)
    var slider = YAHOO.util.Selector.query(slidesParent + ' .slider')[0]
    
    var slideSize = {}
    slideSize.width = YAHOO.util.Dom.getRegion(slides[0]).width;
    slideSize.height = YAHOO.util.Dom.getRegion(slides[0]).height;
    
    var slideWidth = slideSize.width * visibleSlides
    
    // set the width of the slider
    slider.style.width = slideSize.width * slides.length + 'px';
    
    this.next = function(){
        this.animateNext();
    }
    this.prev = function(){
        this.animateNext(false);
    }
    
    this.updateButtons = function(){
        var nextButton = YAHOO.util.Selector.query(slidesParent + ' span.footer_next');
        var prevButton = YAHOO.util.Selector.query(slidesParent + ' span.footer_prev');
        
        if((currentSlide < Math.ceil(slides.length / visibleSlides) - 1)){
            //can go forward
            YAHOO.util.Dom.removeClass(nextButton, 'disabled')            
        }else{
            // can't go forward
            YAHOO.util.Dom.addClass(nextButton, 'disabled')            
        }
        if((currentSlide > 0)){
            // can go back
            YAHOO.util.Dom.removeClass(prevButton, 'disabled')
        }else{
            // can't go back
            YAHOO.util.Dom.addClass(prevButton, 'disabled')
        }
    }
    
    this.animateNext = function(forward){
        if(typeof(forward) == "undefined"){
            forward = true;
        }
        if(forward === true){
            var animateFrom = currentLocation;
            var animateTo = (currentLocation - slideWidth);
            currentSlide += 1;
            currentLocation -= slideWidth;
        }else{
            var animateFrom = currentLocation;
            var animateTo = (currentLocation + slideWidth);
            currentSlide -= 1;
            currentLocation += slideWidth;
        }
        
        animating = true;
        var anim = new YAHOO.util.Anim(slider);
        anim.attributes.left = {
            from: animateFrom,
            to: animateTo
        };
        anim.duration = 0.25;
        anim.totalFrames = 20;
        anim.method = YAHOO.util.Easing.easeBoth;
        anim.onComplete.subscribe(function(){
            animating = false;
        });
        anim.animate();
        this.updateButtons();
    }
    
    YAHOO.util.Event.addListener(YAHOO.util.Selector.query(slidesParent + ' a.prev,' + slidesParent + ' a.next'),'click',function(event){
        YAHOO.util.Event.preventDefault(event);
        
        if(YAHOO.util.Dom.hasClass(this, 'next')){
            if((currentSlide < Math.ceil(slides.length / visibleSlides) - 1) && !animating){
                self.next();
            }
        }
        if(YAHOO.util.Dom.hasClass(this, 'prev')){
            if((currentSlide > 0) && !animating){
                self.prev();
            }
        }
    });
    this.updateButtons();
}


YAHOO.util.Event.onDOMReady(function(){
	
    DOMUtilities.initialize();
    HeaderSearch.initialize();

    // slider parent, slides
    if(document.getElementById('footer_slider')){
        new ClassySlider('#footer_slider', '#footer_slider .footer_slide');        
    }
    if(document.getElementById('overlay')){
        new ClassySwitcher();    
    }
    // tabs, content to replace
    new AjaxTabs('#col_left #charity_tabs.tab_navigation a', 'tab_content');
    new AjaxTabs('#col_left #event_tabbed ul.tab_navigation a', 'tabbed_content_container');

    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.modal_link'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(){
            DOMUtilities.initialize(".modal");          
        });
    }
    
    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.modal_contact_import'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(m){
            DOMUtilities.initialize(".modal");
            ImportContacts.setImportListeners(m);           
        });
    }
    
    
    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.modal_ticket'); i<modalLinks.length; i++){
    	new ModalView(modalLinks[i],function(m){
            DOMUtilities.initialize(".modal");
            Ticket.initialize(m);
        });    	
    }
    
    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.modal_custom_question'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(m){
            DOMUtilities.initialize(".modal");
            AttendeeInfo.setAttendeeInfoListeners(m);           
        });
    }

    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.modal_create_contacts'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(m){
            DOMUtilities.initialize(".modal");
            CreateContacts.initialize(m);
        });
    }

    
    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.modal_contact_list'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(m){
            DOMUtilities.initialize(".modal");
            CreateList.initialize(m);
        });
    }
    
    
    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.imageSelect'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(m){
        	DOMUtilities.initialize(".modal");    
        	YAHOO.util.Event.addListener('image_select_submit','click',function(event){		
        		var selected_header = document.getElementById('selected_header');	
        		var selected_header_show = document.getElementById('selected_header_show');
        		var testingHeader = document.getElementById('testingHeader');
        		//var selected_header = document.createElement("div");
        		//document.getElementById('selected_header').value = document.getElementById('modal_selected_header').value;
        		document.getElementById('selected_header').value = document.getElementById('modal_selected_header').value;
        		document.getElementById('selected_header_show').src = document.getElementById('modal_selected_header').value;
        		document.getElementById('selected_header_show').style.visibility = 'visible';
        		document.getElementById('testingHeader').style.display = 'block';
        		m.hide();
        	});            
        });
    }
 
    for(var i=0, modalLinks=YAHOO.util.Selector.query('a.login_popup'); i<modalLinks.length; i++){
        new ModalView(modalLinks[i],function(m){
        	DOMUtilities.initialize(".modal");
        	LoginPopup.initialize(m);            
        });
    }
    
    YAHOO.util.Event.addListener(YAHOO.util.Selector.query('a.link_close'),'click',function(event){
        YAHOO.util.Event.preventDefault(event);
        document.getElementById(this.href.split("#").last()).style.display = 'none';
    });
    
    YAHOO.util.Event.addListener('nav_link_channels','mouseover',function(event){
        document.getElementById('nav_channels_container').style.display = '';
    });

    YAHOO.util.Event.addListener('nav_more_locations','click',function(event){
        YAHOO.util.Event.preventDefault(event);
        document.getElementById('more_cities_container').style.display = 'block';
    });

    YAHOO.util.Event.addListener('nav_link_login','click',function(event){
        YAHOO.util.Event.preventDefault(event);
        if(document.getElementById('signin_menu').style.display == "block")
        {
        	document.getElementById('signin_menu').style.display = '';
        	document.getElementById('nav_link_login').className = "signin";
        }
        else
        {
        	document.getElementById('signin_menu').style.display = 'block';
        	document.getElementById('nav_link_login').className = "menu-open";
        }
    });
});

(function(){
    if(typeof(Array.prototype.last) == "undefined"){
        Array.prototype.last = function(){
            return this[this.length-1];
        }
    }
    if(typeof(String.prototype.trim) == "undefined"){
        String.prototype.trim = function(){
            return this.replace(/^\s+|\s+$/g,"");
        }
    }
})();

