
//Get form element's index value
function GetObjID(formName,ObjName){
  var objForm = eval('document.'+formName);
  if(objForm){
     for(var ObjID=0; ObjID < objForm.elements.length; ObjID++)
         if(objForm.elements[ObjID].name == ObjName){return(ObjID);break;}
     return(-1);
  }
  else return(-1);
}

function getFormValues(objname){
  var aa = document.getElementsByName(objname);
  var str = '';
  for (var i=0; i<aa.length; i++){if(aa[i].checked == true){	str = aa[i].value + ',' + str;}}
  //alert("Add to basket successfully!"); //alert(str);
  return str;
}


function countCheckBox(objname){
	var aa = document.getElementsByName(objname);
	var count = 0;
	for (var i=0; i<aa.length; i++){if(aa[i].checked == true){	count++;}}
	//alert("Add to basket successfully!"); //alert(str);
	return count;
}

function compare(objname){
	var ids = getFormValues(objname);
	if(countCheckBox(objname) < 2){
		alert("Please select at least two product to compare!");
		return false;
	}
	location.href = "compare.php?id="+ids;
	
	return true;
}
//  *********   start add & delete :  ************ //
function DeleteItem(formName,ObjName){
  var objForm = eval('document.'+formName);
  var ObjID   = GetObjID(formName,ObjName);
  //var i       = 1;
  minselected=0;
  if( ObjID != -1 ){
     for(i=objForm.elements[ObjID].length-1; i>=0; i--){
	     if(objForm.elements[ObjID].options[i].selected){
            if (minselected==0 || i<minselected) minselected=i;
            objForm.elements[ObjID].options[i] = null;
         }
     }
    i=objForm.elements[ObjID].length;
    if(i>0){
       if(minselected>=i) minselected=i-1;
       objForm.elements[ObjID].options[minselected].selected=true;
    }
  }
}

function AddItem(formName,ObjName, DesName,max,nextSibling){//nextSibling:  focus to next option
  var objForm = eval('document.'+formName);
  var ObjID    = GetObjID(formName,ObjName);
  var DesObjID = GetObjID(formName,DesName);
  var arrCat = new Array();
  var arrCatID = [];
  if(AddItem.arguments[5]) for(var n=5;n<AddItem.arguments.length;n++) arrCat[arrCat.length] = AddItem.arguments[n];
  if(arrCat.length){ for(n=0;n<arrCat.length;n++) arrCatID[n] = GetObjID(formName,arrCat[n]);}
  n = 0;
  while(objForm.elements[ObjID].disabled && arrCatID[n]){ObjID = arrCatID[n];n++;}
  if(objForm.elements[ObjID].disabled) return false;

  var k=0;
  var i = objForm.elements[ObjID].options.length;
  if(i==0) return;
  var maxselected=0;
  for(var h=0; h<i; h++)
     if (objForm.elements[ObjID].options[h].selected ) {
         k=k+1;
         maxselected=h+1;
     }
  if(maxselected>=i) maxselected=0;
  if(objForm.elements[DesObjID].length + k > max){ window.alert("You can select max : "+max+" items"); return;
  }

  if( ObjID != -1 && DesObjID != -1){
     i = objForm.elements[ObjID].options.length;
     var j = objForm.elements[DesObjID].options.length;
     for(h=0; h<i; h++){
	    if(objForm.elements[ObjID].options[h].selected){//ObjID maybe multiple
		   Code = objForm.elements[ObjID].options[h].value;
           Text = objForm.elements[ObjID].options[h].text;
           if(Code=='-1') return false;
           j = objForm.elements[DesObjID].options.length;
           if(Text.indexOf('--unlimit--')!=-1) {
              for(k=j-1; k>=0; k-- ) objForm.elements[DesObjID].options[k]=null;
              j=0;
           }
 
           HasSelected = false;
           for (k=j-1; k>=0; k-- ) {
              if (objForm.elements[DesObjID].options[k].value == Code){
		           HasSelected = true;
		           window.alert('This item '+Text+' is already selected.');
				   objForm.elements[DesObjID].selectedIndex = k;
                   break;
              }
           }

		   if ( HasSelected == false) { 
			  objForm.elements[DesObjID].options[j] = new Option(Text, Code);
			  objForm.elements[DesObjID].options[j].selected = true;
		   }//if
		   if(nextSibling) objForm.elements[ObjID].options[h].selected = false;
         }//if
    }//for
    if(nextSibling) objForm.elements[ObjID].selectedIndex = maxselected;
  }//if
}// End AddItem
//  *********  end add & delete :  ************ //


