
var arr_opacThread = {}; // prevent multiple parallel threads on "correct" img

function opacity(id, opacStart, opacEnd, millisec, idx) {
	if (idx == undefined) {
		ele = document.getElementById(id);
		idx = "";
	}
	else {
		tmpele = document.getElementsByName(id);
		ele = tmpele[idx];
	}


    if (arr_opacThread[id+idx])
    	return;
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    var i=0; // very imp line - don't remove this
    var processingCorrect = (ele.src.search("correct") != -1);
    if (processingCorrect)
    	arr_opacThread[id+idx] = 1;
    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i-=2) {
            setTimeout("changeOpac(" + i + ",'" + id + "','" + idx + "')",(timer * speed));
            timer++;
        }
	    if (processingCorrect)
	    	setTimeout("arr_opacThread['"+id+idx+"'] = 0",(timer * speed))
    } else if(opacStart < opacEnd) {
      for(i = opacStart; i <= opacEnd; i+=2)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "','" + idx + "')",(timer * speed));
            timer++;
        }
	    if (processingCorrect)
	    	setTimeout("arr_opacThread['"+id+idx+"'] = 0",(timer * speed))
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id, idx) {
	if (idx == "")
    		object = document.getElementById(id);
	else {
    		tmpobject = document.getElementsByName(id);
    		object = tmpobject[idx];
    	}
    	if (String(object.src).indexOf("erroricon") != -1) // stop the fade out threads in case of error
    		opacity = 100;
	object.style.opacity = (opacity / 100);
	object.style.MozOpacity = (opacity / 100);
	object.style.KhtmlOpacity = (opacity / 100);
	object.style.filter = "alpha(opacity=" + opacity + ")";
}

function hideErrorcss(objId, ErrMsgDivId, StatusObjId) {
	var obj = document.getElementById(objId)
	obj.className = '';
	document.getElementById(ErrMsgDivId).style.display = 'none';
	document.getElementById(StatusObjId).style.display = 'none';
	if (obj.parentNode && obj.parentNode.name && obj.parentNode.name == "borderele") {
		obj.parentNode.className = "";
	}
	return true;
}

function hideErrorcssFromName(objName, ErrMsgDivName, StatusObjName, idx) {
	if (idx != undefined) { // isArray is 1
		var obj = document.getElementsByName(objName), ErrMsgDiv = document.getElementsByName(ErrMsgDivName), StatusObj = document.getElementsByName(StatusObjName);
		obj[idx].className = '';
		ErrMsgDiv[idx].style.display = 'none';
		StatusObj[idx].style.display = 'none';
		if (obj[idx].parentNode && obj[idx].parentNode.name && obj[idx].parentNode.name == "borderele") {
			obj[idx].parentNode.className = "";
		}
		return true;
	}
	else // we may need to add support here (later)
		return false;
}

function showErrMsg(arr_params) {
	var i;
	arr_params['ErrDivObj'].style.display = "";
	arr_params['ErrDivObj'].innerHTML = "<img src=\""+Images_Path+"/error.gif\">"+arr_params['ErrorMsg'];

	if (arr_params['EleToFocus']) {
		if (arr_params['EleToFocus']["isArray"]) {
			for (i=0; i<arr_params['EleToFocus'].length; ++i) {
				arr_params['EleToFocus'][i].className = "errorcss";
				if (!arr_params['noborder'] && arr_params['EleToFocus'][i].parentNode && arr_params['EleToFocus'][i].parentNode.name && arr_params['EleToFocus'][i].parentNode.name == "borderele") {
			//		var border = document.getElementById(arr_params['ErrDivObj'].id + "_border");
			//		if (border) border.className = "errorcss";
					arr_params['EleToFocus'][i].parentNode.className = "errorcss";
				}
			}
		}
		else
			arr_params['EleToFocus'].className = "errorcss";
			if (!arr_params['noborder'] && arr_params['EleToFocus'].parentNode && arr_params['EleToFocus'].parentNode.name && arr_params['EleToFocus'].parentNode.name == "borderele") {
		//		var border = document.getElementById(arr_params['ErrDivObj'].id + "_border");
		//		if (border) border.className = "errorcss";
				arr_params['EleToFocus'].parentNode.className = "errorcss";
			}
	}
	if (arr_params['StatusObj']) {
		if (arr_params['StatusObj']["isArray"]) {
			for (i=0; i<arr_params['StatusObj'].length; ++i) {
				arr_params['StatusObj'][i].style.display = "";
				arr_params['StatusObj'][i].src = Images_Path+"/erroricon1.gif";
				opacity(arr_params['StatusObj'][i].id, 99, 100, 1);
			}
		}
		else {
			arr_params['StatusObj'].style.display = "";
			arr_params['StatusObj'].src = Images_Path+"/erroricon1.gif";
			opacity(arr_params['StatusObj'].id, 99, 100, 1);
		}
	}
	if (!arr_params['ob']) {
		ErrorDetails[arr_params["HName"]] = 1;
		if (arr_params['EleToFocus']) {
			if (!alreadyFocussed) {
				alreadyFocussed = true;
				if (arr_params['EleToFocus']["isArray"]) {
					arr_params['EleToFocus'][0].focus();
				}
				else {
					arr_params['EleToFocus'].focus();
				}
			}
		}
	}
}

