YAHOO.namespace("lipikaarregister.container");

function LipikaarRegister(buttonId, productType,versionNumber) {
    this.buttonId = buttonId;
    this.productType = productType;
    this.versionNumber = versionNumber;
}

LipikaarRegister.prototype = {
    init: function () {
        /*Define various event handlers for Dialog*/
        var handleSubmit = function() {
            this.submit();
        };
        var handleSuccess = function(o) {
            var retObj = "var obj = " + o.responseText + ";";
            eval(retObj);
            if(obj.status) {                 
                  var id = obj.buttonId;
                  YAHOO.util.Event.removeListener(id, "click");
                  window.location = YAHOO.util.Dom.get(id).href;
            } else {
                YAHOO.util.Dom.setStyle("registration-section","display","");
                YAHOO.util.Dom.setStyle("waiting-section","display","none");  
                alert("Registration failed.\n Please try again.");
            }
        };
        var handleFailure = function(o) {
            YAHOO.util.Dom.setStyle("registration-section","display","");
            YAHOO.util.Dom.setStyle("waiting-section","display","none");      
            alert("Registration failed: " + o.status + "\n Please check your internet connection and try again.");
        };       
        var showDialog = function(e, obj) {
            YAHOO.util.Dom.get("product").value = obj.productType;
            YAHOO.util.Dom.get("buttonId").value = obj.buttonId;
            YAHOO.util.Dom.get("version").value = obj.versionNumber;
            YAHOO.util.Event.preventDefault(e);
            YAHOO.lipikaarregister.container.dialog1.show();
        };
        var beforeSubmit = function() {
            YAHOO.util.Dom.setStyle("registration-section","display","none");
            YAHOO.util.Dom.setStyle("waiting-section","display","");  
        };
        /*Instantiate the Dialog*/
        YAHOO.lipikaarregister.container.dialog1 = new YAHOO.widget.Dialog("dialog1", 
                                { width : "350px",
                                  fixedcenter : true,
                                  visible : false, 
                                  modal :   true,
								  zIndex: 	150,
                                  hideaftersubmit   : false,
                                  constraintoviewport : true,
                                  buttons : [ { text:"Download Lipikaar", handler:handleSubmit}]
                                });
        YAHOO.lipikaarregister.container.dialog1.validate = function() {
            var data = this.getData();
            var errorString = '';
            /*Check for whitespaces*/
            data.customer_name = data.customer_name.replace(/(^\s*)|(\s*$)/g, "");
            data.customer_email = data.customer_email.replace(/(^\s*)|(\s*$)/g, "");            
            if (data.customer_name == "") {  
                errorString += "Please enter your full name.\n"; 
            }
            if (data.customer_email == "" ) {   
                errorString += "Please enter your e-mail address.\n";
            } else {
              /*Check for email validation*/
              var emailRegex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/                  
              if (!emailRegex.test(data.customer_email)){
                   errorString += "Please enter a valid e-mail address.\n";
                }
            }              
            if (errorString != "") {
                alert(errorString);
                return false;
            } else {
                return true;
            }
        };
        
       YAHOO.lipikaarregister.container.dialog1.callback = { success: handleSuccess,failure: handleFailure, scope:this }; /*Handlers for success & failure*/                
       YAHOO.lipikaarregister.container.dialog1.render();
    
       YAHOO.util.Event.addListener(this.buttonId, "click", showDialog, this,YAHOO.lipikaarregister.container.dialog1);
       YAHOO.lipikaarregister.container.dialog1.asyncSubmitEvent.subscribe(beforeSubmit,YAHOO.lipikaarregister.container.dialog1);
    }
}
