//Here defined global parameter
var prim_item = "";
var flag_prim = false;
var sec_items = "";
var sec_items_prod = "";
var message = "";
var productDetail = null;//this holds the information that is retrived from the server;
/**
	This Div shows and hides the div of main image
*/
function hideShowDiv(divName,act,e)
{
	var ie5=document.all&&document.getElementById;
	var ns6=document.getElementById&&!document.all;
	var menuobj = null;
	if (ie5||ns6)
	{
		menuobj=document.getElementById(divName);
	}
	//Find out how close the mouse is to the corner of the window
	var rightedge=ie5? document.body.clientWidth-event.clientX : window.innerWidth-e.clientX
	var bottomedge=ie5? document.body.clientHeight-event.clientY : window.innerHeight-e.clientY

	//if the horizontal distance isn't enough to accomodate the width of the context menu
	//move the horizontal position of the menu to the left by it's width
	if (rightedge<menuobj.offsetWidth)
	{
		menuobj.style.left=ie5? document.body.scrollLeft+event.clientX-menuobj.offsetWidth : window.pageXOffset+e.clientX-menuobj.offsetWidth;
	}
	else
	{
		//position the horizontal position of the menu where the mouse was clicked
		menuobj.style.left=ie5? document.body.scrollLeft+event.clientX : window.pageXOffset+e.clientX;
	}

	//same concept with the vertical position
	if (bottomedge<menuobj.offsetHeight)
	{
		menuobj.style.top=ie5? document.body.scrollTop+event.clientY-menuobj.offsetHeight : window.pageYOffset+e.clientY-menuobj.offsetHeight;
	}
	else
	{
		menuobj.style.top=ie5? document.body.scrollTop+event.clientY : window.pageYOffset+e.clientY;
	}
	var form = document.forms[0];
	document.getElementById(form.id+":"+"mainImg").src = document.getElementById(form.id+":"+"mainImg").src;

	if (act == "showit"){
		menuobj.style.display = 'block';
		if(navigator.appName == "Microsoft Internet Explorer")
			{
				var divNode = menuobj;
				divNode.insertAdjacentHTML("afterEnd", '<IFRAME style="position:absolute;border-color:green;z-index:5" src="" frameBorder="0" scrolling="no" id="_hvrShm" name="_hvrShm" />'); 
				var iframeShim = document.getElementById("_hvrShm"); 
				iframeShim.style.top = divNode.style.top; 
				iframeShim.style.left = divNode.style.left 
				iframeShim.style.width = divNode.offsetWidth; 
				iframeShim.style.height = divNode.offsetHeight;
			}
	}
	else if (act == "hideit"){
		menuobj.style.display = 'none';
		while((el=document.getElementsByTagName('iframe')).length){el[0].parentNode.removeChild(el[0]);}
	}


	return false
}

