var glogster = {}

//help function
glogster.$ = function(id) {
	return document.getElementById(id);
}

//ajax for sending a request
glogster.xmlhttpPost = function(str_url, query_string, on_response, sync) {
    var xmlHttpReq = false;
    var async = !sync;

    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', str_url, async);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            on_response(self.xmlHttpReq.responseText);
        }
    }
    self.xmlHttpReq.send(query_string);
}
	 
//working with registration form
glogster.register = {
	completed : 0,
	field_status : {
		'nick' : 0,
		'password' : 0,
		'password_confirm' : 0,
		'email' : 0,
		//'postal' : 0
		'terms' : 0,
		'captcha' : 0
	},
	field_check : new Array('nick', 'password', 'password_confirm', 'email', 'terms', 'captcha'),
	field_startup_check : new Array('nick', 'email'/*, 'postal'*/, 'terms'),
		
	//tests one field of formular
	formcheck : function(elem, sync, notnull) {
		glogster.register.form = elem.form;

		if(elem.name == 'nick' /*|| elem.name == 'phone'*/ || elem.name == 'email' || elem.name == 'captcha') {
		  if(elem.value.length > 0 || notnull)
				if(elem.name == 'nick' && elem.value.search(/^[a-zA-Z0-9]{4,}$/gi) == -1) this.warning(elem.name, -1, elem.value.length);
				else if(elem.name == 'password' && elem.value.search(/^[a-zA-Z0-9]{5,}$/gi) == -1) this.warning(elem.name, -1, elem.value.length);
				//else if(elem.name == 'phone' && elem.value.search(/^[0-9]{9}$/gi) == -1) this.warning(elem.name, -1);
				else if(elem.name == 'email' && (elem.value == '@' && !notnull))
				  ;
				else {
					this.warning(elem.name, 0);
					new glogster.xmlhttpPost('/@ajax.php', '&field=' + encodeURIComponent(elem.name) + '&value=' + encodeURIComponent(elem.value), glogster.register.response, sync);
			}
		}
//		else if(elem.name == 'postal') {
	//		if(elem.value != parseInt(elem.value) || elem.value.length != 5) this.warning(elem.name, -1);
		//	else this.warning(elem.name, 1);
		//} 
		else if(elem.name == 'password') {
		  if(elem.value.length > 0 || notnull)
				if(elem.value.length < 5) this.warning(elem.name, -1);
				else this.warning(elem.name, 1);
			
			this.formcheck(elem.form['password_confirm']);
		}
		else if(elem.name == 'password_confirm') {
		  if(elem.value.length > 0 || notnull)
				if(elem.value != elem.form.password.value) this.warning(elem.name, -1);
				else this.warning(elem.name, 1);
		}
		else if(elem.name == 'terms') {
			if(elem.checked == false) this.warning(elem.name, -1);
			else this.warning(elem.name, 1);
		}
	},

	//testing all form fields
	formcheck_submit : function(elem) {
	  fields = this.field_check;
	  
		for(var i = 0; i < fields.length; i++) {
      if(this.field_status[fields[i]] < 1) {	
        input = elem.elements[ fields[i] ];
        this.formcheck(input, true, true);
      }
		}

		return (this.completed >= fields.length);
	},
  
	//testing all form fields
	formcheck_startup : function(elem, startup, wait) {
	  fields = this.field_startup_check;
	  
		for(var i = 0; i < fields.length; i++) {
      if(this.field_status[fields[i]] < 1) {	
        input = elem.elements[ fields[i] ];
        this.formcheck(input);
      }
		}
	},
	
	//trigger for receiving the answer from ajax
	response : function(response) {
		var res = response.split('=');
		glogster.register.warning(res[0], res[1]);
	},
	
	//highlighting the field of formular
	warning : function(name, status, length) {
		if(this.field_status[name] != undefined) {
			this.completed += status - this.field_status[name];
			this.field_status[name] = status;
		}
		
		//glogster.$('submit').disabled = (this.completed >= this.field_check.length - 1) ? false : true;
    if (glogster.register.form){
		  err_elem = glogster.$(glogster.register.form[name].id + '-err');
		}else{
		  err_elem =glogster.register;
    }
		
		var text = color = '';
		
		if(status == -1) {
			if(name == 'password_confirm') text = 'Passwords are not the same';
			else if(name == 'captcha') text = 'Incorrect verification code';
			else if(name == 'terms') text = 'You must accept the terms of use';
			else if(name == 'password') text = 'Choose a password longer than 4 characters';
			else if(name == 'nick') {

			  if(length <= 3) text = 'Nickname must be longer than 3 characters';
				else text = 'Choose a nickname without any special characters';
			}
			else if(name == 'email') {
			
				text = 'Enter a valid email';
			}
	
			else text = 'Wrong format, try again';
			color = 'error';
		}
		else if(status == -2) {
//			text = 'Obsazeno';
if(name == 'nick')
			text = 'This nickname is already being used, choose another one';
		else if(name = 'email')
			text = 'This email is already being used, choose another one';
			color = 'error';
		}
		//forbidden nick
		else if(status == -3) {
			text = 'Nickname can\'t be a registered trademark';
			color = 'error';
		}
		else if(status == 1) {
		  if(name == 'terms'){
       		//text = 'Souhlas potvrzen';
       		text='';
       } else {
//        text = 'SprÃ¡vnÄ>';
        text = '';
      }
			color = 'ok';
		}
		else if(status == 0) {//temporary commented until it will be working properly
			//text checking
			//text = 'Checking&hellip;'; //glogster.register.form[name].style.border = '1px solid black';
			//color = 'message';
		}
		
//		err_elem.innerHTML = text;
		if (text) {
      err_elem.innerHTML = '<em class='+color+'>'+ text + '</em>';
  		//err_elem.className = color;
		} else {
		  err_elem.innerHTML = '';
    }
	},
	
	requestCaptcha : function(img) {
		glogster.register.captcha = img;
		new glogster.xmlhttpPost('/@ajax.php', '&captcha=1', glogster.register.showCaptcha);		
	},
	
	showCaptcha : function(response) {
	   //alert(glogster.register);
		glogster.register.captcha.src = response;
	}
}

