// JavaScript Document

	function showStatusText(str) {

		window.status = str;
	}

	function GoToUrl(url) {

		window.location.href = url;
	}

/*
	function is_email(email) {

		var pattern = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/;
		var flag = pattern.test(email);

		if (!flag) {
			return false;
		}
		else {
			return true;
		}
	}
*/

	function is_email(email)
	{
		var splitted = email.match("^(.+)@(.+)$");
		if(splitted == null) return false;
		if(splitted[1] != null )
		{
		  var regexp_user=/^\"?[\w-_\.]*\"?$/;
		  if(splitted[1].match(regexp_user) == null) return false;
		}
		if(splitted[2] != null)
		{
		  var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		  if(splitted[2].match(regexp_domain) == null) 
		  {
			var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
			if(splitted[2].match(regexp_ip) == null) return false;
		  }// if
		  return true;
		}
	return false;
	}
	
	/*function is_number(value) {
		alert('in');

		var checkOK = "0123456789";
		var i;
		var j;

		for (i = 0 ; value.length > i ; i++) {
			ch = value.charAt(i);

			for (j = 0 ; checkOK.length > j ; j++) {
				if (ch == checkOK.charAt(j)) {
					break;
				}
				if (j == checkOK.length) {
					return false;
				}
			}
		}

		return true;
	}*/

	function is_number(value){
		var checkOK = "0123456789";
		var i;
		var j;
		
		for (i = 0 ; value.length > i ; i++) {
			ch = value.charAt(i);
			for (j = 0 ; checkOK.length > j ; j++) {
				if (ch == checkOK.charAt(j))
					break;
			}
			if (j == checkOK.length) {
				return false;
			}
		}
		return true;
	}	
	
	// this is for checkPattern function to validate date pattern, which is in dd/mm/yyyy	
	var datePattern = /\d\d\/\d\d\/\d\d\d\d/;
	
	function checkPattern(value, pattern)
	{
		if(value.search(pattern) != -1)
			return true;
		else
			return false;
	}
	
	function checkDate(value)
	{
		var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
		var status = checkPattern(value, datePattern);
		
		if(!status)
			return false;
		
		var iYear = parseInt(value.substr(6, 4), 10);
		var iMonth = parseInt(value.substr(3, 2), 10);
		var iDay = parseInt(value.substr(0, 2), 10);
	
		if(iMonth < 1 || iMonth > 12)
			return false;
			
		var maxDay = iMonth != 2 ? daysInMonth[iMonth - 1] :
		((iYear % 4 == 0 && iYear % 100 != 0 || iYear % 400 == 0) ? 29 : 28);
		
		if(iDay > 0 && iDay <= maxDay)
			return true;
		
		return false;
	}
	

	function new_window(mypage, myname, w, h, scroll) {

		var winl = (screen.width - w) / 2;
		var wint = (screen.height - h) / 2;

		winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',noresize'
		win = window.open(mypage, myname, winprops);

		if (parseInt(navigator.appVersion) >= 4) {
			win.focus();
		}
	}
	
function validate_form(d,docall,mode){
	var pass =true;
	var i=0;
	
	for(i=0; i<d.elements.length; i++) {
		//check if it have td which id is inputname>_err
		if(docall[d.elements[i].name+'_err']){
			if(d.elements[i].value==''){
				if(mode == 'add') {
					docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
					docall[d.elements[i].name+'_err_1'].style.display='inline';
					docall[d.elements[i].name+'_err'].style.fontWeight='bold';
					
					pass =  false;
				} else {
					if(d.elements[i].name=='pwd' || d.elements[i].name =='pwdconfirm') {
						if(d.pwd.value!=d.pwdconfirm.value) {
							docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
							docall[d.elements[i].name+'_err_1'].style.display='inline';
							docall[d.elements[i].name+'_err'].style.fontWeight='bold';
							
							pass =  false;
						}
					} else {
						docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
						docall[d.elements[i].name+'_err_1'].style.display='inline';
						docall[d.elements[i].name+'_err'].style.fontWeight='bold';
						
						pass =  false;
					}
					
				} //check mode
				
			}
			else{
				docall[d.elements[i].name+'_err'].style.fontWeight='normal';
				docall[d.elements[i].name+'_err'].style.color = '#000000';
				docall[d.elements[i].name+'_err_1'].style.display='none';

				//check confirmation
				if(d.elements[i].name.search(/confirm/gi)!=-1){
					if((d[d.elements[i].name.replace(/confirm/gi,'')])&&d[d.elements[i].name.replace(/confirm/gi,'')].value!=''){
						if(d[d.elements[i].name.replace(/confirm/gi,'')].value!=d.elements[i].value){
							docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
							docall[d.elements[i].name+'_err_1'].style.display='inline';
							docall[d.elements[i].name+'_err'].style.fontWeight='bold';
							pass = false;
						}
					}
				}
				//validate for tel input
				if(d.elements[i].name.search(/phone/gi)!=-1){
					
					if(!is_number(d.elements[i].value)){
						docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
						docall[d.elements[i].name+'_err_1'].style.display='inline';
						docall[d.elements[i].name+'_err'].style.fontWeight='bold';
						pass = false;
						
					}
				}

				//validate date of birth				
				if(d.elements[i].name.search(/DOB/gi)!=-1){
					if(checkDate(d.elements[i].value)==false){
						docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
						docall[d.elements[i].name+'_err_1'].style.display='inline';
						docall[d.elements[i].name+'_err'].style.fontWeight='bold';
						pass = false;
					}
				}
				
				//validate numeric input
				if(d.elements[i].name.search(/postcode/gi)!=-1){
					if(!is_number(d.elements[i].value)){
						docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
						docall[d.elements[i].name+'_err_1'].style.display='inline';
						docall[d.elements[i].name+'_err'].style.fontWeight='bold';
						pass = false;
						
					}
				}
				
				//validate email input
				if(d.elements[i].name.search(/email/gi)!=-1){
					if(!is_email(d.elements[i].value)){
						docall[d.elements[i].name+'_err'].style.color = '#F63B3B';
						docall[d.elements[i].name+'_err_1'].style.display='inline';
						docall[d.elements[i].name+'_err'].style.fontWeight='bold';
						pass = false;
						
					}
				}
			}
			
		}
		
	}
	
	return pass;
	
}

