var tv_school = {};
function NO(x){return ("undefined" == typeof x) || !x}
tv_school.school_selected = false;

tv_school.save = function(){
    var form = tv_school.fp.getForm();
    var params = form.getValues();
    tv_school.XX = params;
    if(/twinedu.org/.test(document.location)) 
    {   key = "ABQIAAAAcgq6h-PhB-R77f7J6sIabxTFPJcu-VGIj85OgMvEkYBxA1EAhBQpx_fNBrKNz9lQiYb3P2FjSktMdQ";}
    else // twinverse.com
    {   key = "ABQIAAAAcgq6h-PhB-R77f7J6sIabxTKImwo43cqWie-YJ3MRGbIOiwdjhSQSHlpfR7Wl1A7dXP20pBTf-pfgA"; }
    if (/Select/.test(params.country)) {params.country = "";}
    params.school_name = Ext.util.Format.trim(params.school_name);
    params.street_address = Ext.util.Format.trim(params.street_address);
    params.country = Ext.util.Format.trim(params.country);
    params.phone_number = Ext.util.Format.trim(params.phone_number);
    params.school_webpage = Ext.util.Format.trim(params.school_webpage);
    if(NO(params.school_name) || NO(params.street_address) || NO(params.country)){
        var msg="";
        if(NO(params.school_name) ){msg+="school name is mandatory<br/>"}
        if(NO(params.street_address)){msg+="street address is mandatory<br/>"}
        if(NO(params.country)){msg+="country is mandatory<br/>"}
        Ext.Msg.alert("Incomplete Form",msg);
        return;
    }
    var wait = Ext.Msg.wait("Checking school address");
    params.country_code = country_abbrev_map[params.country]; // country code
    tv_school.school_selected = false;
    Ext.Ajax.request({
        url:"http://maps.google.com/maps/geo",
        //url:'http://localhost:8000/twinbits/set',
        //url:'http://beta.twinverse.com:8000/twinbits/get',
        scriptTag: true, callbackParam: 'callback',
        params: {q:params.street_address+", "+params.country, oe:"utf8", key:key, gl:params.country_code},
        success: function(response){
            response = Ext.decode(response.responseText);
            tv_school.ZZ = response;
            if (NO(response.Placemark) ||
                NO(response.Placemark[0]) ||
                NO(response.Placemark[0].Point) ||
                NO(response.Placemark[0].Point.coordinates) ||
                NO(response.Placemark[0].Point.coordinates[0]) ||
                NO(response.Placemark[0].Point.coordinates[1])
                ) { 
                    wait.hide();
                    Ext.Msg.alert("Failure","Street address is incomplete or inaccurate");
                    // activate tab, focus of address field 
                    return;
            }
            params.lon = response.Placemark[0].Point.coordinates[0];
            params.lat = response.Placemark[0].Point.coordinates[1];
            params.placemark_data = Ext.encode(response.Placemark[0]);
            Ext.Ajax.request({
                url:'/schools/set/',
                method:'POST',
                params: params,
                success: function(response){
                    wait.hide();
                    response = Ext.decode(response.responseText);
                    if (!response || UNDEF(response.data)){ Ext.Msg.alert('Unexpected Error !','Please report the bug to bugs@twinverse.com');	return; }
                    if(!response.success){	Ext.Msg.alert("Failure",response.data.msg); return;	}
                    response = response.data;
                    //Ext.Msg.alert("Home moved", response.display_name+ " your home is now a this location")
                    tv_register.registerFP.getForm().findField("school_id").setValue(params.school_name+"-"+response.school_id);
                    tv_school.formwindow.hide();
                    tv_school.school_selected = true;
					form.reset();
                },
                failure: function(failed){
                    wait.hide();
                    Ext.Msg.alert('Failure',"Servers are unavailable");
                }
            });	
        },
        failure: function(failed){
            wait.hide();
            Ext.Msg.alert('Failure',"Geocoding servers are unavailable");
        }
    });	
}

tv_school.init = function(){
    
    tv_school.fp = new Ext.FormPanel({
        frame:true,
        //border:true,
        bodyStyle:'padding:10px 15px 20px',
        //autoHeight:true
		//height:250,
        defaults: {width: 270},
		height:350,
        defaultType: 'textfield',
        labelAlign: 'top',
        items: [
                {
                fieldLabel: 'school name(*)',
                name: 'school_name',
                allowBlank:false
            },{
                xtype:'textarea',
                height:60,
                fieldLabel: 'street address and city name(*)',
                name: 'street_address',
                allowBlank:false
            },
            {
            xtype:"combo",
            store: new Ext.data.SimpleStore({
                fields:['country', 'abbrev'],
                data:country_list
            }),
             listWidth:270,
            displayField:'country',
            forceSelection:true,
        
            typeAhead: true,
            mode: 'local',
            triggerAction: 'all',
            emptyText:'Select in the list...',
            selectOnFocus:true,
            fieldLabel: 'country(*)',
            name:'country'
            },
            {
                fieldLabel: 'phone number',
                name: 'phone_number',
                allowBlank:false
            },                {
                fieldLabel: 'school email or webpage',
                name: 'school_webpage',
                allowBlank:false
            },  
            {xtype:"label",html:"<br/>"
            }
            ],
		keys: [{
			key: Ext.EventObject.ENTER,
			fn: tv_login.save
		}],
        buttons: [ {text:'Cancel',handler:function(){
                        tv_school.formwindow.hide();
                    }},
                  { text: 'Save', handler:tv_school.save}]
    });
    
    
    tv_school.formwindow = new Ext.Window({
        constrainHeader: true,
        title:'Add School to Database',
        layout:'fit',
        width:330,
        //height:200,
        autoHeight:true,
        closeAction:'hide',
        modal:true,
        //plain: true,
        items:tv_school.fp
    });
    //tv_school.formwindow.show();
}
