function valid_email(mailStr){
	var matchStr=mailStr;
	var isValid = (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(matchStr));
	
	if(isValid){
		return true;
	}
	else{
		return false;
	}
}
function trim(str) {
	return str.replace(/^\s*|\s*$/g,"");
}

function isName(obj) {
    var str = obj.value;
	var re = /^[a-zA-Z.]+([ ]*[a-zA-Z.]+)*$/;
    str = str.toString( );
    	
	/*if(!rejectName(str)) {
		return false;	
	}*/
	
	if(str.toLowerCase()=="asdf") {
		return false;	
	}
	
	if (!str.match(re)) {
        return false;
    }
	r2=new RegExp("[AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz]+"); 
	return(r2.test(str));
		
    return true;
}

function validateAlphabet(obj) {
		var objRegExp  =  /^[a-zA-Z-\. ]+$/; 
		 var flag = objRegExp.test(obj.value);
		
		 if(obj.value != "" && !flag)
		 {
			 alert("Please enter alphabets only");
			 obj.value = "";
			 obj.focus();
			 return false;
		 }
		else {
			return true;
		}
}

function validateAlphaNumeric(obj) {
		var objRegExp  =  /^[a-zA-Z0-9-\s]+$/; 
		 var flag = objRegExp.test(obj.value);
		
		 if(obj.value != "" && !flag)
		 {
			 alert("Please enter alphabets only");
			 obj.value = "";
			 obj.focus();
			 return false;
		 }
		else {
			return true;
		}
}

function validateANSpecial(obj) {
		var objRegExp  =  /^[a-zA-Z0-9-\s\"\#\&\,]+$/; 
		 var flag = objRegExp.test(obj.value);
		
		 if(obj.value != "" && !flag)
		 {
			 alert("Please enter alphabets only");
			 obj.value = "";
			 obj.focus();
			 return false;
		 }
		else {
			return true;
		}
}

function isNotEmpty(elem) {
    var str = elem.value;
    var re = /^[a-zA-Z0-9]+([-_\/ ]?[a-zA-Z0-9]*)*$/;
    if(!str.match(re)) {
        return false;
    } else {
        return true;
    }
}

function valid_email(mailStr){
	var matchStr=mailStr;
	var isValid = (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(matchStr));
	
	if(isValid){
		return true;
	}
	else{
		return false;
	}
}

function  validateNumeric(strValue) {
	 var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; 
	 var flag = objRegExp.test(strValue.value);
	 
	 if(strValue.value != "" && !flag)
	 {
		 alert("Please enter numerical value");
		 strValue.value = "";
		 strValue.focus();
	  	 return false;
	 }
	else {
		return true;
	}
		
}

function checkMax(obj)
{
	var limit=500;
	if(obj.value.length >=limit)
	{
		obj.value=obj.value.substring(0,limit-1);
		alert("Enter upto 500 characters only");
		return false;
	}
	else {
		return true;
	}
}
String.prototype.ucfirst = function()
{
	var str = this;
	var firstChar;
	var secondChar;
	var thirdChar;
	var finalStr ="";
	var initialChar = str.charAt(0).toUpperCase();
	
	for(var i = 1; i < str.length; i++)
	{
		var firstChar = str.charAt(i);
		if((firstChar == ",") || (firstChar == ".") || (firstChar == " "))
		{
			if(str.charAt(i+1) == " "){
				secondChar = str.charAt(i+1);
				var thirdChar = (str.charAt(i+2)).toUpperCase();
				firstChar = firstChar + secondChar + thirdChar;
				i=i+2;
			}
			else {
				var secondChar = (str.charAt(i+1)).toUpperCase();
				firstChar = firstChar + secondChar;
				i = i+1;
			}
		}
		finalStr=finalStr + firstChar; 
	}
	   return initialChar + finalStr;
};

 //////////////////////////////////// Testimonial Code Starts ////////////////////////////////////
// XML parser
var xmlhttp;
function showTestimonial()
 {
	 
 if (document.getElementById('PopupMasterContainer').style.display == 'none')
	 {
		document.getElementById('PopupMasterContainer').style.display = 'block' 
	 }
	else if (document.getElementById('PopupMasterContainer').style.display == 'block')
	 {
		document.getElementById('PopupMasterContainer').style.display = 'none' 
	 } 
 }
 
function parseTesti()
{

//document.getElementById('PopupMasterContainer').style.display = 'block' 

xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for Firefox, Opera, IE7, etc.
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }  
 if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",'../testimonial/testimonial.xml',true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
  }