function NewWindow(mypage, myname, w, h, scroll) {

	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;

	var winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',noresize'
	var win = window.open(mypage,myname,winprops);
	
	if (parseInt(navigator.appVersion) >= 4) {
		//win.focus();
	}
}

//unobstructive javascript functions
function domReadyFunction(f, a){
	//initialise the counter
	var n = 0;
	
	//start the timer
	var t = setInterval(function(){
		//continue flag indicates whether to continue to the next iteration
		//assume that we are going unless specified otherwise
		var c = true;

		//increase the counter
		n++;
	
		//if DOM methods are supported, and the body element exists
		//(using a double-check including document.body, for the benefit of older moz builds [eg ns7.1] 
		//in which getElementsByTagName('body')[0] is undefined, unless this script is in the body section)
		if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null)){
			//set the continue flag to false
			//because other things being equal, we're not going to continue
			c = false;

			//but ... if the arguments object is there
			if(typeof a == 'object'){
				//iterate through the object
				for(var i in a){
					//if its value is "id" and the element with the given ID doesn't exist 
					//or its value is "tag" and the specified collection has no members
					if((a[i] == 'id' && document.getElementById(i) == null) || (a[i] == 'tag' && document.getElementsByTagName(i).length < 1)){ 
						//set the continue flag back to true
						//because a specific element or collection doesn't exist
						c = true; 

						//no need to finish this loop
						break; 
					}
				}
			}

			//if we're not continuing
			//we can call the argument function and clear the timer
			if(!c) { f(); clearInterval(t); }
		}
		
		//if the timer has reached 60 (so timeout after 15 seconds)
		//in practise, I've never seen this take longer than 7 iterations [in kde 3 
		//in second place was IE6, which takes 2 or 3 iterations roughly 5% of the time]
		if(n >= 60){
			//clear the timer
			clearInterval(t);
		}
		
	}, 250);
};

//queue list of function to be executed once window is loaded
//added by twong
startUpQueue = function(){
	this.count = 0;
	this._q = [];
}

startUpQueue.prototype = {
	addQueue: function(f){
		this._q[this.count] = f;
		this.count++;
	}
}

var startUp = new startUpQueue();
window.onload = function(){
	for(i=0; i<startUp.count; i++){
		startUp._q[i]();
	}
}

