//------------------------AJAX handler----------------------------------------//
function AJAXHandler()
{
	var target=null;
    var respVal=null;
       	
	this.setTarget=function(target)
	{
		this.target=target;
	}

	
	this.createRequestObject=function(){
		
		var httpRequest=false;
		if(window.XMLHttpRequest){
			httpRequest=new XMLHttpRequest();
//			xmlDoc =document.implementation.createDocument("", "", null) ;
		}
		else if(window.ActiveXObject){
			httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
//			xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
		}
		else{
			alert("This page will not work as desired, lack of support from browser");
		}
		
		return httpRequest;
	}

	var xmlhttp=this.createRequestObject();
	var flag=null;
	
	this.sendRequest=function(paramslist,method,flagPrm){
			
		params=paramslist; 	
		
		flag=flagPrm;
				 
		if(method=='POST')
		{
			xmlhttp.open("POST",this.target,true);
		 	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	        xmlhttp.setRequestHeader("Content-length", params.length);
	        xmlhttp.setRequestHeader("Connection", "close");
	        xmlhttp.onreadystatechange=this.handleResponce;
	        xmlhttp.send(params);
		}
		else if(method=='GET')
		{
			
			xmlhttp.open("GET",this.target+params,true);
			xmlhttp.onreadystatechange=this.handleResponce;
		    xmlhttp.send(null);
		}
		 		    
	}
	
	

	this.handleResponce=function(){
		
	
		optTitle=document.getElementById('title');
//		document.getElementById('overPop').innerHTML=overViewStr.replace(/(\u000A)+|(\n)+|\u000A|(\u000D)+|\u000D|\u000A\u00 0D|\n\r/, ',');
		pop =document.getElementById('overPop');
		
		if(xmlhttp.readyState==4){
		
			    responce=xmlhttp.responseText;
			
                if(flag==1)
                {
                		 if(responce==-2)
						 {
							alert("Invalid Current Password.")
							obj=document.getElementById('password');
							obj.value="";
							obj.focus();
					    }
                }
                else if(flag==2)
                {
				
           		pop.innerHTML = responce;
				document.getElementById('overViewPopId').style.top= getYOffset() + 80;
				document.getElementById('overViewPopId').style.left= 220;
				my = document.getElementById('overViewPopId').style.top;
				mx = document.getElementById('overViewPopId').style.left;
				//-----initialize dragging
				
				//var IE = document.all?true:false;
				if (!document.all) {
					//alert("ff")
					document.captureEvents(Event.MOUSEMOVE);
					document.captureEvents(Event.MOUSEDOWN);
				}
				/*
				if (!IE) {
					alert("ff")
					document.captureEvents(Event.MOUSEMOVE);
					document.captureEvents(Event.MOUSEDOWN);
				}
				*/
				document.onmousemove = getMouseXY;
				document.onmousedown = getDif;
				var tempX = 0;
				var tempY = 0;
				//---end-of-initialize dragging
				//alert(document.getElementById('overViewPopId').style.top);
				//alert("mmm");
                }
                else if(flag==3)
                {
                	Selected=new Array();
                	ThreedImages=new Array(10,10);
                	
                	globalArrays = responce.split("<glo>");
                	cSwatches = globalArrays[0];
                	cSwatch = cSwatches.split("<cs>")
                	for(i=0;i<cSwatch.length;i++)
					{
						ColorSwatches[i] = cSwatch[i]
					}
					
					Selects = globalArrays[1];
                	Select = Selects.split("<sel>")
                	for(i=0;i<Select.length;i++)
					{
						S = Select[i]
						id = S.split("<id>");
						Selected[id[1]] = id[0]; 
					}
					
					tImages = globalArrays[2];
					timg = tImages.split("<thd>")
                	for(i=0;i<timg.length;i++)
					{
						S = timg[i]
						id = S.split("<id>");
						abbr = id[0].split("<abr>")
						ThreedImages[id[1]+''+abbr[1]] = abbr[0]; 
					}
					currentProduct=globalArrays[3]
					HighlightColorSwatch('swatch1');
					menu();
					RecordItemSelection(Selected['itemId'],currentProduct,Selected['color'])
                }
                else
                {
                	
                	
				
					newslist=responce.split('<elem>')
									
					optTitle.options.length=newslist.length;
	//				alert(newslist)

					for(i=0;i<newslist.length;i++)
					{				
					   if(newslist[i])
					   {
					   	newsattr=newslist[i].split('<attr>')
				    	optTitle.options[i].value=newsattr[0];
				    	optTitle.options[i].text=newsattr[1];
					   }
					   else
					   {
					   	optTitle.options.length=newslist.length-1;
					   }
					 		
					}
                }
				
				
			   
			
		}
		else
		{
			if(flag==2)
			{
				
			}
			else if(flag==3)
			{
				
			}
			else
			{
				optTitle.options.length=1;
				optTitle.options[0].text='Loading...';
			}
		}
		
	
	}
	
	
	
	
}
//-------------------------------------------------------------
//handles IE and firefox 

