/*
* @Script: jlord.js
* @Description: Javascript for all
* @Package: S4CMS
* @Copyright: Joomlord team - S4VN
* @Created: ManhTL - 20061118
* @Updated: ThongTA - 20070723
*/

var xmlHttp = createXmlHttpRequestObject();
var divContentId = "";

function wlkFunc(_url) {
	if(_url=="")
		;
	else
		window.open(_url);
}

// Creates an XMLHttpRequest instance
function createXmlHttpRequestObject() {
	// will store the reference to the XMLHttpRequest object
	var xmlHttp;
	// this should work for all browsers except IE6 and older
	if( window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} 
	else if( window.ActiveXObject) {
		try	{			
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch ( e) {
			xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
		}
	}
	if( !xmlHttp) {
		alert("Error creating the XMLHttpRequest object.");	
	}
	return xmlHttp;
}
// End: create an XMLHttpRequest instance

// Begin: ThongTA 20070723
function makePOSTRequest(url, parameters) {
  xmlHttp.onreadystatechange = alertContents;
  xmlHttp.open('POST', url, true);
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", parameters.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(parameters);
} // end makePostRequest

function alertContents() {
  if (xmlHttp.readyState == 4) {
	 if (xmlHttp.status == 200) {
		//alert(http_request.responseText);
		result = xmlHttp.responseText;
		document.getElementById('myspan').innerHTML = result;            
	 } else {
		alert('There was a problem with the request.');
	 }
  }
} // end alertContents

//function called to read a file from the server
function process_ajax(url, divId) {
	// thongta: 3:14PM 20070723
	if( xmlHttp) {
		//try to connect to server
		try {
			//initiate reading the url from the server
			url = encodeURI( url);
			divContentId = divId;			
			xmlHttp.open("GET", url, true);
			if(xmlHttp.readyState == 1) { // loading...
				document.getElementById( divContentId).innerHTML = "<div class=\"loading\" align=\"center\"><br /><img src=\"modules/mod_jlord_phplistsubscriber/loading.gif\" /><br /></div>";
			}
			xmlHttp.onreadystatechange = stateChanged;
			xmlHttp.send( null);
		}
		catch( e) {
			//alert("Hic! Co loi xay ra!\nHay bao cho BQT biet\n" + divId +"\n" + e.toString());
			alert("Error!" + e.toString());
		}
	}
}

// Begin: setNull
function setNull(divId) {
	process_ajax('member/null.html', divId);
}
// End: setNull

// End: _goBack
// ThongTA, 10:00PM, 20070723
// Begin: _doPostBackChild
function _doPostBackChild(_url, divId) {
	_url += "&ajax=true";
	process_ajax(_url, divId);
}
// End: _doPostBackChild

// ThongTA: PHPlist subscriber
function phplist_subscriber_bak() {
	var nameObj		= document.getElementById("mod_jlord_phplistsubscriber_name");
	var emailObj	= document.getElementById("mod_jlord_phplistsubscriber_email");
	var modidObj	= document.getElementById("mod_jlord_phplistsubscriber_modid");
	/*
	if( !validate( nameObj)) {
		nameObj.focus();
		return false;
	}*/
	if( nameObj.value=='' ) {
		alert('Please input your name!');
		nameObj.focus();
		return false;
	}
	if( emailObj.value=='') {
		alert("Please input your email address!");
		emailObj.focus();
		return false;
	}
	emailCheck(emailObj.value);
	var url = "modules/mod_jlord_phplistsubscriber/jlord_phplistsubscriber_underground.php?action=subscribe&name=" + nameObj.value + "&email=" + emailObj.value + "&modid=" + modidObj.value;
	//alert(url);
	_doPostBackChild( url, "mod_jlord_login_form");
	return true;
}
// End: subscriber

function phplist_display_form(modid) {
	var url = "modules/mod_jlord_phplistsubscriber/jlord_phplistsubscriber_underground.php?action=displayform&modid=" + modid;
	_doPostBackChild( url, "mod_jlord_login_form");
}

// ThongTA: PHPlist subscriber
function phplist_subscriber() {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	
	var nameObj		= document.getElementById("mod_jlord_phplistsubscriber_name");
	var emailObj	= document.getElementById("mod_jlord_phplistsubscriber_email");
	var modidObj	= document.getElementById("mod_jlord_phplistsubscriber_modid");
	/*
	if( !validate( nameObj)) {
		nameObj.focus();
		return false;
	}*/
	if( nameObj.value=='' ) {
		alert('Please input your name!');
		nameObj.focus();
		return false;
	}
	
	var emailStr = emailObj.value;
	
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
	if (user.match(userPat)==null) {
	    alert("The username doesn't seem to be valid.");
	    return false;
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        alert("Destination IP address is invalid!");
			return false;
		    }
	    }
	    return true;
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid.");
	    return false;
	}
	
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>5) {
	   alert("The address must end in a three-letter domain, or two letter country.");
	   return false;
	}
	
	if (len<2) {
	   var errStr="This address is missing a hostname!";
	   alert(errStr);
	   return false;
	}
	
	var url = "modules/mod_jlord_phplistsubscriber/jlord_phplistsubscriber_underground.php?action=subscribe&name=" + nameObj.value + "&email=" + emailObj.value + "&modid=" + modidObj.value;
	//alert(url);
	_doPostBackChild( url, "mod_jlord_login_form");
	return true;
}
// End: subscriber

//function that handles the HTTP response
function stateChanged() {					
	if( xmlHttp.readyState == 4) {
		if( xmlHttp.status == 200) {
			try {
				document.getElementById( divContentId).innerHTML = xmlHttp.responseText;
			}
			catch(e) {
				alert("Error reading the response " + e.toString())
			}
		} else {
			alert("There was a problem when retrieving data !");
		}
	}
}

/*
* get Cookie
*/
function getCookie(NameOfCookie)
{
	if (document.cookie.length > 0)
	{
		begin = document.cookie.indexOf(NameOfCookie+"=");
		if (begin != -1) // Note: != means "is not equal to"
		{
			begin += NameOfCookie.length+1;
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end));
		}
	}
} // end function getCookie

/*
* set cookie value to variable
*/
function setCookie(NameOfCookie, value, expiredays)
{
	var ExpireDate = new Date ();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
	document.cookie = NameOfCookie + "=" + escape(value) +
	((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}

/*
* delete the cookie
*/
function delCookie (NameOfCookie)
{
	if (getCookie(NameOfCookie)) {
		document.cookie = NameOfCookie + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
} // end function delCookie

function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
	if (user.match(userPat)==null) {
	    alert("The username doesn't seem to be valid.");
	    return false;
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        alert("Destination IP address is invalid!");
			return false;
		    }
	    }
	    return true;
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid.");
	    return false;
	}
	
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>3) {
	   alert("The address must end in a three-letter domain, or two letter country.");
	   return false;
	}
	
	if (len<2) {
	   var errStr="This address is missing a hostname!";
	   alert(errStr);
	   return false;
	}
	return true;
}
