/**
*
* ANIMATED CARDS PREV NEXT 
* IMPLEMENTATION OF THE AJAX CLASS/TOOLKIT  [ajax_api.js]

* Implementing AJAX ToolKit
*
*/




/* GLOBAL VARIABLES */
var _nDataArray = new Array();
var _nObjArray = new Array();
var _nFormFieldNames = new Array('size','quick','flloader','bigimagetype','musstr','newbgpath','html_file','embedmusic','newmuspath','music','mus_exclusive','bg','tcolor','tface','tsize','step','Backurl','fla','q1','image','blue_bar','blue_url','redline','greenline','activex_fix','title','message','bg1','flash_details','label','tsize_ori','tcolor_ori','rcpt');
var _nPointer = 0; // points to _nDataArray
var _nCurrent = -1; //  adjusts according to position/ position index
var recInPage = 8; // there are 8 records per XML page
var _loading = false; 
var _isPreloaded = false;
var _pageToRead = ''; 
var _nextPageToRead = '';
var _previewImages = new Array();
var _ImageServerPath = 'http://img.123greetings.com/';
var _ImageServerPath1 = 'http://img.123greetings.com';
var _thumbPath = _ImageServerPath + 'thumbs/';
var _newImagePath = _ImageServerPath + 'eventsnew/';
var showPopUp = false; // preview pop-up flag
var isAnimatedCard = 100;


/*
*
* Get card poisition in the card category
*
*/
function getPosition() {
	return position;
}


/*
* sets the XML page to read
*
*/
function setXMLpage() {
	var pos;	
	var pageNum = 0;
	
	if (_nCurrent == 0) {
		pos = parseInt(getPosition());
		_nCurrent = pos + 1;
	}else {
	    pos = _nCurrent;
		_nPointer = 0;
	}	
	
	// get the page number
	pageNum = Math.ceil(pos/recInPage);	

	// set current index
	_nPointer = recInPage * (pageNum - 1);
	
	// set current page to read
	_pageToRead = 'page' + pageNum + '.xml';

	// check whether there is a new page or not
	if (_pageToRead != _nextPageToRead) {
	    _nextPageToRead = _pageToRead;
		main(true);
	}else {
	    main(false);
	}		 
}

/*
* Function when called displays a dynamically created div with loading message.
*/
function show_loading(){	
	//show loading message text
	if (!_loading) {
		var oDiv = document.createElement('div');
		oDiv.setAttribute('id','loading');
		oDiv.id = 'loading';
		oDiv.style.position = 'absolute';
		oDiv.style.zIndex = '50';		
		oDiv.style.top = 0 + parseInt(document.body.scrollTop); // add top scroll amount		
		oDiv.style.right = 0;
		oDiv.style.height = 15;
		oDiv.style.width = 80;
		oDiv.style.backgroundColor = '#00A8F9';
		oDiv.style.textAlign = 'center';
		oDiv.style.fontFamily = 'verdana, Geneva, Helvetica';
		oDiv.style.fontWeight = 'normal';
		oDiv.style.fontSize = '10';
		oDiv.style.color = '#FFFFFF';
		oDiv.style.borderBottom = 'ridge';		
		oDiv.style.borderLeft = 'ridge';
		oDiv.style.borderColor = '#DBDBDB';
		oDiv.style.borderWidth = 1;
		oDiv.style.visibility = 'visible';
		oDiv.appendChild(document.createTextNode("Loading...."));		
		document.body.insertBefore(oDiv, document.body.childNodes[0]);
		_loading = true;
	}
}
	

/*
*
* Function used to hide the loading message
*
*/
function hide_loading() {		
	// code to hide loading message	
	if (_loading) {	
		document.body.removeChild(document.getElementById('loading'));
		_loading = false;
	}	
}


/*
* function to store data into the array
*/
function insert_to_array(strHtml, pointer) {	
	// code to insert into array
	_nDataArray[pointer] = strHtml;
}


/*
* parse xml nodes from response and builds the html string
*/
function parseXML() {
	// code to parse xml	
	var elmName = 'ecard';
	var xmlDoc = arguments[0].documentElement;	

	if (xmlDoc.hasChildNodes()) {
		xmlElemArray = xmlDoc.getElementsByTagName(elmName);
		xmlElem = xmlElemArray[0];
		for (var j = 0; j < xmlElemArray.length; j++) {			
			xmlElem = xmlElemArray[j];
			var formData = parseXnode(xmlElem);			
			_nObjArray[_nPointer] = formData; //_nPointer index
			
			// stores images in preview array
			_previewImages[_nPointer] = _thumbPath + formData["image"] + '#' + formData["redline"] + '#' + formData["greenline"] + '#' + formData["label"];
			
			//change the form data
			write_form_data();			
			//change extra details
			change_extras();
			// hide loading message
			hide_loading();
			
			_nPointer++; // increment pointer
		}
		// set preview images function
		setPreviewImages(_nCurrent);
	}	
}

// convert an XML element into a JavaScript object
function parseXnode(docElem) {		
	var objArray = [];	
	var JSON = traverse(objArray, docElem);		
	
	//alert(JSON);
	// convert JSON Text String into JSON Object
	JSON = eval('(' + JSON + ')');	

	
	// get some values to perform some other calculation
	var newImagePath = JSON['newimagepath'];
	var flash_detail = JSON['flash_details'];	
	var pTitle = JSON['title'];
	var pImage = JSON['image'];
	var fcolor = JSON['tcolor'];
	var fface = JSON['tface'];
	var fsize = JSON['tsize'];
	var backurl = JSON['Backurl'];
	var mp3;

	if (JSON['flloader']) {
		JSON['flloader'] = unescape(JSON['flloader']);
	}

	if (typeof(JSON['mp3']) != 'undefined') {
	    mp3 = JSON['mp3'];
	}else {
	    mp3 = '';
	}

	if (typeof(JSON['flash_details1']) != 'undefined') {
	    flash_details1 = JSON['flash_details1'];
	}else {
	    flash_details1 = '';
	}
	
	// get dyna loader
	var dyna_loader = JSON['flloader'];	
	
	pBg = JSON['bg_path'];

	pImage = (newImagePath == '') ? _newImagePath + pImage : newImagePath + pImage;	
	
	flash_detail =  (flash_detail == '') ? pImage : _ImageServerPath1 + flash_detail;
	
	
	// creat image array to preload
	var imgArr = [];
	imgArr[0] = pBg;
	imgArr[1] = pImage;
	//preload image
	handle_img_preload(imgArr);

	//build the HTML string
	build_Html(pBg, flash_detail, flash_details1, mp3, dyna_loader, pTitle, fcolor, fface, fsize, backurl);
	
	// return JSON object
	return JSON;	
}