function state_Change()
{
if (xmlhttp.readyState==4)
  {
  if (xmlhttp.status==200)
    {
    //alert(xmlhttp.responseText);
	x=xmlhttp.responseXML.documentElement.getElementsByTagName("testimonial");
	xLen = x.length;
		for ( i = 0 ; i < xLen ; i++)
		{		 
		 var randomnumber=Math.floor(Math.random()* parseInt(xLen)); 		
		 }
		  var xx = x[randomnumber].getElementsByTagName("contentbrief");
		  var xy = x[randomnumber].getElementsByTagName("writer");
		  var xxValue = xx[0].firstChild.nodeValue;
		  var xyValue = xy[0].firstChild.nodeValue;
		// document.getElementById('PopupContent').innerHTML = xxValue;
		document.getElementById('itsTestimony').innerHTML = xxValue;
		document.getElementById('itsCustomer').innerHTML = xyValue;
		//alert(xx[0].childNodes[1].childNodes[0].nodeValue);
		
    }
  else
    {
    alert("Problem retrieving data:" + xmlhttp.statusText);
    }
  }
}

//sardalyaDrag/
/** 
 * Constant 
 * Includes constant definitions used throughout the API.	
 */
var Constant={
	Mouse:{
		DRAG:0,
		RESIZE:1,
		DOWN:3
	},
	Key:{
		DOWN:2
	},
	NodeType:{TEXT:3},
	NOT_INITED:-1
};

/** 
 * Dimension 
 * Creates a two-dimensional entity.
 */
_this = Dimension.prototype;
function Dimension(x,y){
	this._x=x;
	this._y=y;
}
_this.getX=function(){
	return this._x;
};
_this.setX=function(x){
	this._x=x;
};
_this.getY=function(){
	return this._y;
};
_this.setY=function(y){
	this._y=y;
};
_this.equals=function(anotherDimension){
	return this.getX()==anotherDimension.getX()&&this.getY()==anotherDimension.getY();
};
_this.toString=function(){
	return "("+this.getX()+","+this.getY()+")";
};

/** 
 * Constraint 
 * Hold two "Dimension" objects to be used as upper bounds
 * and lower bounds.
 */
_this=Constraint.prototype;
function Constraint(intMinLower,intMinUpper,intMaxLower,intMaxUpper){
	this._lowerBound=new Dimension(intMinLower,intMinUpper);
	this._upperBound=new Dimension(intMaxLower,intMaxUpper);
}
_this.getUpperBound=function(){
	return this._upperBound;
};
_this.getLowerBound=function(){
	return this._lowerBound;
};

/** 
 * Array 
 * Additional prototype methods for Array object.
 * Some of them are unnecessary since Array object
 * already supports them.
 * It will be removed in further versions of the API.
 */
_this=Array.prototype;
if(!_this.push){
	_this.push=function(){
		for(var i=0;i<arguments.length;i++)
			this[this.length]=arguments[i];
		return this.length;
	};
}
if(!_this.pop){
	_this.pop=function(){
		var lastElement=this[this.length-1];
		this.length=Math.max(this.length-1,0);
		return lastElement;
	};
}
if(!_this.copy){
	_this.copy=function(){
		var arcopy=new Array();
		for (var i=0;i<this.length;i++)
			arcopy[i]=this[i];
		return arcopy;
	};
}
if(!_this.indexOf){
	_this.indexOf=function(elm){
		for(var i=0;i<this.length;i++)
			if(elm==this[i])
				return i;
		return -1;
	};
}
if(!_this.contains){
	_this.contains=function(elm){
		return this.indexOf(elm)!=-1;
	};
}

/** 
 * Validator 
 * Basically used for html form validations.
 */
_this=Validator.prototype;
function Validator(){}
_this.isDefined=function(x){
	return typeof(x)!="undefined";
};	
_this.isEmpty=function(x){
	if(!this.isDefined(x))
		return false;
	if(this.isNumeric(x))
		return false;
	if(x=="")
		return true;
	return false;
};
_this.isEmail=function(x){
	if(!this.isDefined(x))
		return false;
	return /^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/ig.test(x);
};
_this.isWhiteSpace=function(x){
	if(!this.isDefined(x)) 
		return false;
	return /^\s*$/.test(x);
};
_this.isInteger=function(x){
	if(!this.isDefined(x))
		return false;
	x=(""+x).replace(/\.0*$/g,"");
	var intNumber=parseInt(x);
	if(!isNaN(intNumber)){
		x=x.remove(/^0*/);
		if(x=="")x=0;
	}
	intNumber=parseInt(x);
	if((!isNaN(intNumber))&&((""+intNumber)==x))
		return true;
	return false;
};
_this.isFloat=function(x){
	if(!this.isDefined(x))
		return false;
	x=(""+x).replace(/,/g,".");
	return x!=""&&!isNaN(x);
};
_this.isNumeric=function(x){
	return this.isFloat(x);
};
_this.isString=function(x){
	if(!this.isDefined(x))
		return false;
	return typeof(x)=="string";
};
_this.isDate=function(intYear,intMonth,intDay){
	if(!this.isDefined(intYear)||!this.isDefined(intMonth)||!this.isDefined(intDay)||
			this.isEmpty(intYear)||this.isEmpty(intMonth)||this.isEmpty(intDay))
		return false;
	var arMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if((parseInt(intYear)%4==0&&parseInt(intYear)%100!=0)||parseInt(intYear%400)==0)
		arMonth[1]=29;
	else 
		arMonth[1]=28;
	var intMaxDay=arMonth[parseInt(intMonth)-1];
	if(parseInt(intDay)>intMaxDay)
		return false;return true;
};
_this.isPositive=function(x){
	if(!this.isNumeric(x))
		return false;
	return parseFloat(x)>=0;
};
_this.isPositiveStrict=function(x){
	if(!this.isNumeric(x))
		return false;
	return parseFloat(x)>0;
};
_this.isNegative=function(x){
	if(!this.isNumeric(x))
		return false;
	return parseFloat(x)<=0;
};
_this.isNegativeStrict=function(x){
	if(!this.isNumeric(x))
		return false;
	return parseFloat(x)<0;
};

