/**
 * \brief Biblioteca para fazer login no blog via capa estatica

 * Requerido: 
  <script src="wp-includes/js/prototype.js" language="JavaScript" type="text/javascript"></script>
 
 * Exemplo:
Arquivo: wp-capa.html

<html>
<head>
<title>AJAX WP Login </title>
<script src="http://blog.terra.com.br/wp-includes/js/prototype.js" language="JavaScript" type="text/javascript"></script>
<script src="http://blog.terra.com.br/wp-includes/js/apiBlogLogin.js" language="JavaScript" type="text/javascript"></script>
<script type="text/javascript" language="JavaScript">
    var bloglogin = new apiBlogLogin('result', 'blog.terra.com.br');
    function form_login() {
        bloglogin.doLogin($F('login'), $F('pass'));
    }
</script>
<div id="doLogin"><form>
<input type="text" name="log" id="login" value="" />
<br>
<input type="password" name="pwd" id="pass" value="" />
<div id="result"></div>
<input type="button" value="Entrar" onClick="form_login();">
</form></div>
<div id="signup"><a href='wp-signup.php'>cadastre-se</a></div>
<script type='text/javascript'>
$('doLogin').hide();
$('signup').hide();
var where = bloglogin.signedWhere();
switch(where) {
   case 0: location.href = '/manager/index.php';
      break;
   case 1: location.href = '/wp-admin';
      break;
   case 2: $('signup').show();
      break;
   case 3: $('doLogin').show();
      break;
}
</script>
</body>
</html>

 */

function apiBlogLogin(err_msg_container_id, domain) {
	var login_url = 'http://'+domain+'/wp-login.php';
	var have_ok = 0;
	var debug = 0;

	this.setDebug = function (value) {
		debug = value;
	};

	this.setLoginURL = function (url) {
		login_url = url;
	};

	this.setErrorMsgContainerID = function (container) {
		err_msg_container_id = container;	
	};

	this.login_ok = function (t) {
		var text = t.responseText || ""
		var login_error = /<div id="login_error">.*/
		var message_severity = /<p class="message">.*/
		var textle = login_error.exec(text) || ""
		var textms = message_severity.exec(text) || ""

		if ( textle.length == 0 && textms.length == 0)
		{
			var wpmu_er = /wp-admin/
			var wpmu = wpmu_er.exec (text) || ""
			if (wpmu == false) {
				wpmu_er = /WordPress/
				wpmu = wpmu_er.exec (text) || ""
			}
			if (wpmu.length == 0 && text != "") {
				document.write(text);
			}
			else {
				window.location = login_url;
			}
			have_ok = 1;
			return true;
		}

		if ( textle.length > 0 )
			$(err_msg_container_id).update(textle)
		else if ( textms.length > 0 )
			$(err_msg_container_id).update(textms)
	};

	this.login_error = function (t) {
		if (have_ok == 0 && debug == 1)
			$(err_msg_container_id).update("ERROR: Fail in communication")
	};

	this.trim = function (str) {
		return str.replace(/^\s+|\s+$/g,"");
	};

	this.doLogin = function (user, pass) {
		if (this.trim(user) == '' || this.trim(pass) == '')
			return false;

        user = encodeURIComponent(user);
        pass = encodeURIComponent(pass);
		var params = 'user_login=' + user + '&user_pass=' + pass + '&log=' + user + '&pwd=' + pass + '&wp-submit=Log+In'
		var ajax = new Ajax.Request(login_url,
				{
				method: "POST",
				parameters: params,
						onComplete: this.login_ok,
						onFailure: this.login_error,
						onException: this.login_error
				});
	};
	var checkOldBlog = function(have){
		if(have)
			return 0;
		return 2;
	};

	var isSigned = function() {
		var url = "ws/blog:is_signed/type=json";
		var result = 'false';
		var ajax = new Ajax.Request(url,
				{
				method: "GET",
				onComplete: function(rs) {var json = rs.responseText.evalJSON(true); result = json.sign;},
				onFailure: function() {result = 2;},
				asynchronous: false
				});
		return result;
	};

	var deleteCookie = function(){
		var arr = getCookies(true);
		return 3;
	}

	var getCookies = function(delete_ck) {
		var ck_b = 'B=';
		var ck_u = 'U=';
		var ck_c = 'CMT_WP=';
		var arr_result = new Array();
		var new_cookies = document.cookie;
		var cookies = document.cookie.split(';');
		for(var i = 0; i < cookies.length; i++) {
			var current = cookies[i];
			current = current.replace(/^\s+|\s+$/g,"");
			if(current.indexOf(ck_b) == 0){
				if(delete_ck)
					new_cookies = new_cookies.replace(current, 'B=;expires=Thu, 01-jan-70 00:00:01 GMT;');
				else
					arr_result[ck_b] = current.substring(ck_b.length);
			}
			if(current.indexOf(ck_u) == 0){
				if(delete_ck)
					new_cookies = new_cookies.replace(current, 'U=;expires=Thu, 01-jan-70 00:00:01 GMT;');
				else
					arr_result[ck_u] = current.substring(ck_u.length);
			}
			if(current.indexOf(ck_c) == 0)
				arr_result[ck_c] = current.substring(ck_c.length);
		}
		document.cookie = new_cookies;
		return arr_result;
	}

	this.signedWhere = function() {
		var ret = getCookies(false);
		var have_b = ret['B='];
		var have_u = ret['U='];
		var ckvalue= ret['CMT_WP='];
		if(have_b && have_u){
			switch(ckvalue) {
				case "0": deleteCookie();
				case "1": return 1;
				case "2": return 2;
				default: 
						var sign = isSigned();
						switch(sign){
							case "0": deleteCookie();
							case "1": return 1;
							case "2": return 2;
							default: return 3;
						}
			}
		}
		return 3;
	}

};