/* extract XML node values */
function traverse(obj, node) {
	var p;
	var JSONobj = ['{'];
	if (node.childNodes.length > 0) {			
		for (var i = 0; i < node.childNodes.length; i++) {				
			
			if (node.childNodes[i].nodeType == 1 && node.childNodes[i].firstChild) {					
				// If node has only one child
				// set the obj property to the value of the node
				if(node.childNodes[i].childNodes.length == 1) {					
					obj[node.childNodes[i].tagName] = node.childNodes[i].firstChild.nodeValue;
					//alert(node.childNodes[i].tagName + '--' + node.childNodes[i].firstChild.nodeValue);
					// create JSON object
					if(p) JSONobj[JSONobj.length] = ',';
					// a special check for midfile_list tag in XML
					if (node.childNodes[i].tagName == 'midfile_list') {
						JSONobj.push(stringify(node.childNodes[i].tagName),':','[' + node.childNodes[i].firstChild.nodeValue + ']');
					}else{
						JSONobj.push(stringify(node.childNodes[i].tagName),':',stringify(node.childNodes[i].firstChild.nodeValue));
					}
					p = true;
				}
				// Otherwise this obj property is an array
				// Recurse to set its multiple properties
				else {					
					obj[node.childNodes[i].tagName] = [];
					// Call recursively -- rinse and repeat
					// ==============
					traverse(obj[node.childNodes[i].tagName], node.childNodes[i]);
				}
			}else {
					// code to handle empty tags
					// in this case it creates one JSON variable with empty value
				     if(typeof(node.childNodes[i].tagName) != 'undefined') {
						 //alert(node.childNodes[i].tagName);
						 if(p) JSONobj[JSONobj.length] = ',';						 
						 JSONobj.push(stringify(node.childNodes[i].tagName),':',stringify('')); 						 
						 p = true;
					 }
			}
		}
	}
	// return JSON string
	JSONobj[JSONobj.length] = '}';
	return JSONobj.join('');
}



/* stringify a JSON object */
function stringify(str) {
	//escape double quote
	var regex = /\"/g;
	if (regex.test(str)) {
	    str = str.replace(regex, '\\"');		
	}	
	return '"' + String(str) + '"';
}



/*
* Initialize AJAX object
*
*/
function initAJAX(pageURL, params, response_type, req_method, callback) {
	var aJax = new AJAX();	
	aJax.init('true',req_method,response_type,pageURL,params,callback);	
	aJax = null;
}

/*
* build html string
* @param bgImage			string		background image path
* @param flash_detail		string		Card details (path, type and others)
* @param title				string		card title
* Other params are self-explanatory
*/
function build_Html(bgImage, flash_detail, flash_details1, mp3, dyna_loader, title, font_color, font_face, font_size, back_url) {
	// code to build html	
	var strHtml = new Array();
	strHtml.push('<table border=0 cellspacing=0 cellpadding=0 width="88%"><tr><td align=CENTER><table width=100% cellspacing=0 cellpadding=0 border=0><tr><td align=center>');
	strHtml.push('<table border=0 width="100%" cellspacing=5 cellpadding=0 background="' + bgImage + '" id=td1><tr>');
	strHtml.push('<td><font id=drfrnd color=238E23 face="Comic Sans Ms" size=5></font><center><br><br><br><br>');


	back_url_arr = back_url.split('/');
	back_url_arr[2] = back_url_arr[2].toLowerCase()
	if(back_url_arr[2] == 'valentines_day'){
		idea_code="";
		strHtml.push(idea_code);
	}

	//alert(back_url+'------'+back_url_arr[2]);	
	//----------------------------
	//  This portion of code is to show a category sponsor add(Airtel) on just top of card.
	//	(presently add removed.)

	/*	back_url_arr = back_url.split('/');
		back_url_arr[1] = back_url_arr[1].toLowerCase();

		if(back_url_arr[1] == 'stay_in_touch' || back_url_arr[1] == 'love' || back_url_arr[1] == 'friendship')
			strHtml.push(refreshAds_new());
	*/
	//----------------------------

	// check whether the card is Flash/Animated	
	var f_dtl = flash_detail.split("#");
	
	// add mp3 value to the URL
	if (mp3 != '' && mp3.length > 0) {
	    f_dtl[0] = f_dtl[0] + '&mp3=' + mp3;
	}

	fLen = f_dtl.length;// get the length of the splited array		
	
	switch(fLen) {
		case 2:	// Old Click Cards
			strHtml.push('<a name="img0"><img src="' + f_dtl[0] + '" alt=""></a>');
			strHtml.push('<br><a href="#img1"><img src="http://img.123greetings.com/images/click.gif" border=0 alt="click"></a>');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<a name="img1"><img id="cardimage" src="' + _ImageServerPath + f_dtl[1] + '" alt=""></a>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div>');
			break;
		case 3:	// Flash Cards
			if (dyna_loader != '' && dyna_loader.length > 0) {
			    f_dtl[0] = dyna_loader + ((mp3 != '' && mp3.length > 0) ? '&mp3=' + mp3 :'');
				//alert(f_dtl[0]);
			}

			strHtml.push('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH=' + f_dtl[1] + ' HEIGHT=' + f_dtl[2] + ' id="sw_mv"><PARAM NAME=movie VALUE="' + f_dtl[0] + '"> <PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE="transparent"><PARAM NAME=bgcolor VALUE=""><PARAM NAME=menu VALUE=false><EMBED id="sw_mv" src="' + f_dtl[0] + '" quality=high WIDTH=' + f_dtl[1] + ' HEIGHT=' + f_dtl[2] + ' bgcolor="" menu=false wmode=Transparent TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>');
			if(flash_details1 != ''){
				var flash_details1_arr = flash_details1.split('#');

				strHtml.push('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH=' + flash_details1_arr[1] + ' HEIGHT=' + flash_details1_arr[2] + ' id="sw_mv_toolbar"><PARAM NAME=movie VALUE="' + _ImageServerPath1 + flash_details1_arr[0] + '"> <PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE="transparent"><PARAM NAME=bgcolor VALUE=""><PARAM NAME=menu VALUE=false><EMBED id="sw_mv_toolbar" src="' + _ImageServerPath1 + flash_details1_arr[0] + '" quality=high WIDTH=' + flash_details1_arr[1] + ' HEIGHT=' + flash_details1_arr[2] + ' bgcolor="" menu=false wmode=Transparent TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>');

			}			
			strHtml.push('<br><font face=arial color=' + font_color + ' size=2>');
			strHtml.push('Can\'t view this greeting? <a href="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">');
			strHtml.push('<font color=' + font_color + ' size=2>Download Flash Player !</font></a></font><br>');
			
			break;

		case 4:	// Click Cards
			/*strHtml.push('<map name="dollar">');
			strHtml.push('<area shape="' + f_dtl[2] + '" coords="' + f_dtl[3] + '" href="#img1" ></map>');
			strHtml.push('<img border="0" src="' + f_dtl[0] + '" usemap="#dollar">');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p> ');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>');
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<a name="img1"><img id="cardimage" border="0" src="' + _ImageServerPath1 + f_dtl[1] + '"></a>');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div>');*/

			strHtml.push('<table width=100% cellspacing=0 cellpadding=0 border=0><tr><td align=center>');	
			strHtml.push('<map id="cardimage_map" name="dollar">');
			strHtml.push('<area  id="cardimage_area" shape="' + f_dtl[2] + '" coords="' + f_dtl[3] + '" href="#img1" onclick="Clik.swap();"></map>');
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<img border="0" id="cardimage" src="' + f_dtl[0] + '" usemap="#dollar">');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div><br>');

			break;
		case 7: // 3 part click cards
			/*strHtml.push('<map name="FPMap0">');
			strHtml.push('<area href="#img1" shape="' + f_dtl[2] + '" coords="' + f_dtl[3] + '">');
			strHtml.push('</map><img border="0" src="' + f_dtl[0] + '" usemap="#FPMap0" >');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p><map name="FPMap1">');
			strHtml.push('<area href="#img2" shape="' + f_dtl[5] + '" coords="' + f_dtl[6] + '"></map>');
			strHtml.push('<A name=img1></A><img border="0" src="' + _ImageServerPath + f_dtl[1] + '" usemap="#FPMap1" ></p>');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>');
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<A name=img2></A><img id="cardimage" border="0" src="' + _ImageServerPath + f_dtl[4] + '" >');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div>');*/

			strHtml.push('<table width=100% cellspacing=0 cellpadding=0 border=0><tr><td align=center>');	
			strHtml.push('<map id="cardimage_map" name="FPMap0">');
			strHtml.push('<area id="cardimage_area" shape="' + f_dtl[2] + '" coords="' + f_dtl[3] + '" href="#img1" onclick="Clik.swap();"></map>');
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<img border="0" id="cardimage" src="' + f_dtl[0] + '" usemap="#FPMap0">');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div><br>');
			break;
		
		case 10: // 4 part click cards
			/*strHtml.push('<map name="FPMap0">');
			strHtml.push('<area href="#img1" shape="' + f_dtl[2] + '" coords="' + f_dtl[3] + '">');
			strHtml.push('</map><img border="0" src="' + f_dtl[0] + '" usemap="#FPMap0" >');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');

			strHtml.push('<p><map name="FPMap1">');
			strHtml.push('<area href="#img2" shape="' + f_dtl[5] + '" coords="' + f_dtl[6] + '"></map>');
			strHtml.push('<A name=img1></A><img border="0" src="' + f_dtl[1] + '" usemap="#FPMap1" ></p>');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>');

			strHtml.push('<p><map name="FPMap2">');
			strHtml.push('<area href="#img3" shape="' + f_dtl[8] + '" coords="' + f_dtl[9] + '"></map>');
			strHtml.push('<A name=img2></A><img border="0" src="' + f_dtl[4] + '" usemap="#FPMap2" ></p>');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;');
			strHtml.push('<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>&nbsp;<p>');
				
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<A name=img3></A><img id="cardimage" border="0" src="' + f_dtl[7] + '">');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div>');*/

			strHtml.push('<table width=100% cellspacing=0 cellpadding=0 border=0><tr><td align=center>');	
			strHtml.push('<map id="cardimage_map" name="FPMap0">');
			strHtml.push('<area id="cardimage_area" shape="' + f_dtl[2] + '" coords="' + f_dtl[3] + '" href="#img1" onclick="Clik.swap();"></map>');
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<img border="0" id="cardimage" src="' + f_dtl[0] + '" usemap="#FPMap0">');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div><br>');
			break;

		default:	// others			
			// this is animated card
			isAnimatedCard = _nPointer;
			//strHtml.push('<br><br><br>');
			strHtml.push('<div style="padding-bottom:4px;">');
			strHtml.push('<img id="cardimage" src="' + flash_detail + '">');
			strHtml.push('</div>');
			strHtml.push('<div id="audio_panel_holder"><div id="rak_media"></div></div>');
	}
	
	strHtml.push('<font id=msg color="#' + font_color + '" face="' + font_face + '" size=' + font_size + '>');
	strHtml.push('Your message will appear here.<br>Feel free to express yourself in as many words as you like.</font></center>');
	strHtml.push('<p align=right><font id=luvadm color=' + font_color + ' face="' + font_face + '" size=' + font_size + '></font><br><br>');	
	if(fLen == '4' || fLen == '7' || fLen == '10')		strHtml.push('</td></tr></table>');

	strHtml.push('</td></tr></table></td></tr>');
	
	// add message for Flash Object activex compatibility
	//if(fLen == 3) {
	//	strHtml.push('<tr><TD align=center bgcolor=FFFFCC style="font-family:verdana;font-size: 11px;background-color:#FFFFE6;border:1px solid black;padding:2px;"><img src="http://img.123greetings.com/images/information.gif" width=17 height=16 align=absmiddle border=0><A href="javascript:activex_compat();" style="text-decoration:none;color:black;"> We are currently testing a new browser feature. If you are not able to view this ecard. Please click here to view in its original format</A></TD></tr>');
	//}
	strHtml.push('</table></td><td width=5 rowspan=2 valign=TOP bgcolor=cccccc><img src=http://img.123greetings.com/images/space.jpg width=5 height=5 align=BOTTOM border=0></td></tr>');
	strHtml.push('<tr><td bgcolor=cccccc><img src=http://img.123greetings.com/images/space.jpg width=5 height=5 align=BOTTOM border=0></td></tr></table>');

	//insert string into array index denoted by _nPointer
	insert_to_array(strHtml.join(''), _nPointer);
	//write to page
	write_html(strHtml.join(''));
}

