    var siteUserURL_base="http://www.amingo.com/user/";
    var musicianURL_base="http://www.amingo.com/artist/";
    var venueURL_base="http://www.amingo.com/venue/";
    var serviceURL_base="http://www.amingo.com/service/";

jQuery.noConflict();
jQuery(document).ready(function() {
    
    // checkbox triggers
    jQuery("#addamusician").click(function() {
	setCheckboxImages("musician");
    });
    
    jQuery("#addavenue").click(function() {
	setCheckboxImages("venue");
    });
    
    jQuery("#addaservice").click(function() {
	setCheckboxImages("service");
    });
    

    // expande checked sections as needed onload
    if(jQuery("#musician").val() == "1") {
	jQuery("#addamusician_chbox img").toggle();	
        setBoxOn("musician");
    } else {
        setBoxOff("musician");
    }

    if(jQuery("#venue").val() == "1") {
	jQuery("#addavenue_chbox img").toggle();
        setBoxOn("venue");
    } else {
        setBoxOff("venue");
    }

    if(jQuery("#service").val() == "1") {
	jQuery("#addaservice_chbox img").toggle();
        setBoxOn("service");
    } else {
        setBoxOff("service");
    }

    // disable return key on forms
    jQuery('input').keypress(function (event){ return event.keyCode == 13 ? false : true; });

    // make sure checkboxes are unchecked upon load
    //jQuery("#musician").removeAttr("checked");
    //jQuery("#venue").removeAttr("checked");
    //jQuery("#service").removeAttr("checked");

    // set site url bases


    // set urls onLoad
    extractSlugFromName("siteUser",siteUserURL_base);
    extractSlugFromName("musician",musicianURL_base);
    extractSlugFromName("venue",venueURL_base);
    extractSlugFromName("service",serviceURL_base);

//    jQuery("#siteUserURL").val(extractSlugFromName("siteUser",siteUserURL_base));
//    jQuery("#musicianURL").val(extractSlugFromName("musician",musicianURL_base));
//    jQuery("#venueURL").val(extractSlugFromName("venue",venueURL_base));
//    jQuery("#serviceURL").val(extractSlugFromName("service",serviceURL_base));

    // disable highlighting when tabbing to the url textbox
    jQuery("#siteUserURL").focus(function () { moveCursorToEnd(this); });
    jQuery("#musicianURL").focus(function () { moveCursorToEnd(this); });
    jQuery("#venueURL").focus(function () 	{ moveCursorToEnd(this); });
    jQuery("#serviceURL").focus(function () 	{ moveCursorToEnd(this); });

    setupURLs ("siteUser",siteUserURL_base); 
    setupURLs ("musician",musicianURL_base); 
    setupURLs ("venue",venueURL_base); 
    setupURLs ("service",serviceURL_base); 

    // autocomplete services
    jQuery("#serviceType").autocomplete(baseurl+"signup/get_services", 
	{
	    minChars:1,
	    delay:0,
	    maxItemsToShow:50,
	    matchContains:1
	}
    );

    /* url check message */
    jQuery("#siteUserURL").blur(function() 	{ checkURL(this, "siteUser", siteUserURL_base, "u"); });
    jQuery("#musicianURL").blur(function() 	{ checkURL(this, "musician", musicianURL_base, "m"); });
    jQuery("#venueURL").blur(function() 	{ checkURL(this, "venue", venueURL_base, "v"); });
    jQuery("#serviceURL").blur(function() 	{ checkURL(this, "service", serviceURL_base, "s"); });

//    jQuery("#siteUserName").blur(function() 	{ if (jQuery("#siteUserMsgBox").is('.messageboxerror')==false) 	{ checkURL(jQuery("#siteUserURL"), "siteUser", siteUserURL_base, "u"); } });
//    jQuery("#musicianName").blur(function() 	{ if (jQuery("#musicianMsgBox").is('.messageboxerror')==false) 	{ checkURL(jQuery("#musicianURL"), "musician", musicianURL_base, "m"); } });
//    jQuery("#venueName").blur(function() 	{ if (jQuery("#venueMsgBox").is('.messageboxerror')==false) 	{ checkURL(jQuery("#venueURL"), "venue", venueURL_base, "v"); } });
//    jQuery("#serviceName").blur(function() 	{ if (jQuery("#serviceMsgBox").is('.messageboxerror')==false)	{ checkURL(jQuery("#serviceURL"), "service", serviceURL_base, "s"); } });

    jQuery("#siteUserName").blur(function() 	{ if (1) 	{ checkURL(jQuery("#siteUserURL"), "siteUser", siteUserURL_base, "u"); } });
    jQuery("#musicianName").blur(function() 	{ if (1) 	{ checkURL(jQuery("#musicianURL"), "musician", musicianURL_base, "m"); } });
    jQuery("#venueName").blur(function() 	{ if (1) 	{ checkURL(jQuery("#venueURL"), "venue", venueURL_base, "v"); } });
    jQuery("#serviceName").blur(function() 	{ if (1)	{ checkURL(jQuery("#serviceURL"), "service", serviceURL_base, "s"); } });

});