function getYOffset() {
    var pageY;
    if(typeof(window.pageYOffset)=='number') {
       pageY=window.pageYOffset;
    }
    else {
		pageY=document.body.scrollTop;
    }
    return pageY;
}


//------------------------------
// validates user input
function validChars(e, goods) {
	var key, keychar;
	key = (window.event) ? window.event.keyCode : ((e) ? e.which : null);
	if (key == null) return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	goods = goods.toLowerCase();

	if (goods.indexOf(keychar) != -1)
		return true;

	if (key==null || key==0 || key==8 || key==9 || key==13 || key==27)
		return true;

	return false;
}

function showConfirmation(msg)
{
	return confirm(msg);
}

//------ manage options selection in news image upload
function takeAction(caller){
	
	fileController=document.getElementById('doc');
	haveDocCtrl=document.getElementById('have_doc');
	replaceDocCtrl=document.getElementById('replace_doc');
	keepDocCtrl=document.getElementById('keep_doc');
//	form=document.getElementById('updNews');
	
	switch(caller.value)
	{
		case 'useCurrent':
		  fileController.disabled=true;
		  replaceDocCtrl.value=false;
		  keepDocCtrl.value=true;
		  break;
		  
		case 'replace':
		  fileController.disabled=false;
		  replaceDocCtrl.value=true;
		  keepDocCtrl.value=false;
			
		  
		
	}
	
	//alert("keep:"+keepImgCtrl.value+"/"+"Have:"+haveImgCtrl.value+"/replace:"+replaceImgCtrl.value+"/rem:"+removeImgCtrl.value+"\\"+fileController.value);
}

//-------------------------
//download location options handling