/* writes HTML to page */
function write_html() {
	//get card position according to array position	
	if (_nPointer == (_nCurrent - 1)) {
		// delete embed object if any
		if (document.getElementById('container')) {
			var cont = document.getElementById('container');
			while (cont.hasChildNodes()) {
				cont.removeChild(cont.childNodes[0]);	
			}			
			cont = null;
		}

		document.getElementById('container').innerHTML = arguments[0];				
	}
}

/*
* function to embed sound in page if available
*
* Read it carefully it has become buggy and full of redundant code
* I didn't find time to make it clean, hope someone will do it later
*/

function embedSound(pointer) {
	// code to embed sound
	//now check for drop down box and others
	var embedmusic = _nObjArray[pointer]['embedmusic'];
	var mus_exclusive = _nObjArray[pointer]['mus_exclusive'];
	var music = _nObjArray[pointer]['music'];
	var lbl = _nObjArray[pointer]['label'];
	var flash_details = _nObjArray[pointer]['flash_details'];


	// if there is any bgsound then remove it
	var arr = document.getElementsByTagName('bgsound');	
	if (arr.length > 0) {		
		var node = arr[0];
		node.parentNode.removeChild(node);		
	}
	// if there is any bgsound then remove it
	var arr = document.getElementsByTagName('embed');	
	if (arr.length > 0) {	
		for (var i=0; i < arr.length; i++ ) {
			var node = arr[i];
			if(isIE()) {
				node.src = '';
				try {
					node.stop();    
				}
				catch (e){
					try {
					    node.doStop();
					}
					catch (e){}
				}				
				node.parentNode.removeChild(node);
			}						
		}		
	}	
	
	
	// check			
	if ((mus_exclusive == '' || mus_exclusive == 0) && music == '' && embedmusic == 'yes') {		
		// field is hidden no drop down, FLASH card 
		// delete the drop down if present
		if ($('music_box')) {
			$('music_box').innerHTML = '';
		}
		
		removeChildren('music_cont');		
		$('music_cont').innerHTML = '';
		
		if (getField(document.cFORM, 'music')) {
			removeField(document.cFORM, 'music');
		}

	}else if (mus_exclusive == 1 && music == '') {		
		
		if ($('music_box')) {
			$('music_box').innerHTML = '';
		}

		removeChildren('music_cont');
		$('music_cont').innerHTML = '';
				
		if (getField(document.cFORM, 'music')) {
			// delete the element
			removeField(document.cFORM, 'music');
		}

		var html = '<input type="hidden" name="music" id="music" value="">';
		$('dummyspan').innerHTML += html;		
	
	}else if (mus_exclusive == 1 && music != '') {
		// field is hidden no drop down, POSTCARD or CLICK cards, embeded sound
		var html = '<input type="hidden" name="music" id="music" value="' + music + '">';
		
		removeChildren('music_cont');
		$('music_cont').innerHTML = '';

		// clear drop down if any
		if ($('music_box')) {
			$('music_box').innerHTML = '';
		}
		
		//alert("mus_exclusive=1 and music not blank");
		if(flash_details.split('#').length == '4')		//Embed Sound for 2-part Click Card
			embed2PClickCardSound(flash_details.split('#'));

		if(flash_details.split('#').length == '7')		//Embed Sound for 3-part Click Card
			embed3PClickCardSound(flash_details.split('#'));

		if(flash_details.split('#').length == '10')		//Embed Sound for 4-part Click Card
			embed4PClickCardSound(flash_details.split('#'));
		


		if (getField(document.cFORM,'music')) {
			// delete the element first
			removeField(document.cFORM,'music');

			$('dummyspan').innerHTML += html;
			
			$('music_cont').innerHTML = '<div align="center" id="normal_audio"></div>';				
			startTimeout(LoadMusic, 1000,_ImageServerPath + music);
			
		}else {			
			$('dummyspan').innerHTML += html;

			removeChildren('music_cont');
			$('music_cont').innerHTML = '';

			// clear drop down if any
			if ($('music_box')) {
				$('music_box').innerHTML = '';
			}

			$('music_cont').innerHTML = '<div align="center" id="normal_audio"></div>';				
			startTimeout(LoadMusic, 1000,_ImageServerPath + music);			
		}

	}else if ((mus_exclusive == '' || mus_exclusive == 0) && music == '' && embedmusic == '') {		
		// field is select box drop down
		$('music_cont').innerHTML = '';
		
		if (getField(document.cFORM, 'music')) {			
			removeField(document.cFORM, 'music');
		}

		removeChildren('music_cont');
		$('music_cont').innerHTML = '';
		
		if(flash_details.split('#').length == '4')	//Embed Sound for 2-part Click Card
			embed2PClickCardSound(flash_details.split('#'));

		if(flash_details.split('#').length == '7')	//Embed Sound for 3-part Click Card
			embed3PClickCardSound(flash_details.split('#'));		

		if(flash_details.split('#').length == '10')	//Embed Sound for 4-part Click Card
			embed4PClickCardSound(flash_details.split('#'));		

		
		// now create the drop down
		var len = _nObjArray[pointer]['midfile_list'].length;
		var music_list = _nObjArray[pointer]['midfile_list'];
		// get the music name that is to be selected
		var music_selected = _nObjArray[pointer]['music_selected'];

		/*var musicbox_html = new Array();
		musicbox_html.push('<table border=0 width=100% cellspacing=0 cellpadding=3><tr>');
		musicbox_html.push('<td width=70% bordercolor=E6E6FF bgcolor=E6E6FF>');
		musicbox_html.push('<b><font face=Verdana size=2 color=000080>Music</font></b> &nbsp; ');
		musicbox_html.push('<font face=verdana size=1 color=000080>[ <a href="javascript:;" ');
		musicbox_html.push("onClick=\"window.open('/tips/remove_music.html', 'Greetings8','width=500,height=260,scrollbars=0,left=150,top=80')\">");
		musicbox_html.push('<font color=000080>What is this?</font></a> ]</font></td></tr><tr><td width=100% valign=top>');
		musicbox_html.push('<select name=music id="music" onChange="ChangeMusic();">');
		
		// insert data to select box
		for (var x = 0; x < len; x++ ) {
			musicbox_html.push('<option value="' + music_list[x].value + '"' + ((music_list[x].value == music_selected)? 'selected' : '') + '>' + music_list[x].caption + '</option>');	
		}
		musicbox_html.push('</select></td></tr></table>');

		$('music_box').innerHTML = musicbox_html.join('');
		
		musicbox_html = null // destroy object*/
		
		$('music_cont').innerHTML = '<div align="center" id="normal_audio"></div>';				
		startTimeout(LoadMusic, 1000,_ImageServerPath + music_selected);		

	}else {
		removeChildren('music_cont');
		$('music_cont').innerHTML = '';		

		// clear drop down if any
		if ($('music_box')) {
			$('music_box').innerHTML = '';
		}
		
		if (getField(document.cFORM,'music')) {
			removeChild(document.cFORM, 'music');
		}
		var html = '<input type="hidden" name="music" id="music" value="">';
		$('dummyspan').innerHTML += html;
	}
	
}

