/*Full featured button*/
/*Usage: Add class="FFButton" if disabled button class="FFButton disabled"*/
FFButton = new Class({
	Implements: [Options, Events],
	options: {
		center: false //Button center alignment
},

initialize: function(el, options) {
	this.setOptions(options);

	this.element = el;
	this.initializeButtons();
},

initializeButtons: function() {
	//Add a wrap
	//Check neightbour is already a FFButton or not
	var neightbor = this.element.getPrevious('.FFButtonWrap');
	var ul = null;
	if (null !== neightbor) {
		ul = neightbor;
	}
	else {
		ul = new Element('ul');
		ul.addClass('FFButtonWrap');
		if(this.options.center == true)
		{
			ul.setStyles({
			    'position' : 'relative',
			    left: '50%'
			});
		}
		ul.inject(this.element, 'before');
	}

	var li = new Element('li');
	li.inject(ul);
	if(this.options.center == true ||this.element.hasClass('center'))
	{
		li.setStyles({
		    'position' : 'relative',
		    right: '50%'
		});
	}
	this.element.inject(li);
	this.li = li;
	this.ul = ul;
	this.hrefURL = this.element.get('href');
	
	this.element.addEvent('enable', function(e) {
		this.EnableButton();
	} .bind(this));
	this.element.addEvent('disable', function(e) {
		this.DisableButton();
	} .bind(this));

	 //Check disable or not
	 if (this.element.hasClass('disabled')) {
	  this.DisableButton();
	 }else{
	  this.EnableButton();
	 }


},
EnableButton: function() {
	this.li.addEvent('mouseover', function(e) {
		new Event(e).stop();
		this.MouseOver();
	} .bind(this));
	this.li.addEvent('mouseout', function(e) {
		new Event(e).stop();
		this.MouseOut();
	} .bind(this));
	this.li.addEvent('mousedown', function(e) {
		new Event(e).stop();
		this.MouseDown();
	} .bind(this));
	this.li.addEvent('mouseup', function(e) {
		new Event(e).stop();
		this.MouseUp();
	} .bind(this));
	this.element.set('href', this.hrefURL);
	this.li.removeClass('disabled');
	this.element.removeClass('disabled');
},

DisableButton: function() {
	this.li.removeEvents('mouseover');
	this.li.removeEvents('mouseout');
	this.li.removeEvents('mousedown');
	this.li.removeEvents('mouseup');
	this.element.removeProperty('href');
	this.li.addClass('disabled');
},
clearClass: function() {
	this.li.removeClass('mouseovered');
	this.li.removeClass('pushed');
},
MouseOver: function() {
	this.clearClass();
	this.li.addClass('mouseovered');
},
MouseOut: function() {
	this.clearClass();
},
MouseDown: function() {
	this.li.addClass('pushed');
},
MouseUp: function() {
	this.MouseOver();
},
onClick: function() {
	if (this.element.hasClass('disabled')) {
		return;
	}
	this.element.fireEvent('click');
	if (null !== this.element.getProperty('href')) {
		window.location.href = this.element.getProperty('href');
	}
}

});

SButton = new Class({
	Implements: [Options, Events],
	options: {
		onButtonClick: $empty
	},
	
	initialize: function(el,checkvalue,options) {
		this.setOptions(options);
	
		this.element = el;
		this.checkvalue = checkvalue;
		this.initializeButtons();
	},
	
	initializeButtons: function() {
        if(this.checkvalue != " ")
		{
		  this.element.removeClass('disabled');
		}
		this.element.addEvent('enable', function(e) {
			this.EnableButton();
		} .bind(this));
		this.element.addEvent('disable', function(e) {
			this.DisableButton();
		} .bind(this));
	
		//Check disable or not
		if (this.element.hasClass('disabled')) {
			this.DisableButton();
		}else{
			this.EnableButton();
		}
	},
	EnableButton: function() {
		if(this.enalbed == true)
		{
			return;
		}

		this.element.addEvent('mouseover', function(e) {
			new Event(e).stop();
			this.MouseOver();
		} .bind(this));
		this.element.addEvent('mouseout', function(e) {
			new Event(e).stop();
			this.MouseOut();
		} .bind(this));
		this.element.addEvent('mousedown', function(e) {
			new Event(e).stop();
			this.MouseDown();
		} .bind(this));
		this.element.addEvent('mouseup', function(e) {
			new Event(e).stop();
			this.MouseUp();
		} .bind(this));
		this.element.addEvent('click', function(e) {
			new Event(e).stop();
			this.MouseClick();
		} .bind(this));
		
		this.element.removeClass('disabled');
		this.enalbed = true;
	},
	
	DisableButton: function() {
		if(this.enalbed == false)
		{
			return;
		}

		this.element.removeEvents('mouseover');
		this.element.removeEvents('mouseout');
		this.element.removeEvents('mousedown');
		this.element.removeEvents('mouseup');
		this.element.removeEvents('click');
		this.element.addClass('disabled');
		this.enalbed = false;
	},
	clearClass: function() {
		this.element.removeClass('mouseovered');
		this.element.removeClass('pushed');
	},
	MouseOver: function() {
		this.clearClass();
		this.element.addClass('mouseovered');
	},
	MouseOut: function() {
		this.clearClass();
	},
	MouseDown: function() {
		this.element.addClass('pushed');
	},
	MouseUp: function() {
		this.MouseOver();
	},

	MouseClick: function() {
		if (this.element.hasClass('disabled')) {
			return;
		}
		this.fireEvent('onButtonClick');
	}

});