/** 
 * String 
 * Additional String prototype methods.
 */
_this=String.prototype;
_this.trim=function(blnIgnoreCarriage,blnIgnoreInnerWhiteSpace){
	var temp=this.replace(/^\s*/,"");
	temp=temp.replace(/\s*$/,"");
	blnIgnoreCarriage=blnIgnoreCarriage?true:false;
	blnIgnoreInnerWhiteSpace=blnIgnoreInnerWhiteSpace?true:false;
	if(blnIgnoreCarriage&&blnIgnoreInnerWhiteSpace)
		;
	else if(blnIgnoreCarriage&&!blnIgnoreInnerWhiteSpace){
		temp=temp.replace(/\t+/g," ");
		temp=temp.replace(/ +/g," ");
	}
	else if(!blnIgnoreCarriage&&blnIgnoreInnerWhiteSpace)
		temp=temp.replace(/(\r\n|\n\r|\n|\r)+/g,"");
	else if(!blnIgnoreCarriage&&!blnIgnoreInnerWhiteSpace)
		temp=temp.replace(/\s+/g," ");
	if(temp==" ")temp="";
	return temp;
};
_this.remove=function(varRegExp,strOption){
	var regEx;
	if(new Validator().isString(varRegExp))
		regEx=new RegExp(varRegExp,strOption?strOption:"g");
	else regEx=varRegExp;	
	return this.replace(regEx,"");
};
_this.removeTags=function(){
	return this.replace(/<[\/]?([a-zA-Z0-9]+)[^>^<]*>/ig,"");
};

/** 
 * CBObject 
 * Wraps document.getElementById and
 * provides an additional object check.
 * It accepts the object itself or its DHTML index
 * as per the paremeter to the constructor.
 */
_this=CBObject.prototype;
function CBObject(elmID){
	this._val=new Validator();
	this._obj=this._getObject(elmID);
}
_this.exists=function(){
	return this.getObject()!=null;
};
_this.getObject=function(){
	return this._obj;
};
_this.getID=function(){
	if(this.exists())
		return this.getObject().id;
	else return null;
};
_this._getObject=function(elmID){
	if(!this._val.isString(elmID))
		return elmID;
	else return document.getElementById(elmID);
};

/** 
 * CoookieManager 
 * Sets/gets cookies.
 */
_this=CookieManager.prototype;
function CookieManager(){}
_this.set=function(strName,strValue,intDays){
	var strExpires="",dtDate=new Date();
	if(!new Validator().isDefined(document.cookie))
		return;
	if(intDays){
		dtDate.setTime(dtDate.getTime()+(intDays*24*60*60*1000));
		strExpires="; expires="+dtDate.toGMTString();
	}
	else 
		strExpires="";
	document.cookie=strName+"="+strValue+strExpires+"; path=/";
};
_this.get=function(strName){
	if(!document.cookie)
		return null;
	var strSeek=strName+"=",strCookie="",aryCookie=document.cookie.split(";");
	for(var i=0;i<aryCookie.length;i++){
		strCookie=aryCookie[i];
		while(strCookie.charAt(0)==" ")
			strCookie=strCookie.substring(1,strCookie.length);
		if(strCookie.indexOf(strSeek)==0)
			return strCookie.substring(strSeek.length, strCookie.length);
	}
	return null;
};

/** 
 * StyleManager 
 * Sets/gets/remembers styles/stylesheets.
 */
_this=StyleManager.prototype;
function StyleManager(){
	this._cm=new CookieManager();
	this._val=new Validator();
}
_this.getStyle=function(elmID,cssProperty,cssPropertyExtended){
	var obj=new CBObject(elmID).getObject();
	if(!this.sanityCheck(obj,cssProperty))
		return null;
	if(obj.currentStyle)
		return obj.currentStyle[cssProperty];
	if(window.getComputedStyle)
		return window.getComputedStyle(obj,"").getPropertyValue(cssPropertyExtended);
	if(this._val.isDefined(obj.style))
		return eval("obj.style."+cssProperty);
};
_this.setStyle=function(elmID,cssProperty,value){
	var obj=new CBObject(elmID).getObject();
	if(!this.sanityCheck(obj,cssProperty))
		return;
	eval("obj.style."+cssProperty+"='"+value+"';");
};
_this.setClass=function(elmID,cssClass){
	new CBObject(elmID).getObject().className=cssClass;
};
_this.getClass=function(elmID){
	return new CBObject(elmID).getObject().className;
};
_this.activateAlternateStyleSheet=function(strTitle){
	var objLink=null;
	for(var i=0;true;i++){
		if(!document.getElementsByTagName("link")[i])
			break;
		objLink=document.getElementsByTagName("link")[i];
		if(objLink.getAttribute("rel").indexOf("style")!=-1&&objLink.getAttribute("title"))
			objLink.disabled=true;
		if(objLink.getAttribute("title")==strTitle)
			objLink.disabled=false;
	}
};
_this.remember=function(strTitle){
	this._cm.set("alternateCSS",strTitle,14);
};
_this.recall=function(){
	var strTitle=this._cm.get("alternateCSS");
	if(strTitle)
		this.activateAlternateStyleSheet(strTitle);
};
_this.sanityCheck=function(obj,cssProperty){
	return new Validator().isDefined(eval("obj.style."+cssProperty));
};