/* Add for New 2-Part Click Card Implementation(09-07-2007) */
	function embed2PClickCardSound(arr){
		var img_1 = _ImageServerPath1 + arr[0];
		var img_2 = _ImageServerPath1 + arr[1];

		var map = {
			'name'  : 'dollar',
			'shape' : arr[2],
			'coords': arr[3],
			'href' : '#img1'
		};
		Clik.put(img_1, img_2, map, true);		
	}
/* End of Click Card Implementation */

/*Add for New 3-Part Click Card Implementation(14-08-2007) */
	function embed3PClickCardSound(arr){
		var img_1 = _ImageServerPath1 + arr[0];
		var img_2 = _ImageServerPath1 + arr[1];
		var img_3 = _ImageServerPath1 + arr[4];

		var map = {
			'name'  : 'FPMap0',
			'shape' : arr[2],
			'coords': arr[3],
			'href' : '#img1'
		};

		var map1 = {
			'name'  : 'FPMap1',
			'shape' : arr[5],
			'coords': arr[6],
			'href' : '#img2'
		};
		Clik.put(img_1, img_2, img_3, map, map1, true);
	}
/* End of Click Card Implementation */

/*Add for New 4-Part Click Card Implementation(20-08-2007) */
	function embed4PClickCardSound(arr){
		var img_1 = _ImageServerPath1 + arr[0];
		var img_2 = _ImageServerPath1 + arr[1];
		var img_3 = _ImageServerPath1 + arr[4];
		var img_4 = _ImageServerPath1 + arr[7];

		var map = {
			'name'  : 'FPMap0',
			'shape' : arr[2],
			'coords': arr[3],
			'href' : '#img1'
		};

		var map1 = {
			'name'  : 'FPMap1',
			'shape' : arr[5],
			'coords': arr[6],
			'href' : '#img2'
		};

		var map2 = {
			'name'  : 'FPMap2',
			'shape' : arr[8],
			'coords': arr[9],
			'href' : '#img3'
		};

		Clik.put(img_1, img_2, img_3, img_4, map, map1, map2, true);
	}
/* End of Click Card Implementation */