SpinButton = new Class({
    options: {
        Minimum: 1,
        Multiple: 1,
        onValueChanged: $empty,
        overrideable: 'true',
        InitValue:0,
        InitializedWithEnable:" " ///If InitializedWithEnable != " ",spinButton will initialize with value
    },

    initialize: function(ele, options) {
        this.element = ele;
        this.setOptions(options);
        this.value = parseInt(this.options.InitValue);
        this.removeWindowTag =0;
        var inputContainer = ele.getElement('div')
        this.inputEle = inputContainer.getElement('input');
        this.inputEle.set('value', this.value);
        
        this.inputEle.addEvent('blur', function(e) {
			new Event(e).stop();
			
			this.valueChecked();
		} .bind(this));
		
		this.inputEle.addEvent('keydown', function(e) {
			var keynum = e.code;
			var Validate = ((keynum > 36) && (keynum < 41)) || ((keynum > 47) && (keynum < 58)) || ((keynum > 95) && (keynum < 106)) || (keynum == 8) || (keynum==46) || (keynum==110) || (keynum==9) || (keynum==13)
			if(keynum==13)
			{
				window.setTimeout(function(){this.inputEle.focus();this.inputEle.select();}.bind(this),50);
				return;
			}
			if(keynum==38)
			{
				this.increase();
			}
			if(keynum==40)
			{
				if(this.value == 0)
				{
					return false;
				}
				if(this.value >= this.options.Minimum)
				{
					this.decrease();
				}
				else
				{
					this.value = 0;
					this.downButton.DisableButton();
					this.ValueChanged();
				}
				
			}
			if(window.event)
			{
				if(Validate)
				{
					return true;
				}
				else
				{
					return false;
				}
			}
			else // Netscape/Firefox/Opera   
			{   
				if(Validate)
				{
					return true;
				}
				else
				{
					return false;
				}
			}
		}.bind(this));
		
        this.inputEle.addEvent('changevalue', function(e) {
			this.value = parseInt(this.inputEle.get('value'));
			this.setButtonStatus();
		} .bind(this));
		 
        this.spinEle = inputContainer.getNext();
        this.upEle = this.spinEle.getElement('div');
        this.downEle = this.upEle.getNext();        
        this.upButton = new SButton(this.upEle,this.options.InitializedWithEnable,{onButtonClick: (this.increase).bind(this)});
        this.upButton.DisableButton();
        this.upButton.EnableButton();
        this.downButton = new SButton(this.downEle,this.options.InitializedWithEnable, {onButtonClick: (this.decrease).bind(this)}); 
        this.downButton.DisableButton();
        this.downButton.EnableButton();
        if(this.options.InitializedWithEnable == " " || this.value == 0)
        {
			this.downButton.DisableButton();
        }
        else
        {
			
			this.enable();
        }
        this.valueTyped();
    },

    disable: function() {
        this.setQuantity(0);
        this.inputEle.disabled = true;
        this.upButton.DisableButton();
    },

    enable: function() {
        this.inputEle.disabled = false;
        this.setButtonStatus();
    },
    increase: function() {
        if(this.valueTyped())
        {
            return;
        }

        if(this.value == 0)
        {
            this.value = this.options.Minimum;
            this.downButton.EnableButton();
        }
        else
        {
            this.value = this.value + this.options.Multiple;
        }
        this.ValueChanged();
    },

    decrease: function() {
        if(this.valueTyped(true))
        {
            return;
        }
        if(this.value == this.options.Minimum)
        {
            this.value = 0;
            this.downButton.DisableButton();
        }
        else
        {         
            this.value = this.value - this.options.Multiple;
            
        }
        this.ValueChanged();
    },

    setQuantity:function(targetValue){
        targetValue = parseInt(targetValue);
        this.inputEle.set('value', targetValue);

        this.value = targetValue;
        this.setButtonStatus();
    },
    valueChecked: function() {
        var tmpValue = parseInt(this.inputEle.get('value'));
        if(!$chk(tmpValue))
        {
			this.inputEle.set('value',this.value);
			return;
        }

        if(tmpValue == this.value)
        {
            return;
        }

        if(tmpValue % this.options.Multiple != 0 || (tmpValue < this.options.Minimum && tmpValue != 0))
	     {
	       //if it's overridable
	       if(this.options.overrideable == 'true')
	       {
	             this.opeType = "Warning";
                 var confirmStr = "<P><strong>The Quantity must be at least " + this.options.Minimum + " and a multiple of " + this.options.Multiple +".</strong></p>";
                  new ConfirmWindow("Warning",confirmStr, {CancelText: 'Override',
                                                 onConfirm: (this.ConfirmOperation).bind(this),
                                                 onCancel: (this.CancelOperation).bind(this)
                 });  
                
	        }
	        else{
	          alert('The Quantity must be at least ' + this.options.Minimum + ' and a multiple of ' + this.options.Multiple);
	          this.inputEle.focus();
				var currentInput = this.inputEle;
				window.setTimeout(function(){currentInput.focus();currentInput.select();},50);
				return;
	        }
	        //else use alert window
	        return;
	      }
	     else
	     {
	       this.valueTyped();
	     }


    },

	ConfirmOperation:function(){
		this.inputEle.focus();
		var currentInput = this.inputEle;
		window.setTimeout(function(){currentInput.focus();currentInput.select();},50);
		return;
	},

	CancelOperation:function(){
		this.value = parseInt(this.inputEle.get('value'));
		//this.removeWindowTag=1;
		this.inputEle.focus();
		var currentInput = this.inputEle;
		window.setTimeout(function(){currentInput.focus();currentInput.select();},50);
		this.ValueChanged();
    },

    valueTyped: function(decrease) {
        var tmpValue = parseInt(this.inputEle.get('value'));
        if(!$chk(tmpValue))
        {
			this.inputEle.set('value',this.value);
			return;
        }
        var targetValue = this.regularValue(tmpValue,decrease);
        var inputValueChanged = false;
        if(targetValue != tmpValue)
        {
            //Recorrect the input
            this.inputEle.set('value', targetValue);
            inputValueChanged = true;
        }
        if(targetValue != this.value)
        {

            this.value = targetValue;
            this.ValueChanged();
        }

        if(inputValueChanged)
        {
            return true;
        }
        else
        {
            return false;
          
        }
    },

    regularValue: function(oldvalue,decrease) {
        var newvalue = oldvalue;        
        
        if(!$chk(decrease))
        {
            if(0 < oldvalue && oldvalue < this.options.Minimum)
            {
                newvalue = this.options.Minimum;
            }
            else if( oldvalue >this.options.Minimum)
            {
                var tmpValue = (oldvalue - this.options.Minimum) % this.options.Multiple;
                //alert(tmpValue);
                if(tmpValue != 0)
                {
                    newvalue = oldvalue - tmpValue + this.options.Multiple;
                }            
            }
        }
        else
        {
            if(0 < oldvalue && oldvalue < this.options.Minimum)
            {
                newvalue = 0;
            }
            else if( oldvalue >this.options.Minimum)
            {
                var tmpValue = (oldvalue - this.options.Minimum) % this.options.Multiple;
                //alert(tmpValue);
                if(tmpValue != 0)
                {
                    newvalue = oldvalue - tmpValue;
                }            
            }
        }
        return newvalue;
    },

    ValueChanged: function() {
        this.inputEle.set('value', this.value);
        this.setButtonStatus();
        if($chk(this.callBackTimer))
        {
        	$clear(this.callBackTimer);
        }
        this.callBackTimer = ((this.callbackOfValueChanged).bind(this)).delay(300); 
    },
    setButtonStatus: function(){
        if(this.value == 0)
        {  
			this.upButton.EnableButton();          
			this.downButton.DisableButton();
			this.inputEle.setStyle('background-color','#ffffff');
        }
        else if(this.value > 0 )
        {
           this.downButton.EnableButton();
           this.inputEle.setStyle('background-color','#c0e3ff');
        }
    },

    callbackOfValueChanged: function() {
    	this.callBackTimer = null;
    	this.fireEvent('onValueChanged');
    }
});
SpinButton.implement(new Options, new Events);

