
/********************************** Roll Over Image Preloading functions ********************************/
var arrImageRollovers = new Array();

function rolloverOnImages()
{
	var imagesToRollOver = getElementsByClassName("RollOverImage","img",document);
	if(imagesToRollOver !=null)
	{
		for(var i=0;i<imagesToRollOver.length;i++)
		{
			var imgSimple = new Image();			
			imgSimple.src = imagesToRollOver[i].src;// get original css
			
			var imgOver = new Image();		
			imgOver.src = getOverImageSrc(imgSimple.src);
			
			var imgOverObject = new Object();
			
			imgOverObject.imgSimple = imgSimple;
			imgOverObject.imgOver = imgOver;
			// save the object to the array, note the keys are the opposite to other source
			arrImageRollovers[imgOverObject.imgSimple.src] = imgOverObject;
			arrImageRollovers[imgOverObject.imgOver.src] = imgOverObject;

			// attach events to image element
			addEvent(imagesToRollOver[i],'mouseover',rollOverMouseOver,false);
			addEvent(imagesToRollOver[i],'mouseout',rollOverMouseOut,false);

		}
	}
	

}
function cleanHTMLtags(str,removeSpaces)
{
   	var newStr = ''+str;
   	if(removeSpaces==true)
   	{
   		newStr = newStr.replace(/&nbsp;/gi,'');// remove whitespace
   		newStr = newStr.replace(/\n/gi,'');// trim \n
   		newStr = newStr.replace(/\t/gi,'');// trim \t
    	newStr = newStr.replace(/ /gi,'');// trim
	}
   	newStr = newStr.replace(/&(lt|gt);/gi,function(strMatch,p1){return (p1=="lt")?"<":">";});
   	var strTagStripped = newStr.replace(/<\/?[^>]+(>|$)/g,"");
   	return strTagStripped ;

}

function getElementsByClassName(cls, tag, node) {
	var i, j, re, elm, elms, ismatch;
	var results = new Array();
	if (!document.getElementsByTagName) return results;
	// check type and validity of cls param
	if (typeof cls == 'string') cls = cls.split(' ');
	if (cls.length == 0) return results;
	// covert array of classnames to array of regexp objects matching classnames
	// doing this allows RegExp objects to be created just once
	for (i=0; i<cls.length; i++) {
		cls[i] = new RegExp('(^| )'+cls[i]+'( |$)');
	}
	// grab all the elements in node of type tag
	if (tag == null) tag = '*';
	elms = (tag == '*' && document.all) ? document.all : node.getElementsByTagName(tag); // IE5 does not like getElementsByTagName('*')
	// find matching elements
	for (i=0; elm=elms[i]; i++) {
		for (j=0; re=cls[j]; j++) {
			ismatch = true;
			if (!re.test(elm.className)) {
				ismatch = false;
				break;
			}
		}
		if (ismatch) results[results.length] = elm; // no Array.push in IE5
	}
	return results;
}

function getTarget(event)
{
	if(isDefined(event.target))
	{
		return event.target;
	}
	else
	{
		return event.srcElement;
	}
	
}
function rollOverMouseOver(event)
{
	
	var preloadedImageObject = getPreloadedImageObject(event);
	var imageToRollOver = getTarget(event);
	// call over source function
	
	rollOver(imageToRollOver,preloadedImageObject,true);	
}