// load page after all images are loaded
jQuery(window).load(
    function() {
	jQuery("#pageloader").hide();
	jQuery("#container").fadeIn(2000);
    }
);


// set checkbox images
function setCheckboxImages(group) {
    jQuery("#adda"+group+"_chbox img").toggle();
    if (jQuery("#"+group).val()=="0") { // on
	setBoxOn(group);
    } else { // off
	setBoxOff(group);
    }
}


// move cursor to end of url box when tabbing to box instead of highlighting all
function moveCursorToEnd(el) {
    var idx = el.value.length;
    if (el.setSelectionRange) {
	setTimeout(function () {el.setSelectionRange(idx, idx);},0);
    } else if (el.createTextRange) {
	var range = el.createTextRange();
	range.collapse(true);
	range.moveEnd('character', idx);
	range.moveStart('character', idx);
	range.select();
    }
}

// check URL slug for availability
function checkURL(obj,group,URL,code) {
    if (jQuery("#"+group+"MsgBox").is('.messageboxerror')==true) return;
    //if(group != "siteUser" && jQuery("#approveUrl"+group).is(':checked') == true) return;
       
    var urlSlug = jQuery(obj).val().replace(URL, '');
    if(urlSlug == "") {
	//remove all the class add the messagebox classes and start fading
	jQuery("#"+group+"MsgBox").removeClass().addClass('messageboxclear').text('').fadeIn("slow");
// not sure this is needed?
    } else if (jQuery("#"+group+"MsgBox").is('.messageboxok')==true || jQuery("#approveUrl"+group).is(':checked') == true) {
	return;
    } else {
	//remove all the class add the messagebox classes and start fading
	jQuery("#"+group+"MsgBox").removeClass().addClass('messagebox').text('').fadeIn("slow");
	//check the username exists or not from ajax
	jQuery.post(baseurl+"signup/check_url",{ url:urlSlug,type:code } ,function(data) {
	    if(data!='yes') { //if username not avaiable
		//console.log(data);
		jQuery("#"+group+"MsgBox").fadeTo(200,0.1,function() { //start fading the messagebox
		    //add message and change the class of the box and start fading

		    if(group == "siteUser") {
			var message='<div class="message">This URL has already been registered.</div>';
		    } else {
			data=jQuery.parseJSON(data);
			var message='<div class="message">This URL has been registered by '+ data["registrant_name"] +' in '+ data["registrant_city"] +', '+data["registrant_state"]+'. Want us to ask '+ data["registrant_name"] +' to add you to the account?</div>'+
			    '<div class="sendnotification"><input type="checkbox" onclick="sendRequestChecked(this, \''+group+'\');" style="vertical-align:middle; padding: 0pt; height: 14px; width: 14px;padding:0;height:14px;width:14px;" value="1" name="approveUrl'+group+'" id="approveUrl'+group+'"> Send notification</div>'+
			    '<div class="nothanks">No, thanks</div>'+
			    '<div class="notificationchecked"></div><div class="messageboxpending"></div>';
		    }
		    jQuery(this).html(message).addClass('messageboxerror').fadeTo(900,1);
		    jQuery("#"+group+"MsgBox .messageboxpending").hide();

		});		
	    } else {
		jQuery("#"+group+"MsgBox").fadeTo(200,0.1,function() {  //start fading the messagebox
		    //add message and change the class of the box and start fading
		    jQuery(this).html('').addClass('messageboxok').fadeTo(900,1);
		});
	    }				
	});
    }
}