InlineEditor = new Class({
	Implements: [Options, Events],
	options: {
	    maxLength: 24,
		onChanged: $empty
	},
	
	initialize: function(el, options) {
		this.setOptions(options);
		this.element = el;
		this.element.setStyle('float', 'left');
		this.value = el.get('text').trim();

		var lastele;
		if(el.hasClass('date'))
		{
			this.isCalendar = true;
			//Add Calendar
			this.input = this.element.getNext('input');
			this.inputImageButton = this.input.getNext('input');
			lastele = this.inputImageButton;
		}
		else
		{
			this.input = new Element('input', { 'maxLength':this.options.maxLength ,'class':'InlineEditorInput', 'value':this.value,'size':15});
			this.input.addEvent('keypress',function(e)
			{
				var code = e.code;
				return ((code >= 48 && code <= 57) || (code >= 97 && code <= 122)|| (code >= 65 && code <= 90) || code == 8|| code == 9);
				
			});
			this.input.inject(this.element, 'after');
			lastele = this.input;
		}

		this.editButton = new Element('a', { 'class':'InlineEditorButton', 'text': 'Edit'});
		this.editButton.addEvent('click',function(e){
             new Event(e).stop();
             this.switchToEditor();
        }.bind(this));
        this.editButton.inject(this.element, 'after');

		this.cancelButton = new Element('a', { 'class':'InlineEditorButton', 'text': 'Cancel'});
		this.cancelButton.addEvent('click',function(e){
             new Event(e).stop();
             this.switchToView();
        }.bind(this));
        this.cancelButton.inject(lastele, 'after');

		this.saveButton = new Element('a', { 'class':'InlineEditorButton', 'text': 'Save'});
		this.saveButton.addEvent('click',function(e){
             new Event(e).stop();
             this.contentSaved();
        }.bind(this));
        this.saveButton.inject(lastele, 'after');

        this.switchToView();
	},
	switchToEditor: function() {
		this.value = this.element.get('text').trim();
		this.input.set('value', this.value);

		this.element.setStyle('display', 'none');
		this.editButton.setStyle('display', 'none');

		this.input.setStyle('display', 'block');
		this.cancelButton.setStyle('display', 'block');
		this.saveButton.setStyle('display', 'block');
		if(this.isCalendar)
		{
			this.inputImageButton.setStyle('display', 'block');
		}
	},
	switchToView: function() {
		this.element.setStyle('display', 'block');
		this.editButton.setStyle('display', 'block');

		this.input.setStyle('display', 'none');
		this.cancelButton.setStyle('display', 'none');
		this.saveButton.setStyle('display', 'none');
		if(this.isCalendar)
		{
			this.inputImageButton.setStyle('display', 'none');
		}
	},
	contentSaved: function() {
		var newvalue = this.input.get('value').trim();
		//this.DateChanged(newvalue);
		if(newvalue != this.value && newvalue!="")
		{
			this.value = newvalue;
			this.element.set('text', this.value);
			this.fireEvent('onChanged', this.value);
		}
		this.switchToView();
	}
});

function get_iframe_container(targetif) {
	var saf = navigator.userAgent.match(/Safari/i);
	var safver = (saf ? parseFloat(navigator.userAgent.match(/[\d\.]+Safari/i)) : 0);
	var container;
	
	if (targetif.contentDocument && (!saf || (saf && safver >= 3))) {
			
		// NS6 & Gecko & Opera & IE7+
		if (!saf || (saf && safver >= 3)) {
			if(Browser.Engine.trident && Browser.Engine.version == 5)
			{
				//IE 8
				container = targetif.contentWindow.document.body;
			}
			else{
				container=targetif.contentDocument.defaultView.document.body;
			}
		} else {
			container=targetif.document.body;
		}

	} else if (targetif.contentWindow && !saf) {
		// IE 5.5 & 6.x
		container=targetif.contentWindow.document.body;

	}
	return container;
}

function get_iframe_data(targetif) {
	var container = get_iframe_container(targetif);
	var data = container.innerHTML;

	return(data);
}

window.addEvent('domready', function(){
	$$('.FFButton').each(function(el){
		var Menu = new FFButton(el);
	});
});

/**Real time check for email address wheather it has registed or not**/
EmailCheckForConatct = new Class({
	Implements: [Options, Events],
	options: {
		url:''
},

initialize: function(ele, options) {
		this.ele = ele;
		this.setOptions(options);
		this.ele.addEvent('blur',function(e){
             new Event(e).stop();
             this.EmailCheck();
             
        }.bind(this));
	},
	EmailCheck:function(){ 
		if(this.options.url != '')
		{
			this.url = this.options.url + '&eAddress='+this.ele.value;
		}
		else
		{
			this.url ="../Register/EmailAddressChange.aspx"+ "?eAddress=" + this.ele.value+"&contact=true";
		}
		var jsonRequest = new Request({
			url:this.url,
			onComplete: function(responseText){
				this.EmailResult(responseText);
			}.bind(this)
		}).get();
	},
	EmailResult : function(responseText)
	{
		if(responseText.toString() == "true")
		{
			this.ele.getNext('span').setStyle('display','');
		}
		else if(responseText.toString() == "false")
		{
			this.ele.getNext('span').setStyle('display','none');
		}
	}
})


/*************Winery add contact*********************/

AddContactForWinery = new Class({
	Implements: [Options, Events],
	options: {
		url:''
},

initialize: function(ele, commitType, options) {
		this.ele = ele;
		this.setOptions(options);
		
		this.exValidator = new fValidator(ele.get('id'));
		this.exValidator.register($("ctl00_BodyContent_firstNameTextBox"),{type: "firstName", re: /.*[^ ].*/, msg: "Please enter your First Name." });
		this.exValidator.register($("ctl00_BodyContent_lastNameTextBox"), {type: "lastName", re: /.*[^ ].*/, msg: "Please enter your Last Name." });
		this.exValidator.register($("ctl00_BodyContent_emailTextBox"), {type: "emailAddress",re: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, msg: "Please check your email address. Your email addresses should look like 'myname@yahoo.com'."});
		
		$('btnAddContact').addEvent('click',function(e){
			new Event(e).stop();
			var blValidate = this.exValidator._onSubmit(e);
			if(blValidate == true)
			{
				var blEmailExists = this.EmailCheck();
				if(blEmailExists == "true")
				{
					var strContent = "An account using " + $("ctl00_BodyContent_emailTextBox").value + " has already been registered on onlineorderdesk.";
						strContent += "Would you like to add this account as a contact?";
					new ConfirmWindow("",strContent, 
						{
							ConfirmText: 'OK',
							CancelText:'Cancel',
							onConfirm: function(){
								if(commitType == 1)
								{
									this.SubmitContactForWinery(ele);
								}
								else
								{
									this.SubmitContactForLicensee(ele);
								}
							}.bind(this)
						});
				}
				else
				{
					if(commitType == 1)
					{
						this.SubmitContactForWinery(ele);
					}
					else
					{
						this.SubmitContactForLicensee(ele);
					}
				}
			}
        }.bind(this));
	},
	
	SubmitContactForWinery:function(ele)
	{
		var strFirstName = $('ctl00_BodyContent_firstNameTextBox').value;
		var strLastName = $('ctl00_BodyContent_lastNameTextBox').value;
		var strEmail = $('ctl00_BodyContent_emailTextBox').value;
		var strWinery = $('ctl00_BodyContent_wineryUID').value;
		var strContact = $('ctl00_BodyContent_contactUID').value;

		var strPage = "../Register/WineryContactAdd.aspx";
		var aryUrl = new Array();
		aryUrl.push([ ["type"],[1] ]);
		aryUrl.push([ ["firstName"],[strFirstName] ]);
		aryUrl.push([ ["lastName"],[strLastName] ]);
		aryUrl.push([ ["email"],[strEmail] ]);
		aryUrl.push([ ["wineryUID"],[strWinery] ]);
		aryUrl.push([ ["contactUID"],[strContact] ]);
		var cParam = new CombinePageAndParam(strPage,aryUrl);
		var strUrl = cParam.CombineUrl();
		
		var blExists = AjaxServer.TransToAjaxServer(strUrl);
		window.location.replace("Contacts.aspx");
//		window.alert(blExists);
	},
	
	SubmitContactForLicensee:function(ele)
	{
		var strFirstName = $('ctl00_BodyContent_firstNameTextBox').value;
		var strLastName = $('ctl00_BodyContent_lastNameTextBox').value;
		var strEmail = $('ctl00_BodyContent_emailTextBox').value;
		var strLicensee = $('ctl00_BodyContent_licenseeUID').value;
		var strContact = $('ctl00_BodyContent_contactUID').value;

		var strPage = "../Register/WineryContactAdd.aspx";
		var aryUrl = new Array();
		aryUrl.push([ ["type"],[3] ]);
		aryUrl.push([ ["firstName"],[strFirstName] ]);
		aryUrl.push([ ["lastName"],[strLastName] ]);
		aryUrl.push([ ["email"],[strEmail] ]);
		aryUrl.push([ ["licenseeUID"],[strLicensee] ]);
		aryUrl.push([ ["contactUID"],[strContact] ]);
		var cParam = new CombinePageAndParam(strPage,aryUrl);
		var strUrl = cParam.CombineUrl();
		
		var blExists = AjaxServer.TransToAjaxServer(strUrl);
		window.location.replace("Contacts.aspx");
//		window.alert(blExists);
	},
	
	EmailCheck:function(){ 
		var strFirstName = $('ctl00_BodyContent_firstNameTextBox').value;
		var strLastName = $('ctl00_BodyContent_lastNameTextBox').value;
		var strEmail = $('ctl00_BodyContent_emailTextBox').value;
	
		var strPage = "../Register/WineryContactAdd.aspx";
		var aryUrl = new Array();
		aryUrl.push([ ["type"],[2] ]);
		aryUrl.push([ ["email"],[strEmail] ]);
		var cParam = new CombinePageAndParam(strPage,aryUrl);
		var strUrl = cParam.CombineUrl();
		
		var blExists = AjaxServer.TransToAjaxServer(strUrl);
		return blExists;
	}
})