function v_init(arr_v_override) {
	var i;
	var _tmpImg = new Image(); _tmpImg.src = Images_Path+"/error.gif"; // preload
	arr_v = arr_v_override ? arr_v_override : arr_v;
	if ( !df ) {
		df = document.forms[0];
	}
	var f_list, p_masterlist, p_list, f_str = '';
	for(elementName in arr_v) {
		if (arr_v[elementName]["isArray"]) {
			arr_ele = df.elements[elementName];
			for (ec=0; ec<arr_ele.length; ++ec) {
				for(eventName in arr_v[elementName]['events']) {
					f_list = arr_v[elementName]['events'][eventName]['fname'].toString().split("|X|");
					p_masterlist = new String(arr_v[elementName]['events'][eventName]['param']).split("|X|");
					if ( f_list.length <= 0 ) {
						break;
					}
					for(i=0; i<f_list.length; ++i) {
						f_str = f_str + f_list[i] + '(' + p_masterlist[i] + (p_masterlist[i] != '' ? ',' : '') + ec + ');';
					}
					eval("df.elements['" + elementName + "'][" + ec + "]." + eventName + "= function() {\
						eval(\"" + f_str + "\");\}");
					f_str = '';
				}
			}
		}
		else {
			for(eventName in arr_v[elementName]['events']) {
				f_list = arr_v[elementName]['events'][eventName]['fname'].toString().split("|X|");
				p_masterlist = new String(arr_v[elementName]['events'][eventName]['param']).split("|X|");
				if ( f_list.length <= 0 ) {
					break;
				}
				for(i=0; i<f_list.length; ++i) {
					f_str = f_str + f_list[i] + '(' + p_masterlist[i] + ');';
				}
				eval("df.elements['" + elementName + "']." + eventName + "= function() {\
					eval(\"" + f_str + "\");\}");
				f_str = '';
			}

		}
	}
}

function rm_trim(inputString)
{
        if (typeof inputString != "string") { return inputString; }

        var temp_str = '';
        temp_str = inputString.replace(/[\s]+/g,"");
        if(temp_str == '')
                return "";

        var retValue = inputString;
        var ch = retValue.substring(0, 1);
        while (ch == " ")
        {
                retValue = retValue.substring(1, retValue.length);
                ch = retValue.substring(0, 1);
        }
        ch = retValue.substring(retValue.length-1, retValue.length);
        while (ch == " ")
        {
                retValue = retValue.substring(0, retValue.length-1);
                ch = retValue.substring(retValue.length-1, retValue.length);
        }
        while (retValue.indexOf("  ") != -1)
        {
          retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
        }
        return retValue;
}

<!--
var horizontal_offset="6px" //horizontal offset of hint box from anchor link

var vertical_offset="-10px" //horizontal offset of hint box from anchor link. No need to change.
var ie=document.all
var ns6=document.getElementById&&!document.all

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;}
return totaloffset;
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=(whichedge=="rightedge")? parseInt(horizontal_offset)*-1 : parseInt(vertical_offset)*-1
if (whichedge=="rightedge"){
var windowedge=ie && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-30 : window.pageXOffset+window.innerWidth-40
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure+obj.offsetWidth+parseInt(horizontal_offset)
}
else{
var windowedge=ie && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y > dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetHeight
}
return edgeoffset
}