/* trims trailing spaces from a string */
function trim(str) {
	return str.replace(/(^\s+|\s+$)/g,'');
}

/* function to set timeout */
function startTimeout(func, interval) {
	var optional = arguments[2] || '' ; // args 3 is optional
	window.setTimeout(function () {
		func(optional);
	}, interval);
}

/* get html elements by id */
function $() {
	var elements = new Array();
	var argsLen = arguments.length;

	for (var i=0; i < argsLen; i++ ) {
		var element = arguments[i];
		if (typeof(element) == 'string') {
		    element = document.getElementById(element);
		}

		if (argsLen == 1) {
		    return element;
		}
		
		elements.push(element);
	}

	return elements;
}

// removes child elements
function removeChildren(parent_id) {
	var obj = $(parent_id);
	if(obj) {
		while ($(parent_id).hasChildNodes()) {
			$(parent_id).removeChild($(parent_id).childNodes[0]);
		}
	}
}

// add form field
function addField (form, fieldType, fieldName, fieldValue) {
  if (document.getElementById) {
    var input = document.createElement('INPUT');
      if (document.all) { // what follows should work 
                          // with NN6 but doesn't in M14
        input.type = fieldType;
        input.name = fieldName;
        input.value = fieldValue;
      }
      else if (document.getElementById) { // so here is the
                                          // NN6 workaround
        input.setAttribute('type', fieldType);
        input.setAttribute('name', fieldName);
        input.setAttribute('value', fieldValue);
      }
    form.appendChild(input);
  }
}

// remove field
function removeField (form, fieldName) {
	var field = getField (form, fieldName);
	if (field && !field.length){
	    var elems = form.elements;
		for (var i = 0; i < elems.length; i++ ) {
			if((elems[i].getAttribute("name") || elems[i].name) == fieldName){
				field.parentNode.removeChild(field);
			}
		}		
		//field.parentNode.removeChild(field);
	}
}

// get field
function getField(frm, fieldname) {
	if (frm[fieldname]) {
	    return frm[fieldname];
	}else {
	    var elems = frm.elements;
		for (var i = 0, j = elems.length; i < j; i++ ) {
			if((elems[i].getAttribute("name") || elems[i].name) == fieldname) return elems[i];
		}
	}
	return null;
}

/*
* get the mime-type
*/
function getMimeType(){
	var  mimeType = "application/x-mplayer2"; //default	
	var agt = navigator.userAgent.toLowerCase();
	var is_mac = (agt.indexOf("mac")!=-1);

	with (navigator){
		if (mimeTypes && !(agt.indexOf("windows")!=-1 && agt.indexOf("windows 3.1")==-1)) {
		 //non-IE, no Windows
			var plugin = mimeTypes["audio/mpeg"].enabledPlugin;			
			if (plugin) mimeType = "audio/mpeg"	 //mac/Safari mimeType = "audio/mpeg"
			else {
				plugin = mimeTypes["audio/mpeg-url"].enabledPlugin;				
				if (plugin) mimeType = "audio/mpeg-url" // non-IE 2nd favorite (Linux/FF) 
			}			
		}//end no-Windows 
	}//end with (navigator)	
	//alert(mimeType);
	return mimeType;
}


/*
*
* function change form values from the _nFormDataObj object
*
*/
function write_form_data() {

	if (_nPointer == (_nCurrent - 1)) {
		// code to write form data	
		var fObj = _nObjArray[_nPointer];
		
		var len2 = _nFormFieldNames.length;
		var fname = '';
		var obj;
		var objName='';
		var form_obj = document.cFORM;
		
		// check for 'special' named form tag, likely value 'PC'
		if (typeof(_nObjArray[_nPointer]['special']) != 'undefined') {	
			if (document.getElementById('dummyspan')) {	
				try {
					form_obj['special'].parentNode.removeChild(form_obj['special']);					
				}catch (e){}

				try {
				    document.getElementById('special').parentNode.removeChild(document.getElementById('special'));
				}
				catch (e){}
				 
				var html = '<input type="hidden" name="special" id="special" value="' + _nObjArray[_nPointer]['special'] + '">';
				document.getElementById('dummyspan').innerHTML += html;				
			}			
		}else {				
			//remove element
			try {
				form_obj['special'].parentNode.removeChild(form_obj['special']);
			}
			catch (e){}
			
			try {
				document.getElementById('special').parentNode.removeChild(document.getElementById('special'));
			}
			catch (e){}				
		}

		// check for 'MP3' named form tag, likely value mp3 file name
		if (typeof(_nObjArray[_nPointer]['mp3']) != 'undefined') {	
			if (document.getElementById('dummyspan')) {	
				try {
					form_obj['mp3'].parentNode.removeChild(form_obj['mp3']);					
				}catch (e){}

				try {
				    document.getElementById('mp3').parentNode.removeChild(document.getElementById('mp3'));
				}
				catch (e){}
				 
				var html = '<input type="hidden" name="mp3" id="mp3" value="' + _nObjArray[_nPointer]['mp3'] + '">';
				document.getElementById('dummyspan').innerHTML += html;				
			}			
		}else {				
			//remove element
			try {
				form_obj['mp3'].parentNode.removeChild(form_obj['mp3']);
			}
			catch (e){}
			
			try {
				document.getElementById('mp3').parentNode.removeChild(document.getElementById('mp3'));
			}
			catch (e){}				
		}
		
		
		//alert(_nFormFieldNames[0]);
		//alert(form_obj['label']);
		//alert(document.cFORM.size.value);

		for (var i=0; i < len2; i++) {	
			fname = _nFormFieldNames[i];	
			if (fname != 'music') {
				//if form field doesn't exist then create it
				
				if (typeof(form_obj[fname]) != 'undefined') {				
					obj = form_obj[fname]; //eval("document.cFORM."+fname);				
				}else {					
					var html = '<input type="hidden" id="' + fname + '" value="' + fObj[fname] + '" name="' + fname + '">';						
					
					if (document.getElementById('dummyspan')) {					
						document.getElementById('dummyspan').innerHTML += html;					
						// get field object					
						obj = document.getElementById(fname);					
					}
				}
				
				//alert(fname);
				
				if(fname == 'size'){
					if((fObj['label'] == 'F' || fObj['label'] == 'I') && fObj['flloader'] != '')
						objName = 'T';
					else
						objName = 'noloader';
				}else{
					objName = fObj[fname];
				}

				//objName = fObj[fname];
				
				// replace http://img.123greetings.com
				if (fname == 'flloader' && objName != '') {
				    objName = objName.replace(/http:\/\/img.123greetings.com/gi,'')
				}

				if(fname == 'rcpt'){					
					objName = (typeof(fObj['rcpt']) != 'undefined')?fObj['rcpt']:'';
				}
				
				 if (typeof(obj.length) != 'undefined' && obj.length > 0) {								
					var elemArr = obj;					
					var len = elemArr.length;				
					for (var j = 0; j < len; j++ ) {					
						if (elemArr[j].checked == true && elemArr[j].type != 'button') {					
							elemArr[j].value = objName;								
						}
					}					
				}else {
					obj.value = (typeof(objName) == 'undefined' || objName == 'undefined') ? "": objName;					
				}
				obj = null;
			}			
		}
		
		//alert(document.cFORM.size.value);
		// call sound embed if available
		if(fObj['Backurl'] != '/events/eid_ul_adha/arabic_cards/' && fObj['Backurl'] != '/events/eid_ul_adha/koran_quotes/'){
			embedSound(_nPointer);
		}
		obj = null; // prevent memory leak
		fObj = null; // prevent memory leak		

	}
}