// extract slug from name
function extractSlugFromName(group,URL){
    matches = /[^a-zA-Z0-9-]/ig;
    name = jQuery("#"+group+"Name").val();
    if (jQuery("#approveUrl"+group).is(':checked') == false) { // disable if request checkbox is checked
	jQuery("#"+group+"URL").val(URL+name.replace(matches,"").toLowerCase());
    }
}


// verify url slug characters are valid
function setupURLs (group, URL) {

    // clear away error overlay if clicked since it is covering the text box.
// comment out so checkbox functions properly
    jQuery("#"+group+"MsgBox").click(function() { 
	if (jQuery("#"+group+"MsgBox").is('.messageboxerror')==true && jQuery("#approveUrl"+group).is(':checked') == false) {
	    jQuery("#"+group+"MsgBox").hide(); 
	}
	jQuery("#"+group+"URL").focus();
    });

    // autofill url slug based on name
    jQuery("#"+group+"Name").keyup(function(){
	if(jQuery("#"+group+"URL").is('.glow')!=false) {
	    clearGlow("#"+group+"URL");
	} else if (jQuery("#"+group+"MsgBox").is('.messageboxerror')==false &&
	    jQuery("#"+group+"MsgBox").is('.messageboxok')==false &&
	    jQuery("#"+group+"MsgBox").is('.messagebox')==false) {
	    extractSlugFromName(group,URL);
	} else if (jQuery("#"+group+"MsgBox").is('.messageboxerror')!=false) {
	    extractSlugFromName(group,URL);
	    clearGlow("#"+group+"URL");
	}
    });

    // throw out backspace and delete if cursor is inside of url root
    jQuery("#"+group+"URL").keydown(function(key){
	var keyCode = key.keyCode ? key.keyCode : key.charCode;
	if(((keyCode == 8)||(keyCode == 46)) && jQuery(this).caret().start<=URL.length){
	    this.value=URL;
	    moveCursorToEnd(this);
	    return false;
	}
    });

    // mouse is clicked in the middle of the url so move cursor to the end
    jQuery("#"+group+"URL").click(function() {
	// ignore if slug is clicked
	if(jQuery(this).caret().start<URL.length) {
	    moveCursorToEnd(this);
	    return false;
	}
    });
    
    // disable doubleclick
    jQuery('#target').dblclick(function() {
	return false;
    });
    
    // set url root
    jQuery("#"+group+"URL").keypress(function(key) {
	keyCode = key.keyCode ? key.keyCode : key.charCode; 
	if (validInput(keyCode) && convertToLowercase(keyCode,this) && jQuery(this).caret().start>=URL.length
	) {
	    // clear overlay if set when typing happens
	    if (jQuery("#"+group+"MsgBox").is('.messageboxerror') || jQuery("#"+group+"MsgBox").is('.messageboxok')) {
		jQuery("#"+group+"MsgBox").removeClass().addClass('messageboxclear').text('').fadeIn("slow");
	    }
	    setURLRoot(this,URL);
	    return true; 
	}
	return false;
    });

}