/*
	http://www.robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};	
/*	
function validateform(docform,doc) {
	
	var d = docform;
	var pass =true;
	var i=0;
	var fieldColor = '#FF0000';
	
	for(i=0; i<d.elements.length; i++) {
		
		//alert(testing.style.display);
		//check if it have td which id is <inputname>_err
		if(doc.getElementById(d.elements[i].name+'_err')){

			if(trim(d.elements[i].value)==''){
				//alert('data_empty'+docall[d.elements[i].name].name);
				doc.getElementById(d.elements[i].name+'_err').style.display = 'inline';
				doc.getElementById(d.elements[i].name+'_err_1').style.color = fieldColor;
		
				if(doc.getElementById(d.elements[i].name+'_err_2')){
					doc.getElementById(d.elements[i].name+'_err_2').style.color = fieldColor;
				}
				
				// check which part contain error
				if(d.elements[i].name.search(/part1/gi)!=-1){
					part1 = 'error'; 
				}
			
				if(d.elements[i].name.search(/part2/gi)!=-1){
					part2 = 'error'; 
				}
				if(d.elements[i].name.search(/part3/gi)!=-1){
					part3 = 'error'; 
				}
								
				pass =  false;
			}
			else{
				
				doc.getElementById(d.elements[i].name+'_err').style.display = 'none';
				doc.getElementById(d.elements[i].name+'_err_1').style.color = '#000000';
				if(doc.getElementById(d.elements[i].name+'_err_2')){
					doc.getElementById(d.elements[i].name+'_err_2').style.color = '#000000';	
				}
				//alert('change back to default color');
				//check confirmation
				if(d.elements[i].name.search(/confirm/gi)!=-1){
					if((d[d.elements[i].name.replace(/confirm/gi,'')])&&d[d.elements[i].name.replace(/confirm/gi,'')].value!=''){
						if(d[d.elements[i].name.replace(/confirm/gi,'')].value!=d.elements[i].value){
							doc.getElementById(d.elements[i].name+'_err').style.display = 'inline';
							doc.getElementById(d.elements[i].name+'_err_1').style.color = fieldColor;
							if(doc.getElementById(d.elements[i].name+'_err_2')){
								doc.getElementById(d.elements[i].name+'_err_2').style.color = fieldColor;
							}
							
							pass = false;
							// check which part contain error
							if(d.elements[i].name.search(/part1/gi)!=-1){
								part1 = 'error'; 
							}
						
							if(d.elements[i].name.search(/part2/gi)!=-1){
								part2 = 'error'; 
							}
							if(d.elements[i].name.search(/part3/gi)!=-1){
								part3 = 'error'; 
							}
						}
					}
				}
				//validate for tel input
				if(d.elements[i].name.search(/tel/gi)!=-1){
					
					//alert('tel');
				}
				
				//validate for identity length
				//must more than 12 character
				if(d.elements[i].name.search(/identity/gi)!=-1){
					if(!(d.elements[i].value.length >=6)){
						doc.getElementById(d.elements[i].name+'_err').style.display = 'inline';
						doc.getElementById(d.elements[i].name+'_err_1').style.color = fieldColor;
						pass = false;
						// check which part contain error
						if(d.elements[i].name.search(/part1/gi)!=-1){
							part1 = 'error'; 
						}
					
						if(d.elements[i].name.search(/part2/gi)!=-1){
							part2 = 'error'; 
						}
						if(d.elements[i].name.search(/part3/gi)!=-1){
							part3 = 'error'; 
						}	
						
					}
					//alert('tel');
				}
				
				//validate for the password length
				//in the range of 4 to 8 chaaracter
				if(d.elements[i].name.search(/password/gi)!=-1){
					if(!(d.elements[i].value.length >=4)){
						doc.getElementById(d.elements[i].name+'_err').style.display = 'inline';
						doc.getElementById(d.elements[i].name+'_err_1').style.color = fieldColor;
						pass = false;
						if(doc.getElementById(d.elements[i].name+'_err_2') == "[object]"){
								doc.getElementById(d.elements[i].name+'_err_2').style.color = fieldColor;
							}
						// check which part contain error
						if(d.elements[i].name.search(/part1/gi)!=-1){
							part1 = 'error'; 
						}
					
						if(d.elements[i].name.search(/part2/gi)!=-1){
							part2 = 'error'; 
						}
						if(d.elements[i].name.search(/part3/gi)!=-1){
							part3 = 'error'; 
						}
					
					
					}
				}
				
				//validate numeric input
				
				if(d.elements[i].name.search(/postcode/gi)!=-1){
					
					if(!is_number(d.elements[i].value)){
						doc.getElementById(d.elements[i].name+'_err').style.display = 'inline';
						doc.getElementById(d.elements[i].name+'_err_1').style.color = fieldColor;
						pass = false;
						// check which part contain error
						if(d.elements[i].name.search(/part1/gi)!=-1){
							part1 = 'error'; 
						}
					
						if(d.elements[i].name.search(/part2/gi)!=-1){
							part2 = 'error'; 
						}
						if(d.elements[i].name.search(/part3/gi)!=-1){
							part3 = 'error'; 
						}
						
					}
				}

				//validate email input
				if(d.elements[i].name.search(/email/gi)!=-1){
					if(!is_email(d.elements[i].value)){
						doc.getElementById(d.elements[i].name+'_err').style.display = 'inline';
						doc.getElementById(d.elements[i].name+'_err_1').style.color = fieldColor;
						if(doc.getElementById(d.elements[i].name+'_err_2')){
								doc.getElementById(d.elements[i].name+'_err_2').style.color = fieldColor;
							}

						pass = false;
						// check which part contain error
						if(d.elements[i].name.search(/part1/gi)!=-1){
							part1 = 'error'; 
						}
					
						if(d.elements[i].name.search(/part2/gi)!=-1){
							part2 = 'error'; 
						}
						if(d.elements[i].name.search(/part3/gi)!=-1){
							part3 = 'error'; 
						}
					}
				}
			}
			
		}
		
	}
	return pass;
	
}*/

