if( typeof nameSpace == 'undefined' ){
	nameSpace = {};
}

if( typeof nameSpace.modules == 'undefined' ){
	nameSpace.modules = {};
}

$(document).ready(function(){
	if( nameSpace.modules.requestForm.autoInit ){
		nameSpace.modules.requestForm.init();
	}
});



nameSpace.modules.requestForm = 
{
	autoInit					: true,
	formTypeSelector			: '.formTypeSelector',
	formContainerSelector		: '#formContainer',
	_TYPE_GLOBAL_MARKETS        : 'Global Markets',
	//_TYPE_CONSULTING			: 'Consulting Services',
	//_TYPE_INTERACTIVE			: 'Interactive Services',
	_TYPE_SAPIENTNITRO          : 'SapientNitro',
	//_TYPE_ADVERTISING           : 'Advertising',
	_TYPE_ALLIANCES				: 'Alliances',
	_TYPE_MEDIAREPLATIONS		: 'Media Relations',
	_TYPE_WEBSITEFEEDBACK		: 'Website Feedback',
	_TYPE_OTHERS				: 'Others',
	_TYPE_EMAILOPTIN			: 'Opt in Email Communications',
	_TYPE_GOVERNMENT			: 'Government Services',
	_TYPE_DE_GLOBAL_MARKETS     : 'Global Markets',
	//_TYPE_DE_CONSULTING			: 'Consulting Services',
	//_TYPE_DE_INTERACTIVE		: 'Interactive Services',
	_TYPE_DE_SAPIENTNITRO       : 'SapientNitro',
	//_TYPE_DE_ADVERTISING        : 'Klassische und integrierte Werbung',
	_TYPE_DE_ALLIANCES			: 'Allianzen',
	_TYPE_DE_MEDIAREPLATIONS	: 'Presse',
	_TYPE_DE_WEBSITEFEEDBACK	: 'Website Feedback',
	_TYPE_DE_OTHERS				: 'Sonstiges',
	_TYPE_DE_EMAILOPTIN			: 'Opt in Email Communications',
	_TYPE_DE_GOVERNMENT			: 'Government Services',
	_VALIDATE_EMAIL				: 'email',
	_VALIDATE_ZIP				: 'zip',
	_VALIDATE_PHONE				: 'phone',
	_VALIDATE_FAX               : 'fax',
	_VALIDATE_FNAME				: 'firstname',
	_VALIDATE_LNAME             : 'lastname',
	_VALIDATE_COMPANY           : 'company',
	_VALIDATE_TITLE             : 'title',
	_VALIDATE_CITY              : 'city',
	_VALIDATE_COUNTRY           : 'country',
	_VALIDATE_COMMENTS          : 'comments',
	_VALIDATE_ADDRESS           : 'address',
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.init
	/////////////////////////////////////////////
	init : function( objOverride )
	{
		if( typeof objOverride == 'object' ){
			nameSpace.modules.requestForm.overrideParams( objOverride );
		}
		nameSpace.modules.requestForm.setActions();
		nameSpace.modules.requestForm.onChangeFormType();
		nameSpace.modules.requestForm.checkURL();
		nameSpace.modules.requestForm.checkFormFields();
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.overrideParams
	/////////////////////////////////////////////
	overrideParams : function( e )
	{
		for( var i in e ){
			if( i[0] != '_' && typeof e[i] == typeof nameSpace.modules.requestForm[i] ){
				nameSpace.modules.requestForm[i] = e[i];
			}
		}
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.setActions
	/////////////////////////////////////////////
	setActions : function()
	{
		$(nameSpace.modules.requestForm.formTypeSelector)
			.change( nameSpace.modules.requestForm.onChangeFormType )
			.keyup( nameSpace.modules.requestForm.onChangeFormType );
		
		$(nameSpace.modules.requestForm.formContainerSelector)
			.find('input[type=submit]')
				.click( nameSpace.modules.requestForm.onValidateForm );
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.checkURL
	/////////////////////////////////////////////
	checkURL : function()
	{
		var objURL = parseURL();
		
		if( typeof objURL.formTopic == 'string' ){
			var formTopic = objURL.formTopic.replace('%2520', ' ');
			formTopic = formTopic.replace('%20', ' ');
			if( $(nameSpace.modules.requestForm.formTypeSelector + " option[formclass='" + formTopic + "']").size() == 1 ){
				$(nameSpace.modules.requestForm.formTypeSelector).val( $(nameSpace.modules.requestForm.formTypeSelector + " option[formclass='" + formTopic + "']").attr('value') )
				nameSpace.modules.requestForm.onChangeFormType();
			}
		}
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.checkFormFields
	/////////////////////////////////////////////
	checkFormFields : function()
	{
		$(nameSpace.modules.requestForm.formContainerSelector).find('.formField').each( function(){
			if( $(this).attr('title') === '' ) $(this).attr('title', $(this).attr('name'))
		});
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.refreshDynamics
	/////////////////////////////////////////////
	refreshDynamics : function()
	{
		$(nameSpace.modules.requestForm.formContainerSelector).removeClass( $(nameSpace.modules.requestForm.formContainerSelector).attr('originalClass') );
		var formClass = $(nameSpace.modules.requestForm.formContainerSelector).attr('class');
		$(nameSpace.modules.requestForm.formContainerSelector).addClass( $(nameSpace.modules.requestForm.formContainerSelector).attr('originalClass') );
		
		//$('.rowContainer').removeClass('required');
		$('.rowContainer').removeClass('disabled');
		
		switch(formClass){
		    case nameSpace.modules.requestForm._TYPE_GLOBAL_MARKETS:
		    case nameSpace.modules.requestForm._TYPE_DE_GLOBAL_MARKETS:
		        nameSpace.modules.requestForm.dynamicsGlobalMarkets();
				break;
	//		case nameSpace.modules.requestForm._TYPE_CONSULTING:
	//		case nameSpace.modules.requestForm._TYPE_DE_CONSULTING:
	//			nameSpace.modules.requestForm.dynamicsConsulting();
	//			break;
	//		case nameSpace.modules.requestForm._TYPE_INTERACTIVE:
	//		case nameSpace.modules.requestForm._TYPE_DE_INTERACTIVE:
	//			nameSpace.modules.requestForm.dynamicsInteractive();
	//			break;
			case nameSpace.modules.requestForm._TYPE_SAPIENTNITRO:
			case nameSpace.modules.requestForm._TYPE_DE_SAPIENTNITRO:
				nameSpace.modules.requestForm.dynamicsSapientNitro();
				break;
	//		case nameSpace.modules.requestForm._TYPE_ADVERTISING:
	//		case nameSpace.modules.requestForm._TYPE_DE_ADVERTISING:
	//		    nameSpace.modules.requestForm.dynamicsAdvertising();
	//		    break;
			case nameSpace.modules.requestForm._TYPE_ALLIANCES:
			case nameSpace.modules.requestForm._TYPE_DE_ALLIANCES:
				nameSpace.modules.requestForm.dynamicsAlliances();
				break;
			case nameSpace.modules.requestForm._TYPE_MEDIAREPLATIONS:
			case nameSpace.modules.requestForm._TYPE_DE_MEDIAREPLATIONS:
				nameSpace.modules.requestForm.dynamicsMediaRelations();
				break;
			case nameSpace.modules.requestForm._TYPE_WEBSITEFEEDBACK:
				nameSpace.modules.requestForm.dynamicsWebsiteFeedback();
				break;
			case nameSpace.modules.requestForm._TYPE_OTHERS:
			case nameSpace.modules.requestForm._TYPE_DE_OTHERS:
				nameSpace.modules.requestForm.dynamicsOthers();
				break;
			case nameSpace.modules.requestForm._TYPE_EMAILOPTIN:
			case nameSpace.modules.requestForm._TYPE_DE_EMAILOPTIN:
			    nameSpace.modules.requestForm.dynamicsEmailOptIn();
			    break;
			case nameSpace.modules.requestForm._TYPE_GOVERNMENT:
			case nameSpace.modules.requestForm._TYPE_DE_GOVERNMENT:
			    nameSpace.modules.requestForm.dynamicsGovernment();
			    break;			    
		}
		
		nameSpace.modules.requestForm.formatDynamics();
	},
	
	/////////////////////////////////////////////
	// EVENTS
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.onChangeFormType
	/////////////////////////////////////////////
	onChangeFormType : function()
	{
		if( typeof $(nameSpace.modules.requestForm.formContainerSelector).attr('originalClass') == 'undefined' ){
			$(nameSpace.modules.requestForm.formContainerSelector).attr('originalClass', $(nameSpace.modules.requestForm.formContainerSelector).attr('class'));
		}

		$(nameSpace.modules.requestForm.formContainerSelector)
			.attr('class', '')
			.addClass($(nameSpace.modules.requestForm.formTypeSelector + ' option:selected').attr('formClass'))
			.addClass($(nameSpace.modules.requestForm.formContainerSelector).attr('originalClass'));
		nameSpace.modules.requestForm.refreshDynamics();
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.onValidateForm
	/////////////////////////////////////////////
	onValidateForm : function(s)
	{
	    var strError = '',hasError;
		
		if(typeof s != 'undefined'){
			nameSpace.modules.requestForm.formContainerSelector = s;
		}
		
		$(nameSpace.modules.requestForm.formContainerSelector).find('.formField').each( function(){		   
			if( $(this).attr('id').length > 0 && !$('.rowContainer:has(#' + $(this).attr("id") +')').hasClass('disabled') ){
				hasError = 0;
				if( $('.rowContainer:has(#' + $(this).attr("id") +')').hasClass('required') ){
					if( nameSpace.string.trim($(this).val()) == '' ){
						strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] + nameSpace.modules.validationMessage._VALIDATE_REQUIRED + '\n';
						hasError = 1;
					}
					if( $(this).attr('type') == 'checkbox' && $(this).attr('checked') == false ){
					
						strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] + nameSpace.modules.validationMessage._VALIDATE_REQUIRED + '\n';
						hasError = 1;
					}
					
				}
			
				var v = nameSpace.string.trim($(this).val());
				
				
				if( hasError == 0 && v != '' && typeof $(this).attr('validate') != 'undefined' ){
					switch( $(this).attr('validate') ){	
						case nameSpace.modules.requestForm._VALIDATE_FNAME:
							if( !nameSpace.string.isFirstName(v) ){
								strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] +  nameSpace.modules.validationMessage._VALIDATE_INVALID + 'First Name\n';
							}
							break;
						case nameSpace.modules.requestForm._VALIDATE_LNAME:  
						   
							if( !nameSpace.string.isFirstName(v) ){   // lastname validation is same as firstname, hence the same namespace
								strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'Last Name\n';
							}
							break;
                        case nameSpace.modules.requestForm._VALIDATE_EMAIL:
							if( !nameSpace.string.isEmail(v) ){
								strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] +  nameSpace.modules.validationMessage._VALIDATE_INVALID + 'Email\n';
							}
							break;							
                        case nameSpace.modules.requestForm._VALIDATE_COMPANY:  
						   
							if( !nameSpace.string.isNoSpecialChars(v) ){   
								strError += '* ' + $(this).attr('title') +  nameSpace.modules.validationMessage._VALIDATE_INVALID + 'company Name\n';
							}
							break;							
						case nameSpace.modules.requestForm._VALIDATE_TITLE:  
						   
							if( !nameSpace.string.isNoSpecialChars(v) ){   
								strError += '* ' + $(this).attr('title') + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'title\n';
							}
							break;	
                        case nameSpace.modules.requestForm._VALIDATE_PHONE:
							if( !nameSpace.string.isPhone(v) ){
								strError += '* ' + $(this).attr('title') + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'Phone\n';
							}
							break;
						case nameSpace.modules.requestForm._VALIDATE_FAX:
							if( !nameSpace.string.isPhone(v) ){
								strError += '* ' + $(this).attr('title') + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'Fax\n';
							}
							break;
														
						case nameSpace.modules.requestForm._VALIDATE_CITY:  
						   
							if( !nameSpace.string.isNoSpecialChars(v) ){   
								strError += '* ' + $(this).attr('title') + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'city name\n';
							}
							break;	
						case nameSpace.modules.requestForm._VALIDATE_ZIP:
							if( !nameSpace.string.isPhone(v) ){
								strError += '* ' + $(this).attr('title') + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'Zip\n';
							}
							break;
						case nameSpace.modules.requestForm._VALIDATE_COUNTRY:  
						   
							if( !nameSpace.string.isNoSpecialChars(v) ){   
								strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] + nameSpace.modules.validationMessage._VALIDATE_INVALID + 'country name\n';
							}
							break;
						case nameSpace.modules.requestForm._VALIDATE_COMMENTS:  
						   
							if( !nameSpace.string.isNoSpecialChars(v) ){   
								strError += '* ' + $(this).attr('title').split('$')[nameSpace.modules.validationMessage._VALIDATE_ATTRIBUTE] + ' has invalid characters\n';
							}
							break;
                        case nameSpace.modules.requestForm._VALIDATE_ADDRESS:  
						   
							if( !nameSpace.string.isNoSpecialChars(v) ){   
								strError += '* ' + $(this).attr('title') + ' has invalid characters\n';
							}
							break;
					}
				}
			}
		});
		
		//alert(typeof $(nameSpace.modules.requestForm.formContainerSelector).attr('skipClearForm'));
		
		if( strError.length > 0 ){
			alert(strError);
			return false;
		}
		
		
		
		
		//if( typeof $(nameSpace.modules.requestForm.formContainerSelector).attr('skipClearForm') == 'undefined'){
			nameSpace.modules.requestForm.clearFormBeforeSubmit();
		//}
		return true;
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.clearFormBeforeSubmit
	/////////////////////////////////////////////
	clearFormBeforeSubmit : function()
	{
		var formClass = $('#formContainer').attr('class').replace(' formContainer', '');
		
		switch(formClass){
			case nameSpace.modules.requestForm._TYPE_SAPIENTNITRO:
			case nameSpace.modules.requestForm._TYPE_DE_SAPIENTNITRO:
				$('.checkboxContainer').filter('#checkboxGovernment').find('input').attr('checked', false);
				break;
			case nameSpace.modules.requestForm._TYPE_GOVERNMENT:
			case nameSpace.modules.requestForm._TYPE_DE_GOVERNMENT:
				$('.checkboxContainer').filter('#checkboxSapientNitro').find('input').attr('checked', false);
				break;
			default:
				$('.checkboxContainer input').attr('checked', false);
				break;
		}
		
		$('.rowContainer').filter('.disabled').find('input').val('');
		$('.rowContainer').filter('.disabled').find('select').val('');
	},
	
	/////////////////////////////////////////////
	// DYNAMICS
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.formatDynamics
	/////////////////////////////////////////////
	formatDynamics : function()
	{
		$('.formField').each( function(){ $(this).get(0).disabled = false; });
		
		$('.disabled').each( function(){ 
			$(this).find('.formField').get(0).disabled = true; 
		});
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsConsulting
	/////////////////////////////////////////////
	//dynamicsConsulting : function()
	//{
	//	$('.rowContainer .checkboxContainer').addClass('hidden');
	//	$('.checkboxContainer').filter('#checkboxConsulting').removeClass('hidden');
	//	$('.rowContainer:has(.checkboxContainer)').removeClass('hidden');
	//},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsInteractive
	/////////////////////////////////////////////
	//dynamicsInteractive : function()
	//{
	//	$('.rowContainer .checkboxContainer').addClass('hidden');
	//	$('.checkboxContainer').filter('#checkboxInteractive').removeClass('hidden');
	//	$('.rowContainer:has(.checkboxContainer)').removeClass('hidden');
	//},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsInteractive
	/////////////////////////////////////////////
	dynamicsSapientNitro : function()
	{
		$('.rowContainer .checkboxContainer').addClass('hidden');
		$('.checkboxContainer').filter('#checkboxSapientNitro').removeClass('hidden');
		$('.rowContainer:has(.checkboxContainer)').removeClass('hidden');
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsAdvertising
	/////////////////////////////////////////////
//	dynamicsAdvertising : function()
//	{
//		$('.rowContainer .checkboxContainer').addClass('hidden');
//		$('.checkboxContainer').filter('#checkboxAdvertising').removeClass('hidden');
//		$('.rowContainer:has(.checkboxContainer)').removeClass('hidden');
//	},
	
	dynamicsGlobalMarkets : function()
	{
	    $('.rowContainer:has(.checkboxContainer)').addClass('hidden');
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsAlliances
	/////////////////////////////////////////////
	dynamicsAlliances : function()
	{
		$('.rowContainer:has(#ctl00_ContentPlaceHolder1_ctl00_title)').addClass('disabled');
		$('.rowContainer:has(#address1)').addClass('disabled');
		$('.rowContainer:has(#city)').addClass('disabled');
		$('.rowContainer:has(#zip)').addClass('disabled');
		$('.rowContainer:has(#ctl00_ContentPlaceHolder1_ctl00_state)').addClass('disabled');
		$('.rowContainer:has(.checkboxContainer)').addClass('hidden');
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsMediaRelations
	/////////////////////////////////////////////
	dynamicsMediaRelations : function()
	{
		$('.rowContainer:has(.checkboxContainer)').addClass('hidden');
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsWebsiteFeedback
	/////////////////////////////////////////////
	dynamicsWebsiteFeedback : function()
	{
		$('.rowContainer:has(.checkboxContainer)').addClass('hidden');
	},
	
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsOthers
	/////////////////////////////////////////////
	dynamicsOthers : function()
	{
		$('.rowContainer:has(.checkboxContainer)').addClass('hidden');
	},
		/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsGovernment
	/////////////////////////////////////////////
	dynamicsGovernment : function()
	{

		$('.rowContainer:has(.checkboxContainer)').addClass('hidden');
		$('.checkboxContainer').filter('#checkboxGovernment').removeClass('hidden');
		//$('.checkboxContainer').filter('#checkboxConsulting').addClass('hidden');
		//$('.checkboxContainer').filter('#checkboxInteractive').addClass('hidden');
		$('.checkboxContainer').filter('#checkboxSapientNitro').addClass('hidden');
		//$('.checkboxContainer').filter('#checkboxAdvertising').addClass('hidden');
		$('.rowContainer:has(.checkboxContainer)').removeClass('hidden');
		
	},
	/////////////////////////////////////////////
	// Function - nameSpace.modules.requestForm.dynamicsEmailOptIn
	/////////////////////////////////////////////
	dynamicsEmailOptIn : function()
	{
		$('.rowContainer:has(.checkboxContainer)').addClass('hidden');
	}
};