var alertMessage = new Array();
alertMessage['Musician']="";
alertMessage['Venue']="";
alertMessage['Service']="";
// add pending icon when "send request" is checked
function sendRequestChecked(checkbox, group) {
    if(jQuery(checkbox).is(':checked') == true) {	
	//disable searchbox
        jQuery("#"+group+"URL").attr("disabled", "disabled");
	jQuery("#"+group+"MsgBox .nothanks").html("");
	alertMessage[group]=jQuery("#"+group+"MsgBox .message").html();
	jQuery("#"+group+"MsgBox .message").html("Your request to join "+jQuery("#"+group+"Name").val()+" will be sent once you create your account.");
	jQuery("#"+group+"MsgBox .messageboxpending").show();
    }  else {
	//enable searchbox
        jQuery("#"+group+"URL").removeAttr("disabled"); 
 	jQuery("#"+group+"MsgBox .message").html(alertMessage[group]);
	jQuery("#"+group+"MsgBox .nothanks").html("No, thanks");
	jQuery("#"+group+"MsgBox .messageboxpending").hide();
	jQuery("#"+group+"MsgBox").hide();
	jQuery("#"+group+"MsgBox").removeClass();
    }
}

// only allow valid characters to be typed
function validInput(charCode) {
    // "A-Z": 65-90, "a-z": 97-122, "0-9": 48-57, "-" 45
    if ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122) && (charCode < 48 || charCode > 57) && charCode!= 45 && charCode > 31 && charCode!= 127) return false;
    return true;
}

// convert upper to lower
function convertToLowercase(charCode,obj) {
    if (charCode >= 65 && charCode <= 90) {
	obj.value += String.fromCharCode(charCode).toLowerCase();
	return false;
    }
    return true;
}

// do not allow url to have the root removed
function setURLRoot(inputBox,URL) {
    if(jQuery(inputBox).val().substring(0,URL.length) != URL) {
	jQuery(inputBox).val(URL);
    }
};

// set checkbox attributes when checked
function setBoxOn(boxname) {
    jQuery("#adda"+boxname).css("background-image","url("+baseurl+"images/btn-add-account-on.png)");
    //jQuery("div."+boxname+"Box").css("background-color","#f0f0f0");
    //jQuery("div."+boxname+"Box").css("border-top","1px solid #f0f0f0");
    jQuery("div."+boxname+"Box").css("margin","0");
    jQuery("#"+boxname+"Content").slideToggle(300);
    jQuery("#"+boxname).val("1");
}

// set checkbox attributes when unchecked
function setBoxOff(boxname) {
    jQuery("#adda"+boxname).css("background-image","url("+baseurl+"images/btn-add-account-off.png)");
    jQuery("#"+boxname+"Content").hide(300);
    //jQuery("div."+boxname+"Box").css("background-color","#f0f0f0");
    //jQuery("div."+boxname+"Box").css("border-top","1px solid #f0f0f0");
    jQuery("div."+boxname+"Box").css("margin","0");
    jQuery("#"+boxname).val("0");
}


// carousel
stepcarousel.setup({
	galleryid: 'mygallery', //id of carousel DIV
	beltclass: 'belt', //class of inner "belt" DIV containing all the panel DIVs
	panelclass: 'panel', //class of panel DIVs each holding content
	autostep: {enable:true, moveby:3, pause:60000},
	panelbehavior: {speed:1000, wraparound:true, wrapbehavior:'slide', persist:false},
	defaultbuttons: {enable: false, moveby: 3, leftnav: ['', -5, 80], rightnav: ['', -20, 80]},
	statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
	contenttype: ['inline'] //content setting ['inline'] or ['ajax', 'path_to_external_file']
})

function clearGlow(field) {
    if(jQuery(field).is('.glow')) {
        jQuery(field).illuminateDie();
	jQuery(field).removeClass('glow');
    }
    jQuery(field).css("color","#303030");
    jQuery(field).css("border","1px solid #d6d6d6");
    jQuery(field).unbind('focus');
}

