/**
 * Prototype method for trimming a String
 * @return
 */
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

Decor = {};
/**
 * @param elem
 * @return
 */
Decor.DecorElement = function(elementName,elementId,elementCls,isImgReq,isMandatory){
	this.elementName = elementName;
	this.elementId = elementId;	 
	this.elementCls = elementCls;
	this.isImgReq=isImgReq;
	this.elOb = document.getElementById(elementId);
	Decor.addEvent(this.elOb,"focus",decorEvtOnFocus);	
//	this.elOb.onfocus=decorEvtOnFocus;
	if(isMandatory!=null && isMandatory){
		Decor.addEvent(this.elOb,"blur",decorEvtOnBlur);
//		this.elOb.onblur=decorEvtOnBlur;
		Decor.addEvent(this.elOb,"blur",validateWgt);
//		this.elOb.onblur=validateWgt;
		Decor.addEvent(this.elOb,"keyup",validateWgt);
//		this.elOb.onkeyup=validateWgt;
	}else{
		Decor.addEvent(this.elOb,"keyup",clearwgt);	
		Decor.addEvent(this.elOb,"blur",clearwgtFocus);
	}
};

/**
 * @param elem
 * @return
 */
function validateWgt(evt){
	var elem=document.all?window.event.srcElement:evt.target;
	var keynum=0;	
	if(window.event){//IE	
		keynum = window.event.keyCode;
	}
	else if(evt.which){//Netscape/Firefox/Opera		
		keynum = evt.which;
	}
	if(keynum!=9){
		var val = elem.value;
		if(val.trim().length == 0){
			Decor.decorateError(elem);
		} else {
			var par = document.getElementById("wgt_"+ elem.id);
			Decor.remCssClass(par, 'ibeError');
		}
	}
};

/**
 * @param evt
 * @return
 */
function clearwgt(evt){
	var elem=document.all?window.event.srcElement:evt.target;
	var val = elem.value;
	if(val.trim().length > 0){
		var par = document.getElementById("wgt_"+ elem.id);
		Decor.remCssClass(par, 'ibeError');
	}
};
/**
 * @param evt
 * @return
 */
function clearwgtFocus(evt){
	var elem=document.all?window.event.srcElement:evt.target;
	var par = document.getElementById("wbx_"+ elem.id);
	Decor.remCssClass(par, 'ibeWidgetBoxFocused');
};
/**
 * @param elem
 * @return
 */
function validateWgtEL(el){
	var val = el.value;
	if(val.trim().length == 0){
		Decor.decorateError(el);
	} else {
		var par = document.getElementById("wgt_"+ el.id);
		Decor.remCssClass(par, 'ibeError');
	}
	if(el.id == "pnrTravelDate"){
		onRetrieveChange('pnrTravelDate');
	}
};
/**
 * @param evt
 * @return
 */
function decorEvtOnFocus(evt){
	var elem=document.all?window.event.srcElement:evt.target;
	var wgt_elm = document.getElementById("wbx_" + elem.id);	
	Decor.addCssClass(wgt_elm,'ibeWidgetBoxFocused');	
};

/**
 * @param elem
 * @return
 */
function decorEvtOnBlur(evt){
	var elem=document.all?window.event.srcElement:evt.target;
	var wgt_elm = document.getElementById("wbx_" + elem.id);	
	Decor.remCssClass(wgt_elm,'ibeWidgetBoxFocused');	
};

/**
 * @param elmObj
 * @param event_name
 * @param func_name
 * @return
 */
Decor.addEvent = function(elmObj,event_name,func_name){	
	if (elmObj.attachEvent){
		elmObj.attachEvent("on"+event_name, func_name);
	}else if(elmObj.addEventListener){
		elmObj.addEventListener(event_name,func_name,true);
	}else{
		elmObj["on"+event_name] = func_name;
	}
}

/**
 * @param elem
 * @param cssCls
 * @return
 */
Decor.addCssClass =  function(elem,cssCls){
	var currCssCls = elem.className;
	if(currCssCls.indexOf(cssCls) <0){
		var newCss = currCssCls + " " + cssCls;
		elem.className = newCss;		
	}
};
/**
 * @param elem
 * @param cssCls
 * @return
 */
Decor.remCssClass = function (elem,cssCls){
	if(elem != null && elem != ""){
	var currCssCls = elem.className;
	var newCss = currCssCls.replace( new RegExp( cssCls, "gi" ), "" );
	elem.className = newCss;
	}
};

/**
 * @param elem
 * @return
 */
Decor.decorateError = function(elem){
  if(elem != null && elem != ""){
	var wgt_elm = document.getElementById("wgt_" + elem.id);
	Decor.addCssClass(wgt_elm,'ibeError');
  }
};

/**
 * @param elems
 * @return
 */
Decor.decorateErrors = function(elems){
  if(elems != null && elems != ""){
	var widIds = elems.split(',');
	if(widIds !=null && widIds.length > 0){
		for(var i=0;i<widIds.length;i++){		
			if(widIds[i]!= "" && document.getElementById(widIds[i])!=null){
				Decor.decorateError(document.getElementById(widIds[i]));
			}
		}
	}
  }
};
/**
 * Function which decorates an element.
 * Properties of the element are set 
 * when the obj is created. * 
 * @param element
 * @return
 */
Decor.addValidationDecor = function (/*Function*/element){
	var elemName = element.elementName;
	var elemId = element.elementId;
	var elemCls = element.elementCls;
	var wgt = document.createElement("div");
	wgt.id = "wgt_"+ elemId;
	wgt.className = "wth_100";
	var wbx = document.createElement("div");
	wbx.id = "wbx_"+ elemId;
	wbx.className = "ibeWidgetBox "+elemCls;
	var decorElem = document.getElementById(elemId);
	var parElem = decorElem.parentNode;
	parElem.removeChild(decorElem);
	wbx.appendChild(decorElem);
	wgt.appendChild(wbx);
	if(element.isImgReq){
		var icn = document.createElement("div");
		icn.id = "icn_"+ elemId;
		icn.className = "ibeValidIcon ibeErrorIcon wth_11";	
		wgt.appendChild(icn);	
	}
	var closeDiv = document.createElement("div");
	closeDiv.className = "clr";
	wgt.appendChild(closeDiv);
	parElem.appendChild(wgt);
};


