// JavaScript Document

// URL for ajax
var url = "/js/ajax_engine.php";

window.addEvent( 'domready', function() {
	// Get the window size width & height if on resize
	sizeX = window.getSize().size.x;
	sizeY = window.getSize().size.y;
	var wait = $('wait');
	wait.setStyle( 'width', sizeX );
	wait.setStyle( 'height', sizeY );
	wait.setOpacity( 0 );
	
	// Display contact member form
	if( $('contact_bt_top') && $('contact_bt_left') ) {
		var contact_block = $('contact_block');
		$('contact_bt_top').addEvent( 'click', function() {
			var display = ( contact_block.getStyle( 'display' ) != 'block' ) ? 'block' : 'none';
			contact_block.setStyle( 'display', display );
		} );
		$('contact_bt_left').addEvent( 'click', function() {
			var display = ( contact_block.getStyle( 'display' ) != 'block' ) ? 'block' : 'none';
			contact_block.setStyle( 'display', display );
		} );
	}
	
	// Check contact member form and send mail
	if( $('mail_member_submit') ) {
		$('mail_member_submit').addEvent( 'click', function() {
			wait.setOpacity( 0.7 );
			var error = 0;
			if( $('mail_member_name').getValue() == '' ) {
				$('label_member_name').addClass( 'error' );
				error++;
			} else $('label_member_name').removeClass( 'error' );
			if( $('mail_member_email').getValue() == '' ) {
				$('label_member_email').addClass( 'error' );
				error++;
			} else {
				if( !checkEmail( $('mail_member_email').getValue() ) ) {
					$('label_member_email').addClass( 'error' );
					error++;
				} else $('label_member_email').removeClass( 'error' );
			}
			if( $('mail_member_text').getValue() == '' ) {
				$('label_member_text').addClass( 'error' );
				error++;
			}else $('label_member_text').removeClass( 'error' );
			// Send email
			if( error > 0 ) alert( $('mail_member_error').getValue() );
			else {
				new XHR( {
					method: 'post',
					async: false,
					onSuccess: function() {
						if( this.response.text == true ) {
							alert( $('mail_member_error').getValue() );
						} else {
							$('mail_contact_form').setStyle( 'display', 'none' );
							$('mail_sent').setStyle( 'display', 'block' );
						}
					}
				} ).send( url, 'mail_member_name=' + $('mail_member_name').getValue() + '&mail_member_email=' + $('mail_member_email').getValue() + '&mail_member_text=' + $('mail_member_text').getValue() + '&mail_member_id=' + $('mail_member_id').getValue() + '&mail_member_deal_url=' + $('mail_member_deal_url').getValue() );
			}
			( function() { wait.setOpacity( 0 ); } ).delay( 500 );
		} )
	}
	
	// Login
	if( $('login_form') ) {
		$('login_form').addEvent( 'submit', function(e) {
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			new XHR( {
				method: 'post',
				async: false,
				onSuccess: function() {
					if( this.response.text == true ) {
						alert( $('login_error').getValue() );
					} else {
						document.location.href = '';
					}
				}
			} ).send( url, 'log_email=' + $('log_email').getValue() + '&log_pass=' + $('log_pass').getValue() );
			( function() { wait.setOpacity( 0 ); } ).delay( 500 );
		} );
	}

	// Verif deal form
	if( $('deal_form') ) {
		// Check form on submit
		$('deal_form').addEvent( 'submit', function( e ) {
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			var error = 0;
			$('deal_form').getFormElements().each( function( el ) {
				if( el.type == "text" || el.type == "textarea" ) { // Check text field
					if( el.getValue() == "" && el.name != "datestart" ) { // exclude datestart
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else if( el.getValue() != "" && el.name == "datestart" ) {
						new XHR( {
							method: 'post',
							onSuccess: function() { 
								if( this.response.text == true ) {
									el.getParent().getFirst().addClass( 'error' );
									error++;
								} else el.getParent().getFirst().removeClass( 'error' );
							}
						} ).send( url, 'datestart=' + el.getValue() );
					} else el.getParent().getFirst().removeClass( 'error' );
				} else if( el.type == "select-one" ) { // Check select drop down
					if( el.getValue() < 0 ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else el.getParent().getFirst().removeClass( 'error' );
				} 
			} );
			if( error == 0 ) {
				( function() {
					$('deal_form').submit();
				} ).delay( 500 );
			} else {
				( function() { wait.setOpacity( 0 ); } ).delay( 500 );
			}
		} );
	}
	
	// Verif member form
	if( $('member_form') ) {
		// Check form on submit
		$('member_form').addEvent( 'submit', function(e){
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			error = 0;
			$('member_form').getFormElements().each( function( el ) {
				if( el.type == "text" || el.type == "textarea" ) { // Check text field
					if( el.getValue() == "" && el.name != "company_name" && el.name != "company_desc" && el.name != "company_url" && el.name != "address2" && el.name != "fax" && el.name != "truemail" ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else if( el.getValue() != "" && el.name == "email" && $('add') ) { // Check email format and email unique, only on add member action
						if( !checkEmail( el.getValue() ) ) {
							el.getParent().getFirst().addClass( 'error' );
							error++;
						} else { // launch ajax request for check if email exist
							new XHR( {
								method: 'post',
								async: false,
								onSuccess: function() { 
									if( this.response.text == true ) {
										el.getParent().getFirst().addClass( 'error' );
										error++;
										alert( $('email_exist_text').getValue() );
									} else el.getParent().getFirst().removeClass( 'error' );
								}
							} ).send( url, 'email=' + el.getValue() );
						}
					} else el.getParent().getFirst().removeClass( 'error' );
				} else if( el.type == "password" ) { // Check password
					if( el.getValue() == "" ) { // Check if field empty
						error++;
						el.getParent().getFirst().addClass( 'error' );
					} else {
						if( el.name == "password" ) { // Check if password match with confirm password
							tmp_pass = el.getValue();
							el.getParent().getFirst().removeClass( 'error' );
						} else if( el.getValue() != tmp_pass ) {
							error++;
							el.getParent().getFirst().addClass( 'error' );
						} else {
							el.getParent().getFirst().removeClass( 'error' );
						}
					}
				} else if( el.type == "radio" ) { // Check radio field
					var n = $('member_form').elements[el.name].length;
					var checked = 0;
					for( var i = 0; i < n; i++ ) {
						if( $('member_form').elements[el.name][i].checked == true ) checked++;
					}
					if( checked == 0 ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else el.getParent().getFirst().removeClass( 'error' );
				} else if( el.type == "select-one" ) { // Check select drop down
					if( el.getValue() < 0 ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else el.getParent().getFirst().removeClass( 'error' );
				} else if( el.type == "hidden" && el.name == "valid" && el.getValue() == 1 ) {
					error++;
				}
			} );
			
			if( error == 0 ) {
				( function() {
					$('member_form').submit(); 
					wait.setStyle( 'display', 'none' );
				} ).delay( 500 );
			} else {
				( function() { wait.setOpacity( 0 ); } ).delay( 500 );
			}
		} );
	}
	
	// Verif change password form
	if( $('pass_form') ) {
		// Check form on submit
		$('pass_form').addEvent( 'submit', function(e){
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			error = 0;
			// Check last password
			if( $('old_password').getValue() != '' ) {
				new XHR( {
					method: 'post',
					async: false,
					onSuccess: function() { 
						if( this.response.text == true ) {
							$('old_password').getParent().getFirst().addClass( 'error' );
							error++;
							alert( $('old_password_false_text').getValue() );
						} else $('old_password').getParent().getFirst().removeClass( 'error' );
					}
				} ).send( url, 'old_password=' + $('old_password').getValue() + '&id=' + $('id_pass').getValue() );
			} else {
				$('old_password').getParent().getFirst().addClass( 'error' );
				error++;
				alert( $('old_password_false_text').getValue() );
			}
			
			if( error == 0 && ( $('password').getValue() == '' || $('confirm_password').getValue() == '' || $('password').getValue() != $('confirm_password').getValue() ) ) {
				$('password').getParent().getFirst().addClass( 'error' );
				$('confirm_password').getParent().getFirst().addClass( 'error' );
				error++;
				alert( $('new_password_not_match_text').getValue() );
			} else {
				$('pass_form').getFormElements().each( function( el ) {
					el.getParent().getFirst().removeClass( 'error' );
				} );
			}
			
			if( error == 0 ) {
				( function() {
					$('pass_form').submit();
				} ).delay( 500 );
			}
			( function() { wait.setOpacity( 0 ) } ).delay( 500 );
		} );
	}
	
	// Verif contact form
	if( $('contact_form') ) {
		$('contact_form').addEvent( 'submit', function(e){
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			error = 0;
			$('contact_form').getFormElements().each( function( el ) {
				if( el.type == "text" || el.type == "textarea" ) { // Check text field
					if( el.getValue() == "" && el.name != "company" && el.name != "truemail" ) { // exclude datestart
						el.getParent().getPrevious().getFirst().addClass( 'error' );
						error++;
					} else if( el.name != "truemail" ) el.getParent().getPrevious().getFirst().removeClass( 'error' );
				} else if( el.type == "select-one" ) { // Check select drop down
					if( el.getValue() < 0 ) {
						el.getParent().getPrevious().getFirst().addClass( 'error' );
						error++;
					} else el.getParent().getPrevious().getFirst().removeClass( 'error' );
				}
			} );
			
			if( error == 0 ) {
				( function() {
					$('contact_form').submit(); 
					wait.setStyle( 'display', 'none' );
				} ).delay( 500 );
			} else {
				( function() { wait.setOpacity( 0 ); } ).delay( 500 );
			}
		} );
	}
	
	// Verif reaction form
	if( $('reaction_form') ) {
		$('reaction_form').addEvent( 'submit', function(e){
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			error = 0;
			$('reaction_form').getFormElements().each( function( el ) {
				if( el.type == "hidden" && el.name == "members_id" && isNaN( el.getValue() ) == true ) { // Check if member logged in
					alert( el.getValue() );
					error++;
				} else if( el.type == "textarea" && el.getValue().trim() == "" && error == 0 ) { // Check textarea
					el.getParent().getFirst().addClass( 'error' );
					error++;
				} else el.getParent().getFirst().removeClass( 'error' );
			} );
			
			if( error == 0 ) {
				( function() {
					$('reaction_form').submit(); 
					wait.setStyle( 'display', 'none' );
				} ).delay( 500 );
			} else {
				( function() { wait.setOpacity( 0 ); } ).delay( 500 );
			}
		} );
	}
	
	// Verif job form
	if( $('job_form') ) {
		// Check form on submit
		$('job_form').addEvent( 'submit', function( e ) {
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			var error = 0;
			$('job_form').getFormElements().each( function( el ) {
				if( el.type == "text" || el.type == "textarea" ) { // Check text field
					if( el.getValue() == "" ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else if( el.getValue() != "" && el.name == "datestart" ) {
						new XHR( {
							method: 'post',
							onSuccess: function() { 
								if( this.response.text == true ) {
									el.getParent().getFirst().addClass( 'error' );
									error++;
								} else el.getParent().getFirst().removeClass( 'error' );
							}
						} ).send( url, 'datestart=' + el.getValue() );
					} else if( el.getValue() != "" && el.name == "dateend" && $('datestart').getValue() != "" ) {
						new XHR( {
							method: 'post',
							onSuccess: function() { 
								if( this.response.text == true ) {
									el.getParent().getFirst().addClass( 'error' );
									error++;
								} else el.getParent().getFirst().removeClass( 'error' );
							}
						} ).send( url, 'datestart=' + $('datestart').getValue() + '&dateend=' + el.getValue() );
					} else el.getParent().getFirst().removeClass( 'error' );
				} else if( el.type == "select-one" ) { // Check select drop down
					if( el.getValue() < 0 ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else el.getParent().getFirst().removeClass( 'error' );
				} 
			} );
			if( error == 0 ) {
				( function() {
					$('job_form').submit();
				} ).delay( 500 );
			} else {
				( function() { wait.setOpacity( 0 ); } ).delay( 500 );
			}
		} );
	}
	
	if( $('job_max_char') ) {
		var textarea = $('title');
		var maxchar = $('job_max_char').getText();
		textarea.addEvent( 'keyup', function() {
			tmp_length = maxchar - this.getValue().length;
			if( tmp_length <= 1 ) {
				this.value = this.getValue().substr( 0, maxchar );
				tmp_length = 0;
			}
			$('job_max_char').setHTML( tmp_length );
		} );
	}
	
	// Verif newsletter form
	if( $('newsletter_form') ) {
		// Check form on submit
		$('newsletter_form').addEvent( 'submit', function(e){
			new Event(e).stop();
			wait.setOpacity( 0.7 );
			error = 0;
			$('newsletter_form').getFormElements().each( function( el ) {
				if( el.type == "text" ) { // Check text field
					if( el.getValue() == "" && el.name != "truemail" ) {
						el.getParent().getFirst().addClass( 'error' );
						error++;
					} else if( el.getValue() != "" && el.name == "email_user" ) { // Check email format and email unique, only on add member action
						if( !checkEmail( el.getValue() ) ) {
							el.getParent().getFirst().addClass( 'error' );
							error++;
						} else { // launch ajax request for check if email exist
							new XHR( {
								method: 'post',
								async: false,
								onSuccess: function() {
									if( this.response.text == true ) {
										el.getParent().getFirst().addClass( 'error' );
										error++;
										alert( $('user_exist_text').getValue() );
									} else el.getParent().getFirst().removeClass( 'error' );
								}
							} ).send( url, 'email_user=' + el.getValue() );
						}
					} else el.getParent().getFirst().removeClass( 'error' );
				}
			} );
			
			if( error == 0 ) {
				( function() {
					$('newsletter_form').submit(); 
					wait.setStyle( 'display', 'none' );
				} ).delay( 500 );
			} else {
				( function() { wait.setOpacity( 0 ); } ).delay( 500 );
			}
		} );
	}
} );

window.addEvent( 'scroll', function() {
	$('wait').setStyle( 'top', window.getScrollTop() );								
} );

window.addEvent( 'load', function() {
	$('wait').setOpacity( 0 );						
} );

window.addEvent( 'resize', function() {
	$('wait').setStyles( {
		'width': window.getSize().size.x,
		'height': window.getSize().size.y
	} );
} );

// Add photo field
var photo_limit = 1;
function addPhoto() {
	if( photo_limit < 6 ) {
		var photo = $('photo1').clone().injectAfter('photo' + photo_limit);
		photo_limit++;
		photo.setProperties( {
			id: 'photo' + photo_limit
		} );
		var float = ( photo_limit % 2 ) ? 'left' : 'right';
		photo.setStyle( 'float', float );
		$(photo).getLast().setProperties( {
			value: '',
			id: 'photo_field' + photo_limit
		} );
		if( photo_limit == 6 ) {
			$('add_photo').setProperties( {
				'disabled': 'disabled'
			} );
		}
	}
}

// Check email format
function checkEmail( email ) {
	ereg = /^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*(\.[a-z]+)$/;
	if( !ereg.test( email ) ) {
		return false;
	} else {
		return true;
	}
}

// open popup Chat
function openChat( username ) {
	// the size of the popup window
	var width = 700;
	var height = 500;

	// the x,y position of the popup window
	// NOTE: this formula will auto-center the popup on the screen
	var y = ( screen.height - height ) / 2;
	var x = ( screen.width - width ) / 2;

	var url = '/chat/flashchat.php?username=' + username + '&lang=en';
	var options = 'width=' + width + ',height=' + height + ',top=' + y + ',left=' + x + ',resizable';

	// open the chat window as a popup, instead of embedded in webpage
	window.open( url, 'chat', options );
}