window.onload = function(){
	//Accordion for help page
	if ($defined($('accordion'))) {
		new Accordion($$('div.accordion_header'), $$('div.accordion_body'), {
			show: paneltoshow
		});
	}
	new Accordion($$('div.faqs_accordion_header'), $$('div.faqs_accordion_body'));
	
	//Initializing validate fields for register form
	if($defined($('registerfrm'))){
		$$('input.validatefield').each(function(el){
			el.addEvent('blur', function(){
				//validating the fields
				var container = $(this.parentNode);
				var remoteobj = new XHR({
					method : 'get',
					onSuccess: function(){
						try{
							var resobj = eval('(' + remoteobj.response.text + ')');
							if(resobj.isvalid == true){
								var objs = container.getElements('span.validatemssg');
								var mssgcontainer = objs[0];
								mssgcontainer.setHTML('<img alt="correct" style="border: none;" src="' + appBasePath + '/images/validate_correct.png" />');
							}else{
								var objs = container.getElements('span.validatemssg');
								var mssgcontainer = objs[0];
								mssgcontainer.setHTML('<img alt="error" style="border: none; cursor: pointer;" src="' + appBasePath + '/images/validate_error.png" onclick="alert(\'' + resobj.errorinfo + '\')" />');	
							}
						}catch(excep){
							//do nothing
						}
					},
					onFailure: function(){
						//do nothing
					}
				}).send(appBasePath + '/home/formvalidator','fieldname=' + this.getAttribute('name') + '&fieldcontent=' + encodeURI(this.value) );
			});
		});	
	}	
};