//  ********start Form data validition******************* //
function checkFormTxtItem(objT){//text canot be null
	if(AllTrim(objT.value) == "") return false;
	else return true;
}

function AllTrim(str){
	if(str.charAt(0) == " "){
  		str = str.slice(1);
  		str = AllTrim(str);
 	}
 	return str;
}


function step1_check(){
	var tradetypeindex = document.step1form.trade_type.selectedIndex;
	var tradetypetext  = document.step1form.trade_type.options[tradetypeindex].text.toLowerCase();

	var offertypeindex = document.step1form.offer_type.selectedIndex;
	var offertypetext  = document.step1form.offer_type.options[offertypeindex].text.toString();
    	offertypetext  = offertypetext.toLowerCase();
	//alert(tradetypetext);

	if((tradetypetext == 'job' || tradetypetext == 'contract') && offertypetext=='demand'){
		document.step1form.offer_type.options[offertypeindex-1].selected = true;
		document.step1form.offer_type.options[offertypeindex].selected = false;
	}
}// End Function step1_check


function step2_selectall(formname,obj1,obj2,obj3){
  var objform = eval('document.'+formname);

  if(document.getElementById(obj1).length<1 ||document.getElementById(obj2).length<1||document.getElementById(obj3).length<1){
  	alert("Please select at least one option for each column!");
  	return false;
  }

  for(i=document.getElementById(obj1).length-1;i>=0;i--){document.getElementById(obj1).options[i].selected = true;}
  for(i=document.getElementById(obj2).length-1;i>=0;i--){document.getElementById(obj2).options[i].selected = true;}
  for(i=document.getElementById(obj3).length-1;i>=0;i--){document.getElementById(obj3).options[i].selected = true;}
  return true;
}


function step3_check(){
	var aa = document.getElementsByName('keyword[]');
	var check = false;
	for (var i=0; i<aa.length; i++){
		if(aa[i].checked == true){
			check = true;
			break;
		}
	}
	if(!check){
		alert("Please select at least one keyword!");
	}
	return check;
}


function step3_1_check(){
	var aa = document.getElementsByName('subkeyword[]');
	var check = false;
	for (var i=0; i<aa.length; i++){
		if(aa[i].checked == true){
			check = true;
			break;
		}
	}
	if(!check){
		alert("Please select at least one sub keyword!");
	}
	return check;
}


function step4_selectall(){
   if(document.getElementById('countrysel[]').length<1){
  	alert("Please select at least one option for each column!");
  	return false;
  }
  for(i=document.getElementById('countrysel[]').length-1;i>=0;i--){document.getElementById('countrysel[]').options[i].selected = true;}
  return true;
}


function step4_1_check(){
	var aa = document.getElementsByName('location[]');
	var check = false;
	for (var i=0; i<aa.length; i++){
		if(aa[i].checked == true){
			check = true;
			break;
		}
	}
	if(!check){
		alert("Please select at least one location!");
	}
	return check;
}



// check moredetails form
function step5_check(){
	if (document.step5form.title.value.length == 0) {
		alert("Please input the title!");
		document.step5form.title.focus();
		return false;
	}
	if (document.step5form.description.value.length == 0) {
		alert("Please input description!");
		document.step5form.description.focus();
		return false;
	}
//	if (document.step5form.price.value.length == 0 || !isnumber(document.step5form.price.value)) {
//		alert("Please input price!(Format xxx.xx)");
//		document.step5form.price.focus();
//		return false;
//	}
	if (document.step5form.end_date.value.length == 0) {
		alert("Please input vaild date!");
		document.step5form.end_date.focus();
		return false;
	}
	if (!isdate(document.step5form.end_date.value)) {
		alert("Invalid date format, please input vaild date!");
		document.step5form.end_date.focus();
		return false;
	}

	if (document.step5form.is_special_offer.checked == true && document.step5form.additional_description.value.length == 0) {
		alert("please input additional information!");
		document.step5form.additional_description.focus();
		return false;
	}

    return true;
}
//  **************************************** end  Form data validition****************************************** //