function rollOverMouseOut(event)
{
	
	var preloadedImageObject = getPreloadedImageObject(event);
	var imageToRollOver = getTarget(event);
	// call over source function
	rollOver(imageToRollOver,preloadedImageObject,false);	
	
}
function rollOver(imageToRollOver,preloadedImageObject,isMouseIn)
{

	// perform rollover from preloaded image
	if(imageToRollOver!=null && preloadedImageObject!=null)
	{
		var newSource;
		if(isMouseIn)
		{
			newSource = preloadedImageObject.imgOver.src;
		}
		else
		{
			newSource = preloadedImageObject.imgSimple.src
		}
		if((''+imageToRollOver.src).toLowerCase()!=newSource.toLowerCase())
		{
			
			// replace the source
			if(isMouseIn)
			{
				imageToRollOver.src = preloadedImageObject.imgOver.src;
			}
			else
			{
				imageToRollOver.src = preloadedImageObject.imgSimple.src;
			}
		}
		//setReturnValue(event,false);
	}
}
function getImageToRollOver(event)
{
	return getTarget(event);
}
function getPreloadedImageObject(event)
{
	var eventTarget = getTarget(event);
	if(eventTarget !=null)
	{
		if(arrImageRollovers !=null)
		{
			var preloadedImageObject = arrImageRollovers[eventTarget.src];
			if(isDefined(preloadedImageObject))
			{
				return preloadedImageObject;
			}
		}
	}
	
	// not found 
	return null;
}
function getOverImageSrc(imageSrc)
{
	var splittedImageSrc = imageSrc.split('.');
	if(splittedImageSrc !=null && splittedImageSrc.length>=2)
	{
		// loop and add the parts 
		var newImageUrl = splittedImageSrc[0];// the first part
		for(var i=1;i<=splittedImageSrc.length-2;i++)
		{
			newImageUrl = newImageUrl + "." + splittedImageSrc[i];
		}
		// take the last one and add the suffix to it with the extension
		return newImageUrl +'_o.'+splittedImageSrc[splittedImageSrc.length-1];
	}
	return imageSrc;// on error return original image source
}

function addEvent(element,eventName,eventFunction,allowBubble)
{       
        if(isDefined(element.attachEvent)==true)
        {
            element.attachEvent('on'+eventName,eventFunction);        
        }
        else
        {
             element.addEventListener(eventName,eventFunction,allowBubble);
        }        
}

function removeEvent(element,eventName,eventFunction,allowBubble)
{       
        if(isDefined(element.attachEvent)==true)
        {
            element.removeEvent('on'+eventName,eventFunction);
        }
        else
        {
             element.removeEventListener(eventName,eventFunction,allowBubble);
        }        
}

function isDefined(attribute)
{
    return typeof(attribute)!="undefined";
}

function showFlash(event)
{
	showHideElement(SampleDiv,true);
	showHideElement(SampleDivDisplay,false);
	showHideElement(SampleDivHide,true);
}
function hideFlash(event)
{
	showHideElement(SampleDiv,false);
	showHideElement(SampleDivDisplay,true);
	showHideElement(SampleDivHide,false);
}

function showHideElement(element,isShow)
{
	if(element!=null)
	{
		if(isShow)
		{
			element.style.display = '';
		}
		else
		{
			element.style.display = 'none';
		}
		
	}
}


function hideEmptyElementsByClass()
{

	var hideWhenEmptyElements = getElementsByClassName("hideWhenEmpty","*",document); 
	if(hideWhenEmptyElements !=null)
	{
	    for(var i=0;i<hideWhenEmptyElements.length;i++)
		{
			var textData = hideWhenEmptyElements[i].innerHTML;
	                textData = cleanHTMLtags(textData,true);
	                if(textData.length==0)
	                {
	                    hideWhenEmptyElements[i].style.display = 'none';
	                }
	                //alert(textData)
	                //alert(cleanHTMLtags(textData,true));
		}
	}
}
function IsValidCalOnlineUser(sender, args)
{
	var val = ValidatorGetValue(sender.controltovalidate);
	if(ValidatorTrim(val).length==0) { //empty
		args.IsValid = false;
	//	document.getElementById(sender.controltovalidate).style.border = "solid 2px red";
		return;
	}
	var re = new RegExp("^[a-zA-Z0-9]{8}$");
	var match = re.exec(val);
	if (match!=null && match[0]==val)
	{
		args.IsValid = true;
	//	document.getElementById(sender.controltovalidate).style.border = "inset 2px #fff";
	}
	else
	{
		args.IsValid = false;
	//	document.getElementById(sender.controltovalidate).style.border = "solid 2px red";
	}
}
function IsValidCalOnlinePassword(sender, args)
{
	var val = ValidatorGetValue(sender.controltovalidate);
	if(ValidatorTrim(val).length==0) { //empty
		args.IsValid = false;
	//	document.getElementById(sender.controltovalidate).style.border = "solid 2px red";
	}
	else
	{
		args.IsValid = true;
	//	document.getElementById(sender.controltovalidate).style.border = "inset 2px #fff";
	}
}