/****************************************************/

/*************Address Auto Change********************/

AddressSelectorAutoChange = new Class({
	 options: {
			
	},

    initialize: function(countryEle,provinceEle,cityEle,options)
    {
			var hiddenCountryID = $('ctl00_BodyContent_hiddenCountryID');
			var hiddenProvinceID = $('ctl00_BodyContent_hiddenProvinceID');
			var hiddenCityID = $('ctl00_BodyContent_hiddenCityID');
			var isStrCity = $('ctl00_BodyContent_isStrCity');
			var isStrProvince = $('ctl00_BodyContent_isStrProvince');
			
			countryEle.addEvent('change', function(e){
				new Event(e).stop();
				isStrCity.value = "false";
				isStrProvince.value = "false";
				var selectCountryEle=	countryEle;
				this.CountryID = selectCountryEle.get('value');
				var selectCityEle = cityEle;
				var selectProvinceEle =provinceEle;
				hiddenCountryID.value = selectCountryEle.get('value');
				var reqURL = '../Register/GetCityAndProvinceByCountry.aspx?CountryID='+ this.CountryID;
				var opeReq = new Request.JSON({url: reqURL,
											onComplete:function(Data){
											var num = parseInt(Data.numOfItems);
											selectProvinceEle.options.length=0;
											var stateTdEle = selectProvinceEle.getPrevious('span');
											var selectSentence = 'Select a Province/State';
											//var imaskObj=new iMask();
											var textBoxCity = cityEle.getNext('input');
											var textBoxProvince = provinceEle.getNext('input');
											var postCodeEle = selectProvinceEle.getNext('input').getNext('span').getNext('input');
											if(parseInt(this.CountryID) == 37)
											{
												
												stateTdEle.set('text','Province:');
												selectSentence= 'Select a Province';
											}
											else if(parseInt(this.CountryID) == 235)
											{
												stateTdEle.set('text','State:');
												selectSentence= 'Select a State';
												
											}
											else 
											{
												stateTdEle.set('text','Province/State:');
											}
											var defaultobjOption1 = new Option(selectSentence, '');
											selectProvinceEle.options.add(defaultobjOption1);
											selectCityEle.options.length=0;
											var defaultobjOption2 = new Option('Select a City', '');
											selectCityEle.options.add(defaultobjOption2);
											if( num>0 )
											{
												provinceEle.setStyle('display','');
												cityEle.setStyle('display','none');
												textBoxCity.setStyle('display','');
												hiddenCityID.value = "0";
												textBoxProvince.setStyle('display','none');
												isStrCity.value = "true";
												var i = 0;
												for(;i<num;i++)
												{
													 var objOption = new Option(eval("Data.returnValue" + i),eval("Data.returnIDValue" + i));
													 provinceEle.options.add(objOption);
													 
												}
											}
											else
											{
												provinceEle.setStyle('display','none');
												
												textBoxProvince.setStyle('display','');
												
												cityEle.setStyle('display','none');
												textBoxCity.setStyle('display','');
												hiddenCityID.value = "0";
												hiddenProvinceID.value = "0";
												isStrCity.value = "true";
												isStrProvince.value = "true";
												 
											}
										
										}.bind(this)
									}).get();
			    
		}.bind(this));
		
		provinceEle.addEvent('change', function(e){
			new Event(e).stop();
			var selectCityEle = cityEle;
			var selectProvinceEle=	provinceEle;
			isStrCity.value = "false";
			isStrProvince.value = "false";
			hiddenProvinceID.value = selectProvinceEle.get('value');
			this.ProvinceID = selectProvinceEle.get('value');
			var reqURL = '../Register/GetCityAndProvinceByCountry.aspx?ProvinceID='+ this.ProvinceID ;
			var opeReq = new Request.JSON({url: reqURL,
										onComplete:function(Data){
										var num = parseInt(Data.numOfItems);
										selectCityEle.options.length=0;
										var defaultobjOption = new Option('Select a City', '');
										selectCityEle.options.add(defaultobjOption);
										
										var textBoxCity = selectCityEle.getNext('input');
										if( num>0 )
										{	
											selectCityEle.setStyle('display','');
											textBoxCity.setStyle('display','none');
											var i = 0;
											for(;i<num;i++)
											{
												 var objOption = new Option(eval("Data.returnValue" + i),eval("Data.returnIDValue" + i));
												 selectCityEle.options.add(objOption);
											}
											
										}
										else
										{
											selectCityEle.setStyle('display','none');
											textBoxCity.setStyle('display','');
											hiddenCityID.value = "0";
											isStrCity.value = "true";
										}
										
									}.bind(this)
								}).get();
		}.bind(this));
		
		cityEle.addEvent('change', function(e){
			new Event(e).stop();
			hiddenCityID.value = cityEle.get('value');
		}.bind(this));
    }
});
AddressSelectorAutoChange.implement(new Options, new Events);

/*************Check the Licensee number, make sure it is unique********************/

LicenseeNameRealTimeCheck = new Class({
	 options: {
			
	},

    initialize: function(ButtonEle,ValueEle,CurrentUidEle,options)
    {
		this.CurrentUid = CurrentUidEle.get('value');
		this.ValueEle = ValueEle;
		
		ButtonEle.addEvent('click', function(e){
			if(this.RealTimeCheck(ValueEle.get('value')))
			{
				new Event(e).stop();
				return;
			}
		}.bind(this));
		ValueEle.addEvent('blur', function(e){
			this.RealTimeCheck(ValueEle.get('value'));
			new Event(e).stop();
		}.bind(this));
    },
    RealTimeCheck : function(value)
    {
		var errorspan = this.ValueEle.getNext('span');
		var intValue = value;
		if(intValue >999999 || intValue <100 || intValue.length>6)
		{
			errorspan.set('text','Please check your License Number. Your License Number must be a number between 3 to 6 digits.');
			errorspan.setStyle('display','');
			return true;
		}
		
		var data = AjaxServer.TransToAjaxServer('../../Licensee/LicenseeNumberCheck.aspx?LicenseeNumber='+value+'&currentUid='+this.CurrentUid);
		if(data != 'Ready')
		{
			
			errorspan.set('text',data);
			errorspan.setStyle('display','');
			return true;
		}
		else
		{
			
			errorspan.set('text','');
			errorspan.setStyle('display','none');
			return false;
		}
    }
 });
 
 LicenseeNameRealTimeCheck.implement(new Options, new Events);
 
 /************************************If the countory is Canada, need validate the postcode format*************************************************************/
 PostcodeValidation = new Class({
	Implements: [Options, Events],
		options: {					
		},
	initialize: function(ele){
		this.ele = $(ele);
		var FFbuttons = $$('.FFButton');
		FFbuttons.each(function(element,index){
			if(element.get('text') == 'Save')
			{
				this.saveButton = element;
				this.saveUrl = element.getProperty('href');
			}
		}.bind(this));
		this.ele.removeEvents();
		var isNeedValidate = this.ele.getNext('span').get('text');
		if(isNeedValidate == 'true')
		{
			this.AddValidate();
			this.ele.addEvent('keyup',function(e){
			this.ele.value = this.ele.value.toUpperCase();
			}.bind(this));
		}
		else
		{
			this.RemoveValidate();
		}
	},
	AddValidate : function()
	{
		if(!/^[a-zA-Z][0-9][a-zA-Z][ ]?[0-9][a-zA-Z][0-9]$/.test(this.ele.value))
		{
			this.ele.getNext('span').getNext('span').setStyle('display','');
			this.saveButton.addEvent('click',function(e){
				new Event(e).stop();
				return;
			}.bind(this));
		}
		else
		{
			this.saveButton.removeEvents();
			this.ele.getNext('span').getNext('span').setStyle('display','none');
		}
	},
	RemoveValidate : function()
	{
		this.ele.getNext('span').getNext('span').setStyle('display','none');
	}
});