///  ***********  OK  ***********
/*function:check if  a string is valid date*/
//date format£ºYYYY/MM/DD
function isdate(strDate,Dilimeter){
   var strSeparator = "/"; //date separator
   var strDateArray;
   var intYear;
   var intMonth;
   var intDay;
   var boolLeapYear;

   strDateArray = strDate.split(strSeparator);

   if(strDateArray.length!=3) return false;

   intYear  = parseInt(strDateArray[0],10);
   intMonth = parseInt(strDateArray[1],10);
   intDay   = parseInt(strDateArray[2],10);

   if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;
   if(intMonth>12||intMonth<1) return false;
   if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) return false;
   if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) return false;
   if(intMonth==2){
      if(intDay<1) return false;

      boolLeapYear = false;
      if((intYear%100)==0){if((intYear%400)==0) boolLeapYear = true;}
      else{if((intYear%4)==0) boolLeapYear = true;}

      if(boolLeapYear){if(intDay>29) return false;}
      else{if(intDay>28) return false;}
   }
   return true;
}


function isnumber(oNum){
	if(!oNum) return false;
	var strP=/^\d+(\.\d+)?$/;
	if(!strP.test(oNum)) return false;

	try{if(parseFloat(oNum)!=oNum) return false;}
	catch(ex){return false;} 

	return true;
}


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}



//  ************** //
function addphoto(element,fieldid,title,path,checkboxname) { 
	var photoTable = document.getElementById(element).getElementsByTagName("tbody")[0];

	var row = document.createElement("TR");
	
	var td1 = document.createElement("TD");
	var cb     = document.createElement("input"); 
	cb.type   = "checkbox"; // set type
	cb.name = checkboxname; // set name if necessary
	cb.value = fieldid;
	cb.checked = cb.defaultChecked = true; // make it checked now and by default
	td1.appendChild(cb);
	td1.appendChild (document.createTextNode(title));
	
	var td2 = document.createElement("TD");
	td2.appendChild (document.createTextNode(path));

	var td3 = document.createElement("TD");
	var del     = document.createElement("input"); 
	del.type   = "button"; // set type
	del.value = 'Delete';
	element_type = element.replace(/^add/,'');
	del.onclick= function () { removeupload(element_type,fieldid,'this.parentNode.parentNode.rowIndex'); } 
	
	td3.appendChild(del);
	
	row.appendChild(td1);
	row.appendChild(td2);
	row.appendChild(td3);
	photoTable.appendChild(row);
}


function removeupload(type,upload_id,row_index){
	xajax_removeupload(type,upload_id);
	document.getElementById("add"+type).deleteRow(row_index);
	return;
}



function getElementsByName_ie(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}


function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function checkall(element){
	var ele = document.getElementsByName(element);
	for (var i=0; i<ele.length; i++){
		ele[i].checked = !ele[i].checked;
	}
	return;
}


function checkdivall(div,element){
	var targetDiv = document.getElementById(div);
	
	var ele = targetDiv.getElementsByTagName(element);
	
	if(ele[0].checked){
		for (var i=0; i<ele.length; i++){ele[i].checked = false;}
	}else{
		for (var i=0; i<ele.length; i++){ele[i].checked = true;}
	}
	
	return;
}


function enerlixprint(){
	var header      = document.getElementById('header');
        var headersub   = document.getElementById('headersub');
	var navleft     = document.getElementById('navleft');
	var content     = document.getElementById('content');
	var navright    = document.getElementById('navright');
	var printbutton = document.getElementById('printbutton');
	
	if(header.style.display != 'none'){// hide header, navleft, navright, display url
		printbutton.value   = 'Druckansicht schließen';// **** Language
		content.style.width = "500px";
		if(document.getElementById('url')){
		    url = document.getElementById('url');
		    url.style.display = 'block';
		}else{
		    content.innerHTML += "<div id=\"url\" style=\"display:block;text-align:center;\"><b>" + location.href + "</b></div>";
		}
	}else{//show hided divs.
		var url = document.getElementById('url');
		url.style.display   = 'none';
		printbutton.value   = 'Seite drucken';//**** Language
		content.style.width = "500px";// default width.
	}
	
	header.style.display   = (header.style.display   == "none"?"block":"none");
        headersub.style.display= (headersub.style.display== "none"?"block":"none");
	navleft.style.display  = (navleft.style.display  == "none"?"block":"none");
	navright.style.display = (navright.style.display == "none"?"block":"none");

	document.body.style.marginLeft = "10px";

	window.focus();
	if(header.style.display == "none"){window.print();}
}