//next row for sending invitation
glogster.invitations_add = function(col1, col2, count) {
	var input_nick = document.createElement('INPUT');
	var input_email = document.createElement('INPUT');

	input_nick.name = "invitations[" + count + "][nick]";
	input_email.name = "invitations[" + count + "][email]";
	input_email.value = "@";

	var div_nick = document.createElement('DIV');
	div_nick.appendChild(input_nick);
	div_nick.className = "cont";

	var div_email = document.createElement('DIV');
	div_email.appendChild(input_email);
	div_email.className = "cont";

	col1.parentNode.insertBefore(div_nick, col1);
	col2.appendChild(div_email);
	
	return ++count;
}

//highlights selected avatar
glogster.select_avatar = function(elem, avatar) {
	elem_input = glogster.$('avatar');

	if(elem_input.value > 0) {
		elem_old = glogster.$('avatar' + elem_input.value);
		elem_old.className = "";
	}
	
	elem.className = "choosed";
	elem_input.value = avatar;
}
/*
//rating
glogster.rating = {
	//rate
	rate : function(blog_id, rating) {
		//check input vars
		rating = parseInt(rating);
		blog_id = parseInt(blog_id);

		//do the ajax
		new glogster.xmlhttpPost('/@ajax.php', '&blog_id=' + blog_id + '&rating=' + rating, glogster.rating.show);
	},

	//show rating
	show : function(response) {
		glogster.$('rate-the-glog').innerHTML = response;
	}
}
*/
//rating
/*
glogster.comments = {
	//rate
	get_one : function(comment_id) {
		//check input vars
		comment_id = parseInt(comment_id);
		
		//hide old popup
		if(glogster.comments.comment_id != undefined) {
			comment_elem = glogster.$('comment'+glogster.comments.comment_id);
			comment_elem.style.display = 'none';
		}
		
		//show new one
		comment_elem = glogster.$('comment'+comment_id);
		comment_elem.style.display = 'block';
		
		glogster.comments.comment_id = comment_id;
		
		//if already loded
		if(comment_elem.childNodes.length > 1) return;
		//show loading
		comment_elem.innerHTML = 'Loading..';
		
    	
		//do the ajax
		new glogster.xmlhttpPost('/@ajax.php', '&comment_id=' + comment_id + '&show=comment', glogster.comments.show_one);
	},

	//show rating
	show_one : function(response) {
		//console.debug(response);
	   comment_id = glogster.comments.comment_id;
    
		comment_elem = glogster.$('comment'+comment_id);
		comment_elem.innerHTML = response;
	},
	
	send : function(form) {
		//console.debug(form);
		user_id = (form.user_id != undefined ? form.user_id.value : 0);
		blog_id = (form.blog_id != undefined ? form.blog_id.value : 0);
	
		new glogster.xmlhttpPost(
			'/@ajax.php',
			'&action=message_enter&user_id=' + encodeURIComponent(user_id) + '&blog_id=' + encodeURIComponent(blog_id) + '&type=' + encodeURIComponent(form.type.value) + '&message=' + encodeURIComponent(form.message.value),
			glogster.comments.onsent
		);
	},
	
	onsent : function(response) {
		if(response == 1) alert('OK');
		else alert('error');
	}
	
}
*/

//trida zprav
/*
glogster.messages = {
	//nacte zpravy uzivatelu
	load : function(elem, show, offset) {
		glogster.messages.elem = elem;
		new glogster.xmlhttpPost('/@ajax.php', '&offset=' + encodeURIComponent(offset), glogster.messages.show);
	},

	//zobrazi zpravy uzivatelu
	show : function(response) {
		glogster.messages.elem.innerHTML = response;
	}
}
*/

/* Registration EDU - checkbox activate text field */
$(document).ready(function() {
   $('#subaccounts-check').click(function() {
     if ($(this).is(':checked')) {
       $('#subaccounts').val('').attr('disabled', false);
     } else {
       $('#subaccounts').attr('disabled', true);
     }
   });

}); 