/* check user agent */
function isIE() {	
	if(navigator.userAgent.indexOf("MSIE") > -1 && ! window.opera){
		return true;
	}else {
	    return false;
	}
}

/*
* function to handle image preloading
*/
function handle_img_preload(imgArr) {	
	// code to handle image preloading
	_isPreloaded = false;
	var img = new ImagePreloader(imgArr, imgPreloadCallback);
}

/*
* funciton to handle image preload callbacking
*/
function imgPreloadCallback() {
	_isPreloaded = true;	
}

/*
*
* function to change title and navbar links and text
*
*/
function change_extras() {
	if (_nPointer == (_nCurrent - 1)) {

		/*---------- User Data Code -----------*/
		var thumb_image = _nObjArray[_nPointer]['image'];
		var card_id = thumb_image.substring(thumb_image.lastIndexOf("/")+1, thumb_image.lastIndexOf("."));
		//alert(card_id);
		if(document.getElementById('user_data_frame'))
			document.getElementById('user_data_frame').src = 'http://67.202.56.13/samples/user_data.html?cardid=' + card_id;
	
		if(document.getElementById('track_view'))
			document.getElementById('track_view').src = "http://67.202.56.13/cgi-bin/nf_view_sent.pl?cardid="+card_id+"&type=VW";

		/*-------------------------------------*/


		/*------ Idea Track Code -------*/
		back_url = _nObjArray[_nPointer]['Backurl'];
		back_url_arr = back_url.split('/');
		back_url_arr[2] = back_url_arr[2].toLowerCase()
		if(back_url_arr[2] == 'valentines_day' && idea_code != ''){
			//alert(_nObjArray[_nPointer]['Backurl']);
			var randval=Math.random() * 500;
			var param = 'num=1&rand='+randval;
			var ajax_idea = new AJAX();				
			ajax_idea.init('true','GET','TEXT','/cgi-bin/idea_hash.pl', param,function(){

			});
		}
		/*------------------------------*/

		// change title from Bread-Crumb
		document.getElementById('bread_crumb').innerHTML = document.cFORM.redline.value;
		//change page title
		document.title = document.cFORM.title.value;

		//document	
		document['bg1'].src = _nObjArray[_nPointer]['bg_path'];
		
		document.getElementById('b1').checked = true;
		document.getElementById('fcl0').checked = true;
		document.getElementById('fn1').checked = true;
		document.getElementById('sz3').checked = true;
		
		// change background color
		document.getElementById('tcolor1').style.backgroundColor = '#' + trim(document.getElementById('fcl0').value);	

		// change value of the predefined variables
		/*
		var background="";
		var fontcolor="";
		var fontface="";
		var fontsz=5;
		*/
		
		background = _nObjArray[_nPointer]['bg_path'];
		fontcolor = _nObjArray[_nPointer]['tcolor'];
		fontface = _nObjArray[_nPointer]['tface'];
		fontsz = _nObjArray[_nPointer]['tsize'];
		
		// change copyright notice
		var copyright = _nObjArray[_nPointer]['music_copyright'];	
		
		if (copyright != '' && document.getElementById('copyright')) {
			var arr = copyright.split('#');
			if (arr.length == 1) {
			    arr[1] = arr[0];
			}

			document.getElementById('copyright').innerHTML = 'Music sequenced by <a href="' + arr[1] + '">' + arr[0] + '</a>.';			
			arr = null; // destroy
		}else if (copyright == '' && document.getElementById('copyright')) {
		    document.getElementById('copyright').innerHTML = copyright;
		}
		
		refreshAds();		
		// reload last card viewed iframe
		reload_last_card();
	}
}

/* This function refreshes ads */
function refreshAds() {
	var adPos = OAS_listpos.split(',');

	var iframeSrc = 'http://img.123greetings.com/banner_js/showad.html#' + adPos[0] + '|' + adPos[0] + '|' + OAS_sitepage + '|' + OAS_query;
	var strAdvertBanner = '<IFRAME name="bannerFrame" id="bannerFrame" marginheight="0" marginwidth="0" align="middle" height="100" width="748" frameborder="0" allowtransparency="true" src="' + iframeSrc + '" scrolling=no></iframe>';
	
	if (document.getElementById('banner')) {
		//document.getElementById('banner').innerHTML = strAdvertBanner;
	}	
}

/*
	function refreshAds_new() {			// This add for the add will shot at just top of card(07-07-2007)
	var adPos = OAS_listpos.split(',');

	var iframeSrc = 'http://img.123greetings.com/banner_js/showad.html#' + adPos[1] + '|' + adPos[1] + '|' + OAS_sitepage + '|' + OAS_query;
	
	var strAdvertBanner = '';
	strAdvertBanner += '<table width="100%" cellspacing="0" cellpadding="0"><tbody><tr><td align="center" height="65">';
	//strAdvertBanner += '<div id="add_top1" style="border: 1px solid red;height:65px;align:center;">';
	strAdvertBanner += '<IFRAME name="bannerFrame" id="bannerFrame" marginheight="0" marginwidth="0" align="middle" height="60" width="550" frameborder="0" allowtransparency="true" src="' + iframeSrc + '" scrolling=no></iframe>';
	//strAdvertBanner += '</div>';
	strAdvertBanner += '</td></tr></tbody></table>';

	return(strAdvertBanner);
		
}
*/

// reloads the last card viewed iframe
function reload_last_card() {	
	var text = _nObjArray[_nCurrent-1]['redline'] ? _nObjArray[_nCurrent-1]['redline'] : '';
	var link = _nObjArray[_nCurrent-1]['thumblink'] ? _nObjArray[_nCurrent-1]['thumblink'] : '';
	var image = _nObjArray[_nCurrent-1]['image'] ? _nObjArray[_nCurrent-1]['image'] : '';
	var final_url = 'http://www.123greetings.com/cgi-bin/newcreate/last_viewed.pl?text=' + text.replace(/\s+/g,'+') + '&link=' + link + '&image=' + image;
	//if (frames["last_view"].location.href)
		frames["last_view"].location.href = final_url;
}

/* hides the prev or next link*/
function hide(current) {
	//alert(current);

	if (--current >= 1) {
		document.getElementById('previous').style.visibility = 'visible';		
	}else { 
		document.getElementById('previous').style.visibility = 'hidden';		
	}
	
	if (++current < total_rec) {
		document.getElementById('next').style.visibility = 'visible';		
	}else {
	    document.getElementById('next').style.visibility = 'hidden';		
	}
		
}