RushOrderOperation = new Class({
	Implements: [Options, Events],
		options: {				
		},
	initialize: function(ele,options){
		this.element =ele; 
		this.checkbox = this.element.getElement("input");
		this.datediv = this.element.getNext("div");
		this.notediv = this.datediv.getNext("div");
		this.parentTR  = this.checkbox.getParent('tr');
		if(this.datediv.getElement('input').get('value') == '')
		{
			var newdate = new Date();
			var newtimems = newdate.getTime() + (2 * 24 * 60 * 60 * 1000);
			newdate.setTime(newtimems);
			this.datediv.getElement('input').set('value',dateFormat(newdate,"mmm dd, yyyy"));
		}
		if(this.checkbox.getParent('span'))
		{
			if(this.checkbox.checked)
			{
				this.datediv.setStyle("display","");
				this.notediv.setStyle("display","");
			}
			this.parentTR.setStyle("display","");
		}
		this.EventInitialize();
	},
	EventInitialize : function()
	{
		this.checkbox.addEvent('click',function(e){
			if(this.checkbox.checked)
			{
				this.datediv.setStyle("display","");
				this.notediv.setStyle("display","");
			}
			else
			{
				this.datediv.setStyle("display","none");
				this.notediv.setStyle("display","none");
			}
		 }.bind(this))
	}
});