function handleOption(caller,explicitCall)
{
	//homeL=document.getElementById('lifeH');
	//newsL=document.getElementById('lifeN');
	container=document.getElementById('controlls');
	table=document.createElement('table');
	
	dispOnHome=' <td width="90">Display On (Home)</td>'+
	              '<td><input type="text" name="dispOnH" id="dispOnH" size="10"'+' class="forms" readonly>&nbsp; <a href="javascript:cal1.popup();">'+
	              '<img src="images/calendar.gif" alt="Calendar" border="0" WIDTH="15" HEIGHT="14"></a></td>';
	
	dispOnNews='<td width="90">Display On (News)</td>'+
              '<td><input type="text" name="dispOnN" id="dispOnN" size="10"'+
              'class="forms" readonly>&nbsp; <a href="javascript:cal2.popup();">'+'<img src="images/calendar.gif" alt="Calendar" border="0" WIDTH="15" HEIGHT="14"></a></td>';
	
	homeLife='<td width="90">Home Life</td>'+
              '<td><input type="text" name="lifeH" id="lifeH" size="3"'+
               'class="forms" onkeypress="return validChars(event,\'0123456789\')'+
              ' ">&nbsp; Days</td>';
	
	newsLife=' <td width="90">News Life</td>'+
              '<td><input type="text" name="lifeN" id="lifeN" size="3" '+
              'class="forms" onkeypress="return validChars(event,\'0123456789\')">&nbsp; Days</td>';
              
              
              
    if(explicitCall)
    {              
	checkVal=explicitCall;
	callerId=caller;
		if(callerId)
		{
			Option=document.getElementById(callerId);
			Option.checked=true;
		}
    }
	else
	checkVal=caller.value
	
	
	
	switch(checkVal)
	{
		
		case '1'://h
		container.innerHTML="";
		trElem1=document.createElement('tr');
		tdElem1=document.createElement('td');
		tdElem2=document.createElement('td');
		//------------------
		trElem2=document.createElement('tr');
		tdElem3=document.createElement('td');
		tdElem4=document.createElement('td');
		//--------------
		trElem1.appendChild(tdElem1);
		trElem1.appendChild(tdElem2);
		trElem2.appendChild(tdElem3);
		trElem2.appendChild(tdElem4);
		table.appendChild(trElem1);
		table.appendChild(trElem2);
		//--------------------
		tdElem1.innerHTML='Display On (Home)';
		tdElem2.innerHTML='<input type="text" name="dispOnH" id="dispOnH" size="10" class="forms" readonly>&nbsp; <a href="javascript:cal1();"><img src="images/calendar.gif" alt="Calendar" border="0" WIDTH="15" HEIGHT="14"></a>';
		tdElem3.innerHTML='Life';
		tdElem4.innerHTML='<input type="text" name="lifeH" id="lifeH" size="3" class="forms" onkeypress="return validChars(event,\'0123456789\')">&nbsp; Days';
		
		container.appendChild(table);
		break;
		case '2'://n
		container.innerHTML="";
		trElem1=document.createElement('tr');
		tdElem1=document.createElement('td');
		tdElem2=document.createElement('td');
		//------------------
		trElem2=document.createElement('tr');
		tdElem3=document.createElement('td');
		tdElem4=document.createElement('td');
		//--------------
		trElem1.appendChild(tdElem1);
		trElem1.appendChild(tdElem2);
		trElem2.appendChild(tdElem3);
		trElem2.appendChild(tdElem4);
		table.appendChild(trElem1);
		table.appendChild(trElem2);
		//--------------
		tdElem1.innerHTML='Display On (News)';
		tdElem2.innerHTML='<input type="text" name="dispOnN" id="dispOnN" size="10" class="forms" readonly>&nbsp; <a href="javascript:cal2();"><img src="images/calendar.gif" alt="Calendar" border="0" WIDTH="15" HEIGHT="14"></a>';
			tdElem3.innerHTML='Life';
		tdElem4.innerHTML='<input type="text" name="lifeN" id="lifeN" size="3" class="forms" onkeypress="return validChars(event,\'0123456789\')">&nbsp; Days';
		
		container.appendChild(table);
		break;
		case '3'://b
		
		container.innerHTML="";
		trElemH1=document.createElement('tr');
		tdElemH1=document.createElement('td');
		tdElemH2=document.createElement('td');
		//------------------
		trElemH2=document.createElement('tr');
		tdElemH3=document.createElement('td');
		tdElemH4=document.createElement('td');
		//--------------
		trElemH1.appendChild(tdElemH1);
		trElemH1.appendChild(tdElemH2);
		trElemH2.appendChild(tdElemH3);
		trElemH2.appendChild(tdElemH4);
		table.appendChild(trElemH1);
		table.appendChild(trElemH2);
		//--------------------
		tdElemH1.innerHTML='Display On (Home)';
		tdElemH2.innerHTML='<input type="text" name="dispOnH" id="dispOnH" size="10" class="forms" readonly>&nbsp; <a href="javascript:cal1();"><img src="images/calendar.gif" alt="Calendar" border="0" WIDTH="15" HEIGHT="14"></a>';
		tdElemH3.innerHTML='Life';
		tdElemH4.innerHTML='<input type="text" name="lifeH" id="lifeH" size="3" class="forms" onkeypress="return validChars(event,\'0123456789\')">&nbsp; Days';
		//-------------------------------------------------
		trElemN1=document.createElement('tr');
		tdElemN1=document.createElement('td');
		tdElemN2=document.createElement('td');
		//------------------
		trElemN2=document.createElement('tr');
		tdElemN3=document.createElement('td');
		tdElemN4=document.createElement('td');
		//--------------
		trElemN1.appendChild(tdElemN1);
		trElemN1.appendChild(tdElemN2);
		trElemN2.appendChild(tdElemN3);
		trElemN2.appendChild(tdElemN4);
		table.appendChild(trElemN1);
		table.appendChild(trElemN2);
		//--------------
		tdElemN1.innerHTML='Display On (News)';
		tdElemN2.innerHTML='<input type="text" name="dispOnN" id="dispOnN" size="10" class="forms" readonly>&nbsp; <a href="javascript:cal2();"><img src="images/calendar.gif" alt="Calendar" border="0" WIDTH="15" HEIGHT="14"></a>';
		tdElemN3.innerHTML='Life';
		tdElemN4.innerHTML='<input type="text" name="lifeN" id="lifeN" size="3" class="forms" onkeypress="return validChars(event,\'0123456789\')">&nbsp; Days';
		
		container.appendChild(table);
		
		
	}
	
	if(checkVal==dispLocGlb)//detect if  maching option clicked 
	setDisplayCriteria(homeLifeGlb,newsLifeGlb,dispOnHmGlb,dispOnNwGlb,dispLocGlb);
}
/*
 ****************Validation begins here...*********************
 */