/**
*
* Sets/displays Preview Images
*/
function setPreviewImages(current) {	
	var nextIndex = current + 1;
	var prevIndex = current - 1;
	
	var prevImage = _previewImages[prevIndex - 1];		
	
	if (! prevImage) {		
		var pageNum = Math.ceil(prevIndex/recInPage);
		pageName = 'page' + pageNum + '.xml';		
		var parse = function () {			
			//alert('callback prev called....');
			var image = arguments[0].getElementsByTagName('image');
			var greenline = arguments[0].getElementsByTagName('greenline');
			var redline = arguments[0].getElementsByTagName('redline');
			var label = arguments[0].getElementsByTagName('label');

			// all the above array will be of same size if not then there is a BUG
			var len = image.length;		
			var index = prevIndex - 1;
			
			for (var i = (len-1); i >= 0; i-- ) {
				xmlNode = image[i];
				xmlNode1 = redline[i];
				xmlNode2 = greenline[i];
				xmlNode3 = label[i];

				if (index >= 0) {
					if(typeof(_previewImages[index]) == 'undefined') {
						_previewImages[index] = _thumbPath + xmlNode.childNodes[0].nodeValue + '#' + xmlNode1.childNodes[0].nodeValue + '#' + xmlNode2.childNodes[0].nodeValue + '#' + xmlNode3.childNodes[0].nodeValue;
						index--;
					}
				}				
			}
			window.previous_thumb = _previewImages[prevIndex - 1];	
			
			if (document.getElementById('previous').disabled == true) {
				document.getElementById('previous').disabled = false;
			}
		}
		if(pageNum > 0) {	
			// call ajax
			initAJAX(pageName, '', 'XML', 'GET', parse);				
		}
	}else {
		 window.previous_thumb = _previewImages[prevIndex - 1];		
		 if (document.getElementById('previous').disabled == true) {
			document.getElementById('previous').disabled = false;
		}
	}
	
	
	// next image	
	var nextImage = _previewImages[nextIndex - 1];
	
	if (! nextImage) {
		var pageNum = Math.ceil(nextIndex/recInPage);			
		pageName = 'page' + pageNum + '.xml';
		var parse = function () {		
			//alert('callback next called....');
			var image = arguments[0].getElementsByTagName('image');
			var greenline = arguments[0].getElementsByTagName('greenline');
			var redline = arguments[0].getElementsByTagName('redline');
			var label = arguments[0].getElementsByTagName('label');

			// all the above array will be of same size if not then there is a BUG
			var len = image.length;		
			var index = nextIndex - 1;			
			for (var i = 0; i < len; i++ ) {
				xmlNode = image[i];
				xmlNode1 = redline[i];
				xmlNode2 = greenline[i];
				xmlNode3 = label[i];

				if(_previewImages.length < total_rec) {							
					if(typeof(_previewImages[index]) == 'undefined') {
						_previewImages[index] = _thumbPath + xmlNode.childNodes[0].nodeValue + '#' + xmlNode1.childNodes[0].nodeValue + '#' + xmlNode2.childNodes[0].nodeValue + '#' + xmlNode3.childNodes[0].nodeValue;							
						index++;					
					}
				}					
			}
			window.next_thumb = _previewImages[nextIndex - 1];	
			if (document.getElementById('next').disabled == true) {
				document.getElementById('next').disabled = false;
			}
		}
		// call ajax
		initAJAX(pageName, '', 'XML', 'GET', parse);			
	}else {
		window.next_thumb = _previewImages[nextIndex - 1];		
		if (document.getElementById('next').disabled == true) {
			document.getElementById('next').disabled = false;
		}
	}		
}

/**
* returns the mouse XY position
*/
function getMouseXY(e) {
	//alert('called');
	var IE = document.all?true:false;
	if (!IE) document.captureEvents(Event.MOUSEMOVE)
	
	if(!IE){
		mouseX = e.pageX;
		mouseY = e.pageY;
	}else {
		mouseX = event.clientX + document.body.scrollLeft;
		mouseY = event.clientY + document.body.scrollTop;
	}
	// return JSON object
	return '{' + stringify('x') + ':' + stringify(mouseX) + ',' + stringify('y') + ':' + stringify(mouseY) + '}';
}