WareHouseSelector = new Class({
	Implements: [Options, Events],
		options: {	
			invoice:false,
			isnopayment:'false',
			status:'false'		
		},
	initialize: function(ele,options){
		    this.SysCwUid="14c16894-aeb2-4f5d-84a1-094d83d25ccb";
			this.element =ele; 
			this.setOptions(options);
			this.isrushorder = this.element.getElement('span').getNext('span').get('text');
			this.isnopayment = this.options.isnopayment;
			if(this.isrushorder == "false" || this.options.status == 'true')
			{
				return false;
			}
			this.selector = this.element.getElement('select');
			this.POheader = this.element.getParent('div').getParent('div');
			this.allowrushorder = 'false';
			if(!this.options.invoice)
			{
				this.ControlTable = this.POheader.getNext('div').getElement('div').getNext('div').getNext('table');
				this.RushOrderControl = this.ControlTable.getElement('tbody').getElement('tr').getNext('tr');
				this.POControl = this.RushOrderControl.getNext('tr').getNext('tr').getElement('td').getNext('td').getElement('div');
				this.GenerateNewButtonControl = this.POControl.getElement('div');
				this.GenerateButtonContol = this.POControl.getElement('div').getNext('div');
				
				this.sendparent =  this.POControl.getElement('div').getNext('div').getElement('li');
				this.GenerateButton = this.sendparent.getElement('a');
				this.SendCWButton =  this.POControl.getElement('div').getNext('div').getElement('li').getNext('li').getElement('a');
				this.readyshipbefor = this.POControl.getElement('div').getNext('div').getNext('div').getNext('div').getElement('input');
				this.readyToshipEle = this.readyshipbefor.getNext('input');
				this.allowrushorder = this.RushOrderControl.getElement('div').getLast('span').get('text');
				this.PaymentTable  = this.POheader.getNext('div').getElement('div').getNext('div').getElement('div').getNext('table').getElement('td').getNext('td').getElement('table');
				
				this.PaymentTr = this.PaymentTable.getElement('tbody').getLast('tr');
			}
			else
			{
				this.RushOrderControl =  this.POheader.getNext('div').getLast('table').getElement('tr');
				this.PaymentTable = this.POheader.getNext('div').getElement('div').getNext('table').getElement('td').getNext('td').getElement('table');
				this.PaymentTr = this.PaymentTable.getElement('tbody').getLast('tr');
				this.allowrushorder = this.RushOrderControl.getElement('div').getLast('span').get('text');
				this.cwbottonul = this.RushOrderControl.getNext('tr').getNext('tr').getElement('td').getNext('td').getElement('div').getNext('div').getElement('div').getNext('ul');
				this.SendCWButton =  this.cwbottonul.getElement('li').getElement('a');
				
			}
			this.paymentmethodlabel = this.PaymentTr.getElement('span');
            this.paymentdropdownlist = this.paymentmethodlabel.getNext();
            this.paymentmethod = this.paymentdropdownlist.getNext('span');
            this.rushorderdiv = this.RushOrderControl.getElement('div');
            
            this.warehouseaskagainele=this.selector.getNext('span');
            this.warehouselastchoiceele=this.warehouseaskagainele.getNext('span');
            this.POUID=this.warehouselastchoiceele.getNext('span').get('text');
            this.LicenseeName=this.warehouselastchoiceele.getNext('span').getNext('span').get('text');
            this.isanyinvoice=this.warehouselastchoiceele.getNext('span').getNext('span').getNext('span').get('text');
            
            this.paymethodeaskagainele =  this.paymentdropdownlist.getNext('span').getNext('span');
            this.paymethodlastchoiceele = this.paymethodeaskagainele.getNext('span');
            this.defaultpaymentmethodid=this.paymentdropdownlist.get('value');
        
			if(this.selector)
			{
				this.RushOrderStatusChange();
				
				this.defaultwarehouseid=this.selector.get('value');
				//this.defaultwarehouseid=this.warehouselastchoiceele.getNext('span').getNext('span').getNext('span').getNext('span').get('text');
			    this.selector.addEvent('change',function(e){
						    new Event(e).stop();
						    if(this.isanyinvoice=="false")
						    {
						        if(this.defaultwarehouseid != this.selector.get('value'))
		                        {
		                           this.GetLastChoiceAndDoOperation("Warehouse");
                                    
		                        }
		                    }
						    if(this.allowrushorder == 'false')
						    { 
							    return;
						    }
						    this.RushOrderStatusChange();
						    
					    }.bind(this));
			}
	},
	RushOrderStatusChange : function()
	{   
        this.HidePaymentMethod(); 
         
	    if(this.selector.value == this.SysCwUid)
	    {
		    if(!this.options.invoice)
		    {
			    this.GenerateButton.setStyle('display','none');
			    this.SendCWButton.setStyle('display','');
				this.readyToshipEle.getParent().setStyle('display','none');
			    this.GenerateNewButtonControl.setStyle('display','none');
			    this.GenerateButtonContol.setStyle('display','block');
			   
		    }
			if(this.isnopayment == 'true' && this.paymentdropdownlist.length == 0)
			{
				this.SendCWButton.getParent('li').addClass('disabled');
												
			}
		    this.ShowPaymentMethod();
	    }
	    else
	    {
		    if(!this.options.invoice)
		    {
					if(!this.readyToshipEle.getProperty('checked'))
					{
						this.GenerateNewButtonControl.setStyle('display','block');
						this.GenerateButtonContol.setStyle('display','none');
					}
					this.readyToshipEle.getParent().setStyle('display','');
					this.GenerateButton.setStyle('display','');
					this.SendCWButton.setStyle('display','none');
		    }
		    this.RushOrderControl.setStyle('display','none');
	    }
	},
	ShowPaymentMethod: function()
	{
		  if(this.paymentdropdownlist.length >1 )
	        {
	            this.paymentmethodlabel.setStyle('display','');
	            this.paymentdropdownlist.setStyle('display','');
	            this.paymentdropdownlist.removeEvents();
	            this.paymentdropdownlist.addEvent('change',function(e){
	                 new Event(e).stop();
	                 if(this.isanyinvoice=="false")
					 {
	                    this.ChangePaymentmethod();
	                 }
	            
	            }.bind(this));
	        }
	         if(this.paymentdropdownlist.length == 1 )
	        {
	            this.paymentmethodlabel.setStyle('display','');
	            this.paymentmethod.setStyle('display','');
	        }
	         if(this.paymentdropdownlist.length == 0 )
	        {
	            this.paymentmethod.setStyle('display','');
	        }
		   
	        this.RushOrderControl.setStyle('display','');
	        if(this.rushorderdiv.getElement('input').checked)
	        {
		        this.rushorderdiv.getNext('div').setStyle('display','');
		        this.rushorderdiv.getNext('div').getNext('div').setStyle('display','');
	        }
	},
	HidePaymentMethod : function()
	{
		 this.paymentmethodlabel.setStyle('display','none');
         this.paymentdropdownlist.setStyle('display','none');
         this.paymentmethod.setStyle('display','none');
	},
	ChangePaymentmethod : function()
    {
	    if(this.isanyinvoice=="false")
	    {
            if(this.defaultpaymentmethodid != this.paymentdropdownlist.get('value'))
	        {
	              this.GetLastChoiceAndDoOperation("payment method");
            }
        }
    },
    /// <name>GetLastChoiceAndDoOperation</name>
    /// <summary>
    /// Judge how to do the operation : pop up window or update or do nothing
    /// </summary>
    /// <param name="operationType">warehouse or payment method</param>
    GetLastChoiceAndDoOperation: function (operationType)
    {
        var reqURL = 'SetDefaultWarehouseOrPaymentMethod.aspx?PurchaseOrderUID='+ this.POUID + '&operationType=getwpset&askmeagain=false&ischangedefualt=false&defaultwarehouseid='+this.selector.get('value')+'&methodid=null';
        var opeReq = new Request.JSON({url: reqURL,
            onSuccess:function(data){
                if(operationType=="Warehouse")
                {
                    if(data.warehouseaskagain=="true" && data.warehouselastchoice=="true")
                    {
                        this.UpdateMethod("true","true","Warehouse");                        
                    }
                    else if(data.warehouseaskagain=="false")
                    {
                        this.OpenNewWindow("Warehouse");
                    }
                }
                else
                {
                    if(data.paymethodeaskagain=="true" && data.paymethodlastchoice=="true")
                    { 
                        this.UpdateMethod("true","true","payment method");                        
                    }
                    else if(data.paymethodeaskagain=="false")
                    {
                        this.OpenNewWindow("Payment Method ");
                    }
                }

        }.bind(this)}).send();
    },
    /// <name>OpenNewWindow</name>
    /// <summary>
    /// pop up window when change warehouse or payment method
    /// </summary>
    /// <param name="operationType">warehouse or payment method</param>
    OpenNewWindow : function(operationType)
    {
        var paramName;
        if(operationType=="Warehouse")
        {
            paramName=this.selector.options[this.selector.selectedIndex].text;
        }
        else
        {
            var paysel=this.paymentdropdownlist;
            paramName=paysel.options[paysel.selectedIndex].text;
        }
        new Popupwindow("Update Default "+operationType,createTabel(paramName,this.LicenseeName,operationType),{windowHeight:150,windowWidth:410,footerHeight:80});
       
        var buttondiv = createbuttondiv(operationType);
        var confirmButton = buttondiv.getElement('li');
        var cancelButton=confirmButton.getNext('li');
        var checkbox = buttondiv.getParent('div').getParent('div').getParent('div').getParent('div').getParent('div').getNext('div').getElement('input');

        confirmButton.addEvent('click',function()
        {
            this.UpdateMethod(checkbox.checked,"true",operationType);
        }.bind(this));
        cancelButton.addEvent('click',function()
        {
            this.UpdateMethod(checkbox.checked,"false",operationType);
        }.bind(this));
    },
    /// <name>UpdateMethod</name>
    /// <summary>
    ///  update default warehouse or payment method
    /// </summary>
    /// <param name="askmeagain">whether check 'don't ask me again'</param>
    /// <param name="ischangedefualt">whether update when change</param>
    /// <param name="operationType">warehouse or payment method</param>
    UpdateMethod : function(askmeagain,ischangedefualt,operationType)
    {
        var methodid;
        if(operationType!="Warehouse")
        {
            methodid= this.paymentdropdownlist.get('value');
            operationType = "payment";
        }
        var reqURL = '../Winery/SetDefaultWarehouseOrPaymentMethod.aspx?PurchaseOrderUID='+ this.POUID + '&operationType=' + operationType+'&askmeagain='+askmeagain+'&ischangedefualt='+ischangedefualt+'&defaultwarehouseid='+this.selector.get('value')+'&methodid='+methodid;
        var opeReq = new Request({url: reqURL,
            onSuccess:function(responseText){
                if(responseText == 'success')
                {
                    this.defaultwarehouseid = this.selector.get('value');
                    if(operationType == "Warehouse")
                    {
                        this.warehouseaskagainele.set('text',askmeagain);
                        this.warehouselastchoiceele.set('text',ischangedefualt);
                        this.defaultwarehouseid = this.selector.get('value');
                    }
                    else
                    {
                        this.paymethodeaskagainele.set('text',askmeagain);
                        this.paymethodlastchoiceele.set('text',ischangedefualt);
                        this.defaultpaymentmethodid = methodid;

                    }
                }
                else if(responseText == "notChange")
                {
                    if(operationType == "Warehouse")
                    {
                        this.warehouseaskagainele.set('text',askmeagain);
                        this.warehouselastchoiceele.set('text',ischangedefualt);
                    }
                    else
                    {
                        this.paymethodeaskagainele.set('text',askmeagain);
                        this.paymethodlastchoiceele.set('text',ischangedefualt);
                    }
                }
                closePopWindow();
            }.bind(this)
        }).send();
    } 
});