/** 
 * EventRegistry 
 * A registry for the event handler, which enables
 * automatic detachment of events on window unload.
 */
_this=EventRegistry.prototype;
var g_arEvent=new Array();
function EventRegistry(){}
_this.add=function(objEventModel){
	g_arEvent.push(objEventModel);
};
_this.removeAll=function(){
	while(g_arEvent.length>0)
		g_arEvent.pop().unregister();
};
document.eventRegistry=new EventRegistry();

/** 
 * EventModel 
 * A helper object that is used for transportation of
 * events from EvenHandler to EventRegistry.
 */
_this=EventModel.prototype;
function EventModel(elmID,strEventType,fncEventListener,objEventHandler){
	this._elmID=elmID;
	this._strEventType=strEventType;
	this._fncEventListener=fncEventListener;
	this._eh=objEventHandler;
}
_this.unregister=function(){
	this._eh.removeEventListener(this._elmID,this._strEventType,this._fncEventListener);
};

/** 
 * EventHandler 
 * Enables cross-browser attachment of events.
 */
_this=EventHandler.prototype;
document.getProperSourceFromEvent=function(evt,blnDragLayer){
	var e=evt?evt:window.event,src=e.srcElement?e.srcElement:(e.target?e.target:null),
		tag="",
		v=new Validator();
	if(blnDragLayer&&src.tagName){
		tag=src.tagName.toLowerCase();	
		if(tag=="textarea"||tag=="input")
			return null;
		while(true){
			if(src.id){
				for(i=0;i<g_arDragIgnoreID.length;i++)
					if(src.id==g_arDragIgnoreID[i])
						return null;
				if(g_arDraggableLayer[src.id])
					return src;
			}
			if(src.parentNode)
				src=src.parentNode;
			else 
				return null;
			if(!src.tagName)
				return null;
			if(!v.isDefined(src.tagName)||src.tagName=="")
				break;
		}
	}
	return src;
};
function EventHandler(){
	this._val=new Validator();
	this._reg=document.eventRegistry;
	this.addEventListener(window,"unload",this._unregister,true);
}
_this.addEventListener=function(elmID,strEventType,fncEventListener,blnBypassRegistry){
	var v=this._val,
		obj=v.isString(elmID)?new CBObject(elmID).getObject():elmID;
	if(!obj)
		return;
	strEventType=strEventType.toLowerCase();
	if(v.isDefined(obj.addEventListener))
		obj.addEventListener(strEventType,fncEventListener,false);
	else if(v.isDefined(obj.attachEvent))
		obj.attachEvent("on"+strEventType,fncEventListener);
	else 
		alert("ERROR: unknown event-listener!");

	if(!blnBypassRegistry&&typeof(this._reg)!="undefined"&&this._reg)
		this._reg.add(new EventModel(elmID,strEventType,fncEventListener,this));
};
_this.getProperSourceFromEvent=function(evt,blnDragLayer){
	return document.getProperSourceFromEvent(evt,blnDragLayer);
};
_this.removeEventListener=function(elmID,strEventType,fncEventListener){
	var v=this._val,obj=v.isString(elmID)?new CBObject(elmID).getObject():elmID;
	if(!obj)
		return;
	strEventType=strEventType.toLowerCase();
	if(obj.removeEventListener)
		obj.removeEventListener(strEventType,fncEventListener,false);
	else if(obj.detachEvent)
		obj.detachEvent("on"+strEventType,fncEventListener);
	else alert("ERROR: event cannot be detached!");
};
_this._unregister=function(){
	if(document.eventRegistry)document.eventRegistry.removeAll();
};

/** 
 * CursorTracker 
 * Tracks the cursor coordinates.
 * Especially used for getting drag&drop coordinates.
 */