function sendMailToFriend() 
{
	var servletPath = contextpath;
	var productid = productID;
	
	var path = servletPath+'/faces/jsp/sendMail.jsp?productID='+productid;
	chld = window.open(path,"parent","left=200,top=200,toolbar=0,menubar=0,directories=0,scrollbars=0,height=300,width=500");
	return false;
}
function setRankingStar(feed,hook,ratingFor)
{
	feed = feed/10;
	var servletPath = contextpath;
	var star = Math.round(feed);
	var totalStar = 5;
	var fadStar = 0;
	var fullStar = 0;
	var halfStar = 0;
	star = star % 2;
	if(star == 0)
	{
		fullStar = feed / 2;
		halfStar = 0;
	}
	else
	{
		fullStar = Math.floor(feed / 2);
		
		halfStar = 1;
	}
	
	fadStar = totalStar - (fullStar + halfStar);
	
	var fargment = document.createDocumentFragment();
	fargment.appendChild(document.createTextNode(ratingFor))
	var image = null;
	
	for(var i = 1 ; i<= fullStar; i++)
	{
		image = document.createElement("IMG");
		image.src = servletPath + "/tiles/templates/media/images/HFI/star_1.gif";
		
		image.id=""+i
		fargment.appendChild(image);
		
	}
	
	if(halfStar > 0)
	{
		image = document.createElement("IMG");
		image.src = servletPath+"/tiles/templates/media/images/HFI/star_3.gif";
		image.id=""+i
		fargment.appendChild(image);
	}
	for(var i = 1 ; i<= fadStar; i++)
	{
		image = document.createElement("IMG");
		image.src = servletPath+"/tiles/templates/media/images/HFI/star_2.gif";
		image.id=""+i
		fargment.appendChild(image);
	}
	var starTag = document.getElementById(hook);
	starTag.appendChild(fargment);
}
function chcolor(parentId,imgId,length,thisObj)
{
	var formId = document.forms[0].id;
	for(var i=0; i<length;i++)
	{
		document.getElementById(formId+':'+parentId+'_'+i+':'+imgId).className='imgnoselect';
	}
	thisObj.className ='imgbrdr';
	getProductDetail();
}
function getProductDetail()
{
	for(k=0; k<document.forms.length; k++)
	{
		form = document.forms[k];
		var elems = form.elements;
		for( var i=0; i<elems.length; i++)
		{
			if(elems[i].id.indexOf(':itemdrop') !=-1 )
			{
				var menuval = elems[i].options[elems[i].selectedIndex];
				if(menuval.text == "Select Item")
				{
					alert("Please select an item to continue");
					return false;	
				}
				var colorCode = getColorCode();
				productDetail = retriveResponse(elems[i].value,colorCode);
				//alert(productDetail)
				var mrp = parseFloat(productDetail[1]['mrp']);
				var ourPrice = parseFloat(productDetail[2]['our']);
				var save= (mrp-ourPrice);
				var priceComponent = "<table border='0'><tbody>";
				if(mrp != ourPrice)
				{
					priceComponent +=  "<tr><td>MRP:</td><td><span class='overline'> Rs. </span></td><td><span class='overline'>"+mrp+"</span></td></tr>";
					priceComponent +="<tr><td>You Save:</td><td> Rs. </td><td>"+save+"</td></tr>";
				}
				priceComponent +="<tr><td><span class='bold'>Price Now:</span></td><td><span class='bold'> Rs.</span></td><td><span class='blackboldSmall bold'>"+ourPrice+"</span></td></tr>";
				priceComponent +="</tbody></table>"
				document.getElementById('priceComp').innerHTML = priceComponent;
				checkStock();
			}
		}
	}
	return true;
}
function getHTTPObject() 
{
  var xmlHttp;
	try{
	    xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
    }
    catch (e){
    	try{
      		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");// Internet Explorer
      	}
    	catch (e){
      		try{
        		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        	}
      		catch (e){
        		alert("Your browser does not support AJAX!");
        		xmlHttp=false;
        	}
      	}
    }
  return xmlHttp;
}
function getPilrfNum()
{
	getProductDetail();
	return productDetail[0]['pilrfnum'];
}
function retriveResponse(size,color)
{
	var objArr = new Array();
	if(catalogueId== null)
		alert("catalogueId"+catalogueId);
	var pilrefnum= null;
	XMLHttpRequestObject = getHTTPObject();
	var url = contextpath + "/faces/servlet/PILServlet";
	var params = null;
		if(color == null)
				params = "itemSizeCode="+size+"&catalogueId="+catalogueId;
			else
				params = "itemSizeCode="+size+"&itemColorCode="+color+"&catalogueId="+catalogueId;
		if(XMLHttpRequestObject){
			XMLHttpRequestObject.open("POST", url,false);			
			XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			XMLHttpRequestObject.onreadystatechange = function (){				
							if (XMLHttpRequestObject.readyState == 4 ) {
								var resp = XMLHttpRequestObject.responseText;
								if(resp.indexOf("Exception")!= -1)
								{
									alert("Exception occured in getting info.")
										return;
								}
								var map = resp.split("$$");
								if(map.length>0)
								for(var k=0;k<map.length;k++)
								{
									var temp = map[k].split('=');
									objArr[k] = new Object();
									objArr[k]['pilrfnum']= temp[1];
									objArr[k]['mrp']= temp[1];
									objArr[k]['our']= temp[1];
									objArr[k]['stockQty']= temp[1];
								}
							}
						};
			
			XMLHttpRequestObject.send(params);				
		}
		return objArr;
}


