/*
Carmil 1
(c) 2006-2008
register.js
*/

function PageRegister ()
{
this.mydebugger= new DebugHelper("PageRegister");
this.strtbl= null;
this.objTuring= null;
this.lang= "en";

this.setBusy = function (isBusy)
{
document.body.style.cursor= (isBusy ? "wait" : "auto");
showHtmlElement("idSyPleaseWait", isBusy);
enableHtmlElement("idSubmit", ! isBusy);
}

 
this.SuggestNicknamesCallback = function (parent)
{
this.parent= parent;

this.onXmlLoaded = function (islandreq)
{
var island= document.getElementById("idXmlIslandNicknames");
island.style.visibility= "visible";

var nick= document.getElementById("idNick");
nick.focus();
alert( this.parent.strtbl.get("idRegisterNicknameUsed") );
};

this.onError = function (xmlreq, err)
{
var island= document.getElementById("idXmlIslandNicknames");
island.style.visibility= "hidden";
if (confirm( this.parent.strtbl.get("idErrGeneralOperationFailed") ))
{
alert(convertErrObjToStr(err) );
}
};
}

 
this.chooseNickname = function (nickname)
{
var nickobj= document.getElementById("idNick");
nickobj.value= nickname;

var island= document.getElementById("idXmlIslandNicknames");
island.style.visibility= "hidden";
}

 
this.onNickUsed = function (xmlresponse)
{
 
var url= getDocs () + "/polls/xsl/suggest_nicks.xsl" ;

var island= new XmlIslandLoadXslt();
island.loadAsync( xmlresponse, url, document.getElementById("idXmlIslandNicknames"), new this.SuggestNicknamesCallback(this), null, null);
}

 
this.onRegistrationSuccess = function (xmlresponse)
{
var doc = xmlresponse.documentElement;
var nick= getValidTextOfFirstXmlElement( doc.getElementsByTagName('requested-nickname') );
var email= getValidTextOfFirstXmlElement( doc.getElementsByTagName('email') );
setMyCookie( "ap_email_reg", email );
setMyCookie( "ap_nick", nick );

var url= getDocs();
if (this.lang == "he")
{
url= url + "/polls/register_success_heb.html";
}
else
{
url= url + "/polls/register_success.html";
}

window.location.assign( url );
}

 
this.onActivationNeeded = function (xmlresponse)
{
var doc = xmlresponse.documentElement;
var nick= getValidTextOfFirstXmlElement( doc.getElementsByTagName('requested-nickname') );
var email= getValidTextOfFirstXmlElement( doc.getElementsByTagName('email') );
setMyCookie( "ap_email_reg", email );
setMyCookie( "ap_nick", nick );

var url= getDocs();
if (this.lang == "he")
{
url= url + "/polls/register_activation_heb.html";
}
else
{
url= url + "/polls/register_activation.html";
}

window.location.assign( url );
}

 
this.SubmitCallback = function (parent)
{
this.parent= parent;

this.onXmlLoaded = function (xmlreq)
{
this.parent.setBusy(false);

try
{
var doc = xmlreq.req.responseXML.documentElement;
var status = getValidTextOfFirstXmlElement( doc.getElementsByTagName('status') );

if (status == "OK")
{
this.parent.onRegistrationSuccess(xmlreq.req.responseXML);
}
else if (status == "TURING")
{
var turing = getValidTextOfFirstXmlElement( doc.getElementsByTagName('turing') );
this.parent.objTuring.setTuringEnc(turing);
alert( this.parent.strtbl.get("idRegisterTuring") );
}
else if (status == "TEMP_DOWN")
{
var url= getDocs();
if (this.lang == "he")
{
url= url + "/polls/oops_heb.html";
}
else
{
url= url + "/polls/oops.html";
}
window.location.assign( url );
}
else if (status == "REGISTERED")
{
alert( this.parent.strtbl.get("idRegisterEmailExists") );
window.self.location= getDocs () + "/polls/signin.html" ;
}
else if (status == "NOT_ACTIVATED")
{
this.parent.onActivationNeeded(xmlreq.req.responseXML);
}
else if (status == "NICK_USED")
{
this.parent.onNickUsed(xmlreq.req.responseXML);
}
else
{
var debugerr = getValidTextOfFirstXmlElement( doc.getElementsByTagName('debug-err') );
if (confirm( this.parent.strtbl.get("idErrGeneralOperationFailed") ))
{
alert("Status: " + status + "\nError: " + debugerr );
}
this.parent.mydebugger.warn(status + ":" + debugerr)
}
}
catch (exc)
{
this.parent.mydebugger.warn( convertErrObjToStr(exc) );
if (confirm( this.parent.strtbl.get("idErrGeneralOperationFailed") ))
{
alert(convertErrObjToStr(exc) );
}
}
};

this.onError = function (xmlreq, err)
{
this.parent.setBusy(false);

this.parent.mydebugger.warn( convertErrObjToStr(err) );

if (confirm( this.parent.strtbl.get("idErrGeneralOperationFailed") ))
{
alert(convertErrObjToStr(err) );
}
};
}

 
this.isValidFormRegister = function ()
{

var firstname= document.getElementById("idFirstName");
if ( trimWhiteSpaces(firstname.value) == "" )
{
alert( this.strtbl.get("idRegisterMissingFirstName") );
firstname.focus();
return false;
}

var lastname= document.getElementById("idLastName");
if ( trimWhiteSpaces(lastname.value) == "" )
{
alert( this.strtbl.get("idRegisterMissingLastName") );
lastname.focus();
return false;
}

var email= document.getElementById("idEmail");
if (getEmailValidation(email.value) != 0)
{
alert( this.strtbl.get("idRegisterInvalidEmail") );
email.focus();
return false;
}

var country= document.getElementById("idCountry");
if ( country.value == "" )
{
alert( this.strtbl.get("idRegisterMissingCountry") );
country.focus();
return false;
}

var genderf= document.getElementById("idGenderF");
var genderm= document.getElementById("idGenderM");
if ( (!genderf.checked) && (!genderm.checked) )
{
alert( this.strtbl.get("idRegisterMissingGender") );
return false;
}

var day= document.getElementById("idBirthDay");
var month= document.getElementById("idBirthMonth");
var year= document.getElementById("idBirthYear");
if (( day.value == "" ) || ( month.value == "" ) || ( year.value == "" ))
{
alert( this.strtbl.get("idRegisterInvalidBirthdate") );
day.focus();
return false;
}

var date= new Date ( year.value, month.value-1, day.value);
if (date.getDate() != day.value)
{
 
alert( this.strtbl.get("idRegisterInvalidBirthdate") );
day.focus();
return false;
}

var nick= document.getElementById("idNick");
if ( nick.value == "" )
{
alert( this.strtbl.get("idRegisterMissingNickname") );
nick.focus();
return false;
}
if ( ! /^[A-Za-z]+([\-\_]?[A-Za-z0-9]+)*[\-\_]?$/.test(nick.value) )
{
alert( this.strtbl.get("idRegisterInvalidNickname") );
nick.focus();
return false;
}

var pwd1= document.getElementById("idPassword");
if (!isValidPassword(pwd1.value))
{
alert( this.strtbl.get("idRegisterInvalidPassword") );
pwd1.focus();
return false;
}
var pwd2= document.getElementById("idPassword2");
if ( pwd1.value != pwd2.value )
{
alert( this.strtbl.get("idRegisterNotMatched") );
pwd2.focus();
return false;
}

var refercode= document.getElementById("idReferCode");
if ( trimWhiteSpaces(refercode.value) == "" )
{
alert( this.strtbl.get("idRegisterMissingReferree") );
refercode.focus();
return false;
}

return true;
}

 
this.onSubmit = function ()
{
if  ( ! this.isValidFormRegister () )
{
return false;
}

if (this.objTuring == null)
{
this.objTuring= new TuringObj("idDivTuring");
this.objTuring.setLang(this.lang);
this.objTuring.doDynamicTuring();

var submit= document.getElementById("idSubmit");
submit.value= this.strtbl.get("idRegisterRegister");

return false;
}

if  ( !this.objTuring.isValidUserInput(true))
{
return false;
}

var form= document.getElementById("idForm");
var url= getCgibin() + "/ap_register.pl?" + getFromQueryString(form) + "&dummy=" + getScriptDummyParam ();
 
 


this.setBusy(true);
var request= new XmlRequest();
request.loadAsync( url, new this.SubmitCallback(this), null, null );

return false;
}

 
this.GeoCallback = function (parent)
{
this.parent= parent;

this.onXmlLoaded = function (xmlreq)
{
this.parent.setBusy(false);
try
{
var doc = xmlreq.req.responseXML.documentElement;
var country = getValidTextOfFirstXmlElement(doc.getElementsByTagName('country'));
var subcountry = getValidTextOfFirstXmlElement(doc.getElementsByTagName('subcountry'));

if ((country != null) && (country != ''))
{
var fullcountry= country;
if ((subcountry != null) && (subcountry != ''))
{
fullcountry= fullcountry + "-" + subcountry;
}
var objCountry= document.getElementById("idCountry");
objCountry.value= fullcountry;
}
}
catch (exc)
{
}
};
this.onError = function (xmlreq, err)
{
this.parent.setBusy(false);
 
};
}

 
this.prepare = function (lang)
{
this.lang= lang;
this.strtbl= new StringTable (getDocs() + "/polls/xml/strtbl_en.xml", "register", this.lang);

var birthDaySelect = document.getElementById("idBirthDay");
var i;
for ( i= 1; i <= 31; ++i )
{
var opt= document.createElement('option');
var text= document.createTextNode( i );
opt.value= i;
opt.appendChild( text );
birthDaySelect.appendChild( opt );
}

var birthYearSelect = document.getElementById("idBirthYear");
for ( i= 2006; i >= 1900; i= i-1 )
{
var opt= document.createElement('option');
var text= document.createTextNode( i );
opt.value= i;
opt.appendChild( text );
birthYearSelect.appendChild( opt );
}

this.setBusy(true);
var requestgeo= new XmlRequest();
requestgeo.loadAsync( getCgibin() + "/ap_get_geo.pl?code=" + nssy.getGeoCode(), new this.GeoCallback(this), null, null );
}

}

 
function getExportedFunctions ()
{
return [ null ];
}

/* End of file */