_this=CursorTracker.prototype;
function CursorTracker(){
	this._handler=new EventHandler();this._construct();
}
_this.getCursorPosition=function(){
	return document._cursorCoordinates;
};
_this.destruct=function(){
	this._handler.removeEventListener(document,"mousemove",this._getCursorPosition,false);
};
_this.toString=function(){
	return document._cursorCoordinates;
};
_this._construct=function(){
	this._handler.addEventListener(document,"mousemove",this._getCursorPosition,false);
};
_this._getCursorPosition=function(evt){
	var posx=0,
		posy=0,
		topOffset=0,
		leftOffset=0,
		e=evt?evt:window.event;
	if(e.pageX||e.pageY){
		posx=e.pageX;
		posy=e.pageY;
	}
	else if(e.clientX||e.clientY){
		if(document.documentElement){
			if(new Validator().isDefined(document.body.scrollLeft)){
				leftOffset=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
				topOffset=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
			}
			else{
				leftOffset=document.documentElement.scrollLeft;
				topOffset=document.documentElement.scrollTop;
			}
			posx=e.clientX+leftOffset;
			posy=e.clientY+topOffset;
		}
		else{
			posx=e.clientX+document.body.scrollLeft;
			posy=e.clientY+document.body.scrollTop;
		}
	}
	if(!document._cursorCoordinates){
		document._cursorCoordinates=new Dimension(posx, posy);
	}
	else{
		document._cursorCoordinates.setX(posx);
		document._cursorCoordinates.setY(posy);
	}
};

/** 
 * LayerObject
 * Wrapper for a DHTML Layer.
 */
LayerObject.prototype=new CBObject();
_this=LayerObject.prototype;
function LayerObject(elmID){
	this._obj=new CBObject(elmID).getObject();
	this._sm=new StyleManager();
}
_this.setStyle=function(strSelector,strValue){
	var obj=null;
	if(!(obj=this.getObject()))
		return;
	this._sm.setStyle(obj,strSelector,strValue);
};
_this.getStyle=function(strSelector,strSelectorExtended){
	var obj=null;
	if(!(obj=this.getObject()))
		return;
	return this._sm.getStyle(obj,strSelector,strSelectorExtended);
};
_this.isVisible=function(){
	return this.getStyle("visibility","visibility")=="visible"&&this.getStyle("display","display")!="none";
};
_this.show=function(){
	this.setStyle("visibility","visible");
};
_this.hide=function(){
//	this.setStyle("visibility","hidden");
this.setStyle("display","none");
};
_this.collapse=function(){
	this.setStyle("display","none");
};
_this.expand=function(){
	this.setStyle("display","block");
};
_this.changeContent=function(strNewHTML){
	var obj=null;
	if(!(obj=this.getObject()))
		return;
	if(obj.innerHTML)
		obj.innerHTML=strNewHTML;
};
_this.addContentBefore=function(strHTML){
	var obj=null;
	if(!(obj=this.getObject()))
		return;
	if(obj.innerHTML)
		this.changeContent(strHTML+obj.innerHTML);
};
_this.addContentAfter=function(strHTML){
	var obj=null;
	if(!(obj=this.getObject()))
		return;
	if(obj.innerHTML)
		this.changeContent(obj.innerHTML+strHTML);
};

/** 
 * DynamicLayer
 * Adds some functionality to LayerObject.
 */
DynamicLayer.prototype=new LayerObject();
_this=DynamicLayer.prototype;
function DynamicLayer(elmID){
	this._obj=new CBObject(elmID).getObject();
	this._val=new Validator();
}
_this.moveTo=function(intLeft,intTop){
	this.setLeft(intLeft);this.setTop(intTop);
};
_this.resizeTo=function(intWidth,intHeight){
	this.setWidth(intWidth);
	this.setHeight(intHeight);
};
_this.getLeft=function(){
	var intLeft=parseInt(this.getStyle("left","left"));
	return this._val.isNumeric(intLeft)?intLeft:0;
};
_this.setLeft=function(intLeft){
	this.setStyle("left",intLeft+"px");
};
_this.getTop=function(){
	var intTop=parseInt(this.getStyle("top","top"));
	return this._val.isNumeric(intTop)?intTop:0;
};
_this.setTop=function(intTop){
	this.setStyle("top",intTop+"px");
};
_this.getHeight=function(){
	var obj=null,
		v=this._val;
	if(!(obj=this.getObject()))
		return 0;
	if(v.isDefined(obj.offsetHeight))
		return obj.offsetHeight;
	return 0;
};
_this.setHeight=function(intHeight){
	var obj=null,
		v=this._val,
		intDifference=0,
		intCssHeight=0;
	if(!(obj=this.getObject()))
		return;
	if(v.isDefined(obj.offsetHeight)){
		this.setStyle("height",intHeight+"px");
		intDifference=(obj.offsetHeight-intHeight);
	}
	if(!v.isNumeric(intDifference))
		intDifference=0;
	intCssHeight=intHeight-intDifference;
	if(!v.isPositive(intCssHeight))
		return;
	this.setStyle("height",intCssHeight+"px");
};
_this.getWidth=function(){
	var obj=null,
		v=this._val;
	if(!(obj=this.getObject()))
		return 0;
	if(v.isDefined(obj.offsetWidth))
		return obj.offsetWidth;
	return 0;
};
_this.setWidth=function(intWidth){
	var obj=null,
		v=this._val,
		intDifference=0,
		intCssWidth=0;
	if(!(obj=this.getObject()))
		return;
	if(v.isDefined(obj.offsetWidth)){
		this.setStyle("width",intWidth+"px");
		intDifference=(obj.offsetWidth-intWidth);
	}
	if(!v.isNumeric(intDifference))
		intDifference=0;
	intCssWidth=intWidth-intDifference;
	if(!v.isPositive(intCssWidth))return;
	this.setStyle("width",intCssWidth+"px");
};