function retrivePilRfNum(size,color){
		return getPilrfNum();
}


function setPriceAlert(pbirfnum)
{
	    XMLHttpRequestObject = getHTTPObject();
		var url = contextpath + "/servlet/PriceAlertServlet";
		if(XMLHttpRequestObject){
			XMLHttpRequestObject.open("POST", url,false);			
			XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			XMLHttpRequestObject.onreadystatechange = function (){
				if (XMLHttpRequestObject.readyState == 4 ) {
					//alert(XMLHttpRequestObject.responseText);
					if(XMLHttpRequestObject.responseText.indexOf("NLogin")!=-1){
						alert("Please 'Sign in ' first.");
						return false;
					}
					if(XMLHttpRequestObject.responseText.indexOf("alreadyRegister")!=-1){
						alert("You have already registered alert for this product.");
						return false;
					}
					if(XMLHttpRequestObject.responseText.indexOf("success")!=-1){
						//alert(contextpath)
					var path = contextpath+'/faces/jsp/priceAlert.jsp';
					//alert(path);
					var chld = window.open(path,'_blank','left=280,top=200,toolbar=0,menubar=0,directories=0,scrollbars=1,height=200,width=380');
					//alert(chld )
					}
				}
			};
			XMLHttpRequestObject.send("pbirfnum="+pbirfnum);
		}
}
	
function getColorCode()
{
	var imagesObj = document.getElementsByTagName("IMG");
	var selColor = null;
	for(var k=0; k<imagesObj.length; k++)
	{
		if(imagesObj[k].id.indexOf(':colrImg') !=-1 )
			{
				var menuval = imagesObj[k].className;
				if(menuval == "imgbrdr")
					selColor = imagesObj[k].alt;
			}
	}
	return selColor;
}
function checkStock()
{
	var form = document.forms[0];
	if(productDetail.length>3)
	{
		var qantity = productDetail[3]['stockQty'];
		//alert('qantity='+qantity +'  ,isNaN(parseInt(qantity))='+isNaN(parseInt(qantity)));
		if(qantity==0)
			document.getElementById(form.id+":"+"stockQty").innerHTML="Out of stock";
		else
			document.getElementById(form.id+":"+"stockQty").innerHTML="In stock";
	}
	else
	{
		document.getElementById(form.id+":"+"stockQty").innerHTML="Out of stock";
	}
}
function insertValues()
{
  // This loop is for accumlating the items of the free products.
  // The titles of the radio buttons will be 
  // in the format -- PrimaryProductID$RelatedProductID$RelatedItemID --
  // TO set the variables to no values for every method invocation.
  initializeVariables();
  
  // No need to add the primary product and item if multiple items are present.
	for(k=0; k<document.forms.length; k++){
			form = document.forms[k];
			var elems = form.elements;
			//if(!checkStock())
			//	return false;
			for( var i=0; i<elems.length; i++){
				if(elems[i].id.indexOf(':itemdrop') !=-1 ) {
					var menuval = elems[i].options[elems[i].selectedIndex];
					if(menuval.text == "Select Item"){
						alert("Please select an item to continue");
						return false;	
					}
					var colorCode = getColorCode();
					if(colorCode != null)
						prim_item = getPilrfNum();
					else
						prim_item = elems[i].value;
					
					flag_prim = true;
				}
			}					
		}
   addSecondaryRadioItems();
   addSecondaryNonRadioItems();
   return checkFinalValues();
} 
function initializeVariables()
{
	//alert('Initializing variables Init ');
	prim_item = "";
	flag_prim = false;
	sec_items = "";
	sec_items_prod = "";
	message = "";
	var elems = document.forms[0].elements;
	for(var i=0;i<elems.length;i++){
		if(elems[i].id.indexOf('prim_hidden_item') != -1 ){
			var elemstemp = document.forms[0].elements;
			for(var k=0;k<elemstemp.length;k++){
				if(elemstemp[k].id.indexOf('tempItemID') != -1){
					if(!elemstemp[k].value){
						elemstemp[k].value = elems[i].value ;
					}
				}
			}
		}
	}

	//alert('Initializing variables Complete ');
  }
		  
  /*
	This method is to fetch for the free products with multiple items.
	All the items are added up with the existing variable sec_items and the 
	sec_items_prod contains the productID's whose items have been added.
  */