function validate(field, msg, elementType)
{
	with (field)
	{
		//For text or textareas...
		if(elementType=='text' || elementType=='textarea'|| elementType=='password' || elementType=='file')
		{
			if (value==null||value=="")
			{
				alert(msg);
				return false;
			}
		}
		//For drop downs...
		else if(elementType=='select-one')
		{
			if (selectedIndex==0)
			{
				alert(msg);
				return false;
			}
		}
		else if(elementType=='checkbox')
		{
			if(checkboxIsChecked == 0)
				if (checked == false)
				{
					alert(msg);
					return false;
				}
		}
		else 
		{
			return true;
		}
	}
}
//E mail validation function.
function validateEmail(field, msg)
{
	with (field)
	{
		apos=value.indexOf("@")
		dotpos=value.lastIndexOf(".")
		
		if (apos<1||dotpos-apos<2) 
		{
			alert(msg);
			value='';
			return false;
		}
		else 
		{
			return true;
		}
	}
}


//----------------------------------validation
/**
 * validateForm(string form element[, string tag ids[, string flag]])
 * thisForm = Form name.
 * elementIds = Should be an element ID seperated by commas. ( Eg:'name,address' ).
 * flag = 'email' -> Validates email format.
 *		  'password' -> Validates password confirmation format.
 *		  'email+password' -> Validates email format & password confirmation.
 * Usage : validateForm(this, 'name,address') -> Validates only the 'name' & 'address'.
 *  	   validateForm(this) -> Validates all the fields.
 *		   validateForm(this,'*') -> Validates all the fields. Same as validateForm(this).
 *		   validateForm(this,'*','email+password') -> Validates email format & password confirmation.
 **/
var checkboxIsChecked = 0;
var emailFieldName = 'email';	//should give the name of the email field.
function validateForm(thisForm, elementIds, flag)
{
	var alertText;
	with (thisForm)
		{
			//Checks whether the Ids were given.
			if(typeof elementIds != 'undefined' && elementIds!='*')
			{
				alertText='All fields marked with º needs to be complete in full.';
				var tempElementIdArray = new Array();
				var tempElementsArray = new Array();
				var i;
				
				tempElementIdArray = elementIds.split(',');
				
				for(i in tempElementIdArray)
				{
					if(typeof elements[tempElementIdArray[i]] != 'undefined')
					tempElementsArray[i] = elements[tempElementIdArray[i]];
				}
				
				if(validateThis(tempElementsArray, alertText, flag) == false)
					return false;
			}
			//Else validates all the fields.
			else
			{
				alertText='All fields need to be complete in full.';
				if(validateThis(elements, alertText, flag) == false)
					return false;
			}
		}
}