function clearField(field){
    jQuery(field).val("");
    if (field.name == "siteUserURL") {
        jQuery(field).val(siteUserURL_base); 
    } else if (field.name == "musicianURL") {
        jQuery(field).val(musicianURL_base); 
    } else if (field.name == "venueURL") {
        jQuery(field).val(venueURL_base); 
    } else if (field.name == "serviceURL") {
        jQuery(field).val(serviceURL_base); 
    }
}

jQuery(document).ready(function() {
    jQuery(".rolloverfootersm").hover(
	function() {
            var imgsrc = jQuery("img", this).attr("src");
	    jQuery("img", this).attr("src",imgsrc.replace("-off", "-on"));
	    jQuery("strong a", this).css("color","#2F8CCC");
	},
	function() {
            var imgsrc = jQuery("img", this).attr("src");
	    jQuery("img", this).attr("src",imgsrc.replace("-on", "-off"));
	    jQuery("strong a", this).css("color","#303030");
	}
    );
    
    jQuery("img.rollover").hover(
	function() {
	    this.src = this.src.replace("-off", "-on");
	    icon_id=this.id;
	    jQuery("#rotagline").css("background","url("+baseurl+"images/"+icon_id+"-RO.png) no-repeat")
	    if (icon_id == "icon-fb") {
		jQuery("#rotagline").css("margin-left","10px");
	    } else if (icon_id == "icon-amingo") {
		jQuery("#rotagline").css("margin-left","20px");
	    }
	},
	function() {
	    this.src = this.src.replace("-on", "-off");
	    jQuery("#rotagline").css("background-image","none")
	    jQuery("#rotagline").css("margin-left","0");
	}
    );

    jQuery(".hoverhand").hover(function() {
	jQuery(this).css('cursor', 'pointer');
    }, function() {
	jQuery(this).css('cursor', 'auto');
    });

    // submit the form

    jQuery("#submitbuttontext").click(function(event) {
	jQuery("#signupForm form").submit();
    });

    /* attach a submit handler to the form */
    jQuery("#signupForm form").submit(function(event) {
	    jQuery("#message-formsubmit").html("<img src='"+baseurl+"images/ajax-loader-on-white.gif'><br /><br />Processing.");
	    jQuery("#message-formsubmit").show();
	    jQuery("#signupForm").hide();

	    /* check form fields to make sure all are clear */
	    formdata = jQuery("#signupForm form").serializeArray();
	    jQuery.each(formdata, function(i, field){
		if(jQuery('#'+field.name).css("color")=="#B62F2F") {
		    clearGlow('#'+field.name);
		    clearField('#'+field.name);
		}
	    });

	    jQuery('#siteUserMsgBox').hide();
	    jQuery('#musicianMsgBox').hide();
	    jQuery('#venueMsgBox').hide();
	    jQuery('#sericeMsgBox').hide();
	    jQuery("#musicianURL").removeAttr("disabled"); 
	    jQuery("#venueURL").removeAttr("disabled"); 
	    jQuery("#serviceURL").removeAttr("disabled"); 

	    /* stop form from submitting normally */
	    event.preventDefault(); 

	    url = baseurl+"signup/register";
	    postdata = jQuery("#signupForm form").serialize();
 
  
	    /* Send the data using post and put the results in a div */
	    jQuery.post(
		    url,
		    postdata,
		    function(data){
			    jQuery("#message-formsubmit").hide();
			    if(data.status == "0") {
				    //console.log(data.missingFields);
				    jQuery("#signupForm").show();

				    for (var requiredField in data.missingFields) {
					    if (data.missingFields.hasOwnProperty(requiredField)) {
						    requiredMessage = data.missingFields[requiredField];
						    jQuery('#'+requiredField).illuminate({
							    'intensity': '0.3',
							    'color': '#ffffff',
							    'blink': 'false',
							    'outerGlow': 'true',
							    'outerGlowSize': '5px',
							    'outerGlowColor': '#B62F2F'
						    });
						    jQuery('#'+requiredField).addClass('glow');
						    jQuery('#'+requiredField).css("border","1px solid #bc727a");
						    jQuery('#'+requiredField).css("color","#B62F2F");
						    jQuery('#'+requiredField).val(requiredMessage);
						    jQuery('#'+requiredField).focus(function() {
							clearGlow(this);
							clearField(this);
						    });
					    }
				    }

			    } else if(data.status == "1") {
				    jQuery('#signupForm').hide();
				    
				    var greetingSuffix = "";
				    if ( // user chose more than one industry account
					(data.fieldData.musician==1 && data.fieldData.venue==1) ||
					(data.fieldData.musician==1 && data.fieldData.service==1) ||
					(data.fieldData.venue==1 && data.fieldData.service==1)
				       ) {
					greetingSuffix = " ";
				    } else if (data.fieldData.musician==1) {
					greetingSuffix = " " + data.fieldData.musicianName;
				    } else if (data.fieldData.venue==1) {
					greetingSuffix = " " + data.fieldData.venueName;
				    } else if (data.fieldData.service==1) {
					greetingSuffix = " " + data.fieldData.serviceName;
				    }
				    var submitname = getFirstName(data.fieldData.siteUserName);
				    jQuery('#middletop').html("Hey <span class='makegreen'>[" + submitname + "]</span> thanks for registering" + greetingSuffix + "!");
				    jQuery('#formResponse').html("<strong>You're almost done! </strong><br />An email has been sent to " + data.fieldData.email + ". Please check your email to confirm your account and secure your URL.<br />Be sure to check your spam folder if you don't see the activation message in your email inbox.");
				    jQuery('#formResponse').show();
			    }
		    },
		    "json"
	    );
    });
    
    

 
    jQuery('img[title="Move to Panel 1"]').attr('title', '[you]');
    jQuery('img[title="Move to Panel 4"]').attr('title', '[artists]');
    jQuery('img[title="Move to Panel 7"]').attr('title', '[connections]');
    jQuery('img[title="Move to Panel 10"]').attr('title', '[fans]');
    jQuery(['/images/icon-fb-footer-on.png',
	'/images/ajax-loader-on-white.gif',
	'/images/icon-twitter-footer-on.png',
	'/images/icon-amingo-footer-on.png',
	'/images/icon-lastfm-footer-on.png']).preload();
    
});