function addSecondaryRadioItems()
{
	//alert('Add Secondary Radio Items  Init ');
	for(i=0;i<document.all.length;i++)
	{
		elem = document.all[i];
		if(eval(elem).title.indexOf(prim_prod_id) == -1)
		{
			var arr_obj = "";
			if(eval(elem).type == 'radio' && eval(elem).checked)
			{
				arr_obj = eval(elem).title.split('$');
				// add a check for the check box checking.
				if(checkUserSelectionBox(arr_obj[0]))
				{
					if(arr_obj[1])
					{
						sec_items += arr_obj[1] + ',';
						sec_items_prod += arr_obj[0] + ',';
					}
				}
			}
		}
	}
	//alert('Secondary Item radio : ' + sec_items );
	//alert('Add Secondary Radio Items Complete ');
  }
		  
		  function addSecondaryNonRadioItems()
		  {
			for(i=0;i<document.all.length;i++)
			{
				elem = document.all[i];
				if(eval(elem).title.indexOf(prim_prod_id) == -1)
				{
					var arr_obj = "";
					if(eval(elem).type == 'checkbox' )
					{
						if(eval(elem).checked)
						{
							arr_obj = eval(elem).title.split('$');
							if(sec_items_prod.indexOf(arr_obj[0]) == -1)
							{
								sec_items += arr_obj[1] + ',';
								sec_items_prod += arr_obj[0] + ',';
							}
						}
					}
				}
			}
			//alert('Secondary Items NON radio : ' + sec_items );
			//alert('Add Secondary Non Radio Items Complete ');
		  }
		  
		  function checkUserSelectionBox(freeProdID){

				//alert('Check User Selection Box Init ');

				var elems = document.forms[0].elements;
		  		for(var i=0;i<elems.length;i++){
		  			if((elems[i].title.indexOf(freeProdID) != -1)  && (elems[i].type == 'checkbox')){
						if(elems[i].checked){
							//alert('The checkbox is checked adding the product');
							return true;
						}else {
							//alert('The checkbox is not checked ignoring the free product');
							return false;
						}
		  			}
		  		}

				//alert('Check User Selection Box Complete ');
		  }
		  	
		  function checkFinalValues(){

			//alert('Check Final Values Init ');

			//alert("Inside check final values method "  + flag_prim);
			getHiddenFieldValue();
			
			setMessageValues();
				//alert('Messages Set');
				return checkMaxFreeProducts();
 			//alert('Check final values Complete ');

		  }
		  // Here we get all the items. comma separated.// now to make it colon separated.

		  function getHiddenFieldValue(){

				//alert('Get Hidden Field Values  Init ');
				var elems = document.forms[0].elements;
				if(!flag_prim){
					for(var i=0;i<elems.length;i++){
						if(elems[i].id.indexOf('tempItemID') != -1 ){
							prim_item = elems[i].value;
						}
					}
				}
				for(var k=0;k<elems.length;k++){
					if(elems[k].id.indexOf('prim_hidden_item') != -1){
						elems[k].value = prim_item + ',' + sec_items;
						return;
					}
				}
   			    //alert('Get Hidden Field Values Complete ');
		  }	
		  
		 function checkMaxFreeProducts(){
		  	for(i=0;i<document.all.length;i++){
				elem = document.all[i];
				if(eval(elem).title.indexOf('free:') != -1){
					var freeNoArr = eval(elem).title.split('free:');
					var secItemsArr = sec_items.split(',');
					var selectedItems=(secItemsArr.length -1);
					if(selectedItems ==0){
					  alert('Please choose '+ freeNoArr[1] + ' free products from the list given below');
					  clearOthers();//added bu dinesh
					  return false;
					}
					if(!(freeNoArr[1] >= (secItemsArr.length -1))){
						alert('Cannot add more free products than allowed');
						clearOthers();
						return false;
					}else {
						// TODO temporary will be changed;
						return true;
					}
				}
			}
			return true;
		  }

	  // TODO another method has to be written for collecting messages in the format
	  // MessageProvided1,ItemID1,AttributeID1:MessageProvided2,ItemID2,AttributeID2:  
	  
  function setMessageValues(){
	var elems = document.forms[0].elements;
	for(var i=0;i<elems.length;i++){
		if(elems[i].id.indexOf('itemMessages') != -1){
			elems[i].value = getItemMessagesString();
			//alert('The messages entered : ' + elems[i].value);
			break;
		}			
	}
  }
	  