LdbOrWineryTable = new Class({
	Implements: [Options, Events],
		options: {			
		},
	initialize: function(ele,options){
		this.LdbinformationTD = ele.getElement('td').getNext('td');
		this.shipspan = this.LdbinformationTD.getElement('span').getNext('span');
		this.ShipTomeButton = this.shipspan.getElement('input');
		this.PickUpButton = this.shipspan.getNext('span').getNext('span').getElement('input');
		this.LdbControl = this.shipspan.getNext('div');
		this.LdbStoreSelector = this.LdbControl.getElement('select');
		this.LdbInfoSpan = this.LdbStoreSelector.getNext('span');
		this.ispickup = this.LdbInfoSpan.getNext('span').get('text');
		this.pouid = this.LdbInfoSpan.getNext('span').getNext('span').get('text');
		this.DataInit(this.ispickup);
		this.shippedvalue = this.ShipTomeButton.checked;
		this.pickupvalue = this.PickUpButton.checked;
		this.RemoveAllEvents();
		this.EventsInit();
	},
	RemoveAllEvents : function()
	{
		this.ShipTomeButton.removeEvents();
		this.PickUpButton.removeEvents();
		this.LdbStoreSelector.removeEvents();
	},
	EventsInit : function()
	{
		this.ShipTomeButton.addEvent('click',function()
		{
			if(this.shippedvalue == this.ShipTomeButton.checked)
			{
				return;
			}
			if(this.ShipTomeButton.checked)
			{
				this.LdbControl.setStyle('display','none');
				this.shippedvalue = this.ShipTomeButton.checked;
				this.pickupvalue = this.PickUpButton.checked;
				var url = "../LDBPOOperate/LdbPoOperate.aspx?ispickup=false&pouid="+this.pouid+"&selectplaceid="+this.LdbStoreSelector.get('value');
				this.ValueChanged(url);
			}
			
		}.bind(this));
		this.PickUpButton.addEvent('click',function()
		{
			if(this.pickupvalue == this.PickUpButton.checked)
			{
				return;
			}
			if(this.PickUpButton.checked)
			{
				this.LdbControl.setStyle('display','');
				this.pickupvalue = this.PickUpButton.checked;
				this.shippedvalue = this.ShipTomeButton.checked;
				var url = "../LDBPOOperate/LdbPoOperate.aspx?ispickup=true&pouid="+this.pouid+"&selectplaceid="+this.LdbStoreSelector.get('value');
				this.ValueChanged(url)
			}
			
		}.bind(this));
		this.LdbStoreSelector.addEvent('change',function()
		{
			var url = "../LDBPOOperate/LdbPoOperate.aspx?ispickup=true&pouid="+this.pouid+"&selectplaceid="+this.LdbStoreSelector.get('value');
				this.ValueChanged(url)
		}.bind(this));
		
	},
	ValueChanged : function(url)
	{
		var reqURL = url;
		var jsonRequest = new Request.JSON({
										url: reqURL,
										onComplete: function(data){
											if(data.returnstatus == "true")
											{
												this.LdbInfoSpan.set('html',data.LDBAddress);
											}
										}.bind(this)
							}).get();	
	},
	DataInit : function(ispickup)
	{
		if(ispickup == 'true')
		{
			this.LdbControl.setStyle('display','');
			this.ShipTomeButton.checked = false;
			this.PickUpButton.checked = true;
		}
		else
		{
			this.PickUpButton.checked = false;
			this.ShipTomeButton.checked = true;
			this.LdbControl.setStyle('display','none');
		}
	}
});

WineryPayment = new Class({
	Implements: [Options, Events],
		options: {			
		},
	initialize: function(ele,options){
		this.element = ele;
		this.namespan = this.element.getElement('td').getNext('td');
		this.codespan = this.namespan.getNext('td');
		this.availableselector = this.element.getElement('select');
		this.defaultradio = this.element.getElement('input');
		//this.defaulttext = this.defaultradio.getParent().getNext();
		//this.methodid = this.defaultradio.getParent().getNext().get('text');
		this.EventInit();
	},
	EventInit: function()
	{
		this.availableselector.addEvent('change',function(){
			
		    var odlvalue = this.defaultradio.getParent().getNext().get('value');
			this.ChangeStyle(this.availableselector.get('value'));
			if(this.availableselector.get('value') != 0 &&  odlvalue== 'True')
			{
			    this.SetNewDefualt();
			}
			if(this.availableselector.get('value') == 0)
			{
			    this.ChooseNewDefualt(this.availableselector);
			}
			
		}.bind(this));
		
		this.defaultradio.addEvent('click',function(){
				this.ChangeDefault();
				
		}.bind(this));
	},
	SetNewDefualt : function()
	{
	    var selectors = this.element.getParent('tbody').getElements('select');
	    for(var i=0;i<selectors.length;i++)
	    {
	        var spanele = selectors[i].getParent('td').getNext('td').getElement('span');
		    var radiobutton = spanele.getElement('input');
		    var hiddeninput = spanele.getNext('input');
			if(selectors[i].get('value') == 0)
			{
			    radiobutton.checked = true;
			    hiddeninput.set('value','True');
			    break;
			}
		}
	},
	ChooseNewDefualt : function(ele)
	{
	    var selectors = this.element.getParent('tbody').getElements('select');
	    var hasDefualt = false;
	    for(var i=0;i<selectors.length;i++)
	    {
	        var spanele = selectors[i].getParent('td').getNext('td').getElement('span');
		    var radiobutton = spanele.getElement('input');
		    var hiddeninput = spanele.getNext('input');
	        if(ele == selectors[i])
	        {
	            continue;
	        }
			if(selectors[i].get('value') == 0)
			{
			    hasDefualt = true;
			    break;
			}
		}
		if(!hasDefualt)
		{
		    ele.getParent('td').getNext('td').getElement('span').getElement('input').checked = true;
		    ele.getParent('td').getNext('td').getElement('span').getNext('input').set('value','True');
		}
	},
	ChangeStyle: function(value)
	{
		
		switch(value)
		{
			case "0":
				this.defaultradio.getParent().disabled = false;
				this.defaultradio.disabled = false;
				this.namespan.setStyle('color','#000000');
				this.codespan.setStyle('color','#000000');
			break;
			case "1":
				this.defaultradio.disabled = true;
				this.defaultradio.checked = false;
				this.namespan.setStyle('color','#000000');
				this.codespan.setStyle('color','#000000');
				this.defaultradio.getParent().getNext().set('value','False');
			break;
			case "2":
				this.defaultradio.disabled = true;
				this.defaultradio.checked = false;
				this.namespan.setStyle('color','#AAAAAA');
				this.codespan.setStyle('color','#AAAAAA');
				this.defaultradio.getParent().getNext().set('value','False');
			break;
			default:
			break;
		}
	},
	ChangeDefault: function(id)
	{
		
	}
});

window.addEvent('domready',function()
{
	if($('ctl00_NavigationContent_WineryMenu1_isHiddenMenu') != null)
	{
		var isHidden = $('ctl00_NavigationContent_WineryMenu1_isHiddenMenu').get('value');
		if(isHidden == 'false')
		{
			return;
		}
		var menus = $$('.needhidemenu');
		for(var i=0;i<menus.length;i++)
		{
			menus[i].destroy();
		}
	}
});
function OnDateSelected(sender,args)
{
 if (sender._selectedDate < new Date())
			{
				new Popupwindow('Warning:','<strong>You cannot request a rush order delivery date in the past.</strong>',{ConfirmText:'OK',windowHeight:120});
				sender._selectedDate = new Date(); 
				// set the date back to the current date
				sender._textbox.set_Value(sender._selectedDate.format(sender._format))
			}
}

// Table item selected will add or remove item from <select> tag