function zoomout(divid,size){
	var theDiv = document.getElementById(divid);
	var increment = 1;
	var currentSize = parseFloat(theDiv.style.fontSize);
	
	if (!currentSize){currentSize = 9;}
	if (size == "smaller"){		currentSize = currentSize - increment;
	}else if(size == "larger"){	currentSize = currentSize + increment;
	}
	if(currentSize < 6)currentSize = 6;
	if(currentSize > 96)currentSize = 96;
	
	theDiv.style.fontSize = currentSize + 'px';
	
	element = new Array(4);
	element[0] = 'div';
	element[1] = 'td';
	element[2] = 'li';
	element[3] = 'a';
	
	for (var i=0; i<element.length; i++){
		var subEle = theDiv.getElementsByTagName(element[i]);
		for (var ii=0; ii<subEle.length; ii++){
			subEle[ii].style.fontSize = (currentSize + increment) + "px";
		}
	}	
	
	return true;
}


function changeTitle(pagetitle){
	document.title += " " + pagetitle;
	return;
}

function checktimelimit(){// In add & edit object page.
	var limit = document.getElementById('without_timelimit');
	var duration = document.getElementById('duration');
	if(limit.checked == true){duration.disabled = true;}else{duration.disabled = false;}
	return;
}


function checksort(url,sort){// If sort value is valid, then submit an replaced url
	url = url.replace(/&sort=[a-z]+/,'');
	url = url.replace(/,sort,[a-z]+/,'');
	if(sort == 'startdate' || sort == 'enddate' || sort == 'titleasc' || sort == 'titledesc'){
		if(url.indexOf('.html') > 0){
			location.href = url.replace(/.html/,'sort,'+sort+',.html');
		}else{
			if(url.indexOf('?') < 1){url += '?';}
			location.href = url + '&sort=' + sort
		}
	}
	return;
}

function checkcompanysort(url,sort){// If sort value is valid, then submit an replaced url
	url = url.replace(/&sort=[a-z]+/,'');
	url = url.replace(/,sort,[a-z]+/,'');
	if(sort == 'time' || sort == 'name' || sort == 'named'){
		if(url.indexOf('.html') > 0){
			location.href = url.replace(/.html/,'sort,'+sort+',.html');
		}else{
			if(url.indexOf('?') < 1){url += '?';}
			location.href = url + '&sort=' + sort
		}
	}
	return;
}

function checkinquirysort(url,sort){// If sort value is valid, then submit an replaced url
	url = url.replace(/&sort=[a-z]+/,'');
	url = url.replace(/,sort,[a-z]+/,'');
	if(sort == 'time' || sort == 'drop2' || sort == 'plz' || sort == 'land' || sort == 'lieferdatum' || sort == 'theme' || sort == 'target'){
		if(url.indexOf('.html') > 0){
			location.href = url.replace(/.html/,'sort,'+sort+',.html');
		}else{
			if(url.indexOf('?') < 1){url += '?';}
			location.href = url + '&sort=' + sort
		}
	}
	return;
}

function checktopicfilter(url,filter){// If filter value is valid, then submit an replaced url
	url = url.replace(/&filter=[0-9]{0,4}/,'');
	
		if(url.indexOf('?') < 1){url += '?';}
		location.href = url + '&filter=' + filter
	
	return;
}

function autoselectsort(){
	url = location.href;
	//alert(url);
	mysort = document.getElementById('sortby');
	
	//alert(mysort.innerHTML);
	//alert(eleSort.options.length);
	//eleSort = document.all.sort;
//	for(i=0;i<mysort.options.length;i++){
//		alert(mysort.options[i].value);
//		if(mysort.options[i].value == 'title'){
//			mysort.options[i].selected = true;
//			break;
//		}
//	}
	
}