/**
validateThis(elementObj,alertText[,Array confirm(elem1,elem2,'confirmation msg')])
last element of confirm contains the message to be displayed
**/
function validateThis(elementObj, alertText, confirm)
{
	for (i=0;i<elementObj.length;i++) 
	{/*alert(elementObj[i].type);*/
		//Text field validation done here...
		if(elementObj[i].type=='text')
		{
			//Checks whether text fields are empty...
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
				{
					elementObj[i].focus();
					return false;
				}
	 			
			//E mail validation is done here...	
			else if(elementObj[i].name == emailFieldName)
			{
				if(typeof flag != 'undefined' && flag.indexOf("email")!=-1)
					if (validateEmail(elementObj[i], "Invalid e-mail address format.", elementObj[i].type)==false)
					{
						elementObj[i].focus();
						return false;
					}
			}
		}
		//Drop down validation done here...
		else if(elementObj[i].type=='select-one')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
				{
					elementObj[i].focus();
					return false;
				}
		}
		//Textarea validation done here...
		else if(elementObj[i].type=='textarea')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
			{
				elementObj[i].focus();
				return false;
			}
		}
		else if(elementObj[i].type=='password')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
			{
				elementObj[i].focus();
				return false;
			}
		}
		else if(elementObj[i].type=='checkbox')
		{
			if (validate(elementObj[i], alertText, elementObj[i].type)==false)
			{
				elementObj[i].focus();
				return false;
			}
		}
		else if(elementObj[i].type=='file')
		{
			
			if(!elementObj[i].disabled)
			if (validate(elementObj[i],alertText,elementObj[i].type)==false)
			{
				
				elementObj[i].focus();
				return false;
			}
		}
		
	}
	if(typeof confirm != 'undefined')
	{
		
		for(i=0;i<(confirm.length-2);i++)
		{
			if(confirm[i]!=confirm[i+1])
			{
			lastIndex=confirm.length-1;	
			
			alert('New Password and Confirmation and need to be identical.')
			for(j=0;j<elementObj.length;j++)
			 if(elementObj[j].name==confirm[i+1])
			 {
			 elementObj[j].focus();
			 elementObj[j].value="";
			 
			 }
			
		    
			return false;
			}
			
		}
		
	}
		
}

//------ manage options selection in news image upload
function takeAction(caller){
	
	fileController=document.getElementById('image');
	haveImgCtrl=document.getElementById('have_image');
	replaceImgCtrl=document.getElementById('replace_image');
	removeImgCtrl=document.getElementById('remove_image');
	keepImgCtrl=document.getElementById('keep_image');
	form=document.getElementById('updNews');
	
	switch(caller.value)
	{
		case 'useCurrent':
		  fileController.disabled=true;
		  replaceImgCtrl.value=false;
		  removeImgCtrl.value=false;
		  keepImgCtrl.value=true;
		  break;
		  
		case 'replace':
		  fileController.disabled=false;
		  replaceImgCtrl.value=true;
		  removeImgCtrl.value=false;
		  keepImgCtrl.value=false;
		  break;
		  
		case 'remove':
	      fileController.disabled=true;
		  haveImgCtrl.value=false;
		  replaceImgCtrl.value=false;
		  removeImgCtrl.value=true;
		  keepImgCtrl.value=false;
		  alert('You have selected to remove current image.');
		  
		
	}

	//alert("keep:"+keepImgCtrl.value+"/"+"Have:"+haveImgCtrl.value+"/replace:"+replaceImgCtrl.value+"/rem:"+removeImgCtrl.value+"\\"+fileController.value);
}

function redirectToSearch()
{
   txtSearch=document.getElementById('keyword');
   document.location="category.php?keyword="+txtSearch.value;	
}