/** 
 * DraggableLayer 
 * Creates a layer that you can drag & resize.
 * The layer should either be relatively or absolutely
 * positioned to be draggable.
 */
var g_currentAction=-1,
	g_blnDragStrict=false,
	g_currentKeyState=-1,
	g_currentMouseState=-1,
	g_dragActiveElement=null,
	g_dragBeginCoord=null,
	g_dragLT=null,
	g_dragWH=null,
	g_dragCursor=null,
	g_blnDragConstructed=false,
	g_arDraggableLayer=new Array(),
	g_arDragIgnoreID=new Array(),
	g_arDragID=new Array(),
	g_arDragConstraint=new Array(),
	g_arDragConstraintResize=new Array(),
	g_arDragAction=new Array();
DraggableLayer.prototype=new DynamicLayer();
_this=DraggableLayer.prototype;
function DraggableLayer(elmID,constraintMove,constraintResize,blnNoResize){
	this._eh=new EventHandler();
	this._obj=new CBObject(elmID).getObject();
	g_arDragAction[this.getID()]=Constant.NOT_INITED;
	if(!g_dragCursor)
		g_dragCursor=new CursorTracker();
	if(constraintMove)
		g_arDragConstraint[this.getID()]=constraintMove;
	if(constraintResize)
		g_arDragConstraintResize[this.getID()]=constraintResize;
	if(blnNoResize)
		g_arDragConstraintResize[this.getID()]=new Constraint(this.getWidth(),this.getHeight(),this.getWidth(),this.getHeight());
	this.ACT_DRAG=Constant.Mouse.DRAG;
	this.ACT_RESIZE=Constant.Mouse.RESIZE;
	this.KEY_DOWN=Constant.Key.DOWN;
	this.MOUSE_DOWN=Constant.Mouse.DOWN;
	this.STATE_NOT_INITED=Constant.NOT_INITED;
	this._construct();
}
_this.ignoreLayer=function(strID){
	g_arDragIgnoreID[g_arDragIgnoreID.length]=strID;
};
_this.fixToDragMode=function(){
	this._changeAction(Constant.Mouse.DRAG);
};
_this.fixToResizeMode=function(){
	this._changeAction(Constant.Mouse.RESIZE);
};
_this.releaseFixes=function(){
	this._changeAction(Constant.NOT_INITED);
};
_this._construct=function(){
	var eh=this._eh,
		objSelf=this.getObject();	
	if(!objSelf){
		alert("ERROR!\nObject reference not found : DraggableLayer:_construct");
		return;
	}
	if(this.exists()&&objSelf.id){
		g_arDraggableLayer[objSelf.id]=this;g_arDragID[g_arDragID.length]=objSelf.id;
		if(!g_blnDragConstructed){
			eh.addEventListener(document,"keydown",this._onKeyDown);
			eh.addEventListener(document,"mousedown",this._onMouseDown);
			eh.addEventListener(document,"mouseup",this._onMouseUp);
			eh.addEventListener(document,"mousemove",this._onMouseMove);
			this.strictMode();
		}
	}
	else{
		g_blnDragConstructed=false;
		return;
	}
	g_blnDragConstructed=true;
};
_this._mousedownMoz=function(evt){
	var obj=document.getProperSourceFromEvent(evt);
	if(obj&&obj.tagName.toLowerCase()=="input")
		return true;	
	return false;
};
_this.strictMode=function(){
	g_blnDragStrict=true;
	document.onmousedown=this._mousedownMoz;
};
_this.quirksMode=function(){
	g_blnDragStrict=false;
	document.onmousedown=null;
};
_this._onKeyDown=function(evt){
	var e=window.event?window.event:evt;
	if(e){
		var v=new Validator();
		var intCode=v.isDefined(e.keyCode)?e.keyCode:e.which;
		/*ctrl, alt, tab*/
		if(intCode==17||intCode==18||intCode==9)
			return;
	}
	if(g_currentKeyState!=Constant.Key.DOWN){
		_lyr=new DynamicLayer(g_dragActiveElement);
		if(_lyr.exists){
			if(g_dragCursor.getCursorPosition()){
				g_dragBeginCoord=new Dimension(g_dragCursor.getCursorPosition().getX(),g_dragCursor.getCursorPosition().getY());
				g_dragLT=new Dimension(_lyr.getLeft(),_lyr.getTop());
				g_dragWH=new Dimension(_lyr.getWidth(),_lyr.getHeight());
			}
		}
	}
	g_currentKeyState=Constant.Key.DOWN;
};
_this._onMouseDown=function(evt){
	var eh=new EventHandler(),
		intMaxIndex=0,
		objLayer=null,
		vld = new Validator(),
		src=eh.getProperSourceFromEvent(evt, true),
		_lyr=new DynamicLayer(src);
	g_currentMouseState=Constant.Mouse.DOWN;
	if(!_lyr.exists())
		return false;
	g_dragActiveElement=src;
	if(!(strID=src.id))
		return false;
	if(_lyr.getStyle("zIndex","z-index")!=null){
		for(var i=0;i<g_arDragID.length;i++){
			objLayer=g_arDraggableLayer[g_arDragID[i]];
			var zIndex=objLayer.getStyle("zIndex","z-index");
			if(!vld.isInteger(zIndex)||parseInt(zIndex)<1)
				objLayer.setStyle("zIndex",1);
			intMaxIndex=Math.max(intMaxIndex,objLayer.getStyle("zIndex","z-index"));
		}
		if(_lyr.getStyle("zIndex","z-index")<=intMaxIndex)
			_lyr.setStyle("zIndex",intMaxIndex+1);
	}
	if(g_dragCursor.getCursorPosition())
		g_dragBeginCoord=new Dimension(g_dragCursor.getCursorPosition().getX(),g_dragCursor.getCursorPosition().getY());
	g_dragLT=new Dimension(_lyr.getLeft(),_lyr.getTop());
	g_dragWH=new Dimension(_lyr.getWidth(),_lyr.getHeight());
	return false;
};
_this._onMouseUp=function(evt){
	g_currentMouseState=Constant.NOT_INITED;
	g_currentAction=Constant.NOT_INITED;
	g_currentKeyState=Constant.NOT_INITED;
	g_dragBeginCoord=null;
	g_dragLT=null;
	g_dragWH=null;
	g_dragActiveElement=null;
};
_this._onMouseMove=function(evt){
	var eh=new EventHandler(),
		_lyr=new DynamicLayer(eh.getProperSourceFromEvent(evt,true)),
		src=g_dragActiveElement,
		_lyr=new DynamicLayer(src),
		_lyrCursor=new DynamicLayer(eh.getProperSourceFromEvent(evt,true)),
		registeredAction=g_arDragAction[_lyr.getID()],
		cons=null,
		intMinTop,
		intMinLeft,
		intMaxTop,
		intMaxLeft,
		intCurrentLeft,
		intCurrentTop,
		blnInHorizontalRange,
		blnInVerticalRange,
		left,
		top,
		intCurrentWidth,
		intCurrentHeight,
		blnWidthInRange,
		blnHeightRange,
		width,
		height;
	if(registeredAction!=Constant.NOT_INITED)
		g_currentAction=registeredAction;
	else 
		g_currentAction=(g_currentKeyState==Constant.Key.DOWN)?Constant.Mouse.RESIZE:Constant.Mouse.DRAG;
	if(g_currentAction==Constant.Mouse.DRAG)
		_lyr.setStyle("cursor","move");
	else if(g_currentAction == Constant.Mouse.RESIZE)
		_lyr.setStyle("cursor","se-resize");
	else 
		_lyrCursor.setStyle("cursor","default");
	if(g_currentMouseState!=Constant.Mouse.DOWN||(!g_dragLT))
		return !g_blnDragStrict;
	if(!g_dragCursor.getCursorPosition())
		return false;
	if(!_lyr.exists())
		return false;
	for(var i=0;i<g_arDragIgnoreID.length;i++)
		if(g_arDragIgnoreID[i]==_lyr.getID())
		return false;
	if(g_currentAction==Constant.Mouse.DRAG ){
		if(!g_dragCursor.getCursorPosition())
			return false;
		left=g_dragLT.getX()+g_dragCursor.getCursorPosition().getX()-g_dragBeginCoord.getX();
		top=g_dragLT.getY()+g_dragCursor.getCursorPosition().getY()-g_dragBeginCoord.getY();
		if(cons=g_arDragConstraint[_lyr.getID()]){
			intMinTop=cons.getLowerBound().getX();
			intMinLeft=cons.getLowerBound().getY();
			intMaxTop=cons.getUpperBound().getX();
			intMaxLeft=cons.getUpperBound().getY();
			intCurrentLeft=_lyr.getLeft();
			intCurrentTop=_lyr.getTop();
			blnInHorizontalRange =(intCurrentLeft>=intMinLeft && intCurrentLeft<=intMaxLeft);
			blnInVerticalRange =(intCurrentTop>=intMinTop&&intCurrentTop<=intMaxTop);		
			if(blnInHorizontalRange&&!blnInVerticalRange){
				if(intCurrentTop<=intMinTop)
					top=intMinTop;
				else if(intCurrentTop>=intMaxTop)
					top=intMaxTop;
			}
			else if(!blnInHorizontalRange&&blnInVerticalRange){
				if(intCurrentLeft<=intMinLeft)
					left=intMinLeft;
				else if(intCurrentLeft>=intMaxLeft)
					left=intMaxLeft;
			}
			else if(!blnInHorizontalRange&&!blnInVerticalRange){
				if(intCurrentTop<=intMinTop)
					top=intMinTop;
				else if(intCurrentTop>=intMaxTop)
					top=intMaxTop;
				if(intCurrentLeft<=intMinLeft)
					left=intMinLeft;
				else if(intCurrentLeft>=intMaxLeft)
					left=intMaxLeft;
			}
			else if(blnInHorizontalRange && blnInVerticalRange){
				if((left>=intMinLeft&&left<=intMaxLeft))
					_lyr.setLeft(left);
				if((top>=intMinTop&&top<=intMaxTop))
					_lyr.setTop(top);
				return false;
			}
		}
		_lyr.setLeft(left);
		_lyr.setTop(top);
	}
	else{
		width=g_dragWH.getX()+g_dragCursor.getCursorPosition().getX()-g_dragBeginCoord.getX();
		height=g_dragWH.getY()+g_dragCursor.getCursorPosition().getY()-g_dragBeginCoord.getY();
		width=(width<=10)?10:width;
		height=(height<=10)?10:height;
		if(cons=g_arDragConstraintResize[_lyr.getID()]){
			intMaxWidth=cons.getUpperBound().getX();
			intMaxHeight=cons.getUpperBound().getY();
			intMinWidth=cons.getLowerBound().getX();
			intMinHeight=cons.getLowerBound().getY();
			intCurrentWidth=_lyr.getWidth();
			intCurrentHeight=_lyr.getHeight();
			blnWidthInRange=(intCurrentWidth>=intMinWidth&&intCurrentWidth<=intMaxWidth);
			blnHeightRange=(intCurrentHeight>=intMinHeight&&intCurrentHeight<=intMaxHeight);
			width=g_dragWH.getX()+g_dragCursor.getCursorPosition().getX()-g_dragBeginCoord.getX();
			height=g_dragWH.getY()+g_dragCursor.getCursorPosition().getY()-g_dragBeginCoord.getY();
			if(blnWidthInRange&&!blnHeightRange){
				if(intCurrentHeight<=intMinHeight)
					height=intMinHeight;
				else if(intCurrentHeight>=intMaxHeight)
					height=intMaxHeight;
			}
			else if(!blnWidthInRange && blnHeightRange){
				if(intCurrentWidth<=intMinWidth)
					width=intMinWidth;
				else if(intCurrentWidth>=intMaxWidth)
					width=intMaxWidth;
			}
			else if(!blnWidthInRange&&!blnHeightRange){
				if(intCurrentHeight<=intMinHeight)
					height=intMinHeight;
				else if(intCurrentHeight>=intMaxHeight)
					height=intMaxHeight;
				if(intCurrentWidth<=intMinWidth)
					width=intMinWidth;
				else if(intCurrentWidth>=intMaxWidth)
					width=intMaxWidth;
			}
			else if(blnWidthInRange&&blnHeightRange){
				if((width>=intMinWidth&&width<=intMaxWidth))
					_lyr.setWidth(width);
				if((height>=intMinHeight&&height<=intMaxHeight))
					_lyr.setHeight(height);	
				return false;
			}
		}
		_lyr.setWidth(width);
		_lyr.setHeight(height);
	}
	return false;
};
_this._changeAction=function(strAction){
	g_arDragAction[this.getID()]=strAction;
};
///DOMManager/
/**
 * DOMManager
 * Includes several DOM utility functions.
 */