jQuery.fn.preload = function() {
    this.each(function(){
        jQuery('<img/>')[0].src = this;
    });
}

function getFirstName(name) {
    name=name.replace(/[^a-zA-Z ]|^\s+|\s+$/g,""); // trim name
    name=name.replace(/\s+/g," "); // convert whitespace to single space
    name=name.replace(/^(mrs|mr|ms|prof|dr|gen|rep|sen|st|miss|rev|misses|mister) /i,""); // strip name title
    name=name.replace(/ (sr|jr|phd|md|ba|ma|dds)$/i,""); // strip name suffix
    var nameArray = name.split(' '); // split names into array            
    var numberOfWords = nameArray.length; // get number of words in name

    var i=0;
    nameArray.forEach(function(eachName) { 
	if (eachName.length>2) { eachName=eachName.toLowerCase(); } // turn to lowercase if name is not initials like (ie "DJ", "AJ", "SP")
	nameArray[i] = toTitleCase(eachName);
	i++;
    });
    
    if(numberOfWords>2 && nameArray[0].length==1) {
	firstName=nameArray[0]+" "+nameArray[1]; // return name as two words if name has more than three words and the first word is a single inital (ie "D Stuart")
    } else {
	firstName=nameArray[0]; // return first name only
    }
    return (firstName);
}

function toTitleCase(str)
{
    return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