codelibrary = {
	loadcountry: function(ctrl, state_ctrl, city_ctrl){		
		var state_loadmssg_container = ($(state_ctrl.parentNode).getElements('span.loadmssg'))[0];		
		var city_loadmssg_container = ($(city_ctrl.parentNode).getElements('span.loadmssg'))[0]; 		
		var remoteobj = new XHR({
			method: 'get',
			onRequest: function(){
				state_loadmssg_container.setHTML('&nbsp;&nbsp;<img alt=" " src="' + appBasePath + '/images/loading.jpg" /> loading...');
				city_loadmssg_container.setHTML('&nbsp;&nbsp;<img alt=" " src="' + appBasePath + '/images/loading.jpg" /> loading...');
			},
			onSuccess: function(){
				state_loadmssg_container.setHTML('');
				city_loadmssg_container.setHTML('');
				try{
					var resobj = eval('(' + remoteobj.response.text + ')');
					if(resobj.error == false){
						state_ctrl.setHTML('');				
						city_ctrl.setHTML('');	
						for(counter=0; counter < resobj.state.length; counter++){
							var opt = new Element('OPTION',{
								'value' : resobj.state[counter]
							});	
							opt.setHTML(resobj.state[counter]);
							state_ctrl.appendChild(opt);
						}
						for(counter=0; counter < resobj.city.length; counter++){
							var opt = new Element('OPTION',{
								'value' : resobj.city[counter]
							});	
							opt.setHTML(resobj.city[counter]);
							city_ctrl.appendChild(opt);
						}
						if(resobj.isindia == true) 
							state_ctrl.disabled = false;
						else
							state_ctrl.disabled = true;
					}
				}catch(excep){
					//do nothing
				}
			},
			onFailure: function(){
				//do nothing
			}
		}).send(appBasePath + '/home/locationupdater', 'fieldname=country&fieldcontent=' + ctrl.options[ctrl.selectedIndex].value);
	},
	loadstate: function(ctrl, city_ctrl){
		var city_loadmssg_container = ($(city_ctrl.parentNode).getElements('span.loadmssg'))[0];
		var remoteobj = new XHR({
			method: 'get',
			onRequest: function(){
				city_loadmssg_container.setHTML('&nbsp;&nbsp;<img alt=" " src="' + appBasePath + '/images/loading.jpg" /> loading...');
			},
			onSuccess: function(){
				city_loadmssg_container.setHTML('');
				try{
					var resobj = eval('(' + remoteobj.response.text + ')');
					if(resobj.error == false){
						city_ctrl.setHTML('');
						for(counter=0; counter < resobj.city.length; counter++){
							var opt = new Element('OPTION',{
								'value' : resobj.city[counter]
							});	
							opt.setHTML(resobj.city[counter]);
							city_ctrl.appendChild(opt);
						}						
					}
				}catch(exep){
					//do nothing
				}
			},
			onFailure: function(){
				//do nothing
			}
		}).send(appBasePath + '/home/locationupdater', 'fieldname=state&fieldcontent=' + ctrl.options[ctrl.selectedIndex].value);
	},
	login: function(){
		if($('loginid').value.trim().length == 0){
			alert('Please enter your "Login ID".');
			$('loginid').focus();
		}else if($('passwd').value.trim().length == 0){
			alert('Please enter "Password".');
			$('passwd').focus();
		}else{
			var remoteobj = new XHR({
				onRequest: function(){
					codelibrary.helpers.screen.show();
					codelibrary.helpers.loadtext.show('Please wait processing your request . . .');
				},
				onSuccess: function(){
					try{
						var resobj = eval('(' + remoteobj.response.text + ')');
						codelibrary.helpers.loadtext.hide();
						if(resobj.error.occured == true){
							codelibrary.helpers.messages.show(resobj.error.details, 1);
							codelibrary.helpers.screen.hide();
						}else{
							codelibrary.helpers.messages.show('You have been successfully logged in.');
							document.location.href = resobj.redirecturl;
						}
					}catch(excep){
						codelibrary.helpers.loadtext.hide();					
						codelibrary.helpers.messages.show('Failed to login. Please re-try again.', 1);
						codelibrary.helpers.screen.hide();
					}
				},
				onFailure: function(){
					codelibrary.helpers.loadtext.hide();					
					codelibrary.helpers.messages.show('Failed to login. Please re-try again.', 1);
					codelibrary.helpers.screen.hide();
				}
			}).send(appBasePath + '/member/login', $('loginfrm').toQueryString());
		}
		return false;	
	},
	helpers: {
		screen: {
			zindex: 2,
			show: function(){				
				var screen = new Element('DIV',{
					id : "_screen",
					styles: {
						'position' : 'absolute',
						'z-index' : codelibrary.helpers.screen.zindex,
						'left' : 0,
						'top' : 0,
						'width' : window.getWidth(),
						'height' : $('mainContainer').offsetHeight,
						'opacity' : 0.8,
						'background-color' : 'black'
					}	
				});
				document.body.appendChild(screen);
				$$('select').each(function(el){
					el.setStyle('visibility','hidden');
				});
			},
			hide: function(){
				if($('_screen')){
					var obj = $('_screen');
					new Fx.Style(obj, 'opacity', {duration: 500}).start(0).chain(function(){
						obj.remove();
						$$('select').each(function(el){
							el.setStyle('visibility','visible');
						});
					});
				}
			}
		},
		loadtext: {
			zindex: 3,
			show: function(messg){
				var loadtext = new Element('DIV', {
					id: '_loadtext',
					styles: {
						'position' : 'absolute',
						'z-index' : codelibrary.helpers.loadtext.zindex,
						'left' : ((window.getWidth() - 600) / 2),						
						'width' : 600,
						'color' : 'white',
						'font-family' : 'Verdana, Geneva, Arial',
						'font-weight' : 'bold',
						'font-size' : 16,
						'text-align' : 'center',
						'background-color' : 'transparent',
						'opacity' : 0.8
					}
				});
				loadtext.setHTML(messg);
				document.body.appendChild(loadtext);
				loadtext.setStyle('top', window.getScrollTop() + ((window.getHeight() - loadtext.offsetHeight)/ 2));
			},
			hide: function(){
				if($('_loadtext')){
					var obj = $('_loadtext');
					obj.remove();
				}
			}
		},
		messages: {
			zindex: 3,
			show: function(messg, messgtype){
				/**
				 * details for the field messgtype
				 * 1 -> error
				 * 2 -> success
				 */
				alert(messg);	
			}
		}
	}
};