/*
* Display preview box
*/
function showPreview(flag, imageSrc, event) {		
	if(! showPopUp) {		
		if (typeof(imageSrc) != 'undefined' || imageSrc != '') {			
			//parse imageSrc get the other data such as redline,greenline and type
			//alert(imageSrc);
			var arr = imageSrc.split('#');
			var image = arr[0]; // 0 --> image path
			var rLine = arr[1]; // 1 --> redline text
			var gLine = arr[2]; // 2 --> greenline text
			var cType = getType(arr[3]); // 3 --> card type

			// create DIV
			var oDiv = document.createElement('div');
			oDiv.id = 'pic';
			oDiv.setAttribute('id','pic');
			oDiv.style.position = 'absolute';
			oDiv.style.top = 0;
			oDiv.style.left = 0;
			oDiv.style.display = 'block';
			oDiv.style.height = 140;
			oDiv.style.width = 300;
			oDiv.style.borderWidth = 0;			
			oDiv.style.zIndex = '50';
			oDiv.style.backgroundColor = '#FFFFFF';
			oDiv.style.textAlign = 'center';
			oDiv.style.visibility = 'hidden';
			oDiv.style.fontFamily = 'verdana';
			oDiv.style.fontWeight = 'normal';
			oDiv.style.fontSize = '8px';
			oDiv.style.cursor = 'default';
			
			
			oDiv.onclick = function () {				
				return false;
			}
			
			// onmouseout handler
			var func = function () {
				hidePreview(event, ((flag=='prev')?'previous':'next'));
			}
			
			try {
				oDiv.onmouseout = hidePreview(event, ((flag=='prev')?'previous':'next'));
			} catch(e) {				
				oDiv.attachEvent('onmouseout',func);
			}

			// create table
			var table = document.createElement('table');			
			table.setAttribute('id','preview');
			table.id='preview';
			table.setAttribute('border',1);
			table.setAttribute('cellspacing',4);
			table.setAttribute('cellpadding',0);
			table.setAttribute('bordercolor','black');
			table.setAttribute('width',300);
			table.style.borderStyle = 'solid';
			table.style.borderWidth = 1;
			table.style.borderColor = 'black';
			table.style.backgroundColor = '#FFFFFF';
			table.style.cursor = 'default';
			
			table.onclick = function () {
				return false;
			}
			//create TBODY
			var tbody = document.createElement('tbody');
			// create TR
			var tr = document.createElement('tr');
			//create TD
			var td_img = document.createElement('td');
			td_img.style.verticalAlign = 'middle';
			td_img.style.textAlign = 'center';
			td_img.style.borderStyle = 'solid';
			td_img.style.borderWidth = 1;
			td_img.style.borderColor = 'black';
			td_img.style.width = 138;
			td_img.style.height = 140;
			td_img.style.backgroundImage = "url('http://img.123greetings.com/images/imgback_thumb.gif')";
			td_img.style.cursor = 'default';
			td_img.onclick = function () {
				return false;
			}

			//create TD
			var td_txt = document.createElement('td');
			td_txt.style.borderStyle = 'solid';
			td_txt.style.borderWidth = 1;
			td_txt.style.borderColor = 'black';
			td_txt.style.verticalAlign = 'middle';
			td_txt.style.textAlign= 'center';
			td_txt.style.cursor = 'default';
			td_txt.onclick = function () {
				return false;
			}
			//now append text child
			var oSpan = document.createElement('span');
			oSpan.style.fontFamily = 'Ms Sans Serif';
			oSpan.style.fontWeight = 'bold';
			oSpan.style.fontSize = '14';
			oSpan.style.color = '#cc0000';
			oSpan.style.textDecoration = 'underline';
			oSpan.style.cursor = 'pointer';
			oSpan.innerHTML = rLine;

			// create instance of another abject
			var oSpan1 = document.createElement('span');
			oSpan1.style.fontFamily = 'Ms Sans Serif';
			oSpan1.style.fontWeight = 'normal';
			oSpan1.style.fontSize = '12';
			oSpan1.style.color = 'green';
			oSpan1.style.textDecoration = 'underline';
			oSpan1.style.cursor = 'pointer';
			oSpan1.innerHTML = gLine;

			var oSpan2 = document.createElement('span');
			oSpan2.style.fontFamily = 'Ms Sans Serif';
			oSpan2.style.fontWeight = 'bold';
			oSpan2.style.fontSize = '12';
			oSpan2.style.color = 'green';
			oSpan2.style.textDecoration = 'underline';
			oSpan2.style.cursor = 'pointer';
			oSpan2.innerHTML = cType;

			// create img element
			var img = document.createElement('img');
			img.src = image;
			img.setAttribute('src',image);
			img.style.width = 115;
			img.style.height = 115;
			img.style.border = 0;
			img.style.align = 'absmiddle';
			img.style.cursor = 'pointer';
			
			
			// append childs
			td_txt.appendChild(oSpan);		
			td_txt.appendChild(document.createElement('br'));
			td_txt.appendChild(oSpan1);		
			td_txt.appendChild(document.createElement('br'));
			td_txt.appendChild(oSpan2);
			

			// now append img to its parent
			td_img.appendChild(img);
			//now append TDs to its parent TR
			tr.appendChild(td_img);
			tr.appendChild(td_txt);
			//append TR to TBODY
			tbody.appendChild(tr);
			// append TBODY to TABLE
			table.appendChild(tbody);
			// append table to div	
			oDiv.appendChild(table);

			// now append Div to its parent
			if (flag.toUpperCase() == 'PREV') {							
				document.getElementById('previous').appendChild(oDiv);			
			}else if (flag.toUpperCase() == 'NEXT') {							
				document.getElementById('next').appendChild(oDiv);
			}

			// now position the div
			if (document.getElementById('pic')) {
				var divObj = document.getElementById('pic');
				var mCoord = eval('(' + getMouseXY(event) + ')');
				//get parent span height
				var winW, newPos= 0;
				// get window size adjusted for scrollbars
				if (window.innerWidth) {
					winW = window.innerWidth-16;
				}
				if (document.body.offsetWidth) {
					winW = document.body.offsetWidth-20;
				}
				// get parent node width
				parentWidth = divObj.parentNode.offsetWidth;
				parentHeight = divObj.parentNode.offsetHeight;
				parentTop = findPosY(divObj.parentNode);
				if(!parentWidth) parentWidth = 40; // fixed size
				newPos = (winW <= 800)? Math.round((300/2) + parentWidth): (300/2);
				newPos = ((mCoord.x - newPos) <= 0) ? parentWidth/2 + 50: newPos;
				//alert(parseInt(parentTop + '---' + parentHeight));
				divObj.style.top = parseInt(parentTop) + parseInt(parentHeight);				
				divObj.style.left = parseInt(mCoord.x) - parseInt(newPos); // 300 is DIV width
				divObj.style.visibility = 'visible';
				

				showPopUp = true;		
				divObj = null; // prevent memory leak
			}
			
			oDiv = null;// prevent memory leak
			img = null; // prevent memory leak
			imageSrc = null;
		}
	}	
}

/* Find a Top position of an element in the page */
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


/*
* Implements the hide preview box technique
*
*/
function hidePreview(e) {
	
	try {
		baseTarget = document.getElementById(arguments[1]);
		var show = false;
		var relTarg;	
		if (!e) var e = window.event;
		if (e.relatedTarget) relTarg = e.relatedTarget;
		else if (e.toElement) relTarg = e.toElement;
		
		while(relTarg != baseTarget && relTarg.nodeName != 'BODY') {
			relTarg = relTarg.parentNode;
			if (relTarg == baseTarget) {
				show = true;
				break;
			}		
		}
		if (! show) {
			removePreview();
		}
	}catch(e) {}
}


/*
* removes preview box
*/
function removePreview() {
	try{
		if (document.getElementById('pic')) {
			var parent = document.getElementById('pic').parentNode;
			if (parent) {
				parent.removeChild(document.getElementById('pic'));   
			}
			parent = null; // prevent memory leak
			showPopUp = false;
		}
		showPopUp = false;
	}catch(e) {}
}


/* function to determine the card type like Postcard, Flash, Animated etc. */
function getType(type) {
	var card_type = '';
	switch (type.toUpperCase()) {
		case 'F':
			card_type = '[ Flash ]';
			break;
		case 'I':
			card_type = '[ Interactive ]';
			break;
		case 'A':
			card_type = '[ Animated ]';
			break;
		case 'P':
			card_type = '[ Postcard ]';
			break;
		case 'O':
			card_type = '[ Clickcard ]';
			break;
		case 'PC':
			card_type = '[ Photocard ]';
			break;
	}

	return card_type;
}



/*
* function to move previous
*/
function movePrev() {	
	document.getElementById('previous').disabled = true;

	//poor fix, bug prone, dirty code
	if(isIE() && $('rakpanel')){
		$('rakpanel').stop();
		$('rakpanel').parentNode.removeChild($('rakpanel'));		
	}

	if($('replay'))
		$('replay').parentNode.removeChild($('replay'));

	if (_nCurrent == -1) {
	    _nCurrent = getPosition();
	}
	if (_nCurrent > 1) {
	    _nCurrent--;
		hide(_nCurrent);		
		setXMLpage();				
	}
}

/*
*
* function to move previous
*
*/
function moveNext() {	
	
	document.getElementById('next').disabled = true;

	//poor fix, bug prone, dirty code
	if(isIE() && $('rakpanel')){
		$('rakpanel').stop();
		$('rakpanel').parentNode.removeChild($('rakpanel'));		
	}

	if($('replay'))
		$('replay').parentNode.removeChild($('replay'));

	if (_nCurrent == -1) {
	    _nCurrent = getPosition();
	}

	if (_nCurrent < total_rec) {
	    _nCurrent++;
		hide(_nCurrent);		
		setXMLpage();				
	}
}

/*
*
* this function controls the flow of this program
*
*/
function main() {
	// sets the total records
	if (arguments[0]) {			
		// as arguments is false so there is new page, now show loading message		
		show_loading();
		//initialize AJAX call
		initAJAX(_pageToRead,'','XML','GET',parseXML);	
	}else {
	    _nPointer = _nCurrent - 1;		
	    write_html(_nDataArray[_nPointer]);
		write_form_data();
		change_extras();
		setPreviewImages(_nCurrent);
	}
}