function getItemMessagesString()
{
	var elems = document.forms[0].elements;
	var mesg_str = "";
	for(var i=0;i<elems.length;i++)
	{
		if(elems[i].title.indexOf('mesg-') != -1 )
		{
			var msgArr = elems[i].title.split('mesg-');
			var mesgValue = elems[i].value;
			if(mesgValue)
			{
				var idArr = msgArr[1].split(':');
				var itemID = idArr[0];
				var attrID = idArr[1];
				mesg_str += mesgValue + ',' + itemID + ',' + attrID + ':';
			}
		}
	}
  	return mesg_str;
}
/**
	This check for the checkbox before selection of the radio.
*/
function isValidSelect(title)
{
	var isValid = false;
	for(var i=0; i<document.forms.length;i++)
	{		
		var form = document.forms[i];
		for(var j=0;j<form.elements.length;j++)
		{
			var element = form.elements[j];
			
			if(element.type=="checkbox" && element.title.indexOf(title)!=-1)
			{
				if(element.checked)
				{
					isValid = true;
					break;
				}
			}
		}
	}
	return isValid;
}
/**
	User can select the radio button after the selection of checkbox
*/
function clearOthers()
{
	for(var i=0; i<document.forms.length;i++)
	{
		var form = document.forms[i];
		for(var j=0;j<form.elements.length;j++)
		{
			element = form.elements[j];
			if(element.type=="radio")
				element.checked = false;
		}
	}
}
/**
user can select only one check box
*/
function deSelectOthers(thisObj)
{
	for(var i=0; i<document.forms.length;i++)
	{
		var form = document.forms[i];
		for(var j=0;j<form.elements.length;j++)
		{
			element = form.elements[j];
			if(element.type=="checkbox")
				element.checked = false;
		}
	}
	thisObj.checked = true;
}
/**
	This will change the main image of the product when user click on the small images
*/
function changeMainImg(newImg,which)
{	
	var form = document.forms[0];
	var ele =null;
	if(which=='main')
	{
		ele = document.getElementById(form.id+":"+"mainImg");
		ele.src = newImg;
	}
	ele = document.getElementById(form.id+":"+"popupedLargeImg");
	ele.src = newImg;
}

function openImages(productId,catalogueID,imageViewId){
	var page = contextpath+"/faces/tiles/productImagesViews.jsp?productID="+productId+"&catalogueID="+catalogueID+"&imageViewId="+imageViewId;
	var win_porp = "left=200,top=200,toolbar=0,menubar=0,directories=0,scrollbars=1,height=300,width=500";
	window.open(page,"pImages",win_porp);
	//var page = 'http://mssupport.anmsoft.com/images/product/product_27.jpg';
	//changeMainImg(page,"main")
	
}