function showhint(menucontents, objId, tipwidth){
	var obj = document.getElementById(objId);
	if ( obj.tagName.toString().toLowerCase().indexOf('input') > -1 || obj.toString().indexOf('HTMLInputElement') > -1 ) {
		if( rm_trim(obj.value).toString().length > 0 ) {
			return;
		}
	} else if ( obj.tagName.toString().toLowerCase().indexOf('select') > -1  || obj.toString().indexOf('HTMLSelectElement') > -1 ) {
		if ( obj.selectedIndex > 0 ) {
			return
		}
	} else if( obj.tagName.toString().toLowerCase().indexOf('textarea') > -1 || obj.toString().indexOf('HTMLTextAreaElement') > -1) {
		if ( rm_trim(obj.value).toString().length > 0 ) {
			return ;
		}
	} else { alert('no match found'); }
	if ((ie||ns6) && document.getElementById("hintbox")){
		dropmenuobj=document.getElementById("hintbox")
		menucontents="<div id=new_>"+ menucontents +"<div style='position:absolute; left:-9px; bottom:5px;'><img src='images/arrow2.gif' /></div></div>"
		dropmenuobj.innerHTML=menucontents
		dropmenuobj.style.left=dropmenuobj.style.top=-500
		if (tipwidth!=""){
			dropmenuobj.widthobj=dropmenuobj.style
			dropmenuobj.widthobj.width=tipwidth
		}
		dropmenuobj.x=getposOffset(obj, "left")
		dropmenuobj.y=getposOffset(obj, "top")
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+"px"
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+"px"
		dropmenuobj.style.visibility="visible"
		//obj.onblur=hidetip
	}
}

function hidetip(){
dropmenuobj=document.getElementById("hintbox")
dropmenuobj.style.visibility="hidden"
dropmenuobj.style.left="-500px"
}

function createhintbox(){
var divblock=document.createElement("div")
divblock.setAttribute("id", "hintbox")
document.body.appendChild(divblock)
}

var requester = null;

