/** Setting up some variables to be used as alerts later **/
var SizeMsg_NoSelect = "Please select a size for this product";
var PkgMsg_NoSelect = "Please select a packaging option for this product";
var EmbMsg_NoSelect = "Personalization text was entered, but personalization was not selected.\n \nPlease select \"Yes\" for personalization, or erase the text in the personalization field.";
var EmbMsg_NoText = "Personalization has been selected, but no text was entered.\n \nPlease enter your personalization message, or select \"No\" for personalization.";
var AvailMsg_NoAvail = "Sorry - Currently Unavailable";

function add_check_embroidery_handlers(){
	/** Adds check_form_embroidery() handlers to order forms **/
	var i,fld,f=null;
	/** Get form **/
	for(i=0;i<document.forms.length;i++){
		f=document.forms[i];
		/** Debug: alert ( 'name:' +f.name + "\nmethod:" +f.method + "\naction:" +f.action); **/
		/** Grab the first form **/
		if(typeof f.method!='string')continue; /** handle JS violation **/
		if(f.method.search(/post/i)!=-1 && f.action.search(/\/order.store.yahoo.(com|net)\//i)!=-1){
			/** Debug: alert('adding check_form_embroidery() handler to form ' + i); **/
			/** Add handler to this form **/
			f.onsubmit=check_form_embroidery;
		}
	}
}

function check_section_embroidery(selectFld,textFld,embYes,embNo,strLen){
	/** Checks specified section of embroidery **/
	/** Returns true if embroidery OK. **/
	if(embYes&&!strLen){
		alert(EmbMsg_NoText);
		if(textFld!=null){
			textFld.focus();
			textFld.select();
		}
		/** Do not submit **/
		return false;
	}else if(embNo&&strLen){
		alert(EmbMsg_NoSelect);
		if(textFld!=null){
			textFld.focus();
			textFld.select();
		}
		// selectFld.focus();
		/** Do not submit **/
		return false;
	}
	return true;
}

function check_form_embroidery(){
	/** Debug alert ( 'check_form_embroidery()'); **/
	/** Submit handler for order forms **/
	if(typeof this.elements=='undefined'){alert("Warning: embroidery could not be checked because of the form elements are not defined; proceeding anyway.");return true}//invalid form elements array
	if(typeof this.elements.length!='number'){alert("Warning: embroidery could not be checked because of a form elements length error; proceeding anyway.");return true}//invalid form elements array
	if(this==null){alert("Warning: embroidery could not be checked because the form could not be found; proceeding anyway.");return true}//no embroidery to check
	/** Find each embroidery yes/no select field, and the inscription field which immediately follows **/
	var embYes=false,embNo=false,str='',strLen,lastPersTrigger='';
	var selectFld=null,textFld=null;
	for(var i=0;i<this.elements.length;i++){
		fld=this[i];
		if (!fld.disabled) {
		    /** Debug:alert(i+fld.type+fld.name); **/
		    if(fld.type=='hidden'){
		        if(fld.name.search(/avail/i)!=-1){
		            if(fld.value.search(/false/i)!=-1){
					    alert(AvailMsg_NoAvail);
					    return false;
		            }
		        }
		    }
		    if(fld.type=='select-one'){
			    /** Is this a size field? **/
			    if(fld.name.search(/Size/i)!=-1){
				    /** Debug:alert(i+fld.type+fld.name); **/
				    selectFld=fld;
				    if(fld.options[fld.selectedIndex].text.search(/select/i)!=-1) {
					    alert(SizeMsg_NoSelect);
					    selectFld.focus();
					    return false;
				    }
			    }

			    /** Is this a packaging field? **/
			    if(fld.name.search(/Gift Packaging/i)!=-1){
				    /** Debug:alert(i+fld.type+fld.name); **/
				    selectFld=fld;
				    if(fld.options[fld.selectedIndex].text.search(/select/i)!=-1) {
					    alert(PkgMsg_NoSelect);
					    selectFld.focus();
					    return false;
				    }
			    }

			    /** End of embroidery section? **/
    		    if(fld.name.search(/^select embroidery style/i) != -1) {
	                // this is a style reference, so don't do anything....   
			    } else if (fld.name.search(/personalization|personalize|embroidery/i) == -1) {
				    /** Now out of embroidery section; check previous section **/
				    strLen=(str.search(/\S/)!=-1);
				    if ( !check_section_embroidery(selectFld,textFld,embYes,embNo,strLen) ) 
				        return false;

				    /** Reset flags for next section **/
				    embYes=false;
				    embNo=false;
				    str='';
				    selectFld=null;
				    textFld=null;
			    } else {
				    if(fld.name.search(/^personalize|(\b(add|cub|twin|elf)\b)/i) != -1) {
    				    /** Embroidery select:set emb if it's the "add/dont-add" trigger **/
    	
					    /** Debug:alert(fld.options[fld.selectedIndex].text); **/
					    /** For focusing later **/
					    selectFld=fld;
                        
				        // check to make sure we're not in a new personalization block
				        if ((embYes || embNo) && (lastPersTrigger.length) > 0 && (fld.name != lastPersTrigger)) {
				            lastPersTrigger = fld.name;
                    	    strLen=(str.search(/\S/)!=-1);
        				    if ( !check_section_embroidery(selectFld,textFld,embYes,embNo,strLen) ) 
		        		        return false;
		        		    textFld = null;
				        }

                        // it can only be one or the other
    				    embYes=false;
	    			    embNo=false;
	    			    str='';
					    if(fld.options[fld.selectedIndex].text.search(/yes\b/i)!=-1) {
						    embYes=true;
					    } else if(fld.options[fld.selectedIndex].text.search(/no/i)!=-1) {
						    embNo=true;
				        }
    				    
				        if (embYes || embNo)
				            lastPersTrigger = fld.name;
				    } 
			    }
    		} else if(embYes || embNo) {
	    		/** Check text fields for embroidery userdata **/
		    	if(fld.type=='text'&&fld.name.search(/^vw-inscription-/)!=-1) {
			    	/** Embroidery text field **/
				    str+=fld.value;
				    /** For focusing later **/
				    if(textFld==null) {
				        if (embYes && fld.value.search(/\S/) == -1)
				            textFld=fld;
				        if (embNo && fld.value.search(/\S/) != -1)
				            textFld=fld;
			    	}
		    	}
	    	}
    	}
	}
	
	/** Check last section **/
	strLen=(str.search(/\S/)!=-1);
	if ( !check_section_embroidery(selectFld,textFld,embYes,embNo,strLen) ) return false;
	return true;//ok to submit
}

add_check_embroidery_handlers();