/*var _this=DOMManager.prototype;
function DOMManager() {}
_this.hideCombos = function() {
	var arCombo = document.getElementsByTagName("select");
	for(var i=0;i<arCombo.length;i++) {
		arCombo[i].style.visibility="hidden";
	}
}
_this.showCombos = function() {
	var arCombo = document.getElementsByTagName("select");
	for(var i=0;i<arCombo.length;i++) {
		arCombo[i].style.visibility="inherit";
	}
}*/
///XHRequest/
/**
 * XHRequest
 * Wraps and XMLHTTPRequest object in a cross-browser manner.
 */
_this = XHRequest.prototype;
function XHRequest(){}
_this.getObject = function() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
		alert("XML HTTP Request support cannot be found!");
		return null;
	}
}
////PopupLayer.js/
/**
 * class PopupLayer extends DynamicLayer 
 */

//Check for single quote in the address fields
function checkSingleQuote(obj) {
	var val = obj.value;
	var re = /\'/;
	if(re.test(val)) {
		var sg = val.indexOf("\'");
		obj.value = val.replace("\'","");
		alert("Single quote is not allowed");
		return false;
	}
}

function validatePrice(obj) {
	 var objRegExp  =  /^[\d*\.\,]*$/; 
	 var flag = objRegExp.test(obj.value);
	 
	 if(obj.value != "" && !flag)
	 {
		 alert("Please enter numerical value");
		 obj.value = "";
		 obj.focus();
	  	 return false;
	 }
	else {
		return true;
	}
}