TableSelector = new Class({
	Implements: [Options, Events],
	options: {
		
	},

	initialize: function(ele, options) {
		
		var trs  = ele.getElements('tr');
		var defaulttext =ele.getParent().getNext('input');
		var defaultselector =defaulttext.getNext().getNext('select');
		this.olddefaultvalue = defaultselector.get('value');
		
		this.wineryDefault=defaulttext.getNext('input');
		
		defaultselector.addEvent('change',function(){
		defaulttext.set('value',defaultselector.get('value'));
	 });
	
		trs.each(function(element,index){
		if(index != 0)
		{
			var id = element.getElement('td').get('text');
			var checkbox = element.getElement('input');
			var text = element.getElement('td').getNext('td').get('text');
	          checkbox.addEvent('click',function(){
					if(checkbox.checked)
					{
						var hasAlreadyhave = false;
						for(i=0;i<defaultselector.options.length;i++)  
							 {  
								 if(defaultselector.options[i].value == id)  
								 {  
									hasAlreadyhave = true;
								}  
							}
						if(!hasAlreadyhave)
						{
								var opt=new Option(text,id);  
							  defaultselector.options.add(opt);
						}
						if(id==this.wineryDefault.get('value'))
						{
						    var lastoption=defaultselector.options[defaultselector.options.length-1];

                            var afterlastoption=new Option(lastoption.text,lastoption.value);
						    defaultselector.options.add(afterlastoption);
						     for(i=defaultselector.options.length-1;i>0;i--)
						     {
						      defaultselector.options[i].value=defaultselector.options[i-1].value;
						      defaultselector.options[i].text=defaultselector.options[i-1].text;
						     }
						     defaultselector.options[0].value='-1';
						     defaultselector.options[0].text='Use winery default';
						 
						}
						var tempArray = new Array();
						
						for(var i=1;i<defaultselector.options.length;i++)
						{
						    var tempObj =
					        {
					            'value':'',
					            'text':''
					        };
					        
						    tempObj.value = defaultselector.options[i].value;
						    tempObj.text = defaultselector.options[i].text;
						    tempArray.push(tempObj)
						    
						}
						for(var i=0;i<tempArray.length;i++)
						{
						    
						    for(var j=i+1;j<tempArray.length;j++)
						    {
						        var tempObj =
			                    {
			                        'value':'',
			                        'text':''
			                    };
						        if(tempArray[i].text.toLowerCase() > tempArray[j].text.toLowerCase())
						        {
						             
						            tempObj = tempArray[i];
						            tempArray[i] =tempArray[j];
						            tempArray[j] = tempObj; 
						        }
						    }
						}
						defaultselector.options.length =1;
						for(var i=0;i<tempArray.length;i++)
						{
						   
						    defaultselector.options.add(new Option(tempArray[i].text, tempArray[i].value));
						    if(this.olddefaultvalue == tempArray[i].value)
						    {
								defaultselector.options[i+1].selected = true;
						    }
						    
						}
					}
					else
					{
					       
						       for(i=0;i<defaultselector.options.length;i++)  
							   {  
								 if(defaultselector.options[i].value == id)  
								 {  
								    var tempvalue=defaultselector.options[i].value;
								    var tempselect=defaultselector.options[i].selected;
									if(defaultselector.options[i].selected)
									{
										defaulttext.set('value','-1');
									}
									defaultselector.options[i]=null;//¸¶null¼´É¾³ý 
									if(tempvalue == this.wineryDefault.get('value'))
								    {
								        if(tempselect)
									    {
										    defaulttext.set('value','-1');
									    }
									    if(defaultselector.options[0].text=='Use winery default')
									    {
									        defaultselector.options[0]=null; 
									    }
								    }
    
								} 
								
								else
								{
									if(this.olddefaultvalue == defaultselector.options[i].value)
									{
										defaultselector.options[i].selected = true;
									}
								}
							}
					}
	          }.bind(this));
	      }
	    }.bind(this)); 
	}
});

function createTabel(paramName,paramLicensee,strwarehouseorpaymethod)
{
	var paddingpx = "15px";
	if(Browser.Engine.trident)
	{
		paddingpx = "10px";
	}
    var returndiv="<div style='padding-bottom:12px;margin-left:2%;margin-right:10px;width=90%;font-size:13px' align='left' id='messagediv'>Would you like to set <strong>"+paramName+"</strong> as the default "+strwarehouseorpaymethod+" for<strong> "+paramLicensee+"</strong>?</div>";
//    returndiv +="<div id='optionsdiv' style='padding-top:10px;padding-bottom:35px;' align='center'>";
//    returndiv +=" <input type='radio' name='Update' id='IsUpdate' checked=true/> Yes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
//    returndiv +="<input type='radio' name='Update'id='IsNotUpdate' /> No</div>";
//      returndiv+="<div style='padding-bottom:12px;margin-left:2%;width=90%;font-size:13px' align='center' id='messagediv'>Choosing Yes will always update the default"+ strwarehouseorpaymethod +" <br/>for this Licensee with your latest selection, and No will<br/> never change the default"+ strwarehouseorpaymethod+"</div>"
//    returndiv +="<div style='padding-top:"+paddingpx+"'padding-bottom:25px;padding-left:5px;width=90%;' id='checkboxdiv'><input type='checkbox' name='IsAskAgain' id='IsAskAgain' /> Don't ask me again. Choosing Yes will always update the default"+ strwarehouseorpaymethod +" for this Licensee with your latest selection, and No will never change the default"+ strwarehouseorpaymethod+"</div>";
    return returndiv;
}
/*********************************************BCS Comments*********************************************/
    /// <name>createbuttondiv</name>
    /// <summary>
    ///  create button for pop up window when change warehouse or payment method
    /// </summary>
    /// <param name="operationType">warehouse or payment method</param>
/*****************************************************************************************************/
    function createbuttondiv (operationType)
    {
        var divcontainer =$('messagediv');
        var buttonWrapper = new Element('div',{'id':'buttondiv'});
            buttonWrapper.setStyles({
            'text-align': 'center',
            'padding-top':'30px'
        });
        var confirmButton = new Element('a');
        confirmButton.addClass('FFButton');
        confirmButton.inject(buttonWrapper);
        confirmButton.set( 'text', "Yes"); 
        new FFButton(confirmButton,{center: true});
        buttonWrapper.inject(divcontainer,'before');
        
        var cancelButton = new Element('a');
        cancelButton.addClass('FFButton');
        cancelButton.inject(buttonWrapper);
        cancelButton.set( 'text', "No"); 
        new FFButton(cancelButton,{center: true});
        buttonWrapper.inject(divcontainer,'after');
        
        var contentcontainer =$('PopupWindow_contentBorder');
        var footer = new Element('div');
        footer.setStyles({
            'text-align': 'left',
            'height':'50px',
            'padding-top':'3px',
            'padding-left':'10px'
        });
        footer.inject(contentcontainer,'after');
        
        var checkbox =  new Element('input');
        checkbox.setProperty('name','IsAskAgain');
        checkbox.setProperty('id','IsAskAgain');
        checkbox.setProperty('type','checkbox');
        checkbox.inject(footer);
        
        var boxspan =  new Element('span');
        boxspan.setStyles({
            'padding-left':'3px'
        });
        boxspan.set('html',"Don't ask me again");
        boxspan.inject(checkbox,'after');
        
        var messagespan=new Element('div');
        messagespan.setStyles({
            'padding-left':'14px'
        });
        var message="Choosing Yes will always update the default "+ operationType +" for this Licensee with your latest selection, and No will never change the default "+ operationType;
        messagespan.set('html',message);
        messagespan.inject(footer);
        
        confirmButton.setStyle('width','50px');
        cancelButton.setStyle('width','50px');
        
        return buttonWrapper;
    } 