function CheckUsernameAvailability(ob)
{
        var username = document.getElementById("username");
        var error_username = document.getElementById("error_username");
	var status_username = document.getElementById("status_username");
	var params = new Array();
	var err = false;
	error_username.innerHTML = "";

	username.value = rm_trim(username.value);

        if ( username.value.length < 4 ) { //|| username.value.length > 100  )  {
		params = { "ErrDivObj": error_username, "ErrorMsg": "Username Must be Minimum 4 Characters Long.", "EleToFocus":username, "StatusObj": status_username, "ob":ob, "HName":"Username" }
		showErrMsg(params);
		err = true;
		//return ;
        } else if ( username.value.length > 100  )  {
		params = { "ErrDivObj": error_username, "ErrorMsg": "Username should not be more than 100 characters long.", "EleToFocus":username, "StatusObj": status_username, "ob":ob, "HName":"Username" }
		showErrMsg(params);
		err = true;
	} else if ( isValidUsername(username.value) == false  ) {
		params = { "ErrDivObj": error_username, "ErrorMsg": "Special Characters Other Than (Hyphen Underscore Dot @) Are Not Allowed.", "EleToFocus":username, "StatusObj": status_username, "ob":ob, "HName":"Username" }
		if ( username.value.toString().indexOf(' ') > -1 )
			params['ErrorMsg'] = "Username cannot contain blank space";
		showErrMsg(params);
		err = true;
		//return;
	}

	if ( ob && !err ) {
		error_username.style.display = "";
		if ( ! this.verified )  {
			error_username.innerHTML = "Checking availability of username.....";
			error_username.style.display = "";
			if ( requester != null && requester.readyState != 0 && requester.readyState != 4 )
				requester.abort();

			try  {
				requester = new XMLHttpRequest();
			}
			catch (error)  {
				try  {
					requester = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (error)  {
					requester = null;
					return ;
				}
			}
			requester.onreadystatechange = onReadyStateChangeUsername;
			requester.open("GET", "../manager/CheckUsername.php?username=" + username.value);
			requester.send(null);
		}
	}
	/*if ( ob && !err ) {
		hideErrorcss('username','error_username','status_username');
		status_username.style.display = '';
		status_username.src = Images_Path + 'correct.gif';
		opacity('status_username', 100, 0 , fd_tout);
	}/**/
        return true;
}

function onReadyStateChangeUsername()
{
        if ( requester.readyState == 4 ) {
                try {
                        if ( requester.status == 200 )  {
				var response = String(requester.responseText).split("|X|");
				if ( String(response[0]).toLowerCase() == "show" ) {
				}
				else {
					//response[1] = "";
				}
				if ( response[0] == "hide" ) {
					document.getElementById("error_username").className = "error_grn";
					document.getElementById("status_username").style.display = '';
					document.getElementById("status_username").src = Images_Path + '/correct.gif';
					opacity('status_username', 100, 0 , fd_tout);
				} else {
					document.getElementById("error_username").className = "error";
				}

				document.getElementById("error_username").innerHTML = response[1];
                        }
                        else  if ( requester.status != 0 ) {
                                alert("There was an error while checking username availability.\nPlease try again.");
                        }
                }
                catch(e2)  { }
        }
        return true;
}

var arrInvalidDomain=new Array( "yahoomail.com","yahoo.com",
				"yahoomail.co.in","yahoo.co.in",
				"yahoo.com.in","yahoo.co.in",
				"redifmail.com","rediffmail.com",
				"radiffmail.com","rediffmail.com"
);

function CheckEmailAvailability(emailObjId, ob)
{
	var email = document.getElementById(emailObjId);
	var error_div = document.getElementById("error_email");
	var HideErrorDivFlag = false;
	if ( String(error_div.innerHTML).length > 0 )
		HideErrorDivFlag = false;
	else
		HideErrorDivFlag = true;

	error_div.style.display = "";
	if ( isValidEmail(email.value) == false )  {
		error_div.style.display = "none";
		error_div.innerHTML = null;
		return;
	} else {
		var tmpmail = email.value.split("@");
		for ( i = 0; i < arrInvalidDomain.length; i = i+2) {
			if (tmpmail[1] == arrInvalidDomain[i]) 	{
				error_div.style.display = "";
				error_div.innerHTML = "This Email Id Seems Incorrect. Did You Mean <b>"+tmpmail[0]+"@" +arrInvalidDomain[i+1]+ "</b>";
				return;
			}
		}
	}

	if ( ob ) {
		if ( ! this.verified )  {
			error_div.innerHTML = "Checking availability of email.....";
			error_div.style.display = "";
			if ( requester != null && requester.readyState != 0 && requester.readyState != 4 ) {
				requester.abort();
			}
			try  {
				requester = new XMLHttpRequest();
			}catch (error)  {
				try  {
					requester = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (error)  {
					requester = null;
					return ;
				}
			}
			requester.onreadystatechange = onReadyStateChangeEmail;
			requester.open("GET", "../manager/CheckEmail.php?email=" + email.value);
			requester.send(null);
		}
	}
        return true;
}

function onReadyStateChangeEmail()
{
        if ( requester.readyState == 4 ) {
                try {
                        if ( requester.status == 200 )  {
				var response = String(requester.responseText).split("|X|");
				if ( String(response[0]).toLowerCase() == "hide" ) {
					document.getElementById("error_email").style.display = "none";
				}
				else {
					//response[1] = "";
					document.getElementById("error_email").style.display = "";
					document.getElementById("error_email").innerHTML = response[1];
				}
                        }
                        else  if ( requester.status != 0 ) {
                                alert("There was an error while checking email availability.\nPlease try again.");
                        }
                }
                catch(e2)  { }
        }
        return true;
}

function SendPassByAjax(emailId)  {
	var error_email = document.getElementById("error_email");
        if ( emailId.length == 0 )
                return;

        if ( !this.verified )   {
                if (requester != null && requester.readyState != 0 && requester.readyState != 4)  {
                        requester.abort();
                }

                try  {
                        requester = new XMLHttpRequest();
                }
                catch (error)  {
                        try  {
                                requester = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch (error)  {
                                requester = null;
                                return false;
                        }
                }

        }

        error_email.innerHTML = "Please wait while the mail is being sent...";
        requester.onreadystatechange = onreadystatechangepass;
        requester.open("GET", "../manager/SendPass.php?email=" + emailId );
        requester.send(null);
	return false;
}

function onreadystatechangepass()  {
	var error_email = document.getElementById("error_email");
        if ( requester.readyState == 4 )  {
                try  {
                        if ( requester.status == 200 )  {
				var tmp = String(requester.responseText).split("|X|");
				//if( tmp[0] == "show" )  {
					error_email.innerHTML = tmp[1];
					error_email.style.display = "";
				//}
				//else  {
				//	error_email.style.display = "none";
				//}
                        }
                        else if ( requester.status != 0 )  {
				error_email.innerHTML = "There Was a Temporary Problem While Sending the Password. Please Try Again.";
				error_email.style.display = "";
                        }
                }
                catch(error)  {
                }
        }
	return false;
}


function isValidUsername(Username)
{
        var pattern = /[^a-zA-Z0-9.@_-]+/;
	return ! pattern.test ( Username );
}