function checkuploadtaskform(){
	// Profile, frequency, url, notification, email
	profile = document.getElementById('profile');
	if(profile[profile.selectedIndex].value < 1){alert("Please select profile!");return false;}
	
	frequency = document.getElementById('frequency');
	if(frequency[frequency.selectedIndex].value < 1){alert("Please select frequency!");return false;}
	
	fileurl = jsTrim(document.getElementById('fileurl'));
	if(fileurl.value.length < 1){alert("Please input file url!");return false;}
	
	var filePat=/^(http:\/\/.+\..+\/[\w\d\.\/_-]+\.(zip|xls|csv|txt))[_=\?\w\d]*$/i;
	//var filePat=/^http.+\/(.+\.(txt|xls|csv|zip))[=\?\w\d]*$/i;
	var matchArray=fileurl.value.match(filePat);
	if (matchArray==null) {
		alert("File url error!")
		return false;
	}else{
		//alert("File url OK!")
	}

	notification = document.getElementById('notification');
	if(notification.checked == true){
		var email = document.getElementById('email');
		//alert(email.value);
	
		var emailPat=/^([\d\w\._]+@[\d\w\._-]+\..{2,3})$/;
		var matchArray=email.value.match(emailPat);
		if (matchArray==null) {
			alert("Email error!");
			return false;
		}else{
			//alert("Email OK!")
		}
	}
	
	return true;
}


//function checkemail(email){
//	var emailPat=/^([\d\w][\d\w\._]+@[\d\w\._-]+\..{2,3})$/;
//	var matchArray=email.match(emailPat);
//	if (matchArray==null) {return false;}
//	return true;
//}

function checkemail(emailStr) {
   if (emailStr.length == 0) {
                   return true;
               }
               var emailPat=/^(.+)@(.+)$/;
               var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
               var validChars="\[^\\s" + specialChars + "\]";
               var quotedUser="(\"[^\"]*\")";
               var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
               var atom=validChars + '+';
               var word="(" + atom + "|" + quotedUser + ")";
               var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
               var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
               var matchArray=emailStr.match(emailPat);
               if (matchArray == null) {
                   return false;
               }
               var user=matchArray[1];
               var domain=matchArray[2];
               if (user.match(userPat) == null) {
                   return false;
               }
               var IPArray = domain.match(ipDomainPat);
               if (IPArray != null) {
                   for (var i = 1; i <= 4; i++) {
                      if (IPArray[i] > 255) {
                         return false;
                      }
                   }
                   return true;
               }
               var domainArray=domain.match(domainPat);
               if (domainArray == null) {
                   return false;
               }
               var atomPat=new RegExp(atom,"g");
               var domArr=domain.match(atomPat);
               var len=domArr.length;
               if ((domArr[domArr.length-1].length < 2) ||
                   (domArr[domArr.length-1].length > 3)) {
                   return false;
               }
               if (len < 2) {
                   return false;
               }
               return true;
            }


function jsTrim(str){
	str = str.replace(/^[\s\\\/]+/,'');
	str = str.replace(/[\s\\\/]+$/,'');
	
	return str;
}


function checkMessageSort(){
	var msgSort = document.getElementById('sort');
	var sort = msgSort[msgSort.selectedIndex].value;
	
	if(sort < 1){return false;}
	
	var url = location.href;

	url = url.replace(/&sort=[a-z]+/,'');
	location.href = url + '&sort=' + sort

	return;
}

function setMessageSort(){
	var msgSort = document.getElementById('sort');
	if(msgSort.length < 1){return false;}
	var sort = msgSort[msgSort.selectedIndex].value;
	
	if(sort < 1){return false;}
	
	var url = location.href;
	
	var pattern = /&sort=([a-z]+)/;
	
	var matchArray = url.match(pattern);
	
	if (matchArray==null) {return false;}
	//alert(matchArray[1]);
    for(i = msgSort.length-1; i>=0; i--){
	   if(msgSort.options[i].value == matchArray[1]){
	     msgSort.options[i].selected=true;
	     return true;
       }
    }

	return;
}

function reportviolation(){
    var subject     = document.getElementById('violation_subject');
    var body        = document.getElementById('violation_body');
    var owner_id    = document.getElementById('violation_owner_id');
    var object_type = document.getElementById('violation_object_type');
    var object_id   = document.getElementById('violation_object_id');
    
    if(subject.value.length < 1){alert("Please input subject!");return false;}
    
    xajax_reportviolation(owner_id.value, location.href, object_type.value, object_id.value, subject.value, body.value);
}


function checksendviolation(status){
    if(status == 1){// Ok
        str = "Your violation report has been sent, please check administrator's reply later!";
        alert(str);
        document.getElementById('violation').innerHTML = '';
        document.getElementById('violation').style.width   = '0';
        document.getElementById('violation').style.height   = '0';
        document.getElementById('violation').style.display = 'none';
        document.getElementById('report_violation').style.display = 'none';
    }else{// failed, show alert, and still show violation input form 
        alert('Error has occured, please check your input!');
    }
}

